From 2efb06061fe1037cf9de0719e80d1b987f0a8502 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 Oct 2025 22:53:51 -0700 Subject: [PATCH 01/18] chore: bump mobile app version to 2.7.1 (#1307) * chore: bump mobile app version to 2.7.1 * fix last deployed timestamp --------- Co-authored-by: github-actions[bot] Co-authored-by: Justin Hernandez --- .github/workflows/mobile-deploy.yml | 23 +++++++++++++++++++++-- app/version.json | 4 ++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/.github/workflows/mobile-deploy.yml b/.github/workflows/mobile-deploy.yml index f21b8782e..8af241b1a 100644 --- a/.github/workflows/mobile-deploy.yml +++ b/.github/workflows/mobile-deploy.yml @@ -1284,6 +1284,8 @@ jobs: VERSION="${{ needs.bump-version.outputs.version }}" IOS_BUILD="${{ needs.bump-version.outputs.ios_build }}" ANDROID_BUILD="${{ needs.bump-version.outputs.android_build }}" + IOS_SUCCESS="${{ needs.build-ios.result }}" + ANDROID_SUCCESS="${{ needs.build-android.result }}" echo "πŸ“ Applying version bump: $VERSION (iOS: $IOS_BUILD, Android: $ANDROID_BUILD)" @@ -1296,12 +1298,25 @@ jobs: console.log('βœ… Updated package.json'); " - # Update version.json build numbers + # Update version.json build numbers and deployment timestamps node -e " const fs = require('fs'); const version = JSON.parse(fs.readFileSync('version.json', 'utf8')); + const timestamp = new Date().toISOString(); + version.ios.build = $IOS_BUILD; version.android.build = $ANDROID_BUILD; + + // Update lastDeployed timestamp for successful builds + if ('$IOS_SUCCESS' === 'success') { + version.ios.lastDeployed = timestamp; + console.log('βœ… Updated iOS lastDeployed timestamp'); + } + if ('$ANDROID_SUCCESS' === 'success') { + version.android.lastDeployed = timestamp; + console.log('βœ… Updated Android lastDeployed timestamp'); + } + fs.writeFileSync('version.json', JSON.stringify(version, null, 2) + '\n'); console.log('βœ… Updated version.json'); " @@ -1391,7 +1406,7 @@ jobs: exit 0 fi - git commit -m "chore: bump mobile app version to $VERSION" + git commit -m "chore: bump mobile app version to $VERSION" -m "Update build numbers and deployment timestamps after successful deployment." # Create new branch from current HEAD (bump target branch with version bump) git checkout -b ${BRANCH_NAME} @@ -1414,6 +1429,10 @@ jobs: **Build Branch:** ${{ github.ref_name }} **Target Branch:** ${TARGET_BRANCH} + This PR updates: + - Build numbers for deployed platforms + - Deployment timestamps (\`lastDeployed\`) for successful builds + This PR was automatically created by the mobile deployment workflow." \ --label "automated" diff --git a/app/version.json b/app/version.json index 2bc7125d0..5101e45ae 100644 --- a/app/version.json +++ b/app/version.json @@ -1,10 +1,10 @@ { "ios": { - "build": 181, + "build": 182, "lastDeployed": "2025-10-07T05:58:42Z" }, "android": { - "build": 111, + "build": 112, "lastDeployed": "2025-10-01T08:00:07Z" } } From e0d8c56fe0a9a83736697e337191abe937e10538 Mon Sep 17 00:00:00 2001 From: Justin Hernandez Date: Sun, 26 Oct 2025 13:50:32 -0700 Subject: [PATCH 02/18] fix prod release (#1321) --- .github/workflows/release-calendar.yml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release-calendar.yml b/.github/workflows/release-calendar.yml index bc36d0c1d..4dee4079a 100644 --- a/.github/workflows/release-calendar.yml +++ b/.github/workflows/release-calendar.yml @@ -119,12 +119,8 @@ jobs: set -euo pipefail for LABEL in release automated staging; do - if ! gh label list --json name --jq '.[].name' | grep -q "^${LABEL}$"; then - echo "Creating missing label: ${LABEL}" - gh label create "${LABEL}" --color BFD4F2 - else - echo "Label ${LABEL} already exists." - fi + echo "Ensuring label exists: ${LABEL}" + gh label create "${LABEL}" --color BFD4F2 --force || true done - name: Create release branch from dev @@ -293,12 +289,8 @@ jobs: set -euo pipefail for LABEL in release automated production; do - if ! gh label list --json name --jq '.[].name' | grep -q "^${LABEL}$"; then - echo "Creating missing label: ${LABEL}" - gh label create "${LABEL}" --color BFD4F2 - else - echo "Label ${LABEL} already exists." - fi + echo "Ensuring label exists: ${LABEL}" + gh label create "${LABEL}" --color BFD4F2 --force || true done - name: Create staging to main release PR From 735b380d8a63bbc84c1dcd794e85ad369eabe5c2 Mon Sep 17 00:00:00 2001 From: Justin Hernandez Date: Sun, 26 Oct 2025 14:11:26 -0700 Subject: [PATCH 03/18] fix token (#1322) --- .github/workflows/release-calendar.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-calendar.yml b/.github/workflows/release-calendar.yml index 4dee4079a..7d22fe022 100644 --- a/.github/workflows/release-calendar.yml +++ b/.github/workflows/release-calendar.yml @@ -139,7 +139,7 @@ jobs: - name: Create dev to staging release PR if: ${{ steps.guard_schedule.outputs.continue == 'true' && steps.check_dev_staging.outputs.existing_pr == '' }} env: - GH_TOKEN: ${{ secrets.SELFXYZ_INTERNAL_REPO_PAT }} + GH_TOKEN: ${{ github.token }} PR_DATE: ${{ steps.check_dev_staging.outputs.date }} BRANCH_NAME: ${{ steps.check_dev_staging.outputs.branch_name }} shell: bash @@ -296,7 +296,7 @@ jobs: - name: Create staging to main release PR if: ${{ steps.guard_schedule.outputs.continue == 'true' && steps.production_status.outputs.staging_not_ahead != 'true' && steps.production_status.outputs.existing_pr == '' }} env: - GH_TOKEN: ${{ secrets.SELFXYZ_INTERNAL_REPO_PAT }} + GH_TOKEN: ${{ github.token }} PR_DATE: ${{ steps.production_status.outputs.date }} COMMITS_AHEAD: ${{ steps.production_status.outputs.commits }} shell: bash From 8c5b90e89f5359726fcce63b966b2c8f083b4843 Mon Sep 17 00:00:00 2001 From: Evi Nova <66773372+Tranquil-Flow@users.noreply.github.com> Date: Mon, 27 Oct 2025 11:50:19 +0100 Subject: [PATCH 04/18] Contracts cleanup (#1311) * refactor: use singular ETHERSCAN_API_KEY in .env Etherscan has unified all keys of associated explorers like Celoscan into a singular key rather than different keys for different networks. * refactor: use one .env instead of separate .env.test + .env files * refactor: deploy contracts with runs of 1000 instead of 200 Decreases gas cost of function calls on deployed contracts * clean: remove duplicate/redundant deploy modules + scripts * clean: cleanup empty script file * refactor: cleanup default network of scripts Read network from .env instead of using defaults of alfajores (outdated) or staging * clean: remove references to Alfajores, replace with Sepolia * chore: add default .env variables * chore: update build-all script to include aardhaar circuit * chore: update broken Powers of Tau download link (use iden3) * chore: remove duplicate script * fix: use stable version 18 for disclose circuits * test: update test import paths to allow for .ts version of generateProof * test: fix broken tests * test: uncomment critical code for registration, change error names to updated names, fix broken import paths, update disclose tests for new scope generation/handling * fix: broken import path * test: fix Airdrop tests to use V2 logic * docs: update docs for necessary prerequisite programs * chore: yarn prettier formatting * fix: CI errors occuring when deploying contracts as can't read .env Using a dummy key for CI builds * chore: yarn prettier * refactor: change runs to 100000 --- circuits/package.json | 2 +- .../scripts/build/build_disclose_circuits.sh | 6 +- circuits/scripts/build/common.sh | 9 +- circuits/scripts/server/download_ptau.sh | 2 +- contracts/.env.example | 11 +- contracts/.env.test | 9 - contracts/README.md | 50 +- contracts/contracts/tests/TestAirdrop.sol | 117 +++++ .../tests/TestSelfVerificationRoot.sol | 4 +- contracts/hardhat.config.ts | 35 +- .../ignition/modules/deployIdCardVerifier.ts | 14 - contracts/ignition/modules/deployV2.ts | 0 .../ignition/modules/hub/updateVerifiers.ts | 2 +- .../modules/verifiers/deployAllVerifiers.ts | 344 ++++++------ .../verifiers/deployAllVerifiersNew.ts | 205 -------- .../modules/verifiers/deployVerifiers.ts | 36 -- contracts/package.json | 17 +- contracts/scripts/constants.ts | 7 +- contracts/scripts/setRegistry.ts | 4 +- contracts/scripts/setRegistryId.ts | 4 +- contracts/scripts/showRegistryAddresses.ts | 7 +- contracts/scripts/staging.sh | 8 +- contracts/test/example/airdrop.test.ts | 490 +++++++++++------- .../test/integration/vcAndDisclose.test.ts | 2 +- contracts/test/integration/verifyAll.test.ts | 4 +- .../test/unit/CircuitAttributeHandler.test.ts | 6 +- contracts/test/unit/CustomVerifier.test.ts | 10 +- contracts/test/utils/deployment.ts | 17 +- contracts/test/utils/deploymentV2.ts | 4 +- contracts/test/utils/formatter.ts | 2 +- contracts/test/v2/discloseAadhaar.test.ts | 33 +- contracts/test/v2/discloseId.test.ts | 38 +- contracts/test/v2/disclosePassport.test.ts | 42 +- contracts/test/v2/registerAadhaar.test.ts | 2 +- 34 files changed, 772 insertions(+), 771 deletions(-) delete mode 100644 contracts/.env.test create mode 100644 contracts/contracts/tests/TestAirdrop.sol delete mode 100644 contracts/ignition/modules/deployIdCardVerifier.ts delete mode 100644 contracts/ignition/modules/deployV2.ts delete mode 100644 contracts/ignition/modules/verifiers/deployAllVerifiersNew.ts delete mode 100644 contracts/ignition/modules/verifiers/deployVerifiers.ts diff --git a/circuits/package.json b/circuits/package.json index 72489679d..40e46640e 100644 --- a/circuits/package.json +++ b/circuits/package.json @@ -5,7 +5,7 @@ "license": "MIT", "author": "self team", "scripts": { - "build-all": "bash scripts/build/build_register_circuits.sh && bash scripts/build/build_register_circuits_id.sh && bash scripts/build/build_dsc_circuits.sh && bash scripts/build/build_disclose_circuits.sh", + "build-all": "bash scripts/build/build_register_circuits.sh && bash scripts/build/build_register_circuits_id.sh && bash scripts/build/build_register_aadhaar.sh && bash scripts/build/build_dsc_circuits.sh && bash scripts/build/build_disclose_circuits.sh", "build-disclose": "bash scripts/build/build_disclose_circuits.sh", "build-dsc": "bash scripts/build/build_dsc_circuits.sh", "build-register": "bash scripts/build/build_register_circuits.sh", diff --git a/circuits/scripts/build/build_disclose_circuits.sh b/circuits/scripts/build/build_disclose_circuits.sh index 3a473c33f..959acda07 100755 --- a/circuits/scripts/build/build_disclose_circuits.sh +++ b/circuits/scripts/build/build_disclose_circuits.sh @@ -15,9 +15,9 @@ OUTPUT_DIR="build/${CIRCUIT_TYPE}" # Define circuits and their configurations # format: name:poweroftau:build_flag CIRCUITS=( - # "vc_and_disclose:20:true" - # "vc_and_disclose_id:20:true" - "vc_and_disclose_aadhaar:17:true" + "vc_and_disclose:18:true" + "vc_and_disclose_id:18:true" + "vc_and_disclose_aadhaar:18:true" ) build_circuits "$CIRCUIT_TYPE" "$OUTPUT_DIR" "${CIRCUITS[@]}" diff --git a/circuits/scripts/build/common.sh b/circuits/scripts/build/common.sh index 3db0dea59..ef60dd26b 100644 --- a/circuits/scripts/build/common.sh +++ b/circuits/scripts/build/common.sh @@ -31,7 +31,7 @@ download_ptau() { cd build if [ ! -f powersOfTau28_hez_final_${POWEROFTAU}.ptau ]; then echo -e "${YELLOW}Download power of tau....${NC}" - wget https://hermez.s3-eu-west-1.amazonaws.com/powersOfTau28_hez_final_${POWEROFTAU}.ptau + wget https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_${POWEROFTAU}.ptau echo -e "${GREEN}Finished download!${NC}" else echo -e "${YELLOW}Powers of tau file already downloaded${NC}" @@ -72,9 +72,10 @@ build_circuit() { # Compile circuit circom ${CIRCUIT_PATH} \ - -l ../node_modules \ - -l ../node_modules/@zk-kit/binary-merkle-root.circom/src \ - -l ../node_modules/circomlib/circuits \ + -l node_modules \ + -l node_modules/@zk-kit/binary-merkle-root.circom/src \ + -l node_modules/circomlib/circuits \ + -l node_modules \ --r1cs --O1 --wasm -c \ --output ${OUTPUT_DIR}/${CIRCUIT_NAME}/ diff --git a/circuits/scripts/server/download_ptau.sh b/circuits/scripts/server/download_ptau.sh index bdeba9ae3..97f30dbbd 100755 --- a/circuits/scripts/server/download_ptau.sh +++ b/circuits/scripts/server/download_ptau.sh @@ -4,7 +4,7 @@ mkdir -p build cd build if [ ! -f powersOfTau28_hez_final_20.ptau ]; then echo "Download power of tau...." - wget https://hermez.s3-eu-west-1.amazonaws.com/powersOfTau28_hez_final_20.ptau + wget https://storage.googleapis.com/zkevm/ptau/powersOfTau28_hez_final_20.ptau echo "Finished download!" else echo "Powers of tau file already downloaded... Skip download action!" diff --git a/contracts/.env.example b/contracts/.env.example index 1514d1807..eaa65b930 100644 --- a/contracts/.env.example +++ b/contracts/.env.example @@ -1,13 +1,10 @@ -NETWORK= +NETWORK=localhost PRIVATE_KEY='0x123' -CELO_KEY= -MAINNET_RPC_URL= +MAINNET_RPC_URL=https://ethereum-rpc.publicnode.com SEPOLIA_RPC_URL=https://rpc.sepolia.org -CELO_RPC_URL= -CELO_ALFAJORES_RPC_URL= -CELO_BAKLAVA_RPC_URL= +CELO_RPC_URL=https://celo.drpc.org +CELO_SEPOLIA_RPC_URL=https://rpc.ankr.com/celo_sepolia ETHERSCAN_API_KEY= -CELOSCAN_API_KEY= diff --git a/contracts/.env.test b/contracts/.env.test deleted file mode 100644 index 79e55ef66..000000000 --- a/contracts/.env.test +++ /dev/null @@ -1,9 +0,0 @@ -PRIVATE_KEY='0x5e58432461dd54368e034c955abb48de0da9430674183a4097ff1caa53c93b89' -CELO_KEY='0x5e58432461dd54368e034c955abb48de0da9430674183a4097ff1caa53c93b89' -MAINNET_RPC_URL= -SEPOLIA_RPC_URL=https://rpc.sepolia.org -CELO_RPC_URL= -CELO_ALFAJORES_RPC_URL= -CELO_BAKLAVA_RPC_URL= - -ETHERSCAN_API_KEY= diff --git a/contracts/README.md b/contracts/README.md index a32653aa0..1e8f2e052 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -84,15 +84,59 @@ As an example, please refer to the following contract. ## Building Contracts -1. Install dependencies: +### Prerequisites -We use yarn 4. If you havent already it can be enabled with +Before building contracts, you must install these **system-level dependencies manually** or ensure they are already +installed. + +#### 1. Node.js and Yarn + +We use yarn 4. If you haven't already, it can be enabled with: ```bash corepack enable yarn ``` -_corepack_ is a built in nodejs command +_corepack_ is a built-in nodejs command + +#### 2. Rust (for Circom) + +Install Rust using rustup: + +```bash +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +source ~/.cargo/env +``` + +#### 3. Circom 2.1.9 + +Install the specific version of Circom required: + +```bash +git clone https://github.com/iden3/circom.git +cd circom +git checkout v2.1.9 +cargo build --release +cp ./target/release/circom ~/.cargo/bin/ +``` + +Verify installation: + +```bash +circom --version +# Should output: circom compiler 2.1.9 +``` + +#### 4. wget + +Install wget using your system's package manager: + +- **macOS**: `brew install wget` +- **Ubuntu/Debian**: `apt-get install wget` + +### Installation + +1. Install Node.js dependencies (after installing the system dependencies above): ```bash yarn install diff --git a/contracts/contracts/tests/TestAirdrop.sol b/contracts/contracts/tests/TestAirdrop.sol new file mode 100644 index 000000000..c2e9ac494 --- /dev/null +++ b/contracts/contracts/tests/TestAirdrop.sol @@ -0,0 +1,117 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.28; + +import {IERC20, SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import {MerkleProof} from "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; + +import {ISelfVerificationRoot} from "../interfaces/ISelfVerificationRoot.sol"; +import {TestSelfVerificationRoot} from "./TestSelfVerificationRoot.sol"; + +/** + * @title TestAirdrop + * @notice Test version of Airdrop contract that inherits from TestSelfVerificationRoot + * @dev This allows proper scope calculation for testing by using testGenerateScope + */ +contract TestAirdrop is TestSelfVerificationRoot, Ownable { + using SafeERC20 for IERC20; + + IERC20 public immutable token; + bytes32 public merkleRoot; + mapping(address => bool) public claimed; + bool public isRegistrationOpen; + bool public isClaimOpen; + mapping(uint256 nullifier => uint256 userIdentifier) internal _nullifierToUserIdentifier; + mapping(uint256 userIdentifier => bool registered) internal _registeredUserIdentifiers; + + event Claimed(uint256 index, address account, uint256 amount); + event RegistrationOpen(); + event RegistrationClose(); + event ClaimOpen(); + event ClaimClose(); + event UserIdentifierRegistered(uint256 indexed registeredUserIdentifier, uint256 indexed nullifier); + event MerkleRootUpdated(bytes32 newMerkleRoot); + + error InvalidProof(); + error AlreadyClaimed(); + error NotRegistered(address nonRegisteredAddress); + error RegistrationNotOpen(); + error RegistrationNotClosed(); + error ClaimNotOpen(); + error InvalidUserIdentifier(); + error UserIdentifierAlreadyRegistered(); + error RegisteredNullifier(); + + constructor( + address identityVerificationHubAddress, + string memory scopeSeed, + address tokenAddress + ) TestSelfVerificationRoot(identityVerificationHubAddress, scopeSeed) Ownable(_msgSender()) { + token = IERC20(tokenAddress); + } + + function setMerkleRoot(bytes32 newMerkleRoot) external onlyOwner { + merkleRoot = newMerkleRoot; + emit MerkleRootUpdated(newMerkleRoot); + } + + function openRegistration() external onlyOwner { + isRegistrationOpen = true; + emit RegistrationOpen(); + } + + function closeRegistration() external onlyOwner { + isRegistrationOpen = false; + emit RegistrationClose(); + } + + function openClaim() external onlyOwner { + isClaimOpen = true; + emit ClaimOpen(); + } + + function closeClaim() external onlyOwner { + isClaimOpen = false; + emit ClaimClose(); + } + + function isRegistered(address registeredAddress) external view returns (bool) { + return _registeredUserIdentifiers[uint256(uint160(registeredAddress))]; + } + + function setConfigId(bytes32 configId) external override onlyOwner { + verificationConfigId = configId; + } + + function claim(uint256 index, uint256 amount, bytes32[] memory merkleProof) external { + if (isRegistrationOpen) revert RegistrationNotClosed(); + if (!isClaimOpen) revert ClaimNotOpen(); + if (claimed[msg.sender]) revert AlreadyClaimed(); + if (!_registeredUserIdentifiers[uint256(uint160(msg.sender))]) revert NotRegistered(msg.sender); + + bytes32 node = keccak256(abi.encodePacked(index, msg.sender, amount)); + if (!MerkleProof.verify(merkleProof, merkleRoot, node)) revert InvalidProof(); + + claimed[msg.sender] = true; + token.safeTransfer(msg.sender, amount); + emit Claimed(index, msg.sender, amount); + } + + function customVerificationHook( + ISelfVerificationRoot.GenericDiscloseOutputV2 memory output, + bytes memory /* userData */ + ) internal override { + if (!isRegistrationOpen) revert RegistrationNotOpen(); + if (_nullifierToUserIdentifier[output.nullifier] != 0) revert RegisteredNullifier(); + if (output.userIdentifier == 0) revert InvalidUserIdentifier(); + if (_registeredUserIdentifiers[output.userIdentifier]) revert UserIdentifierAlreadyRegistered(); + + _nullifierToUserIdentifier[output.nullifier] = output.userIdentifier; + _registeredUserIdentifiers[output.userIdentifier] = true; + + emit UserIdentifierRegistered(output.userIdentifier, output.nullifier); + + // Call parent's customVerificationHook for any additional test functionality + super.customVerificationHook(output, ""); + } +} diff --git a/contracts/contracts/tests/TestSelfVerificationRoot.sol b/contracts/contracts/tests/TestSelfVerificationRoot.sol index 1c3822e81..1680d44ee 100644 --- a/contracts/contracts/tests/TestSelfVerificationRoot.sol +++ b/contracts/contracts/tests/TestSelfVerificationRoot.sol @@ -41,7 +41,7 @@ contract TestSelfVerificationRoot is SelfVerificationRoot { function customVerificationHook( ISelfVerificationRoot.GenericDiscloseOutputV2 memory output, bytes memory userData - ) internal override { + ) internal virtual override { verificationSuccessful = true; lastOutput = output; lastUserData = userData; @@ -82,7 +82,7 @@ contract TestSelfVerificationRoot is SelfVerificationRoot { verificationConfigId = bytes32(uint256(1)); } - function setConfigId(bytes32 configId) external { + function setConfigId(bytes32 configId) external virtual { verificationConfigId = configId; } diff --git a/contracts/hardhat.config.ts b/contracts/hardhat.config.ts index 0f6f5d566..c983328eb 100644 --- a/contracts/hardhat.config.ts +++ b/contracts/hardhat.config.ts @@ -1,22 +1,24 @@ import { HardhatUserConfig } from "hardhat/config"; import "@nomicfoundation/hardhat-toolbox"; import dotenv from "dotenv"; -dotenv.config({ - path: process.env.CI ? ".env.test" : ".env", -}); +dotenv.config(); import "hardhat-contract-sizer"; import "@nomicfoundation/hardhat-ignition-ethers"; import "solidity-coverage"; import "hardhat-gas-reporter"; import "hardhat-contract-sizer"; +// Use a dummy private key for CI/local development (not used for actual deployments) +const DUMMY_PRIVATE_KEY = "0x0000000000000000000000000000000000000000000000000000000000000001"; +const PRIVATE_KEY = process.env.PRIVATE_KEY || DUMMY_PRIVATE_KEY; + const config: HardhatUserConfig = { solidity: { version: "0.8.28", settings: { optimizer: { enabled: true, - runs: 200, + runs: 100000, }, }, }, @@ -42,33 +44,28 @@ const config: HardhatUserConfig = { mainnet: { chainId: 1, url: process.env.MAINNET_RPC_URL || "https://eth.llamarpc.com", - accounts: [process.env.PRIVATE_KEY as string], + accounts: [PRIVATE_KEY], }, sepolia: { chainId: 11155111, url: process.env.SEPOLIA_RPC_URL || "https://eth-sepolia.public.blastapi.io", - accounts: [process.env.PRIVATE_KEY as string], + accounts: [PRIVATE_KEY], }, celo: { chainId: 42220, url: process.env.CELO_RPC_URL || "https://forno.celo.org", - accounts: [process.env.PRIVATE_KEY as string], - }, - alfajores: { - chainId: 44787, - url: process.env.CELO_ALFAJORES_RPC_URL || "https://alfajores-forno.celo-testnet.org", - accounts: [process.env.PRIVATE_KEY as string], + accounts: [PRIVATE_KEY], }, "celo-sepolia": { chainId: 11142220, url: process.env.CELO_SEPOLIA_RPC_URL || "https://rpc.ankr.com/celo_sepolia", - accounts: [process.env.PRIVATE_KEY as string], + accounts: [PRIVATE_KEY], }, }, etherscan: { - apiKey: process.env.CELOSCAN_API_KEY as string, + apiKey: process.env.ETHERSCAN_API_KEY as string, // apiKey: { - // "celo-sepolia": process.env.CELOSCAN_API_KEY as string, + // "celo-sepolia": process.env.ETHERSCAN_API_KEY as string, // }, customChains: [ { @@ -79,14 +76,6 @@ const config: HardhatUserConfig = { browserURL: "https://celoscan.io/", }, }, - { - network: "alfajores", - chainId: 44787, - urls: { - apiURL: "https://api.etherscan.io/v2/api?chainid=44787", - browserURL: "https://alfajores.celoscan.io", - }, - }, { network: "celo-sepolia", chainId: 11142220, diff --git a/contracts/ignition/modules/deployIdCardVerifier.ts b/contracts/ignition/modules/deployIdCardVerifier.ts deleted file mode 100644 index 7c1d9a3cf..000000000 --- a/contracts/ignition/modules/deployIdCardVerifier.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; - -/** - * This module deploys the ID Card Verifier contract specifically for register_id - * with SHA256+SHA256+SHA256+RSA verifier - */ -export default buildModule("DeployIdCardVerifier", (m) => { - // Deploy the ID Card Verifier contract - const idCardVerifier = m.contract("Verifier_register_id_sha256_sha256_sha256_rsa_65537_4096"); - - return { - idCardVerifier, - }; -}); diff --git a/contracts/ignition/modules/deployV2.ts b/contracts/ignition/modules/deployV2.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/contracts/ignition/modules/hub/updateVerifiers.ts b/contracts/ignition/modules/hub/updateVerifiers.ts index 6dc31eeae..1ceb03ea7 100644 --- a/contracts/ignition/modules/hub/updateVerifiers.ts +++ b/contracts/ignition/modules/hub/updateVerifiers.ts @@ -2,7 +2,7 @@ import { buildModule, IgnitionModuleBuilder } from "@nomicfoundation/ignition-co import hre from "hardhat"; import { readFileSync } from "fs"; import path from "path"; -import { circuitIds, CircuitName } from "../verifiers/deployAllVerifiersNew"; +import { circuitIds, CircuitName } from "../verifiers/deployAllVerifiers"; // Attestation IDs from the contract const AttestationId = { diff --git a/contracts/ignition/modules/verifiers/deployAllVerifiers.ts b/contracts/ignition/modules/verifiers/deployAllVerifiers.ts index a11fdd8af..3b04995ae 100644 --- a/contracts/ignition/modules/verifiers/deployAllVerifiers.ts +++ b/contracts/ignition/modules/verifiers/deployAllVerifiers.ts @@ -1,163 +1,205 @@ import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; -import { RegisterVerifierId, DscVerifierId } from "@selfxyz/common"; -import * as fs from "fs"; -import * as path from "path"; -const deployVerifiers = { - vcAndDiscloseVerifier: false, - vcAndDiscloseIdVerifier: false, - registerIdVerifier: false, - registerVerifier: true, - dscVerifier: false, +// All circuit names as a union type +export type CircuitName = + | "register_sha256_sha256_sha256_rsa_65537_4096" + | "register_sha256_sha256_sha256_ecdsa_brainpoolP384r1" + | "register_sha256_sha256_sha256_ecdsa_secp256r1" + | "register_sha256_sha256_sha256_ecdsa_secp384r1" + | "register_sha256_sha256_sha256_rsa_3_4096" + | "register_sha256_sha256_sha256_rsapss_3_32_2048" + | "register_sha256_sha256_sha256_rsapss_65537_32_2048" + | "register_sha256_sha256_sha256_rsapss_65537_32_3072" + | "register_sha384_sha384_sha384_ecdsa_brainpoolP384r1" + | "register_sha384_sha384_sha384_ecdsa_brainpoolP512r1" + | "register_sha384_sha384_sha384_ecdsa_secp384r1" + | "register_sha512_sha512_sha512_ecdsa_brainpoolP512r1" + | "register_sha512_sha512_sha512_rsa_65537_4096" + | "register_sha512_sha512_sha512_rsapss_65537_64_2048" + | "register_sha1_sha1_sha1_rsa_65537_4096" + | "register_sha1_sha256_sha256_rsa_65537_4096" + | "register_sha224_sha224_sha224_ecdsa_brainpoolP224r1" + | "register_sha256_sha224_sha224_ecdsa_secp224r1" + | "register_sha256_sha256_sha256_ecdsa_brainpoolP256r1" + | "register_sha1_sha1_sha1_ecdsa_brainpoolP224r1" + | "register_sha384_sha384_sha384_rsapss_65537_48_2048" + | "register_sha1_sha1_sha1_ecdsa_secp256r1" + | "register_sha256_sha256_sha256_rsapss_65537_64_2048" + | "register_sha512_sha512_sha256_rsa_65537_4096" + | "register_sha512_sha512_sha512_ecdsa_secp521r1" + | "register_id_sha256_sha256_sha256_rsa_65537_4096" + | "register_sha256_sha256_sha224_ecdsa_secp224r1" + | "register_id_sha1_sha1_sha1_ecdsa_brainpoolP224r1" + | "register_id_sha1_sha1_sha1_ecdsa_secp256r1" + | "register_id_sha1_sha1_sha1_rsa_65537_4096" + | "register_id_sha1_sha256_sha256_rsa_65537_4096" + | "register_id_sha224_sha224_sha224_ecdsa_brainpoolP224r1" + | "register_id_sha256_sha224_sha224_ecdsa_secp224r1" + | "register_id_sha256_sha256_sha224_ecdsa_secp224r1" + | "register_id_sha256_sha256_sha256_ecdsa_brainpoolP256r1" + | "register_id_sha256_sha256_sha256_ecdsa_brainpoolP384r1" + | "register_id_sha256_sha256_sha256_ecdsa_secp256r1" + | "register_id_sha256_sha256_sha256_ecdsa_secp384r1" + | "register_id_sha256_sha256_sha256_rsa_3_4096" + | "register_id_sha256_sha256_sha256_rsapss_3_32_2048" + | "register_id_sha256_sha256_sha256_rsapss_65537_32_2048" + | "register_id_sha256_sha256_sha256_rsapss_65537_32_3072" + | "register_id_sha256_sha256_sha256_rsapss_65537_64_2048" + | "register_id_sha384_sha384_sha384_ecdsa_brainpoolP384r1" + | "register_id_sha384_sha384_sha384_ecdsa_brainpoolP512r1" + | "register_id_sha384_sha384_sha384_ecdsa_secp384r1" + | "register_id_sha384_sha384_sha384_rsapss_65537_48_2048" + | "register_id_sha512_sha512_sha256_rsa_65537_4096" + | "register_id_sha512_sha512_sha512_ecdsa_brainpoolP512r1" + | "register_id_sha512_sha512_sha512_ecdsa_secp521r1" + | "register_id_sha512_sha512_sha512_rsa_65537_4096" + | "register_id_sha512_sha512_sha512_rsapss_65537_64_2048" + | "register_aadhaar" + | "register_sha1_sha1_sha1_rsa_64321_4096" + | "register_sha256_sha1_sha1_rsa_65537_4096" + | "register_sha256_sha256_sha256_rsapss_65537_32_4096" + | "register_id_sha512_sha512_sha256_rsapss_65537_32_2048" + | "register_sha512_sha512_sha256_rsapss_65537_32_2048" + | "dsc_sha1_ecdsa_brainpoolP256r1" + | "dsc_sha1_rsa_65537_4096" + | "dsc_sha256_ecdsa_brainpoolP256r1" + | "dsc_sha256_ecdsa_brainpoolP384r1" + | "dsc_sha256_ecdsa_secp256r1" + | "dsc_sha256_ecdsa_secp384r1" + | "dsc_sha256_ecdsa_secp521r1" + | "dsc_sha256_rsa_65537_4096" + | "dsc_sha256_rsapss_3_32_3072" + | "dsc_sha256_rsapss_65537_32_3072" + | "dsc_sha256_rsapss_65537_32_4096" + | "dsc_sha384_ecdsa_brainpoolP384r1" + | "dsc_sha384_ecdsa_brainpoolP512r1" + | "dsc_sha384_ecdsa_secp384r1" + | "dsc_sha512_ecdsa_brainpoolP512r1" + | "dsc_sha512_ecdsa_secp521r1" + | "dsc_sha512_rsa_65537_4096" + | "dsc_sha512_rsapss_65537_64_4096" + // | "dsc_sha256_rsapss_3_32_4096" + | "dsc_sha1_ecdsa_secp256r1" + | "dsc_sha256_rsa_107903_4096" + | "dsc_sha256_rsa_122125_4096" + | "dsc_sha256_rsa_130689_4096" + | "dsc_sha256_rsa_56611_4096" + | "vc_and_disclose" + | "vc_and_disclose_id" + | "vc_and_disclose_aadhaar"; + +// Record mapping circuit names to numbers +export const circuitIds: Record = { + register_sha256_sha256_sha256_rsa_65537_4096: [true, 0], + register_sha256_sha256_sha256_ecdsa_brainpoolP384r1: [true, 1], + register_sha256_sha256_sha256_ecdsa_secp256r1: [true, 2], + register_sha256_sha256_sha256_ecdsa_secp384r1: [true, 3], + register_sha256_sha256_sha256_rsa_3_4096: [true, 4], + register_sha256_sha256_sha256_rsapss_3_32_2048: [true, 5], + register_sha256_sha256_sha256_rsapss_65537_32_2048: [true, 6], + register_sha256_sha256_sha256_rsapss_65537_32_3072: [true, 7], + register_sha384_sha384_sha384_ecdsa_brainpoolP384r1: [true, 8], + register_sha384_sha384_sha384_ecdsa_brainpoolP512r1: [true, 9], + register_sha384_sha384_sha384_ecdsa_secp384r1: [true, 10], + register_sha512_sha512_sha512_ecdsa_brainpoolP512r1: [true, 11], + register_sha512_sha512_sha512_rsa_65537_4096: [true, 12], + register_sha512_sha512_sha512_rsapss_65537_64_2048: [true, 13], + register_sha1_sha1_sha1_rsa_65537_4096: [true, 14], + register_sha1_sha256_sha256_rsa_65537_4096: [true, 15], + register_sha224_sha224_sha224_ecdsa_brainpoolP224r1: [true, 16], + register_sha256_sha224_sha224_ecdsa_secp224r1: [true, 17], + register_sha256_sha256_sha256_ecdsa_brainpoolP256r1: [true, 18], + register_sha1_sha1_sha1_ecdsa_brainpoolP224r1: [true, 19], + register_sha384_sha384_sha384_rsapss_65537_48_2048: [true, 20], + register_sha1_sha1_sha1_ecdsa_secp256r1: [true, 21], + register_sha256_sha256_sha256_rsapss_65537_64_2048: [true, 22], + register_sha512_sha512_sha256_rsa_65537_4096: [true, 23], + register_sha512_sha512_sha512_ecdsa_secp521r1: [true, 24], + register_id_sha256_sha256_sha256_rsa_65537_4096: [true, 25], + register_sha256_sha256_sha224_ecdsa_secp224r1: [true, 26], + register_id_sha1_sha1_sha1_ecdsa_brainpoolP224r1: [true, 27], + register_id_sha1_sha1_sha1_ecdsa_secp256r1: [true, 28], + register_id_sha1_sha1_sha1_rsa_65537_4096: [true, 29], + register_id_sha1_sha256_sha256_rsa_65537_4096: [true, 30], + register_id_sha224_sha224_sha224_ecdsa_brainpoolP224r1: [true, 31], + register_id_sha256_sha224_sha224_ecdsa_secp224r1: [true, 32], + register_id_sha256_sha256_sha224_ecdsa_secp224r1: [true, 33], + register_id_sha256_sha256_sha256_ecdsa_brainpoolP256r1: [true, 34], + register_id_sha256_sha256_sha256_ecdsa_brainpoolP384r1: [true, 35], + register_id_sha256_sha256_sha256_ecdsa_secp256r1: [true, 36], + register_id_sha256_sha256_sha256_ecdsa_secp384r1: [true, 37], + register_id_sha256_sha256_sha256_rsa_3_4096: [true, 38], + register_id_sha256_sha256_sha256_rsapss_3_32_2048: [true, 39], + register_id_sha256_sha256_sha256_rsapss_65537_32_2048: [true, 40], + register_id_sha256_sha256_sha256_rsapss_65537_32_3072: [true, 41], + register_id_sha256_sha256_sha256_rsapss_65537_64_2048: [true, 42], + register_id_sha384_sha384_sha384_ecdsa_brainpoolP384r1: [true, 43], + register_id_sha384_sha384_sha384_ecdsa_brainpoolP512r1: [true, 44], + register_id_sha384_sha384_sha384_ecdsa_secp384r1: [true, 45], + register_id_sha384_sha384_sha384_rsapss_65537_48_2048: [true, 46], + register_id_sha512_sha512_sha256_rsa_65537_4096: [true, 47], + register_id_sha512_sha512_sha512_ecdsa_brainpoolP512r1: [true, 48], + register_id_sha512_sha512_sha512_ecdsa_secp521r1: [true, 49], + register_id_sha512_sha512_sha512_rsa_65537_4096: [true, 50], + register_id_sha512_sha512_sha512_rsapss_65537_64_2048: [true, 51], + register_aadhaar: [true, 52], + register_sha1_sha1_sha1_rsa_64321_4096: [true, 53], + register_sha256_sha1_sha1_rsa_65537_4096: [true, 54], + register_sha256_sha256_sha256_rsapss_65537_32_4096: [true, 55], + register_id_sha512_sha512_sha256_rsapss_65537_32_2048: [true, 56], + register_sha512_sha512_sha256_rsapss_65537_32_2048: [true, 57], + + dsc_sha1_ecdsa_brainpoolP256r1: [true, 0], + dsc_sha1_rsa_65537_4096: [true, 1], + dsc_sha256_ecdsa_brainpoolP256r1: [true, 2], + dsc_sha256_ecdsa_brainpoolP384r1: [true, 3], + dsc_sha256_ecdsa_secp256r1: [true, 4], + dsc_sha256_ecdsa_secp384r1: [true, 5], + dsc_sha256_ecdsa_secp521r1: [true, 6], + dsc_sha256_rsa_65537_4096: [true, 7], + dsc_sha256_rsapss_3_32_3072: [true, 8], + dsc_sha256_rsapss_65537_32_3072: [true, 9], + dsc_sha256_rsapss_65537_32_4096: [true, 10], + dsc_sha384_ecdsa_brainpoolP384r1: [true, 11], + dsc_sha384_ecdsa_brainpoolP512r1: [true, 12], + dsc_sha384_ecdsa_secp384r1: [true, 13], + dsc_sha512_ecdsa_brainpoolP512r1: [true, 14], + dsc_sha512_ecdsa_secp521r1: [true, 15], + dsc_sha512_rsa_65537_4096: [true, 16], + dsc_sha512_rsapss_65537_64_4096: [true, 17], + // dsc_sha256_rsapss_3_32_4096: [true, 18], + dsc_sha1_ecdsa_secp256r1: [true, 19], + dsc_sha256_rsa_107903_4096: [true, 20], + dsc_sha256_rsa_122125_4096: [true, 21], + dsc_sha256_rsa_130689_4096: [true, 22], + dsc_sha256_rsa_56611_4096: [true, 23], + + vc_and_disclose: [true, 24], + vc_and_disclose_id: [true, 25], + vc_and_disclose_aadhaar: [true, 26], }; -/** - * Get enum keys (circuit names) excluding numeric values - */ -function getEnumKeys>(enumObject: T): string[] { - return Object.keys(enumObject).filter((key) => isNaN(Number(key))); -} - -/** - * Filter register circuits to get only register_id variants - */ -function getRegisterIdCircuits(): string[] { - const allRegisterCircuits = getEnumKeys(RegisterVerifierId); - return allRegisterCircuits.filter((circuit) => circuit.startsWith("register_id_")); -} - -/** - * Filter register circuits to get only regular register variants (non-ID) - */ -function getRegularRegisterCircuits(): string[] { - const allRegisterCircuits = getEnumKeys(RegisterVerifierId); - return allRegisterCircuits.filter( - (circuit) => circuit.startsWith("register_") && !circuit.startsWith("register_id_"), - ); -} - -/** - * Check if a contract file exists - */ -function contractExists(contractName: string): boolean { - const contractsDir = path.join(__dirname, "../../../contracts"); - const possiblePaths = [ - path.join(contractsDir, "verifiers/register", `${contractName}.sol`), - path.join(contractsDir, "verifiers/register_id", `${contractName}.sol`), - path.join(contractsDir, "verifiers/dsc", `${contractName}.sol`), - path.join(contractsDir, "verifiers/disclose", `${contractName}.sol`), - path.join(contractsDir, "verifiers", `${contractName}.sol`), - ]; - - return possiblePaths.some((filePath) => fs.existsSync(filePath)); -} - -/** - * Sleep utility function - */ -function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - export default buildModule("DeployAllVerifiers", (m) => { - let successfulRegisterIdDeployments = 0; - let successfulRegisterDeployments = 0; - let successfulDscDeployments = 0; - - const deployedContracts: Record = {}; + const deployments: Record = {}; let lastDeployedContract: any = null; - // Deploy VC and Disclose verifier - if (deployVerifiers.vcAndDiscloseVerifier) { - console.log("Deploying VC and Disclose verifier..."); - deployedContracts.vcAndDiscloseVerifier = m.contract("Verifier_vc_and_disclose"); - lastDeployedContract = deployedContracts.vcAndDiscloseVerifier; - } + for (const circuit of Object.keys(circuitIds) as CircuitName[]) { + const [shouldDeploy] = circuitIds[circuit]; - // Deploy VC and Disclose ID verifier - if (deployVerifiers.vcAndDiscloseIdVerifier) { - console.log("Deploying VC and Disclose ID verifier..."); + if (!shouldDeploy) { + console.log(`Skipping Verifier_${circuit}`); + continue; + } + + const name = `Verifier_${circuit}`; + console.log(`Deploying ${name}...`); + + // Create dependency on the last deployed contract to ensure sequential deployment const deployOptions = lastDeployedContract ? { after: [lastDeployedContract] } : {}; - deployedContracts.vcAndDiscloseIdVerifier = m.contract("Verifier_vc_and_disclose_id", [], deployOptions); - lastDeployedContract = deployedContracts.vcAndDiscloseIdVerifier; + deployments[name] = m.contract(name, [], deployOptions); + lastDeployedContract = deployments[name]; } - // Deploy Register ID verifiers (for ID cards) - filtered from unified RegisterVerifierId enum - const registerIdCircuits = getRegisterIdCircuits(); - if (deployVerifiers.registerIdVerifier) { - console.log("Deploying Register ID verifiers with sequential dependencies..."); - registerIdCircuits.forEach((circuitName, index) => { - const contractName = `Verifier_${circuitName}`; - if (contractExists(contractName)) { - console.log(` - Deploying ${contractName} (${index + 1}/${registerIdCircuits.length})`); - - // Create dependency on the last deployed contract to ensure sequential deployment - const deployOptions = lastDeployedContract ? { after: [lastDeployedContract] } : {}; - deployedContracts[circuitName] = m.contract(contractName, [], deployOptions); - lastDeployedContract = deployedContracts[circuitName]; - successfulRegisterIdDeployments++; - } else { - console.warn(` - Warning: Contract ${contractName} not found, skipping...`); - } - }); - } - - // Deploy Register verifiers (regular, non-ID) - filtered from unified RegisterVerifierId enum - const registerCircuits = getRegularRegisterCircuits(); - if (deployVerifiers.registerVerifier) { - console.log("Deploying Register verifiers with sequential dependencies..."); - registerCircuits.forEach((circuitName, index) => { - const contractName = `Verifier_${circuitName}`; - if (contractExists(contractName)) { - console.log(` - Deploying ${contractName} (${index + 1}/${registerCircuits.length})`); - - // Create dependency on the last deployed contract to ensure sequential deployment - const deployOptions = lastDeployedContract ? { after: [lastDeployedContract] } : {}; - deployedContracts[circuitName] = m.contract(contractName, [], deployOptions); - lastDeployedContract = deployedContracts[circuitName]; - successfulRegisterDeployments++; - } else { - console.warn(` - Warning: Contract ${contractName} not found, skipping...`); - } - }); - } - - // Deploy DSC verifiers using DscVerifierId enum - const dscCircuits = getEnumKeys(DscVerifierId); - if (deployVerifiers.dscVerifier) { - console.log("Deploying DSC verifiers with sequential dependencies..."); - dscCircuits.forEach((circuitName, index) => { - const contractName = `Verifier_${circuitName}`; - if (contractExists(contractName)) { - console.log(` - Deploying ${contractName} (${index + 1}/${dscCircuits.length})`); - - // Create dependency on the last deployed contract to ensure sequential deployment - const deployOptions = lastDeployedContract ? { after: [lastDeployedContract] } : {}; - deployedContracts[circuitName] = m.contract(contractName, [], deployOptions); - lastDeployedContract = deployedContracts[circuitName]; - successfulDscDeployments++; - } else { - console.warn(` - Warning: Contract ${contractName} not found, skipping...`); - } - }); - } - - console.log(`Total verifiers deployment summary:`); - console.log(` - VC and Disclose: ${deployVerifiers.vcAndDiscloseVerifier ? 1 : 0}`); - console.log(` - VC and Disclose ID: ${deployVerifiers.vcAndDiscloseIdVerifier ? 1 : 0}`); - console.log( - ` - Register ID: ${successfulRegisterIdDeployments}/${registerIdCircuits.length} (${registerIdCircuits.length - successfulRegisterIdDeployments} skipped)`, - ); - console.log( - ` - Register: ${successfulRegisterDeployments}/${registerCircuits.length} (${registerCircuits.length - successfulRegisterDeployments} skipped)`, - ); - console.log( - ` - DSC: ${successfulDscDeployments}/${dscCircuits.length} (${dscCircuits.length - successfulDscDeployments} skipped)`, - ); - console.log( - ` - Total successful deployments: ${(deployVerifiers.vcAndDiscloseVerifier ? 1 : 0) + (deployVerifiers.vcAndDiscloseIdVerifier ? 1 : 0) + successfulRegisterIdDeployments + successfulRegisterDeployments + successfulDscDeployments}`, - ); - console.log(` - Deployments will execute sequentially to prevent nonce conflicts`); - - return deployedContracts; + console.log(`Deployments will execute sequentially to prevent nonce conflicts`); + return deployments; }); diff --git a/contracts/ignition/modules/verifiers/deployAllVerifiersNew.ts b/contracts/ignition/modules/verifiers/deployAllVerifiersNew.ts deleted file mode 100644 index 3b04995ae..000000000 --- a/contracts/ignition/modules/verifiers/deployAllVerifiersNew.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; - -// All circuit names as a union type -export type CircuitName = - | "register_sha256_sha256_sha256_rsa_65537_4096" - | "register_sha256_sha256_sha256_ecdsa_brainpoolP384r1" - | "register_sha256_sha256_sha256_ecdsa_secp256r1" - | "register_sha256_sha256_sha256_ecdsa_secp384r1" - | "register_sha256_sha256_sha256_rsa_3_4096" - | "register_sha256_sha256_sha256_rsapss_3_32_2048" - | "register_sha256_sha256_sha256_rsapss_65537_32_2048" - | "register_sha256_sha256_sha256_rsapss_65537_32_3072" - | "register_sha384_sha384_sha384_ecdsa_brainpoolP384r1" - | "register_sha384_sha384_sha384_ecdsa_brainpoolP512r1" - | "register_sha384_sha384_sha384_ecdsa_secp384r1" - | "register_sha512_sha512_sha512_ecdsa_brainpoolP512r1" - | "register_sha512_sha512_sha512_rsa_65537_4096" - | "register_sha512_sha512_sha512_rsapss_65537_64_2048" - | "register_sha1_sha1_sha1_rsa_65537_4096" - | "register_sha1_sha256_sha256_rsa_65537_4096" - | "register_sha224_sha224_sha224_ecdsa_brainpoolP224r1" - | "register_sha256_sha224_sha224_ecdsa_secp224r1" - | "register_sha256_sha256_sha256_ecdsa_brainpoolP256r1" - | "register_sha1_sha1_sha1_ecdsa_brainpoolP224r1" - | "register_sha384_sha384_sha384_rsapss_65537_48_2048" - | "register_sha1_sha1_sha1_ecdsa_secp256r1" - | "register_sha256_sha256_sha256_rsapss_65537_64_2048" - | "register_sha512_sha512_sha256_rsa_65537_4096" - | "register_sha512_sha512_sha512_ecdsa_secp521r1" - | "register_id_sha256_sha256_sha256_rsa_65537_4096" - | "register_sha256_sha256_sha224_ecdsa_secp224r1" - | "register_id_sha1_sha1_sha1_ecdsa_brainpoolP224r1" - | "register_id_sha1_sha1_sha1_ecdsa_secp256r1" - | "register_id_sha1_sha1_sha1_rsa_65537_4096" - | "register_id_sha1_sha256_sha256_rsa_65537_4096" - | "register_id_sha224_sha224_sha224_ecdsa_brainpoolP224r1" - | "register_id_sha256_sha224_sha224_ecdsa_secp224r1" - | "register_id_sha256_sha256_sha224_ecdsa_secp224r1" - | "register_id_sha256_sha256_sha256_ecdsa_brainpoolP256r1" - | "register_id_sha256_sha256_sha256_ecdsa_brainpoolP384r1" - | "register_id_sha256_sha256_sha256_ecdsa_secp256r1" - | "register_id_sha256_sha256_sha256_ecdsa_secp384r1" - | "register_id_sha256_sha256_sha256_rsa_3_4096" - | "register_id_sha256_sha256_sha256_rsapss_3_32_2048" - | "register_id_sha256_sha256_sha256_rsapss_65537_32_2048" - | "register_id_sha256_sha256_sha256_rsapss_65537_32_3072" - | "register_id_sha256_sha256_sha256_rsapss_65537_64_2048" - | "register_id_sha384_sha384_sha384_ecdsa_brainpoolP384r1" - | "register_id_sha384_sha384_sha384_ecdsa_brainpoolP512r1" - | "register_id_sha384_sha384_sha384_ecdsa_secp384r1" - | "register_id_sha384_sha384_sha384_rsapss_65537_48_2048" - | "register_id_sha512_sha512_sha256_rsa_65537_4096" - | "register_id_sha512_sha512_sha512_ecdsa_brainpoolP512r1" - | "register_id_sha512_sha512_sha512_ecdsa_secp521r1" - | "register_id_sha512_sha512_sha512_rsa_65537_4096" - | "register_id_sha512_sha512_sha512_rsapss_65537_64_2048" - | "register_aadhaar" - | "register_sha1_sha1_sha1_rsa_64321_4096" - | "register_sha256_sha1_sha1_rsa_65537_4096" - | "register_sha256_sha256_sha256_rsapss_65537_32_4096" - | "register_id_sha512_sha512_sha256_rsapss_65537_32_2048" - | "register_sha512_sha512_sha256_rsapss_65537_32_2048" - | "dsc_sha1_ecdsa_brainpoolP256r1" - | "dsc_sha1_rsa_65537_4096" - | "dsc_sha256_ecdsa_brainpoolP256r1" - | "dsc_sha256_ecdsa_brainpoolP384r1" - | "dsc_sha256_ecdsa_secp256r1" - | "dsc_sha256_ecdsa_secp384r1" - | "dsc_sha256_ecdsa_secp521r1" - | "dsc_sha256_rsa_65537_4096" - | "dsc_sha256_rsapss_3_32_3072" - | "dsc_sha256_rsapss_65537_32_3072" - | "dsc_sha256_rsapss_65537_32_4096" - | "dsc_sha384_ecdsa_brainpoolP384r1" - | "dsc_sha384_ecdsa_brainpoolP512r1" - | "dsc_sha384_ecdsa_secp384r1" - | "dsc_sha512_ecdsa_brainpoolP512r1" - | "dsc_sha512_ecdsa_secp521r1" - | "dsc_sha512_rsa_65537_4096" - | "dsc_sha512_rsapss_65537_64_4096" - // | "dsc_sha256_rsapss_3_32_4096" - | "dsc_sha1_ecdsa_secp256r1" - | "dsc_sha256_rsa_107903_4096" - | "dsc_sha256_rsa_122125_4096" - | "dsc_sha256_rsa_130689_4096" - | "dsc_sha256_rsa_56611_4096" - | "vc_and_disclose" - | "vc_and_disclose_id" - | "vc_and_disclose_aadhaar"; - -// Record mapping circuit names to numbers -export const circuitIds: Record = { - register_sha256_sha256_sha256_rsa_65537_4096: [true, 0], - register_sha256_sha256_sha256_ecdsa_brainpoolP384r1: [true, 1], - register_sha256_sha256_sha256_ecdsa_secp256r1: [true, 2], - register_sha256_sha256_sha256_ecdsa_secp384r1: [true, 3], - register_sha256_sha256_sha256_rsa_3_4096: [true, 4], - register_sha256_sha256_sha256_rsapss_3_32_2048: [true, 5], - register_sha256_sha256_sha256_rsapss_65537_32_2048: [true, 6], - register_sha256_sha256_sha256_rsapss_65537_32_3072: [true, 7], - register_sha384_sha384_sha384_ecdsa_brainpoolP384r1: [true, 8], - register_sha384_sha384_sha384_ecdsa_brainpoolP512r1: [true, 9], - register_sha384_sha384_sha384_ecdsa_secp384r1: [true, 10], - register_sha512_sha512_sha512_ecdsa_brainpoolP512r1: [true, 11], - register_sha512_sha512_sha512_rsa_65537_4096: [true, 12], - register_sha512_sha512_sha512_rsapss_65537_64_2048: [true, 13], - register_sha1_sha1_sha1_rsa_65537_4096: [true, 14], - register_sha1_sha256_sha256_rsa_65537_4096: [true, 15], - register_sha224_sha224_sha224_ecdsa_brainpoolP224r1: [true, 16], - register_sha256_sha224_sha224_ecdsa_secp224r1: [true, 17], - register_sha256_sha256_sha256_ecdsa_brainpoolP256r1: [true, 18], - register_sha1_sha1_sha1_ecdsa_brainpoolP224r1: [true, 19], - register_sha384_sha384_sha384_rsapss_65537_48_2048: [true, 20], - register_sha1_sha1_sha1_ecdsa_secp256r1: [true, 21], - register_sha256_sha256_sha256_rsapss_65537_64_2048: [true, 22], - register_sha512_sha512_sha256_rsa_65537_4096: [true, 23], - register_sha512_sha512_sha512_ecdsa_secp521r1: [true, 24], - register_id_sha256_sha256_sha256_rsa_65537_4096: [true, 25], - register_sha256_sha256_sha224_ecdsa_secp224r1: [true, 26], - register_id_sha1_sha1_sha1_ecdsa_brainpoolP224r1: [true, 27], - register_id_sha1_sha1_sha1_ecdsa_secp256r1: [true, 28], - register_id_sha1_sha1_sha1_rsa_65537_4096: [true, 29], - register_id_sha1_sha256_sha256_rsa_65537_4096: [true, 30], - register_id_sha224_sha224_sha224_ecdsa_brainpoolP224r1: [true, 31], - register_id_sha256_sha224_sha224_ecdsa_secp224r1: [true, 32], - register_id_sha256_sha256_sha224_ecdsa_secp224r1: [true, 33], - register_id_sha256_sha256_sha256_ecdsa_brainpoolP256r1: [true, 34], - register_id_sha256_sha256_sha256_ecdsa_brainpoolP384r1: [true, 35], - register_id_sha256_sha256_sha256_ecdsa_secp256r1: [true, 36], - register_id_sha256_sha256_sha256_ecdsa_secp384r1: [true, 37], - register_id_sha256_sha256_sha256_rsa_3_4096: [true, 38], - register_id_sha256_sha256_sha256_rsapss_3_32_2048: [true, 39], - register_id_sha256_sha256_sha256_rsapss_65537_32_2048: [true, 40], - register_id_sha256_sha256_sha256_rsapss_65537_32_3072: [true, 41], - register_id_sha256_sha256_sha256_rsapss_65537_64_2048: [true, 42], - register_id_sha384_sha384_sha384_ecdsa_brainpoolP384r1: [true, 43], - register_id_sha384_sha384_sha384_ecdsa_brainpoolP512r1: [true, 44], - register_id_sha384_sha384_sha384_ecdsa_secp384r1: [true, 45], - register_id_sha384_sha384_sha384_rsapss_65537_48_2048: [true, 46], - register_id_sha512_sha512_sha256_rsa_65537_4096: [true, 47], - register_id_sha512_sha512_sha512_ecdsa_brainpoolP512r1: [true, 48], - register_id_sha512_sha512_sha512_ecdsa_secp521r1: [true, 49], - register_id_sha512_sha512_sha512_rsa_65537_4096: [true, 50], - register_id_sha512_sha512_sha512_rsapss_65537_64_2048: [true, 51], - register_aadhaar: [true, 52], - register_sha1_sha1_sha1_rsa_64321_4096: [true, 53], - register_sha256_sha1_sha1_rsa_65537_4096: [true, 54], - register_sha256_sha256_sha256_rsapss_65537_32_4096: [true, 55], - register_id_sha512_sha512_sha256_rsapss_65537_32_2048: [true, 56], - register_sha512_sha512_sha256_rsapss_65537_32_2048: [true, 57], - - dsc_sha1_ecdsa_brainpoolP256r1: [true, 0], - dsc_sha1_rsa_65537_4096: [true, 1], - dsc_sha256_ecdsa_brainpoolP256r1: [true, 2], - dsc_sha256_ecdsa_brainpoolP384r1: [true, 3], - dsc_sha256_ecdsa_secp256r1: [true, 4], - dsc_sha256_ecdsa_secp384r1: [true, 5], - dsc_sha256_ecdsa_secp521r1: [true, 6], - dsc_sha256_rsa_65537_4096: [true, 7], - dsc_sha256_rsapss_3_32_3072: [true, 8], - dsc_sha256_rsapss_65537_32_3072: [true, 9], - dsc_sha256_rsapss_65537_32_4096: [true, 10], - dsc_sha384_ecdsa_brainpoolP384r1: [true, 11], - dsc_sha384_ecdsa_brainpoolP512r1: [true, 12], - dsc_sha384_ecdsa_secp384r1: [true, 13], - dsc_sha512_ecdsa_brainpoolP512r1: [true, 14], - dsc_sha512_ecdsa_secp521r1: [true, 15], - dsc_sha512_rsa_65537_4096: [true, 16], - dsc_sha512_rsapss_65537_64_4096: [true, 17], - // dsc_sha256_rsapss_3_32_4096: [true, 18], - dsc_sha1_ecdsa_secp256r1: [true, 19], - dsc_sha256_rsa_107903_4096: [true, 20], - dsc_sha256_rsa_122125_4096: [true, 21], - dsc_sha256_rsa_130689_4096: [true, 22], - dsc_sha256_rsa_56611_4096: [true, 23], - - vc_and_disclose: [true, 24], - vc_and_disclose_id: [true, 25], - vc_and_disclose_aadhaar: [true, 26], -}; - -export default buildModule("DeployAllVerifiers", (m) => { - const deployments: Record = {}; - let lastDeployedContract: any = null; - - for (const circuit of Object.keys(circuitIds) as CircuitName[]) { - const [shouldDeploy] = circuitIds[circuit]; - - if (!shouldDeploy) { - console.log(`Skipping Verifier_${circuit}`); - continue; - } - - const name = `Verifier_${circuit}`; - console.log(`Deploying ${name}...`); - - // Create dependency on the last deployed contract to ensure sequential deployment - const deployOptions = lastDeployedContract ? { after: [lastDeployedContract] } : {}; - deployments[name] = m.contract(name, [], deployOptions); - lastDeployedContract = deployments[name]; - } - - console.log(`Deployments will execute sequentially to prevent nonce conflicts`); - return deployments; -}); diff --git a/contracts/ignition/modules/verifiers/deployVerifiers.ts b/contracts/ignition/modules/verifiers/deployVerifiers.ts deleted file mode 100644 index 1412462bf..000000000 --- a/contracts/ignition/modules/verifiers/deployVerifiers.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; - -export default buildModule("DeployVerifiers", (m) => { - // const vcAndDiscloseVerifier = m.contract("Verifier_vc_and_disclose"); - - // const registerVerifier = m.contract("Verifier_register_sha1_sha256_sha256_rsa_65537_4096"); - // const registerVerifier2 = m.contract("Verifier_register_sha256_sha256_sha256_ecdsa_brainpoolP256r1"); - // const registerVerifier3 = m.contract("Verifier_register_sha256_sha256_sha256_rsa_65537_4096"); - const verifier1 = m.contract("Verifier_dsc_sha1_ecdsa_secp256r1"); - const verifier2 = m.contract("Verifier_dsc_sha256_ecdsa_secp521r1"); - const verifier3 = m.contract("Verifier_dsc_sha384_ecdsa_brainpoolP512r1"); - const verifier4 = m.contract("Verifier_dsc_sha512_ecdsa_brainpoolP512r1"); - const verifier5 = m.contract("Verifier_dsc_sha512_ecdsa_secp521r1"); - const verifier6 = m.contract("Verifier_register_sha1_sha1_sha1_ecdsa_secp256r1"); - const verifier7 = m.contract("Verifier_register_sha256_sha256_sha256_rsapss_65537_64_2048"); - const verifier8 = m.contract("Verifier_register_sha512_sha512_sha256_rsa_65537_4096"); - const verifier9 = m.contract("Verifier_register_sha512_sha512_sha512_ecdsa_secp521r1"); - const verifier10 = m.contract("Verifier_register_sha512_sha512_sha512_ecdsa_brainpoolP512r1"); - const verifier11 = m.contract("Verifier_register_sha384_sha384_sha384_ecdsa_brainpoolP512r1"); - - // const dscVerifier = m.contract("Verifier_dsc_sha256_rsa_65537_4096"); - - return { - verifier1, - verifier2, - verifier3, - verifier4, - verifier5, - verifier6, - verifier7, - verifier8, - verifier9, - verifier10, - verifier11, - }; -}); diff --git a/contracts/package.json b/contracts/package.json index 34ca79557..c6c6b5d69 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -31,20 +31,19 @@ "deploy:registry": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/registry/deployRegistry.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", "deploy:registry:idcard": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/registry/deployIdCardRegistry.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", "deploy:test:selfverificationroot": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/deployTestSelfVerificationRoot.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", - "deploy:verifier:id": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/verifiers/deployAllVerifiersNew.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", - "deploy:verifiers": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/verifiers/deployVerifiers.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", - "deploy:verifiers:all": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/verifiers/deployAllVerifiersNew.ts --network ${NETWORK:-localhost}' --verify", + "deploy:verifier:idcard": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/verifiers/deployIdCardVerifier.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", + "deploy:verifiers:all": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/verifiers/deployAllVerifiers.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", "export-prod": "bash ./scripts/prod.sh", "find:error": "npx tsx scripts/findErrorSelectors.ts", "format": "yarn prettier:write", "prettier:check": "prettier --plugin-search-dir . --list-different '**/*.{json,md,yml,sol,ts}'", "prettier:write": "prettier --plugin-search-dir . --write '**/*.{json,md,yml,sol,ts}'", "publish": "npm publish --access public", - "set:hub:v2": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK:-alfajores} npx tsx scripts/setHubV2.ts'", - "set:registry": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK:-staging} npx tsx scripts/setRegistry.ts'", + "set:hub:v2": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK} npx tsx scripts/setHubV2.ts'", + "set:registry": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK} npx tsx scripts/setRegistry.ts'", "set:registry:hub:v2": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/scripts/updateRegistryHubV2.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", - "set:registry:idcard": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK:-staging} npx tsx scripts/setRegistryId.ts'", - "set:verifiers:v2": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK:-alfajores} npx tsx scripts/setVerifiersV2.ts'", + "set:registry:idcard": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK} npx tsx scripts/setRegistryId.ts'", + "set:verifiers:v2": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK} npx tsx scripts/setVerifiersV2.ts'", "show:registry": "npx tsx scripts/showRegistryAddresses.ts", "test": "yarn hardhat test", "test:airdrop": "npx dotenv-cli -- bash -c 'TEST_ENV=${TEST_ENV:-local} npx hardhat test test/example/airdrop.test.ts'", @@ -68,8 +67,8 @@ "test:view": "yarn hardhat test test/view.ts", "types": "tsc -noEmit", "update:cscaroot": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/scripts/updateRegistryCscaRoot.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", - "update:hub": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK:-staging} npx tsx scripts/setRegistry.ts'", - "update:ofacroot": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK:-alfajores} npx tsx scripts/updateRegistryOfacRoot.ts'", + "update:hub": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK} npx tsx scripts/setRegistry.ts'", + "update:ofacroot": "npx dotenv-cli -- bash -c 'NETWORK=${NETWORK} npx tsx scripts/updateRegistryOfacRoot.ts'", "update:pcr0": "npx dotenv-cli -- bash -c 'PCR0_ACTION=${PCR0_ACTION:-add} PCR0_KEY=${PCR0_KEY} yarn hardhat ignition deploy ignition/modules/scripts/updatePCR0.ts --network ${NETWORK:-localhost} --reset'", "upgrade:hub": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/upgrade/deployNewHubAndUpgrade.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'", "upgrade:registry": "npx dotenv-cli -- bash -c 'yarn hardhat ignition deploy ignition/modules/upgrade/deployNewRegistryAndUpgrade.ts --network ${NETWORK:-localhost} ${VERIFY:+--verify}'" diff --git a/contracts/scripts/constants.ts b/contracts/scripts/constants.ts index 2d3fd8791..1672ddb3f 100644 --- a/contracts/scripts/constants.ts +++ b/contracts/scripts/constants.ts @@ -14,16 +14,15 @@ export const ATTESTATION_TO_REGISTRY = { export const NETWORK_TO_CHAIN_ID: Record = { localhost: "31337", hardhat: "31337", - alfajores: "44787", - celoAlfajores: "44787", + celoSepolia: "11142220", celo: "42220", mainnet: "42220", - staging: "44787", + staging: "11142220", }; export const CHAIN_ID_TO_SAVED_REPO: Record = { "42220": "prod", - "44787": "staging", + "11142220": "staging", }; export const getChainId = (network: string): string => { diff --git a/contracts/scripts/setRegistry.ts b/contracts/scripts/setRegistry.ts index 05da2e5fc..b333fc00a 100644 --- a/contracts/scripts/setRegistry.ts +++ b/contracts/scripts/setRegistry.ts @@ -9,7 +9,7 @@ dotenv.config(); // Environment configuration const NETWORK = process.env.NETWORK || "localhost"; // Default to localhost -const RPC_URL_KEY = NETWORK === "celo" ? "CELO_RPC_URL" : "CELO_ALFAJORES_RPC_URL"; +const RPC_URL_KEY = NETWORK === "celo" ? "CELO_RPC_URL" : "CELO_SEPOLIA_RPC_URL"; const PRIVATE_KEY = process.env.PRIVATE_KEY; const SKIP_CSCA_UPDATE = process.env.SKIP_CSCA_UPDATE === "true"; const CSCA_ROOT = process.env.CSCA_ROOT; // Allow manual CSCA root setting @@ -17,7 +17,7 @@ const CSCA_ROOT = process.env.CSCA_ROOT; // Allow manual CSCA root setting // Network to Chain ID mapping const NETWORK_TO_CHAIN_ID: Record = { localhost: "31337", - celoAlfajores: "44787", + celoSepolia: "11142220", celo: "42220", }; diff --git a/contracts/scripts/setRegistryId.ts b/contracts/scripts/setRegistryId.ts index 3c08e6c72..4f8c66be4 100644 --- a/contracts/scripts/setRegistryId.ts +++ b/contracts/scripts/setRegistryId.ts @@ -9,7 +9,7 @@ dotenv.config(); // Environment configuration const NETWORK = process.env.NETWORK || "localhost"; // Default to localhost -const RPC_URL_KEY = NETWORK === "celo" ? "CELO_RPC_URL" : "CELO_ALFAJORES_RPC_URL"; +const RPC_URL_KEY = NETWORK === "celo" ? "CELO_RPC_URL" : "CELO_SEPOLIA_RPC_URL"; const PRIVATE_KEY = process.env.PRIVATE_KEY; const SKIP_CSCA_UPDATE = process.env.SKIP_CSCA_UPDATE === "true"; const CSCA_ROOT = process.env.CSCA_ROOT; // Allow manual CSCA root setting @@ -17,7 +17,7 @@ const CSCA_ROOT = process.env.CSCA_ROOT; // Allow manual CSCA root setting // Network to Chain ID mapping const NETWORK_TO_CHAIN_ID: Record = { localhost: "31337", - celoAlfajores: "44787", + celoSepolia: "11142220", celo: "42220", }; diff --git a/contracts/scripts/showRegistryAddresses.ts b/contracts/scripts/showRegistryAddresses.ts index 7060dd1c9..b084b5819 100644 --- a/contracts/scripts/showRegistryAddresses.ts +++ b/contracts/scripts/showRegistryAddresses.ts @@ -7,10 +7,13 @@ async function showRegistryAddresses() { try { // Read the deployed addresses from the deployment artifacts - const deployedAddressesPath = path.join(__dirname, "../ignition/deployments/chain-44787/deployed_addresses.json"); + const deployedAddressesPath = path.join( + __dirname, + "../ignition/deployments/chain-11142220/deployed_addresses.json", + ); if (!fs.existsSync(deployedAddressesPath)) { - console.log("❌ No deployment found for chain 44787 (Alfajores)"); + console.log("❌ No deployment found for chain 11142220 (Sepolia)"); console.log(" Please run: yarn deploy:registry"); return; } diff --git a/contracts/scripts/staging.sh b/contracts/scripts/staging.sh index ccc83667a..15378e82a 100755 --- a/contracts/scripts/staging.sh +++ b/contracts/scripts/staging.sh @@ -4,9 +4,9 @@ mkdir -p ignition/deployments/staging/artifacts # Copy deployed_addresses.json -cp ignition/deployments/chain-44787/deployed_addresses.json ignition/deployments/staging/deployed_addresses.json +cp ignition/deployments/chain-11142220/deployed_addresses.json ignition/deployments/staging/deployed_addresses.json -# Copy all artifacts from chain-44787 to staging -cp -r ignition/deployments/chain-44787/artifacts/* ignition/deployments/staging/artifacts/ +# Copy all artifacts from chain-11142220 to staging +cp -r ignition/deployments/chain-11142220/artifacts/* ignition/deployments/staging/artifacts/ -echo "Successfully exported chain-44787 deployment files to staging directory" +echo "Successfully exported chain-11142220 deployment files to staging directory" diff --git a/contracts/test/example/airdrop.test.ts b/contracts/test/example/airdrop.test.ts index 3ef303a20..8a57a5070 100644 --- a/contracts/test/example/airdrop.test.ts +++ b/contracts/test/example/airdrop.test.ts @@ -1,21 +1,49 @@ import { expect } from "chai"; -import { deploySystemFixtures } from "../utils/deployment"; -import { DeployedActors } from "../utils/types"; +import { deploySystemFixturesV2 } from "../utils/deploymentV2"; +import { DeployedActorsV2 } from "../utils/types"; import { ethers } from "hardhat"; import { CIRCUIT_CONSTANTS } from "@selfxyz/common/constants/constants"; import { ATTESTATION_ID } from "../utils/constants"; -import { generateVcAndDiscloseProof } from "../utils/generateProof.js"; +import { generateVcAndDiscloseProof } from "../utils/generateProof"; import { poseidon2 } from "poseidon-lite"; import { generateCommitment } from "@selfxyz/common/utils/passports/passport"; import { generateRandomFieldElement, splitHexFromBack } from "../utils/utils"; import BalanceTree from "../utils/example/balance-tree"; -import { castFromScope } from "@selfxyz/common/utils/circuits/uuid"; import { formatCountriesList, reverseBytes } from "@selfxyz/common/utils/circuits/formatInputs"; import { Formatter } from "../utils/formatter"; import { hashEndpointWithScope } from "@selfxyz/common/utils/scope"; +import { createHash } from "crypto"; + +// Helper function to calculate user identifier hash +function calculateUserIdentifierHash(userContextData: string): string { + const sha256Hash = createHash("sha256") + .update(Buffer.from(userContextData.slice(2), "hex")) + .digest(); + const ripemdHash = createHash("ripemd160").update(sha256Hash).digest(); + return "0x" + ripemdHash.toString("hex").padStart(40, "0"); +} + +// Helper function to create V2 proof format +function createV2ProofData(proof: any, userAddress: string, userData: string = "airdrop-user-data") { + const destChainId = ethers.zeroPadValue(ethers.toBeHex(31337), 32); + const userContextData = ethers.solidityPacked( + ["bytes32", "bytes32", "bytes"], + [destChainId, ethers.zeroPadValue(userAddress, 32), ethers.toUtf8Bytes(userData)], + ); + + const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ATTESTATION_ID.E_PASSPORT)), 32); + const encodedProof = ethers.AbiCoder.defaultAbiCoder().encode( + ["tuple(uint256[2] a, uint256[2][2] b, uint256[2] c, uint256[] pubSignals)"], + [[proof.a, proof.b, proof.c, proof.pubSignals]], + ); + + const proofData = ethers.solidityPacked(["bytes32", "bytes"], [attestationId, encodedProof]); + + return { proofData, userContextData }; +} describe("Airdrop", () => { - let deployedActors: DeployedActors; + let deployedActors: DeployedActorsV2; let snapshotId: string; let airdrop: any; let token: any; @@ -28,9 +56,11 @@ describe("Airdrop", () => { let forbiddenCountriesList: any; let countriesListPacked: any; let attestationIds: any[]; + let userIdentifierBigInt: bigint; + let numericScope: string; before(async () => { - deployedActors = await deploySystemFixtures(); + deployedActors = await deploySystemFixturesV2(); // must be imported dynamic since @openpassport/zk-kit-lean-imt is exclusively esm and hardhat does not support esm with typescript until verison 3 const LeanIMT = await import("@openpassport/zk-kit-lean-imt").then((mod) => mod.LeanIMT); registerSecret = generateRandomFieldElement(); @@ -44,22 +74,7 @@ describe("Airdrop", () => { imt = new LeanIMT(hashFunction); await imt.insert(BigInt(commitment)); - baseVcAndDiscloseProof = await generateVcAndDiscloseProof( - registerSecret, - BigInt(ATTESTATION_ID.E_PASSPORT).toString(), - deployedActors.mockPassport, - hashEndpointWithScope("https://test.com", "test-scope"), - new Array(88).fill("1"), - "1", - imt, - "20", - undefined, - undefined, - undefined, - undefined, - forbiddenCountriesList, - (await deployedActors.user1.getAddress()).slice(2), - ); + // Proof generation will happen after airdrop deployment const tokenFactory = await ethers.getContractFactory("AirdropToken"); token = await tokenFactory.connect(deployedActors.owner).deploy(); @@ -73,24 +88,86 @@ describe("Airdrop", () => { reverseBytes(Formatter.bytesToHexString(new Uint8Array(formatCountriesList(forbiddenCountriesList)))), ); - const airdropFactory = await ethers.getContractFactory("Airdrop"); - airdrop = await airdropFactory.connect(deployedActors.owner).deploy( - deployedActors.hub.target, - hashEndpointWithScope("https://test.com", "test-scope"), - 0, // the types show we need a contract version here - attestationIds, - token.target, - ); + // Deploy PoseidonT3 contract for proper scope calculation + const PoseidonT3Factory = await ethers.getContractFactory("PoseidonT3"); + const poseidonT3 = await PoseidonT3Factory.deploy(); + await poseidonT3.waitForDeployment(); + const poseidonT3Address = await poseidonT3.getAddress(); + + // Deploy TestAirdrop contract (which allows setting PoseidonT3 address) + const airdropFactory = await ethers.getContractFactory("TestAirdrop"); + airdrop = await airdropFactory + .connect(deployedActors.owner) + .deploy(deployedActors.hub.target, "test-scope", token.target); await airdrop.waitForDeployment(); - const verificationConfig = { + // Set the proper scope using the deployed PoseidonT3 + await airdrop.testGenerateScope(poseidonT3Address, "test-scope"); + + // Get the actual scope from the airdrop contract (now properly calculated) + const contractScope = await airdrop.scope(); + numericScope = contractScope.toString(); + + const airdropAddress = await airdrop.getAddress(); + + console.log(`🏠 TestAirdrop deployed at: ${airdropAddress}`); + console.log(`πŸ”’ PoseidonT3 deployed at: ${poseidonT3Address}`); + console.log(`βœ… Proper scope (calculated with PoseidonT3): ${numericScope}`); + + // The airdrop now uses the proper calculated scope + + // Calculate the proper user identifier + const destChainId = ethers.zeroPadValue(ethers.toBeHex(31337), 32); + const user1Address = await deployedActors.user1.getAddress(); + const userData = ethers.toUtf8Bytes("airdrop-user-data"); + + const tempUserContextData = ethers.solidityPacked( + ["bytes32", "bytes32", "bytes"], + [destChainId, ethers.zeroPadValue(user1Address, 32), userData], + ); + + const userIdentifierHash = calculateUserIdentifierHash(tempUserContextData); + userIdentifierBigInt = BigInt(userIdentifierHash); + + baseVcAndDiscloseProof = await generateVcAndDiscloseProof( + registerSecret, + BigInt(ATTESTATION_ID.E_PASSPORT).toString(), + deployedActors.mockPassport, + numericScope, + new Array(88).fill("1"), + "1", + imt, + "20", + undefined, + undefined, + undefined, + undefined, + forbiddenCountriesList, + "0x" + userIdentifierBigInt.toString(16).padStart(64, "0"), + ); + + vcAndDiscloseProof = baseVcAndDiscloseProof; + + // Set up verification config in the hub + const verificationConfigV2 = { olderThanEnabled: true, - olderThan: 20, + olderThan: "20", forbiddenCountriesEnabled: true, - forbiddenCountriesListPacked: countriesListPacked, + forbiddenCountriesListPacked: countriesListPacked as [any, any, any, any], ofacEnabled: [true, true, true] as [boolean, boolean, boolean], }; - await airdrop.connect(deployedActors.owner).setVerificationConfig(verificationConfig); + + // Register the config in the hub and get the config ID + const configId = await deployedActors.hub + .connect(deployedActors.owner) + .setVerificationConfigV2(verificationConfigV2); + const receipt = await configId.wait(); + + // Extract the actual config ID from the transaction receipt + const actualConfigId = receipt!.logs[0].topics[1]; // The configId is the first indexed parameter + + // Set the config ID in the airdrop contract + await airdrop.connect(deployedActors.owner).setConfigId(actualConfigId); const mintAmount = ethers.parseEther("424242424242"); await token.mint(airdrop.target, mintAmount); @@ -201,7 +278,11 @@ describe("Airdrop", () => { const { owner, user1 } = deployedActors; await airdrop.connect(owner).openRegistration(); - const tx = await airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof); + + // Create V2 proof format + const { proofData, userContextData } = createV2ProofData(vcAndDiscloseProof, await user1.getAddress()); + + const tx = await airdrop.connect(user1).verifySelfProof(proofData, userContextData); const receipt = await tx.wait(); const event = receipt?.logs.find( @@ -215,20 +296,17 @@ describe("Airdrop", () => { const appNullifier = vcAndDiscloseProof.pubSignals[CIRCUIT_CONSTANTS.VC_AND_DISCLOSE_NULLIFIER_INDEX]; expect(eventArgs?.nullifier).to.be.equal(appNullifier); - - const nullifierToId = await airdrop.getNullifier(appNullifier); - expect(nullifierToId).to.be.equal(await user1.getAddress()); - - const isRegistered = await airdrop.isRegistered(await user1.getAddress()); - expect(isRegistered).to.be.equal(true); - const isRegisteredFalse = await airdrop.isRegistered(await owner.getAddress()); }); it("should not able to register address by user if registration is closed", async () => { const { owner, user1 } = deployedActors; await airdrop.connect(owner).closeRegistration(); - await expect(airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof)).to.be.revertedWithCustomError( + + // Create V2 proof format + const { proofData, userContextData } = createV2ProofData(vcAndDiscloseProof, await user1.getAddress()); + + await expect(airdrop.connect(user1).verifySelfProof(proofData, userContextData)).to.be.revertedWithCustomError( airdrop, "RegistrationNotOpen", ); @@ -237,11 +315,19 @@ describe("Airdrop", () => { it("should not able to register address by user if scope is invalid", async () => { const { owner, user1 } = deployedActors; - vcAndDiscloseProof = await generateVcAndDiscloseProof( + // Now that we have proper scope calculation, we can create a proof with a genuinely different scope + const airdropAddress = await airdrop.getAddress(); + const differentScope = hashEndpointWithScope(airdropAddress.toLowerCase(), "different-test-scope"); + + console.log(`TestAirdrop scope: ${numericScope}`); + console.log(`Different scope for test: ${differentScope}`); + + // Generate proof with the different scope + const invalidVcAndDiscloseProof = await generateVcAndDiscloseProof( registerSecret, BigInt(ATTESTATION_ID.E_PASSPORT).toString(), deployedActors.mockPassport, - hashEndpointWithScope("https://test.com", "test-scope-invalid"), + differentScope, // Use different scope new Array(88).fill("1"), "1", imt, @@ -251,13 +337,17 @@ describe("Airdrop", () => { undefined, undefined, forbiddenCountriesList, - (await deployedActors.user1.getAddress()).slice(2), + "0x" + userIdentifierBigInt.toString(16).padStart(64, "0"), ); await airdrop.connect(owner).openRegistration(); - await expect(airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof)).to.be.revertedWithCustomError( - airdrop, - "InvalidScope", + + // Create V2 proof format with invalid proof (different scope) + const { proofData, userContextData } = createV2ProofData(invalidVcAndDiscloseProof, await user1.getAddress()); + + await expect(airdrop.connect(user1).verifySelfProof(proofData, userContextData)).to.be.revertedWithCustomError( + deployedActors.hub, + "ScopeMismatch", ); }); @@ -265,8 +355,15 @@ describe("Airdrop", () => { const { owner, user1 } = deployedActors; await airdrop.connect(owner).openRegistration(); - await airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof); - await expect(airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof)).to.be.revertedWithCustomError( + + // Create V2 proof format + const { proofData, userContextData } = createV2ProofData(vcAndDiscloseProof, await user1.getAddress()); + + // First registration should succeed + await airdrop.connect(user1).verifySelfProof(proofData, userContextData); + + // Second registration with same nullifier should fail + await expect(airdrop.connect(user1).verifySelfProof(proofData, userContextData)).to.be.revertedWithCustomError( airdrop, "RegisteredNullifier", ); @@ -292,11 +389,11 @@ describe("Airdrop", () => { await invalidImt.insert(BigInt(commitment)); await invalidImt.insert(BigInt(invalidCommitment)); - vcAndDiscloseProof = await generateVcAndDiscloseProof( + const invalidVcAndDiscloseProof = await generateVcAndDiscloseProof( registerSecret, BigInt(ATTESTATION_ID.INVALID_ATTESTATION_ID).toString(), deployedActors.mockPassport, - hashEndpointWithScope("https://test.com", "test-scope"), + numericScope, // Use the same scope as airdrop (proper calculated scope) new Array(88).fill("1"), "1", invalidImt, @@ -306,24 +403,29 @@ describe("Airdrop", () => { undefined, undefined, forbiddenCountriesList, - (await deployedActors.user1.getAddress()).slice(2), + "0x" + userIdentifierBigInt.toString(16).padStart(64, "0"), ); await airdrop.connect(owner).openRegistration(); - await expect(airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof)).to.be.revertedWithCustomError( - airdrop, - "InvalidAttestationId", + + // Create V2 proof format with invalid attestation ID + const { proofData, userContextData } = createV2ProofData(invalidVcAndDiscloseProof, await user1.getAddress()); + + await expect(airdrop.connect(user1).verifySelfProof(proofData, userContextData)).to.be.revertedWithCustomError( + deployedActors.hub, + "AttestationIdMismatch", ); }); it("should revert with InvalidUserIdentifier when user identifier is 0", async () => { const { owner, user1 } = deployedActors; - vcAndDiscloseProof = await generateVcAndDiscloseProof( + // Generate proof with zero user identifier + const invalidVcAndDiscloseProof = await generateVcAndDiscloseProof( registerSecret, BigInt(ATTESTATION_ID.E_PASSPORT).toString(), deployedActors.mockPassport, - hashEndpointWithScope("https://test.com", "test-scope"), + numericScope, // Use the same scope as airdrop (proper calculated scope) new Array(88).fill("1"), "1", imt, @@ -333,49 +435,123 @@ describe("Airdrop", () => { undefined, undefined, forbiddenCountriesList, - "0000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", // Zero user identifier ); await airdrop.connect(owner).openRegistration(); - await expect(airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof)).to.be.revertedWithCustomError( - airdrop, - "InvalidUserIdentifier", + + // Create V2 proof format with zero user identifier proof + const { proofData, userContextData } = createV2ProofData(invalidVcAndDiscloseProof, await user1.getAddress()); + + await expect(airdrop.connect(user1).verifySelfProof(proofData, userContextData)).to.be.revertedWithCustomError( + deployedActors.hub, + "InvalidUserIdentifierInProof", ); }); it("should allow registration when targetRootTimestamp is 0", async () => { const { hub, registry, owner, user1 } = deployedActors; - const airdropFactory = await ethers.getContractFactory("Airdrop"); - const newAirdrop = await airdropFactory - .connect(owner) - .deploy(hub.target, hashEndpointWithScope("https://test.com", "test-scope"), 0, attestationIds, token.target); + // Deploy a new TestAirdrop with different scopeSeed + const PoseidonT3Factory = await ethers.getContractFactory("PoseidonT3"); + const newPoseidonT3 = await PoseidonT3Factory.deploy(); + await newPoseidonT3.waitForDeployment(); + const newPoseidonT3Address = await newPoseidonT3.getAddress(); + + const airdropFactory = await ethers.getContractFactory("TestAirdrop"); + const newAirdrop = await airdropFactory.connect(owner).deploy(hub.target, "test-scope-2", token.target); await newAirdrop.waitForDeployment(); - const verificationConfig = { + // Set the proper scope for the new airdrop using the deployed PoseidonT3 + await newAirdrop.testGenerateScope(newPoseidonT3Address, "test-scope-2"); + + // Set up verification config for the new airdrop (same as main airdrop) + const verificationConfigV2 = { olderThanEnabled: true, - olderThan: 20, + olderThan: "20", forbiddenCountriesEnabled: true, - forbiddenCountriesListPacked: countriesListPacked, + forbiddenCountriesListPacked: countriesListPacked as [any, any, any, any], ofacEnabled: [true, true, true] as [boolean, boolean, boolean], }; - await newAirdrop.connect(owner).setVerificationConfig(verificationConfig); + + // Register the config in the hub and get the config ID + const configTx = await deployedActors.hub.connect(owner).setVerificationConfigV2(verificationConfigV2); + const configReceipt = await configTx.wait(); + + // Extract the actual config ID from the transaction receipt + const actualConfigId = configReceipt!.logs[0].topics[1]; // The configId is the first indexed parameter + + // Set the config ID in the new airdrop contract + await newAirdrop.connect(owner).setConfigId(actualConfigId); await newAirdrop.connect(owner).openRegistration(); - await expect(newAirdrop.connect(user1).verifySelfProof(vcAndDiscloseProof)).to.not.be.reverted; + + // Get the actual scope from the new airdrop contract + const newAirdropScope = await newAirdrop.scope(); + const newAirdropScopeAsBigIntString = newAirdropScope.toString(); + + // Calculate user identifier for the new airdrop context + const destChainId = ethers.zeroPadValue(ethers.toBeHex(31337), 32); + const user1Address = await user1.getAddress(); + const userData = ethers.toUtf8Bytes("airdrop-user-data"); + + const tempUserContextData = ethers.solidityPacked( + ["bytes32", "bytes32", "bytes"], + [destChainId, ethers.zeroPadValue(user1Address, 32), userData], + ); + + const userIdentifierHash = calculateUserIdentifierHash(tempUserContextData); + const newUserIdentifierBigInt = BigInt(userIdentifierHash); + + // Generate proof with the new airdrop's scope + const newVcAndDiscloseProof = await generateVcAndDiscloseProof( + registerSecret, + BigInt(ATTESTATION_ID.E_PASSPORT).toString(), + deployedActors.mockPassport, + newAirdropScopeAsBigIntString, // Use the actual scope from the new contract + new Array(88).fill("1"), + "1", + imt, + "20", + undefined, + undefined, + undefined, + undefined, + forbiddenCountriesList, + "0x" + newUserIdentifierBigInt.toString(16).padStart(64, "0"), // Use proper user identifier + ); + + // Create V2 proof format for the new airdrop + const { proofData, userContextData } = createV2ProofData(newVcAndDiscloseProof, await user1.getAddress()); + + await expect(newAirdrop.connect(user1).verifySelfProof(proofData, userContextData)).to.not.be.reverted; }); it("should return correct scope", async () => { - const scope = await airdrop.getScope(); - expect(scope).to.equal(hashEndpointWithScope("https://test.com", "test-scope")); - }); + const scope = await airdrop.scope(); - it("should check if attestation ID is allowed", async () => { - const isAllowed = await airdrop.isAttestationIdAllowed(ATTESTATION_ID.E_PASSPORT); - expect(isAllowed).to.be.true; + // With TestAirdrop and deployed PoseidonT3, we now get the proper calculated scope + expect(scope).to.not.equal(0n); - const isNotAllowed = await airdrop.isAttestationIdAllowed(999999); // Some random ID not in the list - expect(isNotAllowed).to.be.false; + // Verify that our test setup correctly uses the contract's actual scope + expect(numericScope).to.equal(scope.toString()); + + // Calculate what the scope would be using hashEndpointWithScope for comparison + const airdropAddress = await airdrop.getAddress(); + const expectedScope = hashEndpointWithScope(airdropAddress.toLowerCase(), "test-scope"); + + // The contract-calculated scope should match the expected scope + expect(scope.toString()).to.equal(expectedScope); + + // Also compare with TestSelfVerificationRoot which should have the same scope calculation method + const testRootScope = await deployedActors.testSelfVerificationRoot.scope(); + expect(testRootScope).to.not.equal(0n); + + console.log(`βœ… TestAirdrop scope (with PoseidonT3): ${scope}`); + console.log(`βœ… Test scope variable: ${numericScope}`); + console.log(`πŸ” TestSelfVerificationRoot scope: ${testRootScope}`); + console.log(`🌐 Expected scope (hashEndpointWithScope): ${expectedScope}`); + console.log(`🎯 All scopes match: ${scope.toString() === expectedScope}`); }); it("should return correct merkle root", async () => { @@ -396,7 +572,11 @@ describe("Airdrop", () => { const { owner, user1 } = deployedActors; await airdrop.connect(owner).openRegistration(); - await airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof); + + // Register the user first using V2 interface + const { proofData, userContextData } = createV2ProofData(vcAndDiscloseProof, await user1.getAddress()); + await airdrop.connect(user1).verifySelfProof(proofData, userContextData); + await airdrop.connect(owner).closeRegistration(); const tree = new BalanceTree([{ account: await user1.getAddress(), amount: BigInt(1000000000000000000) }]); @@ -427,7 +607,10 @@ describe("Airdrop", () => { const { owner, user1 } = deployedActors; await airdrop.connect(owner).openRegistration(); - await airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof); + + // Register the user first using V2 interface + const { proofData, userContextData } = createV2ProofData(vcAndDiscloseProof, await user1.getAddress()); + await airdrop.connect(user1).verifySelfProof(proofData, userContextData); const tree = new BalanceTree([{ account: await user1.getAddress(), amount: BigInt(1000000000000000000) }]); const root = tree.getHexRoot(); @@ -448,7 +631,11 @@ describe("Airdrop", () => { const { owner, user1 } = deployedActors; await airdrop.connect(owner).openRegistration(); - await airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof); + + // Register the user first using V2 interface + const { proofData, userContextData } = createV2ProofData(vcAndDiscloseProof, await user1.getAddress()); + await airdrop.connect(user1).verifySelfProof(proofData, userContextData); + await airdrop.connect(owner).closeRegistration(); const tree = new BalanceTree([{ account: await user1.getAddress(), amount: BigInt(1000000000000000000) }]); @@ -469,7 +656,11 @@ describe("Airdrop", () => { const { owner, user1 } = deployedActors; await airdrop.connect(owner).openRegistration(); - await airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof); + + // Register the user first using V2 interface + const { proofData, userContextData } = createV2ProofData(vcAndDiscloseProof, await user1.getAddress()); + await airdrop.connect(user1).verifySelfProof(proofData, userContextData); + await airdrop.connect(owner).closeRegistration(); const tree = new BalanceTree([{ account: await user1.getAddress(), amount: BigInt(1000000000000000000) }]); const root = tree.getHexRoot(); @@ -494,7 +685,11 @@ describe("Airdrop", () => { const { owner, user1 } = deployedActors; await airdrop.connect(owner).openRegistration(); - await airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof); + + // Register the user first using V2 interface + const { proofData, userContextData } = createV2ProofData(vcAndDiscloseProof, await user1.getAddress()); + await airdrop.connect(user1).verifySelfProof(proofData, userContextData); + await airdrop.connect(owner).closeRegistration(); const tree = new BalanceTree([{ account: await user1.getAddress(), amount: BigInt(1000000000000000000) }]); const root = tree.getHexRoot(); @@ -516,7 +711,11 @@ describe("Airdrop", () => { const { owner, user1, user2 } = deployedActors; await airdrop.connect(owner).openRegistration(); - await airdrop.connect(user1).verifySelfProof(vcAndDiscloseProof); + + // Register only user1, not user2 + const { proofData, userContextData } = createV2ProofData(vcAndDiscloseProof, await user1.getAddress()); + await airdrop.connect(user1).verifySelfProof(proofData, userContextData); + await airdrop.connect(owner).closeRegistration(); const tree = new BalanceTree([ @@ -537,124 +736,21 @@ describe("Airdrop", () => { expect(isClaimed).to.be.false; }); - it("should able to set verification config by owner", async () => { + it("should able to set config ID by owner", async () => { const { owner } = deployedActors; - const newVerificationConfig = { - olderThanEnabled: false, - olderThan: 25, - forbiddenCountriesEnabled: false, - forbiddenCountriesListPacked: countriesListPacked, - ofacEnabled: [false, false, false] as [boolean, boolean, boolean], - }; + const newConfigId = ethers.keccak256(ethers.toUtf8Bytes("new-config-v1")); - await airdrop.connect(owner).setVerificationConfig(newVerificationConfig); - const storedConfig = await airdrop.getVerificationConfig(); + await airdrop.connect(owner).setConfigId(newConfigId); + const storedConfigId = await airdrop.verificationConfigId(); - expect(storedConfig.olderThanEnabled).to.equal(newVerificationConfig.olderThanEnabled); - expect(storedConfig.olderThan).to.equal(newVerificationConfig.olderThan); - expect(storedConfig.forbiddenCountriesEnabled).to.equal(newVerificationConfig.forbiddenCountriesEnabled); - for (let i = 0; i < 4; i++) { - expect(storedConfig.forbiddenCountriesListPacked[i]).to.equal( - newVerificationConfig.forbiddenCountriesListPacked[i], - ); - } - expect(storedConfig.ofacEnabled).to.deep.equal(newVerificationConfig.ofacEnabled); + expect(storedConfigId).to.equal(newConfigId); }); - it("should not able to set verification config by non-owner", async () => { + it("should not able to set config ID by non-owner", async () => { const { user1 } = deployedActors; - const newVerificationConfig = { - olderThanEnabled: false, - olderThan: 25, - forbiddenCountriesEnabled: false, - forbiddenCountriesListPacked: countriesListPacked, - ofacEnabled: [false, false, false] as [boolean, boolean, boolean], - }; + const newConfigId = ethers.keccak256(ethers.toUtf8Bytes("new-config-v1")); - await expect(airdrop.connect(user1).setVerificationConfig(newVerificationConfig)) - .to.be.revertedWithCustomError(airdrop, "OwnableUnauthorizedAccount") - .withArgs(await user1.getAddress()); - }); - - it("should return correct verification config", async () => { - const config = await airdrop.getVerificationConfig(); - expect(config.olderThanEnabled).to.equal(true); - expect(config.olderThan).to.equal(20); - expect(config.forbiddenCountriesEnabled).to.equal(true); - for (let i = 0; i < 4; i++) { - expect(config.forbiddenCountriesListPacked[i]).to.equal(countriesListPacked[i]); - } - expect(config.ofacEnabled).to.deep.equal([true, true, true]); - }); - - it("should able to update scope by owner", async () => { - const { owner } = deployedActors; - const newScope = hashEndpointWithScope("https://newtest.com", "new-test-scope"); - - await airdrop.connect(owner).setScope(newScope); - const scope = await airdrop.getScope(); - expect(scope).to.equal(newScope); - - // Verify event was emitted - const filter = airdrop.filters.ScopeUpdated(); - const events = await airdrop.queryFilter(filter); - const lastEvent = events[events.length - 1]; - expect(lastEvent.args.newScope).to.equal(newScope); - }); - - it("should not be able to update scope by non-owner", async () => { - const { user1 } = deployedActors; - const newScope = hashEndpointWithScope("https://newtest.com", "new-test-scope"); - - await expect(airdrop.connect(user1).setScope(newScope)) - .to.be.revertedWithCustomError(airdrop, "OwnableUnauthorizedAccount") - .withArgs(await user1.getAddress()); - }); - - it("should able to add attestation ID by owner", async () => { - const { owner } = deployedActors; - const newAttestationId = 999; // Some new ID - - await airdrop.connect(owner).addAttestationId(newAttestationId); - const isAllowed = await airdrop.isAttestationIdAllowed(newAttestationId); - expect(isAllowed).to.be.true; - - // Verify event was emitted - const filter = airdrop.filters.AttestationIdAdded(); - const events = await airdrop.queryFilter(filter); - const lastEvent = events[events.length - 1]; - expect(lastEvent.args.attestationId).to.equal(newAttestationId); - }); - - it("should not be able to add attestation ID by non-owner", async () => { - const { user1 } = deployedActors; - const newAttestationId = 888; // Some new ID - - await expect(airdrop.connect(user1).addAttestationId(newAttestationId)) - .to.be.revertedWithCustomError(airdrop, "OwnableUnauthorizedAccount") - .withArgs(await user1.getAddress()); - }); - - it("should able to remove attestation ID by owner", async () => { - const { owner } = deployedActors; - const attestationIdToRemove = ATTESTATION_ID.E_PASSPORT; - - await airdrop.connect(owner).removeAttestationId(attestationIdToRemove); - const isAllowed = await airdrop.isAttestationIdAllowed(attestationIdToRemove); - expect(isAllowed).to.be.false; - - // Verify event was emitted - const filter = airdrop.filters.AttestationIdRemoved(); - const events = await airdrop.queryFilter(filter); - const lastEvent = events[events.length - 1]; - expect(lastEvent.args.attestationId).to.equal(attestationIdToRemove); - }); - - it("should not be able to remove attestation ID by non-owner", async () => { - const { user1 } = deployedActors; - const attestationIdToRemove = ATTESTATION_ID.E_PASSPORT; - - await expect(airdrop.connect(user1).removeAttestationId(attestationIdToRemove)) + await expect(airdrop.connect(user1).setConfigId(newConfigId)) .to.be.revertedWithCustomError(airdrop, "OwnableUnauthorizedAccount") .withArgs(await user1.getAddress()); }); diff --git a/contracts/test/integration/vcAndDisclose.test.ts b/contracts/test/integration/vcAndDisclose.test.ts index a46cabe61..90a005fbb 100644 --- a/contracts/test/integration/vcAndDisclose.test.ts +++ b/contracts/test/integration/vcAndDisclose.test.ts @@ -4,7 +4,7 @@ import { DeployedActors, VcAndDiscloseHubProof } from "../utils/types"; import { ethers } from "hardhat"; import { CIRCUIT_CONSTANTS } from "@selfxyz/common/constants/constants"; import { ATTESTATION_ID } from "../utils/constants"; -import { generateVcAndDiscloseProof, getSMTs } from "../utils/generateProof.js"; +import { generateVcAndDiscloseProof, getSMTs } from "../utils/generateProof"; import { poseidon2 } from "poseidon-lite"; import { generateCommitment } from "@selfxyz/common/utils/passports/passport"; import { BigNumberish } from "ethers"; diff --git a/contracts/test/integration/verifyAll.test.ts b/contracts/test/integration/verifyAll.test.ts index 6fe782c73..a19cdb996 100644 --- a/contracts/test/integration/verifyAll.test.ts +++ b/contracts/test/integration/verifyAll.test.ts @@ -7,11 +7,11 @@ import { generateCommitment } from "@selfxyz/common/utils/passports/passport"; import { ATTESTATION_ID } from "../utils/constants"; import { CIRCUIT_CONSTANTS } from "@selfxyz/common/constants/constants"; import { poseidon2 } from "poseidon-lite"; -import { generateVcAndDiscloseProof, parseSolidityCalldata } from "../utils/generateProof.js"; +import { generateVcAndDiscloseProof, parseSolidityCalldata } from "../utils/generateProof"; import { Formatter } from "../utils/formatter"; import { formatCountriesList, reverseBytes } from "@selfxyz/common/utils/circuits/formatInputs"; import { VerifyAll } from "../../typechain-types"; -import { getSMTs } from "../utils/generateProof.js"; +import { getSMTs } from "../utils/generateProof"; import { Groth16Proof, PublicSignals, groth16 } from "snarkjs"; import { VcAndDiscloseProof } from "../utils/types"; diff --git a/contracts/test/unit/CircuitAttributeHandler.test.ts b/contracts/test/unit/CircuitAttributeHandler.test.ts index dbb907ddc..c90704d98 100644 --- a/contracts/test/unit/CircuitAttributeHandler.test.ts +++ b/contracts/test/unit/CircuitAttributeHandler.test.ts @@ -177,12 +177,10 @@ describe("CircuitAttributeHandler", function () { const shortMRZ = ethers.toUtf8Bytes("ABC"); await expect(testHandler.testExtractStringAttribute(shortMRZ, 0, 5)).to.be.revertedWithCustomError( testHandler, - "INSUFFICIENT_CHARCODE_LEN", + "InsufficientCharcodeLen", ); - expect(() => CircuitAttributeHandler.extractStringAttribute(shortMRZ, 0, 5)).to.throw( - "INSUFFICIENT_CHARCODE_LEN", - ); + expect(() => CircuitAttributeHandler.extractStringAttribute(shortMRZ, 0, 5)).to.throw("InsufficientCharcodeLen"); }); it("should match contract and ts implementation for empty range", async function () { diff --git a/contracts/test/unit/CustomVerifier.test.ts b/contracts/test/unit/CustomVerifier.test.ts index ab168b0c5..93cb6dfb3 100644 --- a/contracts/test/unit/CustomVerifier.test.ts +++ b/contracts/test/unit/CustomVerifier.test.ts @@ -78,7 +78,7 @@ describe("CustomVerifier", function () { [samplePassportOutput], ), ), - ).to.be.revertedWithCustomError(customVerifier, "INVALID_OFAC"); + ).to.be.revertedWithCustomError(customVerifier, "InvalidOfacCheck"); }); it("should return proper OFAC results", async function () { @@ -145,7 +145,7 @@ describe("CustomVerifier", function () { [samplePassportOutput], ), ), - ).to.be.revertedWithCustomError(customVerifier, "INVALID_OLDER_THAN"); + ).to.be.revertedWithCustomError(customVerifier, "InvalidOlderThan"); }); it("should not throw an error if older than is not enabled", async function () { @@ -243,7 +243,7 @@ describe("CustomVerifier", function () { [sampleIdCardOutput], ), ), - ).to.be.revertedWithCustomError(customVerifier, "INVALID_OFAC"); + ).to.be.revertedWithCustomError(customVerifier, "InvalidOfacCheck"); }); it("should return proper OFAC results", async function () { @@ -331,7 +331,7 @@ describe("CustomVerifier", function () { [sampleIdCardOutput], ), ), - ).to.be.revertedWithCustomError(customVerifier, "INVALID_OLDER_THAN"); + ).to.be.revertedWithCustomError(customVerifier, "InvalidOlderThan"); }); it("should not throw an error if older than is not enabled", async function () { @@ -406,6 +406,6 @@ describe("CustomVerifier", function () { ], ), ), - ).to.be.revertedWithCustomError(customVerifier, "INVALID_ATTESTATION_ID"); + ).to.be.revertedWithCustomError(customVerifier, "InvalidAttestationId"); }); }); diff --git a/contracts/test/utils/deployment.ts b/contracts/test/utils/deployment.ts index bd6318006..12351236d 100644 --- a/contracts/test/utils/deployment.ts +++ b/contracts/test/utils/deployment.ts @@ -5,6 +5,7 @@ import { genAndInitMockPassportData } from "@selfxyz/common/utils/passports/genM import { getCscaTreeRoot } from "@selfxyz/common/utils/trees"; import { PassportData } from "@selfxyz/common/utils/types"; import serialized_csca_tree from "../../../common/pubkeys/serialized_csca_tree.json"; +import { getSMTs } from "./generateProof"; import { DeployedActors, DscVerifier, @@ -17,11 +18,11 @@ import { } from "./types"; // Verifier artifacts -import VcAndDiscloseVerifierArtifactLocal from "../../artifacts/contracts/verifiers/local/disclose/Verifier_vc_and_disclose.sol/Verifier_vc_and_disclose.json"; +import VcAndDiscloseVerifierArtifactLocal from "../../artifacts/contracts/verifiers/local/staging/disclose/Verifier_vc_and_disclose_staging.sol/Verifier_vc_and_disclose_staging.json"; // import VcAndDiscloseVerifierArtifactProd from "../../artifacts/contracts/verifiers/disclose/Verifier_vc_and_disclose.sol/Verifier_vc_and_disclose.json"; -import RegisterVerifierArtifactLocal from "../../artifacts/contracts/verifiers/local/register/Verifier_register_sha256_sha256_sha256_rsa_65537_4096.sol/Verifier_register_sha256_sha256_sha256_rsa_65537_4096.json"; +import RegisterVerifierArtifactLocal from "../../artifacts/contracts/verifiers/local/staging/register/Verifier_register_sha256_sha256_sha256_rsa_65537_4096_staging.sol/Verifier_register_sha256_sha256_sha256_rsa_65537_4096_staging.json"; // import RegisterVerifierArtifactProd from "../../artifacts/contracts/verifiers/register/Verifier_register_rsa_65537_sha256.sol/Verifier_register_rsa_65537_sha256.json"; -import DscVerifierArtifactLocal from "../../artifacts/contracts/verifiers/local/dsc/Verifier_dsc_sha256_rsa_65537_4096.sol/Verifier_dsc_sha256_rsa_65537_4096.json"; +import DscVerifierArtifactLocal from "../../artifacts/contracts/verifiers/local/staging/dsc/Verifier_dsc_sha256_rsa_65537_4096_staging.sol/Verifier_dsc_sha256_rsa_65537_4096_staging.json"; // import DscVerifierArtifactProd from "../../artifacts/contracts/verifiers/dsc/Verifier_dsc_sha256_rsa_65537_4096.sol/Verifier_dsc_sha256_rsa_65537_4096.json"; export async function deploySystemFixtures(): Promise { @@ -48,8 +49,7 @@ export async function deploySystemFixtures(): Promise { mockPassport = genAndInitMockPassportData("sha256", "sha256", "rsa_sha256_65537_4096", "FRA", "940131", "401031"); // Deploy verifiers - const vcAndDiscloseVerifierArtifact = - process.env.TEST_ENV === "local" ? VcAndDiscloseVerifierArtifactLocal : VcAndDiscloseVerifierArtifactProd; + const vcAndDiscloseVerifierArtifact = VcAndDiscloseVerifierArtifactLocal; const vcAndDiscloseVerifierFactory = await ethers.getContractFactory( vcAndDiscloseVerifierArtifact.abi, vcAndDiscloseVerifierArtifact.bytecode, @@ -59,8 +59,7 @@ export async function deploySystemFixtures(): Promise { await vcAndDiscloseVerifier.waitForDeployment(); // Deploy register verifier - const registerVerifierArtifact = - process.env.TEST_ENV === "local" ? RegisterVerifierArtifactLocal : RegisterVerifierArtifactProd; + const registerVerifierArtifact = RegisterVerifierArtifactLocal; const registerVerifierFactory = await ethers.getContractFactory( registerVerifierArtifact.abi, registerVerifierArtifact.bytecode, @@ -70,7 +69,7 @@ export async function deploySystemFixtures(): Promise { await registerVerifier.waitForDeployment(); // Deploy dsc verifier - const dscVerifierArtifact = process.env.TEST_ENV === "local" ? DscVerifierArtifactLocal : DscVerifierArtifactProd; + const dscVerifierArtifact = DscVerifierArtifactLocal; const dscVerifierFactory = await ethers.getContractFactory( dscVerifierArtifact.abi, dscVerifierArtifact.bytecode, @@ -138,8 +137,6 @@ export async function deploySystemFixtures(): Promise { // Initialize roots const csca_root = getCscaTreeRoot(serialized_csca_tree); await registryContract.updateCscaRoot(csca_root, { from: owner }); - const getSMTs = await import("./generateProof.js").then((mod) => mod.getSMTs); - const { passportNo_smt, nameAndDob_smt, nameAndYob_smt } = getSMTs(); await registryContract.updatePassportNoOfacRoot(passportNo_smt.root, { from: owner }); diff --git a/contracts/test/utils/deploymentV2.ts b/contracts/test/utils/deploymentV2.ts index 2c383557b..458c7cf11 100644 --- a/contracts/test/utils/deploymentV2.ts +++ b/contracts/test/utils/deploymentV2.ts @@ -280,8 +280,8 @@ export async function deploySystemFixturesV2(): Promise { // Initialize roots const csca_root = getCscaTreeRoot(serialized_csca_tree); - // await registryContract.updateCscaRoot(csca_root, { from: owner }); - // await registryIdContract.updateCscaRoot(csca_root, { from: owner }); + await registryContract.updateCscaRoot(csca_root, { from: owner }); + await registryIdContract.updateCscaRoot(csca_root, { from: owner }); await registryAadhaarContract.registerUidaiPubkeyCommitment(aadhaarPubkeyCommitment, { from: owner, }); diff --git a/contracts/test/utils/formatter.ts b/contracts/test/utils/formatter.ts index a74ef9fe5..26d6fd16c 100644 --- a/contracts/test/utils/formatter.ts +++ b/contracts/test/utils/formatter.ts @@ -303,7 +303,7 @@ export class CircuitAttributeHandler { static extractStringAttribute(input: string | Uint8Array, start: number, end: number): string { const charcodes = this.normalizeInput(input); if (charcodes.length <= end) { - throw new Error("INSUFFICIENT_CHARCODE_LEN"); + throw new Error("InsufficientCharcodeLen"); } const attributeBytes = charcodes.slice(start, end + 1); return new TextDecoder("utf-8").decode(attributeBytes); diff --git a/contracts/test/v2/discloseAadhaar.test.ts b/contracts/test/v2/discloseAadhaar.test.ts index 624d8d7b1..6a5a998a9 100644 --- a/contracts/test/v2/discloseAadhaar.test.ts +++ b/contracts/test/v2/discloseAadhaar.test.ts @@ -8,7 +8,6 @@ import { Country3LetterCode } from "@selfxyz/common/constants/countries"; import { deploySystemFixturesV2 } from "../utils/deploymentV2"; import { DeployedActorsV2 } from "../utils/types"; import { AADHAAR_ATTESTATION_ID } from "@selfxyz/common/constants/constants"; -import { hashEndpointWithScope } from "@selfxyz/common/utils/scope"; import { calculateUserIdentifierHash } from "@selfxyz/common"; import { prepareAadhaarDiscloseTestData } from "@selfxyz/common"; import path from "path"; @@ -17,7 +16,7 @@ import { formatInput } from "@selfxyz/common/utils/circuits/generateInputs"; import fs from "fs"; const privateKeyPem = fs.readFileSync( - path.join(__dirname, "../../../node_modules/anon-aadhaar-circuits/assets/testPrivateKey.pem"), + path.join(__dirname, "../../../circuits/node_modules/anon-aadhaar-circuits/assets/testPrivateKey.pem"), "utf8", ); @@ -39,11 +38,11 @@ describe("Self Verification Flow V2 - Aadhaar", () => { let nameAndDob_smt: any; let nameAndYob_smt: any; let tree: any; - let scopeAsBigInt: bigint; let forbiddenCountriesList: Country3LetterCode[]; let forbiddenCountriesListPacked: string[]; let verificationConfigV2: any; + let scopeAsBigIntString: string; before(async () => { deployedActors = await deploySystemFixturesV2(); @@ -64,21 +63,21 @@ describe("Self Verification Flow V2 - Aadhaar", () => { nameAndDob_smt = getSMTs().nameDobAadhar_smt; nameAndYob_smt = getSMTs().nameYobAadhar_smt; - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - scopeAsBigInt = BigInt(expectedScopeFromHash); - const destChainId = 31337; const user1Address = await deployedActors.user1.getAddress(); const userData = "test-user-data-for-verification"; userIdentifierHash = BigInt(calculateUserIdentifierHash(destChainId, user1Address.slice(2), userData).toString()); + const actualScope = await deployedActors.testSelfVerificationRoot.scope(); + scopeAsBigIntString = actualScope.toString(); + const testData = prepareAadhaarDiscloseTestData( privateKeyPem, tree, nameAndDob_smt, nameAndYob_smt, - scopeAsBigInt.toString(), + scopeAsBigIntString, registerSecret, userIdentifierHash.toString(), createSelector([ @@ -324,9 +323,17 @@ describe("Self Verification Flow V2 - Aadhaar", () => { const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(AADHAAR_ATTESTATION_ID)), 32); - const differentScopeFromHash = hashEndpointWithScope("different.com", "different-scope"); - const differentScopeAsBigInt = BigInt(differentScopeFromHash); - const differentScopeAsBigIntString = differentScopeAsBigInt.toString(); + // Deploy a new TestSelfVerificationRoot contract with a different scopeSeed + const TestSelfVerificationRootFactory = await ethers.getContractFactory("TestSelfVerificationRoot"); + const differentScopeContract = await TestSelfVerificationRootFactory.deploy( + deployedActors.hubImplV2.target, + "different-test-scope", // Different scopeSeed + ); + await differentScopeContract.waitForDeployment(); + + // Get the actual different scope from the deployed contract + const differentActualScope = await differentScopeContract.scope(); + const differentScopeAsBigIntString = differentActualScope.toString(); const aadhaarInputs = prepareAadhaarDiscloseTestData( privateKeyPem, @@ -498,7 +505,7 @@ describe("Self Verification Flow V2 - Aadhaar", () => { imt, nameAndDob_smt, nameAndYob_smt, - scopeAsBigInt.toString(), + scopeAsBigIntString, registerSecret, userIdentifierHash.toString(), createSelector(["GENDER"]).toString(), @@ -573,7 +580,7 @@ describe("Self Verification Flow V2 - Aadhaar", () => { imt, nameAndDob_smt, nameAndYob_smt, - scopeAsBigInt.toString(), + scopeAsBigIntString, registerSecret, userIdentifierHash.toString(), createSelector(["GENDER"]).toString(), @@ -892,7 +899,7 @@ describe("Self Verification Flow V2 - Aadhaar", () => { imt, nameAndDob_smt, nameAndYob_smt, - scopeAsBigInt.toString(), + scopeAsBigIntString, registerSecret, newUserIdentifierHash.toString(), createSelector(["GENDER"]).toString(), diff --git a/contracts/test/v2/discloseId.test.ts b/contracts/test/v2/discloseId.test.ts index 1f4311fba..de7f68080 100644 --- a/contracts/test/v2/discloseId.test.ts +++ b/contracts/test/v2/discloseId.test.ts @@ -10,7 +10,6 @@ import { countries } from "@selfxyz/common/constants/countries"; import { deploySystemFixturesV2 } from "../utils/deploymentV2"; import { DeployedActorsV2 } from "../utils/types"; import { Country3LetterCode } from "@selfxyz/common/constants/countries"; -import { hashEndpointWithScope } from "@selfxyz/common/utils/scope"; import { createHash } from "crypto"; import { ID_CARD_ATTESTATION_ID } from "@selfxyz/common/constants/constants"; import { genMockIdDocAndInitDataParsing } from "@selfxyz/common/utils/passports/genMockIdDoc"; @@ -40,6 +39,7 @@ describe("Self Verification Flow V2 - ID Card", () => { let forbiddenCountriesList: Country3LetterCode[]; let forbiddenCountriesListPacked: string[]; let verificationConfigV2: any; + let scopeAsBigIntString: string; before(async () => { deployedActors = await deploySystemFixturesV2(); @@ -105,9 +105,8 @@ describe("Self Verification Flow V2 - ID Card", () => { const userIdentifierHash = calculateUserIdentifierHash(tempUserContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); + const actualScope = await deployedActors.testSelfVerificationRoot.scope(); + scopeAsBigIntString = actualScope.toString(); baseVcAndDiscloseProof = await generateVcAndDiscloseIdProof( registerSecret, @@ -297,10 +296,17 @@ describe("Self Verification Flow V2 - ID Card", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - // Generate proof with a different scope (this will create a valid proof but with wrong scope) - const differentScopeFromHash = hashEndpointWithScope("different.com", "different-scope"); - const differentScopeAsBigInt = BigInt(differentScopeFromHash); - const differentScopeAsBigIntString = differentScopeAsBigInt.toString(); + // Deploy a new TestSelfVerificationRoot contract with a different scopeSeed + const TestSelfVerificationRootFactory = await ethers.getContractFactory("TestSelfVerificationRoot"); + const differentScopeContract = await TestSelfVerificationRootFactory.deploy( + deployedActors.hub.target, + "different-test-scope", // Different scopeSeed + ); + await differentScopeContract.waitForDeployment(); + + // Get the actual different scope from the deployed contract + const differentActualScope = await differentScopeContract.scope(); + const differentScopeAsBigIntString = differentActualScope.toString(); const differentScopeProof = await generateVcAndDiscloseIdProof( scopeRegisterSecret, @@ -652,10 +658,6 @@ describe("Self Verification Flow V2 - ID Card", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); - const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ID_CARD_ATTESTATION_ID)), 32); // Use the existing commitment and merkle root instead of creating new ones @@ -716,10 +718,6 @@ describe("Self Verification Flow V2 - ID Card", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); - const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ID_CARD_ATTESTATION_ID)), 32); // Use the existing commitment and merkle root instead of creating new ones @@ -781,10 +779,6 @@ describe("Self Verification Flow V2 - ID Card", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); - const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ID_CARD_ATTESTATION_ID)), 32); // Use the existing commitment and merkle root instead of creating new ones @@ -846,10 +840,6 @@ describe("Self Verification Flow V2 - ID Card", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); - const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ID_CARD_ATTESTATION_ID)), 32); // Use the existing commitment and merkle root instead of creating new ones diff --git a/contracts/test/v2/disclosePassport.test.ts b/contracts/test/v2/disclosePassport.test.ts index 4290b3813..c9e97c86c 100644 --- a/contracts/test/v2/disclosePassport.test.ts +++ b/contracts/test/v2/disclosePassport.test.ts @@ -11,7 +11,6 @@ import { countries } from "@selfxyz/common/constants/countries"; import { deploySystemFixturesV2 } from "../utils/deploymentV2"; import { DeployedActorsV2 } from "../utils/types"; import { Country3LetterCode } from "@selfxyz/common/constants/countries"; -import { hashEndpointWithScope } from "@selfxyz/common/utils/scope"; import { createHash } from "crypto"; // Helper function to format date for passport (YYMMDD format) @@ -36,6 +35,7 @@ describe("Self Verification Flow V2", () => { let forbiddenCountriesList: Country3LetterCode[]; let forbiddenCountriesListPacked: string[]; let verificationConfigV2: any; + let scopeAsBigIntString: string; function calculateUserIdentifierHash(userContextData: string): string { const sha256Hash = createHash("sha256") @@ -98,9 +98,8 @@ describe("Self Verification Flow V2", () => { const userIdentifierHash = calculateUserIdentifierHash(tempUserContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); + const actualScope = await deployedActors.testSelfVerificationRoot.scope(); + scopeAsBigIntString = actualScope.toString(); baseVcAndDiscloseProof = await generateVcAndDiscloseProof( registerSecret, @@ -283,10 +282,17 @@ describe("Self Verification Flow V2", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - // Generate proof with a different scope (this will create a valid proof but with wrong scope) - const differentScopeFromHash = hashEndpointWithScope("different.com", "different-scope"); - const differentScopeAsBigInt = BigInt(differentScopeFromHash); - const differentScopeAsBigIntString = differentScopeAsBigInt.toString(); + // Deploy a new TestSelfVerificationRoot contract with a different scopeSeed + const TestSelfVerificationRootFactory = await ethers.getContractFactory("TestSelfVerificationRoot"); + const differentScopeContract = await TestSelfVerificationRootFactory.deploy( + deployedActors.hub.target, + "different-test-scope", // Different scopeSeed + ); + await differentScopeContract.waitForDeployment(); + + // Get the actual different scope from the deployed contract + const differentActualScope = await differentScopeContract.scope(); + const differentScopeAsBigIntString = differentActualScope.toString(); const differentScopeProof = await generateVcAndDiscloseProof( scopeRegisterSecret, @@ -386,10 +392,6 @@ describe("Self Verification Flow V2", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); - const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ATTESTATION_ID.E_PASSPORT)), 32); // Create a separate commitment with a different secret to generate a different merkle root @@ -674,10 +676,6 @@ describe("Self Verification Flow V2", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); - const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ATTESTATION_ID.E_PASSPORT)), 32); // Use the existing commitment and merkle root instead of creating new ones @@ -751,10 +749,6 @@ describe("Self Verification Flow V2", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); - const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ATTESTATION_ID.E_PASSPORT)), 32); // Generate proof with the original forbidden countries list (this will create a mismatch) using existing commitment @@ -812,10 +806,6 @@ describe("Self Verification Flow V2", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); - const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ATTESTATION_ID.E_PASSPORT)), 32); // Generate proof with age 20 (which is less than required 25) using existing commitment @@ -873,10 +863,6 @@ describe("Self Verification Flow V2", () => { const userIdentifierHash = calculateUserIdentifierHash(userContextData); const userIdentifierBigInt = BigInt(userIdentifierHash); - const expectedScopeFromHash = hashEndpointWithScope("example.com", "test-scope"); - const scopeAsBigInt = BigInt(expectedScopeFromHash); - const scopeAsBigIntString = scopeAsBigInt.toString(); - const attestationId = ethers.zeroPadValue(ethers.toBeHex(BigInt(ATTESTATION_ID.E_PASSPORT)), 32); // Generate proof with the correct user identifier that matches the userContextData using existing commitment diff --git a/contracts/test/v2/registerAadhaar.test.ts b/contracts/test/v2/registerAadhaar.test.ts index 3ce989483..062ab2508 100644 --- a/contracts/test/v2/registerAadhaar.test.ts +++ b/contracts/test/v2/registerAadhaar.test.ts @@ -10,7 +10,7 @@ import { generateRegisterAadhaarProof } from "../utils/generateProof"; import fs from "fs"; const privateKeyPem = fs.readFileSync( - path.join(__dirname, "../../../node_modules/anon-aadhaar-circuits/assets/testPrivateKey.pem"), + path.join(__dirname, "../../../circuits/node_modules/anon-aadhaar-circuits/assets/testPrivateKey.pem"), "utf8", ); const pubkeyPem = fs.readFileSync( From 7197545985cf4455ea1174fee561fa36161ce3a9 Mon Sep 17 00:00:00 2001 From: Leszek Stachowski Date: Mon, 27 Oct 2025 13:25:28 +0100 Subject: [PATCH 05/18] Bump up mobile-sdk-alpha version (#1324) --- packages/mobile-sdk-alpha/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mobile-sdk-alpha/package.json b/packages/mobile-sdk-alpha/package.json index 6e2dba516..2015b25c7 100644 --- a/packages/mobile-sdk-alpha/package.json +++ b/packages/mobile-sdk-alpha/package.json @@ -1,6 +1,6 @@ { "name": "@selfxyz/mobile-sdk-alpha", - "version": "0.0.1-alpha.0", + "version": "0.0.1-alpha.1", "description": "Self SDK (alpha) for registering and proving", "keywords": [ "self", From 3c32887f5a56077521fd8a631f0559694fa58495 Mon Sep 17 00:00:00 2001 From: Nesopie <87437291+Nesopie@users.noreply.github.com> Date: Tue, 28 Oct 2025 04:03:37 +0530 Subject: [PATCH 06/18] fix: qrcode peer dependencies (#1240) * fix: qrcode peer dependencies * chore: yarn --- sdk/qrcode/package.json | 14 +++++++------- yarn.lock | 21 +++++++++++++++------ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/sdk/qrcode/package.json b/sdk/qrcode/package.json index 05804d6ed..80c4241fe 100644 --- a/sdk/qrcode/package.json +++ b/sdk/qrcode/package.json @@ -1,6 +1,6 @@ { "name": "@selfxyz/qrcode", - "version": "1.0.15", + "version": "1.0.16", "repository": { "type": "git", "url": "https://github.com/selfxyz/self" @@ -88,8 +88,8 @@ "@size-limit/preset-big-lib": "^11.2.0", "@types/node": "^22.18.3", "@types/node-forge": "^1", - "@types/react": "^18.3.4", - "@types/react-dom": "^18.3.0", + "@types/react": ">=18.0.0 <20.0.0", + "@types/react-dom": ">=18.0.0 <20.0.0", "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", @@ -102,8 +102,8 @@ "eslint-plugin-sort-exports": "^0.9.1", "mocha": "^10.7.3", "prettier": "^3.5.3", - "react": "^18.3.1", - "react-dom": "^18.3.1", + "react": ">=18.0.0 <20.0.0", + "react-dom": ">=18.0.0 <20.0.0", "size-limit": "^11.2.0", "ts-loader": "^9.5.1", "ts-mocha": "^10.0.0", @@ -114,8 +114,8 @@ }, "peerDependencies": { "lottie-react": "^2.4.0", - "react": "^18.3.1", - "react-dom": "^18.3.1" + "react": ">=18.0.0 <20.0.0", + "react-dom": ">=18.0.0 <20.0.0" }, "engines": { "node": ">=22 <23" diff --git a/yarn.lock b/yarn.lock index 3216f3131..b254538c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7539,8 +7539,8 @@ __metadata: "@size-limit/preset-big-lib": "npm:^11.2.0" "@types/node": "npm:^22.18.3" "@types/node-forge": "npm:^1" - "@types/react": "npm:^18.3.4" - "@types/react-dom": "npm:^18.3.0" + "@types/react": "npm:>=18.0.0 <20.0.0" + "@types/react-dom": "npm:>=18.0.0 <20.0.0" "@types/uuid": "npm:^10.0.0" "@typescript-eslint/eslint-plugin": "npm:^8.0.0" "@typescript-eslint/parser": "npm:^8.0.0" @@ -7560,8 +7560,8 @@ __metadata: poseidon-lite: "npm:^0.3.0" prettier: "npm:^3.5.3" qrcode.react: "npm:^4.1.0" - react: "npm:^18.3.1" - react-dom: "npm:^18.3.1" + react: "npm:>=18.0.0 <20.0.0" + react-dom: "npm:>=18.0.0 <20.0.0" react-spinners: "npm:^0.14.1" size-limit: "npm:^11.2.0" socket.io-client: "npm:^4.8.1" @@ -7574,8 +7574,8 @@ __metadata: webpack: "npm:^5.95.0" peerDependencies: lottie-react: ^2.4.0 - react: ^18.3.1 - react-dom: ^18.3.1 + react: ">=18.0.0 <20.0.0" + react-dom: ">=18.0.0 <20.0.0" languageName: unknown linkType: soft @@ -11943,6 +11943,15 @@ __metadata: languageName: node linkType: hard +"@types/react-dom@npm:>=18.0.0 <20.0.0": + version: 19.2.1 + resolution: "@types/react-dom@npm:19.2.1" + peerDependencies: + "@types/react": ^19.2.0 + checksum: 10c0/0dbbc5b7ecd74681bfac95a413133b26118a70b8840748277abafa47e5c7a037beae6a660e6a21fb53f5cbdb0b2d33e117ea7bbd976a888c298392a8a96bc68f + languageName: node + linkType: hard + "@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.3.0": version: 18.3.7 resolution: "@types/react-dom@npm:18.3.7" From 777b9178caf526dfeee79fb1e9daa2e4962bc941 Mon Sep 17 00:00:00 2001 From: "Paul (PJ) O'Leary Jr." <54291005+pjol@users.noreply.github.com> Date: Tue, 28 Oct 2025 06:58:26 -0700 Subject: [PATCH 07/18] SelfVerificationRoot upgradeable pattern (#1318) --- .../SelfVerificationRootUpgradeable.sol | 285 ++++++++++++++++++ 1 file changed, 285 insertions(+) create mode 100644 contracts/contracts/abstract/SelfVerificationRootUpgradeable.sol diff --git a/contracts/contracts/abstract/SelfVerificationRootUpgradeable.sol b/contracts/contracts/abstract/SelfVerificationRootUpgradeable.sol new file mode 100644 index 000000000..03ce17712 --- /dev/null +++ b/contracts/contracts/abstract/SelfVerificationRootUpgradeable.sol @@ -0,0 +1,285 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.28; + +import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import {ContextUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"; + +import {IPoseidonT3} from "../interfaces/IPoseidonT3.sol"; +import {IIdentityVerificationHubV2} from "../interfaces/IIdentityVerificationHubV2.sol"; +import {ISelfVerificationRoot} from "../interfaces/ISelfVerificationRoot.sol"; +import {CircuitConstantsV2} from "../constants/CircuitConstantsV2.sol"; +import {AttestationId} from "../constants/AttestationId.sol"; +import {SelfUtils} from "../libraries/SelfUtils.sol"; +import {Formatter} from "../libraries/Formatter.sol"; + +/** + * @title SelfVerificationRootUpgradeable + * @notice Abstract upgradeable contract to be integrated with self's verification infrastructure + * @dev Provides base functionality for verifying and disclosing identity credentials with proxy upgrades enabled + * @author Self Team + */ +abstract contract SelfVerificationRootUpgradeable is + Initializable, + ContextUpgradeable, + ISelfVerificationRoot +{ + // ==================================================== + // Constants + // ==================================================== + + /// @notice Contract version identifier used in verification process + /// @dev This version is included in the hub data for protocol compatibility + uint8 constant CONTRACT_VERSION = 2; + + // ==================================================== + // UUPS Pattern Storage + // ==================================================== + + /// @notice The storage struct used to hold contract state according to the UUPSUpgradeable pattern + /// @dev Used to maintain storage state across contract upgrades + struct SelfVerificationRootStorage { + + /// @notice The scope value that proofs must match + /// @dev Used to validate that submitted proofs match the expected scope + uint256 _scope; + + /// @notice Reference to the identity verification hub V2 contract + /// @dev Immutable reference used for bytes-based proof verification + IIdentityVerificationHubV2 _identityVerificationHubV2; + + } + + /// @notice The internal storage address for contract state. + /// @dev keccak256(abi.encode(uint256(keccak256("self.storage.SelfVerificationRoot")) - 1)) & ~bytes32(uint256(0xff)); + bytes32 private constant SELFVERIFICATIONROOT_STORAGE_LOCATION = + 0xf820f28194b303d8b69b0749376f133a581f592812c2022c414f0f3d6b6eba00; + + /// @notice The access method for internal storage + /// @dev Called to retrieve and use contract state + /// @return $ The storage struct reference. + function _getSelfVerificationRootStorage() private pure returns (SelfVerificationRootStorage storage $) { + assembly { + $.slot := SELFVERIFICATIONROOT_STORAGE_LOCATION + } + } + + // ==================================================== + // Errors + // ==================================================== + + /// @notice Error thrown when the data format is invalid + /// @dev Triggered when the provided bytes data doesn't have the expected format + error InvalidDataFormat(); + + /// @notice Error thrown when onVerificationSuccess is called by an unauthorized address + /// @dev Only the identity verification hub V2 contract can call onVerificationSuccess + error UnauthorizedCaller(); + + // ==================================================== + // Events + // ==================================================== + + /** + * @notice Initializes the SelfVerificationRootUpgradeable contract + * @dev Sets up the immutable reference to the hub contract and generates scope automatically + * @param identityVerificationHubV2Address The address of the Identity Verification Hub V2 + * @param scopeSeed The scope seed string to be hashed with contract address to generate the scope + */ + function __SelfVerificationRoot_init( + address identityVerificationHubV2Address, + string memory scopeSeed + ) + internal + onlyInitializing + { + SelfVerificationRootStorage storage $ = _getSelfVerificationRootStorage(); + + $._identityVerificationHubV2 = IIdentityVerificationHubV2(identityVerificationHubV2Address); + $._scope = _calculateScope(address(this), scopeSeed, _getPoseidonAddress()); + } + + /** + * @notice Returns the current scope value + * @dev Public view function to access the current scope setting + * @return The scope value that proofs must match + */ + function scope() public view returns (uint256) { + SelfVerificationRootStorage storage $ = _getSelfVerificationRootStorage(); + + return $._scope; + } + + /** + * @notice Verifies a self-proof using the bytes-based interface + * @dev Parses relayer data format and validates against contract settings before calling hub V2 + * @param proofPayload Packed data from relayer in format: | 32 bytes attestationId | proof data | + * @param userContextData User-defined data in format: | 32 bytes destChainId | 32 bytes userIdentifier | data | + * @custom:data-format proofPayload = | 32 bytes attestationId | proofData | + * @custom:data-format userContextData = | 32 bytes destChainId | 32 bytes userIdentifier | data | + * @custom:data-format hubData = | 1 bytes contract version | 31 bytes buffer | 32 bytes scope | 32 bytes attestationId | proofData | + */ + function verifySelfProof(bytes calldata proofPayload, bytes calldata userContextData) public { + SelfVerificationRootStorage storage $ = _getSelfVerificationRootStorage(); + + // Minimum expected length for proofData: 32 bytes attestationId + proof data + if (proofPayload.length < 32) { + revert InvalidDataFormat(); + } + + // Minimum userDefinedData length: 32 (destChainId) + 32 (userIdentifier) + 0 (userDefinedData) = 64 bytes + if (userContextData.length < 64) { + revert InvalidDataFormat(); + } + + bytes32 attestationId; + assembly { + // Load attestationId from the beginning of proofData (first 32 bytes) + attestationId := calldataload(proofPayload.offset) + } + + bytes32 destinationChainId = bytes32(userContextData[0:32]); + bytes32 userIdentifier = bytes32(userContextData[32:64]); + bytes memory userDefinedData = userContextData[64:]; + + bytes32 configId = getConfigId(destinationChainId, userIdentifier, userDefinedData); + + // Hub data should be | 1 byte contractVersion | 31 bytes buffer | 32 bytes scope | 32 bytes attestationId | proof data + bytes memory baseVerificationInput = abi.encodePacked( + // 1 byte contractVersion + CONTRACT_VERSION, + // 31 bytes buffer (all zeros) + bytes31(0), + // 32 bytes scope + $._scope, + proofPayload + ); + + // Call hub V2 verification + $._identityVerificationHubV2.verify(baseVerificationInput, bytes.concat(configId, userContextData)); + } + + /** + * @notice Callback function called upon successful verification by the hub contract + * @dev Only callable by the identity verification hub V2 contract for security + * @param output The verification output data containing disclosed identity information + * @param userData The user-defined data passed through the verification process + * @custom:security Only the authorized hub contract can call this function + * @custom:flow This function decodes the output and calls the customizable verification hook + */ + function onVerificationSuccess(bytes memory output, bytes memory userData) public { + SelfVerificationRootStorage storage $ = _getSelfVerificationRootStorage(); + + // Only allow the identity verification hub V2 to call this function + if (msg.sender != address($._identityVerificationHubV2)) { + revert UnauthorizedCaller(); + } + + ISelfVerificationRoot.GenericDiscloseOutputV2 memory genericDiscloseOutput = abi.decode( + output, + (ISelfVerificationRoot.GenericDiscloseOutputV2) + ); + + // Call the customizable verification hook + customVerificationHook(genericDiscloseOutput, userData); + } + + /** + * @notice Generates a configId for the user + * @dev This function should be overridden by the implementing contract to provide custom configId logic + * @param destinationChainId The destination chain ID + * @param userIdentifier The user identifier + * @param userDefinedData The user defined data + * @return The configId + */ + function getConfigId( + bytes32 destinationChainId, + bytes32 userIdentifier, + bytes memory userDefinedData + ) public view virtual returns (bytes32) { + // Default implementation reverts; must be overridden in derived contract + revert("SelfVerificationRoot: getConfigId must be overridden"); + } + + /** + * @notice Custom verification hook that can be overridden by implementing contracts + * @dev This function is called after successful verification and hub address validation + * @param output The verification output data from the hub containing disclosed identity information + * @param userData The user-defined data passed through the verification process + * @custom:override Override this function in derived contracts to add custom verification logic + * @custom:security This function is only called after proper authentication by the hub contract + */ + function customVerificationHook( + ISelfVerificationRoot.GenericDiscloseOutputV2 memory output, + bytes memory userData + ) internal virtual { + // Default implementation is empty - override in derived contracts to add custom logic + } + + /** + * @notice Gets the PoseidonT3 library address for the current chain + * @dev Returns hardcoded addresses of pre-deployed PoseidonT3 library on current chain + * @dev For local development networks, should create a setter function to set the scope manually + * @return The address of the PoseidonT3 library on this chain + */ + function _getPoseidonAddress() internal view returns (address) { + uint256 chainId = block.chainid; + + // Celo Mainnet + if (chainId == 42220) { + return 0xF134707a4C4a3a76b8410fC0294d620A7c341581; + } + + // Celo Sepolia + if (chainId == 11142220) { + return 0x0a782f7F9f8Aac6E0bacAF3cD4aA292C3275C6f2; + } + + // For local/development networks or other chains, return zero address + return address(0); + } + + /** + * @notice Calculates scope from contract address, scope seed, and PoseidonT3 address + * @param contractAddress The contract address to hash + * @param scopeSeed The scope seed string + * @param poseidonT3Address The address of the PoseidonT3 library to use + * @return The calculated scope value + */ + function _calculateScope( + address contractAddress, + string memory scopeSeed, + address poseidonT3Address + ) internal view returns (uint256) { + // Skip calculation if PoseidonT3 address is zero (local development) + if (poseidonT3Address == address(0)) { + return 0; + } + + uint256 addressHash = _calculateAddressHashWithPoseidon(contractAddress, poseidonT3Address); + uint256 scopeSeedAsUint = SelfUtils.stringToBigInt(scopeSeed); + return IPoseidonT3(poseidonT3Address).hash([addressHash, scopeSeedAsUint]); + } + + /** + * @notice Calculates hash of contract address using frontend-compatible chunking with specific PoseidonT3 + * @dev Converts address to hex string, splits into 2 chunks (31+11), and hashes with provided PoseidonT3 + * @param addr The contract address to hash + * @param poseidonT3Address The address of the PoseidonT3 library to use + * @return The hash result equivalent to frontend's endpointHash for addresses + */ + function _calculateAddressHashWithPoseidon( + address addr, + address poseidonT3Address + ) internal view returns (uint256) { + // Convert address to hex string (42 chars: "0x" + 40 hex digits) + string memory addressString = SelfUtils.addressToHexString(addr); + + // Split into exactly 2 chunks: 31 + 11 characters + // Chunk 1: characters 0-30 (31 chars) + // Chunk 2: characters 31-41 (11 chars) + uint256 chunk1BigInt = SelfUtils.stringToBigInt(Formatter.substring(addressString, 0, 31)); + uint256 chunk2BigInt = SelfUtils.stringToBigInt(Formatter.substring(addressString, 31, 42)); + + return IPoseidonT3(poseidonT3Address).hash([chunk1BigInt, chunk2BigInt]); + } +} From 5407127c5a7d5dc474ce41b13ffd229cdc2f910a Mon Sep 17 00:00:00 2001 From: Evi Nova <66773372+Tranquil-Flow@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:38:09 +0100 Subject: [PATCH 08/18] Feat/upgradeable root constructor (#1326) * feat: add constructor with _disableInitializers as per OZ best practices https://docs.openzeppelin.com/upgrades-plugins/writing-upgradeable#initializing-the-implementation-contract * docs: update layout and add section names * chore: run yarn prettier --- .../abstract/SelfVerificationRoot.sol | 12 +++++ .../SelfVerificationRootUpgradeable.sol | 49 ++++++++++++++----- 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/contracts/contracts/abstract/SelfVerificationRoot.sol b/contracts/contracts/abstract/SelfVerificationRoot.sol index 016d500f2..6ee49e636 100644 --- a/contracts/contracts/abstract/SelfVerificationRoot.sol +++ b/contracts/contracts/abstract/SelfVerificationRoot.sol @@ -52,6 +52,10 @@ abstract contract SelfVerificationRoot is ISelfVerificationRoot { // Events // ==================================================== + // ==================================================== + // Constructor + // ==================================================== + /** * @notice Initializes the SelfVerificationRoot contract * @dev Sets up the immutable reference to the hub contract and generates scope automatically @@ -63,6 +67,10 @@ abstract contract SelfVerificationRoot is ISelfVerificationRoot { _scope = _calculateScope(address(this), scopeSeed, _getPoseidonAddress()); } + // ==================================================== + // Public Functions + // ==================================================== + /** * @notice Returns the current scope value * @dev Public view function to access the current scope setting @@ -159,6 +167,10 @@ abstract contract SelfVerificationRoot is ISelfVerificationRoot { revert("SelfVerificationRoot: getConfigId must be overridden"); } + // ==================================================== + // Internal Functions + // ==================================================== + /** * @notice Custom verification hook that can be overridden by implementing contracts * @dev This function is called after successful verification and hub address validation diff --git a/contracts/contracts/abstract/SelfVerificationRootUpgradeable.sol b/contracts/contracts/abstract/SelfVerificationRootUpgradeable.sol index 03ce17712..cd1c7ea95 100644 --- a/contracts/contracts/abstract/SelfVerificationRootUpgradeable.sol +++ b/contracts/contracts/abstract/SelfVerificationRootUpgradeable.sol @@ -14,15 +14,11 @@ import {Formatter} from "../libraries/Formatter.sol"; /** * @title SelfVerificationRootUpgradeable - * @notice Abstract upgradeable contract to be integrated with self's verification infrastructure + * @notice Abstract upgradeable base contract to be integrated with self's verification infrastructure * @dev Provides base functionality for verifying and disclosing identity credentials with proxy upgrades enabled * @author Self Team */ -abstract contract SelfVerificationRootUpgradeable is - Initializable, - ContextUpgradeable, - ISelfVerificationRoot -{ +abstract contract SelfVerificationRootUpgradeable is Initializable, ContextUpgradeable, ISelfVerificationRoot { // ==================================================== // Constants // ==================================================== @@ -38,15 +34,12 @@ abstract contract SelfVerificationRootUpgradeable is /// @notice The storage struct used to hold contract state according to the UUPSUpgradeable pattern /// @dev Used to maintain storage state across contract upgrades struct SelfVerificationRootStorage { - /// @notice The scope value that proofs must match /// @dev Used to validate that submitted proofs match the expected scope uint256 _scope; - /// @notice Reference to the identity verification hub V2 contract /// @dev Immutable reference used for bytes-based proof verification IIdentityVerificationHubV2 _identityVerificationHubV2; - } /// @notice The internal storage address for contract state. @@ -79,25 +72,51 @@ abstract contract SelfVerificationRootUpgradeable is // Events // ==================================================== + // ==================================================== + // Constructor + // ==================================================== + + /** + * @dev Prevents the implementation contract from being initialized. + * @dev The actual initialization will be done via the proxy using the `initialize()` function + * in the derived contract. + * @custom:oz-upgrades-unsafe-allow constructor + */ + constructor() { + _disableInitializers(); + } + + // ==================================================== + // Initializer + // ==================================================== + + // Implementing contracts must define an initialize function like this: + // function initialize(address hubAddress, string memory scopeSeed) public initializer { + // __SelfVerificationRoot_init(hubAddress, scopeSeed); + // // Add your own initialization logic here + // } + /** * @notice Initializes the SelfVerificationRootUpgradeable contract * @dev Sets up the immutable reference to the hub contract and generates scope automatically + * @dev Must be called from the public `initialize()` function in your derived contract * @param identityVerificationHubV2Address The address of the Identity Verification Hub V2 * @param scopeSeed The scope seed string to be hashed with contract address to generate the scope */ function __SelfVerificationRoot_init( address identityVerificationHubV2Address, string memory scopeSeed - ) - internal - onlyInitializing - { + ) internal onlyInitializing { SelfVerificationRootStorage storage $ = _getSelfVerificationRootStorage(); $._identityVerificationHubV2 = IIdentityVerificationHubV2(identityVerificationHubV2Address); $._scope = _calculateScope(address(this), scopeSeed, _getPoseidonAddress()); } + // ==================================================== + // Public Functions + // ==================================================== + /** * @notice Returns the current scope value * @dev Public view function to access the current scope setting @@ -215,6 +234,10 @@ abstract contract SelfVerificationRootUpgradeable is // Default implementation is empty - override in derived contracts to add custom logic } + // ==================================================== + // Internal Functions + // ==================================================== + /** * @notice Gets the PoseidonT3 library address for the current chain * @dev Returns hardcoded addresses of pre-deployed PoseidonT3 library on current chain From 3bacfcfe4b267163564b9aeab90e77933d4b138f Mon Sep 17 00:00:00 2001 From: Justin Hernandez Date: Tue, 28 Oct 2025 22:28:33 -0700 Subject: [PATCH 09/18] chore(mobile-sdk): enhance type definitions and API documentation (#1330) * chore: stop tracking docstrings report * lint and prettier * fix circular dependency issue and update docstrings * add warnings --- .gitignore | 1 + .../mobile-sdk-alpha/src/processing/nfc.ts | 16 ++ .../mobile-sdk-alpha/src/stores/mrzStore.tsx | 15 +- .../src/stores/protocolStore.ts | 40 ++- .../src/stores/selfAppStore.tsx | 21 +- packages/mobile-sdk-alpha/src/types/base.ts | 20 ++ packages/mobile-sdk-alpha/src/types/events.ts | 21 +- packages/mobile-sdk-alpha/src/types/public.ts | 234 +++++++++++++++--- packages/mobile-sdk-alpha/src/types/ui.ts | 22 +- packages/mobile-sdk-alpha/src/utils/utils.ts | 9 +- 10 files changed, 352 insertions(+), 47 deletions(-) create mode 100644 packages/mobile-sdk-alpha/src/types/base.ts diff --git a/.gitignore b/.gitignore index 30a70af10..2809ef0c7 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ mobile-sdk-alpha-ci.tgz **/mobile-sdk-alpha-*.tgz /tmp/mobile-sdk-alpha*.tgz dataInput.d.ts +packages/mobile-sdk-alpha/docs/docstrings-report.json # Private Android modules (cloned at build time) app/android/android-passport-nfc-reader/ diff --git a/packages/mobile-sdk-alpha/src/processing/nfc.ts b/packages/mobile-sdk-alpha/src/processing/nfc.ts index 2115814ee..8e6e2e49d 100644 --- a/packages/mobile-sdk-alpha/src/processing/nfc.ts +++ b/packages/mobile-sdk-alpha/src/processing/nfc.ts @@ -55,14 +55,30 @@ const getDecoder = (): TextDecoder => { const TAG_DG1 = 0x61; const TAG_DG2 = 0x75; +/** + * Data group 1 containing the Machine Readable Zone (MRZ) text from the + * document. The MRZ string includes all personally identifiable information + * and should be validated and encrypted before storage. + */ export interface DG1 { mrz: string; } +/** + * Data group 2 containing the passport photo as JPEG or JPEG2000 bytes. + * Callers handle compression, encryption, and storage of the image data. + */ export interface DG2 { image: Uint8Array; } +/** + * Parsed NFC data from the document chip. Currently extracts DG1 (MRZ text) + * and DG2 (photo). Additional data groups are ignored for forward compatibility. + * Both fields are optional since the chip may omit data groups or the read may + * fail partway through. Missing data groups typically indicate an incomplete + * scan that should be retried. + */ export interface ParsedNFCResponse { dg1?: DG1; dg2?: DG2; diff --git a/packages/mobile-sdk-alpha/src/stores/mrzStore.tsx b/packages/mobile-sdk-alpha/src/stores/mrzStore.tsx index 90d053bbb..ba0f31abc 100644 --- a/packages/mobile-sdk-alpha/src/stores/mrzStore.tsx +++ b/packages/mobile-sdk-alpha/src/stores/mrzStore.tsx @@ -8,6 +8,12 @@ import type { MRZInfo } from '../types/public'; type MRZNeededForNFC = Pick; +/** + * Zustand slice capturing the latest MRZ data extracted during onboarding. + * Values are persisted in-memory only and cleared after successful NFC scans to + * reduce the risk of leaking MRZ details if the app crashes. All fields mirror + * ICAO formatting and should remain unmasked until passed to the NFC adapter. + */ export interface MRZState { // Fields needed for NFC scanning passportNumber: string; @@ -38,10 +44,11 @@ const initialState = { documentType: '', }; -/* - Never export outside of the mobile sdk. It can cause multiple instances of the store to be created. - interact with the store thru the self client -*/ +/** + * Internal MRZ store hook. Consumers should access it via the self client + * facade so only one store instance exists per SDK runtime. The store persists + * the most recent MRZ payload until cleared or overwritten. + */ export const useMRZStore = create((set, get) => ({ ...initialState, diff --git a/packages/mobile-sdk-alpha/src/stores/protocolStore.ts b/packages/mobile-sdk-alpha/src/stores/protocolStore.ts index d90cba2f3..73294fdc0 100644 --- a/packages/mobile-sdk-alpha/src/stores/protocolStore.ts +++ b/packages/mobile-sdk-alpha/src/stores/protocolStore.ts @@ -28,11 +28,14 @@ import { import type { SelfClient } from '../types/public'; /** - * Fetch with timeout helper - * @param url - URL to fetch - * @param options - Fetch options - * @param timeoutMs - Timeout in milliseconds (default: 30000) - * @returns Promise + * Fetch helper that races the request against a timeout to prevent hangs when + * infrastructure endpoints are degraded. The returned promise rejects with an + * `AbortError` when the timer elapses so callers can emit structured retry + * events. + * + * @param url - URL to fetch. + * @param options - Fetch options forwarded to `fetch`. + * @param timeoutMs - Timeout in milliseconds (default: 30000). */ async function fetchWithTimeout(url: string, options?: RequestInit, timeoutMs: number = 30000): Promise { const controller = new AbortController(); @@ -54,6 +57,13 @@ async function fetchWithTimeout(url: string, options?: RequestInit, timeoutMs: n } } +/** + * In-memory cache of trees, keys, and circuit metadata required for proving + * across supported document categories. Each nested object exposes `fetch_*` + * helpers that load data from the configured environment. All fetchers are + * resilient to network errors and reset state to `null` when the response is + * unusable so callers can decide whether to retry or surface an error. + */ export interface ProtocolState { passport: { commitment_tree: any; @@ -104,6 +114,11 @@ export interface ProtocolState { }; } +/** + * Convenience helper that pulls every relevant tree for a document category in + * parallel. Errors bubble to the caller so higher-level flows can surface + * progress or failure UI. + */ export async function fetchAllTreesAndCircuits( selfClient: SelfClient, docCategory: DocumentCategory, @@ -113,6 +128,11 @@ export async function fetchAllTreesAndCircuits( await selfClient.getProtocolState()[docCategory].fetch_all(environment, authorityKeyIdentifier); } +/** + * Returns the cached alternative CSCA keys for the requested document type. + * Aadhaar does not expose alternative CSCA, so the method returns the raw + * public key list instead. + */ export function getAltCSCAPublicKeys(selfClient: SelfClient, docCategory: DocumentCategory) { if (docCategory === 'aadhaar') { return selfClient.getProtocolState()[docCategory].public_keys; @@ -121,12 +141,22 @@ export function getAltCSCAPublicKeys(selfClient: SelfClient, docCategory: Docume return selfClient.getProtocolState()[docCategory].alternative_csca; } +/** + * Retrieves the latest commitment tree snapshot for the provided document + * category. Returns `null` when the data has not been fetched yet or when the + * previous fetch failed. + */ export function getCommitmentTree(selfClient: SelfClient, documentCategory: DocumentCategory) { const protocolStore = selfClient.getProtocolState(); return protocolStore[documentCategory].commitment_tree; } +/** + * Protocol store hook exposed through {@link SelfClient}. The store manages + * asynchronous fetchers and ensures tree/state mutations remain atomic even + * when multiple requests are in flight. + */ export const useProtocolStore = create((set, get) => ({ passport: { commitment_tree: null, diff --git a/packages/mobile-sdk-alpha/src/stores/selfAppStore.tsx b/packages/mobile-sdk-alpha/src/stores/selfAppStore.tsx index a45a33601..5af1f350e 100644 --- a/packages/mobile-sdk-alpha/src/stores/selfAppStore.tsx +++ b/packages/mobile-sdk-alpha/src/stores/selfAppStore.tsx @@ -9,21 +9,34 @@ import { create } from 'zustand'; import type { SelfApp } from '@selfxyz/common'; import { WS_DB_RELAYER } from '@selfxyz/common'; +/** + * Zustand state backing the in-app handoff between the SDK and the hosted Self + * application. The store tracks the active websocket session, latest + * {@link SelfApp} payload, and helper callbacks used by the proving machine. + * Consumers should treat the state as ephemeral and expect it to reset whenever + * the socket disconnects. + */ export interface SelfAppState { selfApp: SelfApp | null; sessionId: string | null; socket: Socket | null; + /** Establishes (or reuses) a websocket connection for the provided session. */ startAppListener: (sessionId: string) => void; + /** Tears down any active socket connection and clears cached payloads. */ cleanSelfApp: () => void; + /** Directly mutates the cached {@link SelfApp}. Primarily used by socket handlers. */ setSelfApp: (selfApp: SelfApp | null) => void; + /** Internal helper that derives the correct websocket endpoint and instantiates the client. */ _initSocket: (sessionId: string) => Socket; + /** Emits proving results to the relayer so the host app can respond. */ handleProofResult: (proof_verified: boolean, error_code?: string, reason?: string) => void; } -/* - Never export outside of the mobile sdk. It can cause multiple instances of the store to be created. - Use the functions above to interact with the store. -*/ +/** + * Internal Self app store hook. Always access it through the self client + * accessors to avoid creating multiple websocket connections within the same + * runtime. + */ export const useSelfAppStore = create((set, get) => ({ selfApp: null, sessionId: null, diff --git a/packages/mobile-sdk-alpha/src/types/base.ts b/packages/mobile-sdk-alpha/src/types/base.ts new file mode 100644 index 000000000..9244cf7f8 --- /dev/null +++ b/packages/mobile-sdk-alpha/src/types/base.ts @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2025 Social Connect Labs, Inc. +// SPDX-License-Identifier: BUSL-1.1 +// NOTE: Converts to Apache-2.0 on 2029-06-11 per LICENSE. + +/** + * Shared base types extracted to break circular dependencies. + * + * @module types/base + */ + +/** Logging severity passed to adapters and events. */ +export type LogLevel = 'info' | 'warn' | 'error'; + +/** Progress update emitted during multi-step flows like proving or NFC reads. */ +export interface Progress { + /** Identifier for the active step (for example `nfc.read`). */ + step: string; + /** Percentage between 0 and 100 when available. */ + percent?: number; +} diff --git a/packages/mobile-sdk-alpha/src/types/events.ts b/packages/mobile-sdk-alpha/src/types/events.ts index c30bdc496..0a60aca2d 100644 --- a/packages/mobile-sdk-alpha/src/types/events.ts +++ b/packages/mobile-sdk-alpha/src/types/events.ts @@ -5,8 +5,18 @@ import type { DocumentCategory } from '@selfxyz/common'; import type { NFCScanContext, ProofContext } from '../proving/internal/logging'; -import type { LogLevel, Progress } from './public'; +import type { LogLevel, Progress } from './base'; +/** + * SDK lifecycle events emitted by {@link SelfClient}. Events are dispatched + * synchronously to listeners in registration order. If a listener throws an + * error, the SDK logs a sanitized/redacted summary (never PII or secrets) + * and continues dispatching to remaining listeners. + * + * **Security:** Host apps should likewise sanitize errors from their listeners + * before logging. Redact sensitive fields (MRZ, names, DOB, passport numbers, + * keys, tokens) and retain only non-sensitive diagnostic details. + */ export enum SdkEvents { /** * Emitted when an error occurs during SDK operations, including timeouts. @@ -157,6 +167,11 @@ export enum SdkEvents { DOCUMENT_OWNERSHIP_CONFIRMED = 'DOCUMENT_OWNERSHIP_CONFIRMED', } +/** + * Maps event names to their payload types. Enables type-safe event handlers + * and provides structured data like NFC scan diagnostics or proof errors. + * Events with undefined payloads carry no additional data. + */ export interface SDKEventMap { [SdkEvents.PROVING_PASSPORT_DATA_NOT_FOUND]: undefined; [SdkEvents.PROVING_ACCOUNT_VERIFIED_SUCCESS]: undefined; @@ -210,4 +225,8 @@ export interface SDKEventMap { }; } +/** + * Event names supported by {@link SelfClient.on}. Use specific event literals + * when subscribing to get accurate payload types from {@link SDKEventMap}. + */ export type SDKEvent = keyof SDKEventMap; diff --git a/packages/mobile-sdk-alpha/src/types/public.ts b/packages/mobile-sdk-alpha/src/types/public.ts index a6aa5cbff..149f63154 100644 --- a/packages/mobile-sdk-alpha/src/types/public.ts +++ b/packages/mobile-sdk-alpha/src/types/public.ts @@ -11,53 +11,92 @@ import type { ProvingState } from '../proving/provingMachine'; import type { MRZState } from '../stores/mrzStore'; import type { ProtocolState } from '../stores/protocolStore'; import type { SelfAppState } from '../stores/selfAppStore'; +import type { LogLevel, Progress } from './base'; import type { SDKEvent, SDKEventMap } from './events'; export type { PassportValidationCallbacks } from '../validation/document'; export type { DocumentCatalog, IDDocument, PassportData }; export interface Config { + /** + * Optional knobs to tweak SDK behaviour. All values are nullable so consumers + * can rely on built-in defaults and only override the pieces they care about. + */ timeouts?: { + /** + * Maximum duration (in milliseconds) the SDK waits for an MRZ+NFC scan + * before aborting. Defaults to an internal guard that balances user + * patience with common chip read times. Provide a value only when the host + * app can surface a matching progress indicator. + */ scanMs?: number; }; + /** + * Feature flag gate used to gradually roll out experiments. Missing keys are + * treated as `false` and the SDK will continue using legacy flows. + */ features?: Record; } + +/** + * Minimal crypto interface the SDK needs to derive secrets, sign payloads, and + * hash data. Implementations must be deterministic across platforms and may be + * invoked from background threads while NFC or proving work is in flight. + */ export interface CryptoAdapter { + /** + * Hashes the provided input using the requested algorithm. `sha256` is the + * only supported algorithm today and is used for nullifier derivation. + * Implementations should throw when an unsupported algorithm is requested. + */ hash(input: Uint8Array, algo?: 'sha256'): Promise; + /** + * Signs the payload referenced by `keyRef`. The adapter is responsible for + * resolving the backing key material and must reject the promise when the + * user has not provisioned credentials (for example a missing secure enclave + * key). The SDK retries failures only when the rejection exposes an + * `AbortError`. + */ sign(data: Uint8Array, keyRef: string): Promise; } +/** + * Thin wrapper around the host networking stack so mobile, web, and Node + * consumers can plug in their own fetch polyfills. Requests must respect the + * provided {@link AbortSignal} and surface HTTP errors as rejected promises. + */ export interface HttpAdapter { fetch(input: RequestInfo, init?: RequestInit): Promise; } + +/** + * Normalised machine-readable zone details extracted from either MRZ OCR or an + * NFC DG1 read. Callers should treat the fields as opaque strings and avoid + * mutating them in place because downstream checksum validation depends on the + * raw values. + */ export interface MRZInfo { documentNumber: string; dateOfBirth: string; dateOfExpiry: string; issuingCountry: string; documentType: string; - validation?: MRZValidation; //TODO - not available in IOS currentlt + /** + * Optional validation metadata from {@link PassportValidationCallbacks}. iOS + * adapters currently omit this field, so consumers must handle `undefined`. + */ + validation?: MRZValidation; } -/** * Generic reasons: - * - network_error: Network connectivity issues - * - user_cancelled: User cancelled the operation - * - permission_denied: Permission not granted - * - invalid_input: Invalid user input - * - timeout: Operation timed out - * - unknown_error: Unspecified error * * Auth specific: - * - invalid_credentials: Invalid login credentials - * - biometric_unavailable: Biometric authentication unavailable - * - invalid_mnemonic: Invalid mnemonic phrase * * Passport specific: - * - invalid_format: Invalid passport format - * - expired_passport: Passport is expired - * - scan_error: Error during scanning - * - nfc_error: NFC read error * * Proof specific: - * - verification_failed: Proof verification failed - * - session_expired: Session expired - * - missing_fields: Required fields missing * * Backup specific: - * - backup_not_found: Backup not found - * - cloud_service_unavailable: Cloud service unavailable - * */ +/** + * Common analytics payload describing why an action succeeded or failed. + * Reserve string constants for `reason` so dashboards can aggregate over + * stable values (for example `network_error`, `timeout`, `invalid_input`). + * + * **Security:** Do not include PII (names, DOB, passport numbers, addresses) + * or secrets (API keys, tokens, passwords) in any field. Use non-identifying + * categorical values or hashed identifiers where needed. Apply standard + * redaction patterns (e.g., `***-***-1234` for document numbers). + */ export interface TrackEventParams { reason?: string | null; duration_seconds?: number; @@ -65,25 +104,67 @@ export interface TrackEventParams { [key: string]: unknown; } +/** + * Optional hooks that route usage analytics to the host application. All + * methods should fail silently so instrumentation never blocks critical user + * flows. + */ export interface AnalyticsAdapter { + /** + * Fire-and-forget event tracker for high-level milestones like onboarding + * completion. Implementations should debounce repeated calls triggered by + * retries. + */ trackEvent?(event: string, payload?: TrackEventParams): void; + /** + * Structured metrics specific to NFC scanning. Consumers can enrich the + * payload to correlate with hardware models or OS versions. + */ trackNfcEvent?(name: string, properties?: Record): void; + /** + * Low-level logging channel mirroring {@link SdkEvents.NFC_EVENT}. Use this + * to pipe contextual errors into crash reporters or observability backends. + * + * **Security:** Never include PII or secrets in `message`, `context`, or + * `details`. Apply standard redaction (e.g., passport `***-***-1234`, + * names `J*** D***`) before logging. + */ logNFCEvent?(level: LogLevel, message: string, context: NFCScanContext, details?: Record): void; } +/** + * Auth adapter responsible for providing private key material backing the + * wallet. The SDK only reads keys; it never persists or mutates them. + */ export interface AuthAdapter { /** - * Returns the hex-encoded private key. - * This key should only be used for self and not other crypto operations or signing. + * Returns the hex-encoded private key. Implementations should resolve to + * `null` when a key has not been provisioned rather than throwing so the SDK + * can prompt users to complete setup. */ getPrivateKey(): Promise; } +/** + * Clock utilities that enable deterministic testing and allow React Native + * hosts to plug in platform timers that respect app lifecycle events. + */ export interface ClockAdapter { + /** Returns the current timestamp in milliseconds. */ now(): number; + /** + * Suspends execution for the requested duration. Implementations must honour + * the optional {@link AbortSignal} to allow NFC or proving workflows to + * cancel outstanding sleeps when a user backs out. + */ sleep(ms: number, signal?: AbortSignal): Promise; } +/** + * Detailed MRZ checksum results surfaced alongside parsed data. Consumer apps + * can use this information to render troubleshooting copy when OCR quality is + * poor. + */ export interface MRZValidation { format: boolean; passportNumberChecksum: boolean; @@ -93,33 +174,62 @@ export interface MRZValidation { overall: boolean; } -export type LogLevel = 'info' | 'warn' | 'error'; +export type { LogLevel, Progress }; -export interface Progress { - step: string; - percent?: number; -} +/** + * Bundle of adapters required to construct {@link SelfClient}. Most fields are + * mandatory because the SDK does not ship browser or native fallbacks. + */ export interface Adapters { + /** Optional persistent storage implementation; the SDK degrades gracefully when omitted. */ storage?: StorageAdapter; + /** Required NFC scanner integration. Must support aborting and surface hardware-specific errors. */ scanner: NFCScannerAdapter; + /** Required cryptography implementation backed by a secure enclave or web crypto. */ crypto: CryptoAdapter; + /** Required HTTP/WebSocket stack for talking to Self services. */ network: NetworkAdapter; + /** Optional clock utilities, useful when hosting inside React Native headless tasks. */ clock?: ClockAdapter; + /** Optional logger adapter. When omitted the SDK falls back to `console`. */ logger?: LoggerAdapter; + /** Optional analytics hook. */ analytics?: AnalyticsAdapter; + /** Required auth adapter providing private key access. */ auth: AuthAdapter; + /** Required document persistence layer. Implementations must be idempotent. */ documents: DocumentsAdapter; } +/** + * Logging surface that mirrors structured logging conventions used by Self + * infrastructure. Implementations must never log PII or secrets and should + * enforce redaction before emitting. Avoid throwing to keep telemetry + * best-effort. + * + * **Security:** Always redact sensitive fields (names, DOB, passport numbers, + * credentials, tokens) using consistent patterns before logging. Examples: + * `***-***-1234` for document numbers, `J*** D***` for names. + */ export interface LoggerAdapter { log(level: LogLevel, message: string, fields?: Record): void; } +/** + * Networking adapter that pairs REST and WebSocket clients. These are invoked + * from both the proving machine and background sync flows. + */ export interface NetworkAdapter { http: HttpAdapter; ws: WsAdapter; } +/** + * Parameters forwarded to the NFC adapter. The SDK guarantees the MRZ fields + * have already passed checksum validation. Implementations must honour + * `signal` for cancellation and may inspect optional CAN/PACE toggles to adjust + * hardware configuration. + */ export type NFCScanOpts = { passportNumber: string; dateOfBirth: string; @@ -134,13 +244,25 @@ export type NFCScanOpts = { userId?: string; }; +/** NFC scan result containing the parsed passport payload. */ export type NFCScanResult = { passportData: PassportData; }; + +/** + * Adapter that bridges into the platform-specific NFC reader. The promise must + * reject with rich error objects (for example `NfcConnectionError`) so the SDK + * can surface actionable guidance to end users. + */ export interface NFCScannerAdapter { scan(opts: NFCScanOpts & { signal?: AbortSignal }): Promise; } +/** + * Persistence layer responsible for storing encrypted documents and catalogs. + * Implementations should treat all operations as transactional; the SDK will + * not retry partial writes. + */ export interface DocumentsAdapter { loadDocumentCatalog(): Promise; saveDocumentCatalog(catalog: DocumentCatalog): Promise; @@ -148,48 +270,104 @@ export interface DocumentsAdapter { loadDocumentById(id: string): Promise; saveDocument(id: string, passportData: IDDocument): Promise; + /** Permanently deletes a stored document. The operation must be idempotent. */ deleteDocument(id: string): Promise; } +/** + * Primary entry point exposed to host applications. `SelfClient` composes + * adapters, stores, and event emitters to coordinate the entire proving + * lifecycle. + */ export interface SelfClient { + /** Starts an NFC scan using the configured adapter and resolves with passport data. */ scanNFC(opts: NFCScanOpts & { signal?: AbortSignal }): Promise; + /** Parses MRZ text and returns structured fields plus checksum metadata. */ extractMRZInfo(mrz: string): MRZInfo; + /** + * Convenience wrapper around {@link AnalyticsAdapter.trackEvent}. Calls are + * no-ops when an analytics adapter was not provided. + */ trackEvent(event: string, payload?: TrackEventParams): void; + /** Mirrors {@link AnalyticsAdapter.trackNfcEvent}. */ trackNfcEvent(name: string, properties?: Record): void; + /** Mirrors {@link AnalyticsAdapter.logNFCEvent}. */ logNFCEvent(level: LogLevel, message: string, context: NFCScanContext, details?: Record): void; + /** Returns the caller-provided private key or `null` when unconfigured. */ getPrivateKey(): Promise; + /** Resolves to `true` when a private key is available without exposing it. */ hasPrivateKey(): Promise; + /** Subscribes to {@link SdkEvents}. Returns an unsubscribe handle. */ on(event: E, cb: (payload?: SDKEventMap[E]) => void): Unsubscribe; + /** Emits an event to registered listeners. Intended for internal SDK use. */ emit(event: E, payload?: SDKEventMap[E]): void; + /** + * Structured proving logger that enriches messages with {@link ProofContext} + * so observability pipelines can stitch together multi-step workflows. + */ logProofEvent(level: LogLevel, message: string, context: ProofContext, details?: Record): void; + /** Reads the current document catalog. */ loadDocumentCatalog(): Promise; + /** Persists an updated document catalog. */ saveDocumentCatalog(catalog: DocumentCatalog): Promise; + /** Loads a specific document, returning `null` when it does not exist. */ loadDocumentById(id: string): Promise; + /** Saves or overwrites a document atomically. */ saveDocument(id: string, passportData: IDDocument): Promise; + /** Deletes a stored document. */ deleteDocument(id: string): Promise; + /** Snapshot accessor for the current proving machine state. */ getProvingState: () => ProvingState; + /** Snapshot accessor for UI state driving the Self app shell. */ getSelfAppState: () => SelfAppState; + /** Snapshot accessor for protocol metadata like trees and DNS mappings. */ getProtocolState: () => ProtocolState; + /** Snapshot accessor for MRZ-derived data fields. */ getMRZState: () => MRZState; + /** + * Zustand store hook exposing live proving state updates. Hooks must be used + * inside React components rendered after {@link createSelfClient} attaches + * providers to avoid duplicate store instances. + */ useProvingStore: ReturnType>; + /** Zustand store hook mirroring {@link SelfAppState}. */ useSelfAppStore: ReturnType>; + /** Zustand store hook mirroring {@link ProtocolState}. */ useProtocolStore: ReturnType>; + /** Zustand store hook mirroring {@link MRZState}. */ useMRZStore: ReturnType>; } + +/** Function returned by {@link SelfClient.on} to detach a listener. */ export type Unsubscribe = () => void; + +/** + * Storage shim used for lightweight persistence. Implementations should + * support multi-tab or multi-session access when running on the web. + */ export interface StorageAdapter { get(key: string): Promise; set(key: string, value: string): Promise; remove(key: string): Promise; } + +/** + * WebSocket connector invoked by the proving machine when establishing relay + * sessions. Implementations must propagate {@link AbortSignal} cancellations + * and reject with connection errors to trigger retries. + */ export interface WsAdapter { connect(url: string, opts?: { signal?: AbortSignal; headers?: Record }): WsConn; } +/** + * Active WebSocket connection handle returned by {@link WsAdapter}. All event + * handler registrations should be idempotent and never throw. + */ export interface WsConn { send: (data: string | ArrayBufferView | ArrayBuffer) => void; close: () => void; diff --git a/packages/mobile-sdk-alpha/src/types/ui.ts b/packages/mobile-sdk-alpha/src/types/ui.ts index aac2c0e9d..70724d00a 100644 --- a/packages/mobile-sdk-alpha/src/types/ui.ts +++ b/packages/mobile-sdk-alpha/src/types/ui.ts @@ -8,9 +8,9 @@ import type { MRZInfo } from './public'; // Document-related types /** - * Document metadata - must NOT contain plaintext MRZ/PII - * All sensitive payloads belong only in DocumentData.data (typed as PassportData) - * or in encrypted storage referenced by the opaque token + * Metadata describing a stored document. Never embed MRZ or other plaintext PII + * here; keep sensitive payloads within {@link DocumentData.data} or in + * encrypted blobs referenced by `encryptedBlobRef`. */ export interface DocumentMetadata { id: string; @@ -22,17 +22,33 @@ export interface DocumentMetadata { registeredAt?: number; // timestamp (epoch ms) when document was registered } +/** + * Combined document payload returned to UI flows. `data` carries the raw + * passport response while `metadata` reflects state persisted in the + * {@link DocumentsAdapter}. Consumers must treat `data` as sensitive and avoid + * serialising it to logs or analytics events. + */ export interface DocumentData { data: PassportData; metadata: DocumentMetadata; } // Screen component props +/** + * Standard callbacks injected into onboarding screens. `onSuccess` is called + * once the flow captured everything required to move forward; `onFailure` + * receives the original error so hosts can map to their telemetry systems. + */ export interface ScreenProps { onSuccess: () => void; onFailure: (error: Error) => void; } +/** + * Props consumed by the camera component that performs MRZ OCR. The handler is + * invoked after the SDK validates checksum integrity but before any NFC work + * starts, giving hosts a chance to surface confirmation UI. + */ export interface PassportCameraProps { onMRZDetected: (mrzData: MRZInfo) => void; } diff --git a/packages/mobile-sdk-alpha/src/utils/utils.ts b/packages/mobile-sdk-alpha/src/utils/utils.ts index 64a05b039..b8198e3c0 100644 --- a/packages/mobile-sdk-alpha/src/utils/utils.ts +++ b/packages/mobile-sdk-alpha/src/utils/utils.ts @@ -2,8 +2,13 @@ // SPDX-License-Identifier: BUSL-1.1 // NOTE: Converts to Apache-2.0 on 2029-06-11 per LICENSE. -// Redacts 9+ consecutive digits and MRZ-like blocks to reduce PII exposure -// TODO refactor usages in app to use this one +/** + * Redacts sensitive identifiers from error messages before they are forwarded + * to analytics or logs. The helper replaces long digit sequences (such as MRZ + * numbers or Aadhaar IDs) and ICAO-style MRZ blocks with sentinel strings. When + * sanitisation fails, the function returns the literal `'redacted'` so callers + * never leak user data. + */ export const sanitizeErrorMessage = (msg: string): string => { try { return msg.replace(/\b\d{9,}\b/g, '[REDACTED]').replace(/[A-Z0-9<]{30,}/g, '[MRZ_REDACTED]'); From 856efb97f16d6e646a5654f231776192eecbd918 Mon Sep 17 00:00:00 2001 From: Justin Hernandez Date: Tue, 28 Oct 2025 22:41:18 -0700 Subject: [PATCH 10/18] address minor mobile app linting issues (#1331) * address lint issues * different approach --- .cursorignore | 1 + app/src/global.d.ts | 1 + app/tests/src/screens/WebViewScreen.test.tsx | 6 +++--- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.cursorignore b/.cursorignore index 95ea3e898..f8daacf9e 100644 --- a/.cursorignore +++ b/.cursorignore @@ -279,3 +279,4 @@ circuits/ptau/ **/*.d.ts !**/types/*.d.ts !**/src/types/*.d.ts +!**/global.d.ts diff --git a/app/src/global.d.ts b/app/src/global.d.ts index d790ba4ff..ff563cc7c 100644 --- a/app/src/global.d.ts +++ b/app/src/global.d.ts @@ -3,6 +3,7 @@ // NOTE: Converts to Apache-2.0 on 2029-06-11 per LICENSE. declare module '*.json' { + // eslint-disable-next-line @typescript-eslint/no-explicit-any const value: any; export default value; } diff --git a/app/tests/src/screens/WebViewScreen.test.tsx b/app/tests/src/screens/WebViewScreen.test.tsx index 0c4a2e1c3..604cb6ee7 100644 --- a/app/tests/src/screens/WebViewScreen.test.tsx +++ b/app/tests/src/screens/WebViewScreen.test.tsx @@ -9,10 +9,10 @@ import { render, screen, waitFor } from '@testing-library/react-native'; import { WebViewScreen } from '@/screens/shared/WebViewScreen'; jest.mock('react-native-webview', () => { - const React = require('react'); + const ReactModule = require('react'); const { View } = require('react-native'); - const MockWebView = React.forwardRef((props: any, _ref) => { - return React.createElement(View, { testID: 'webview', ...props }); + const MockWebView = ReactModule.forwardRef((props: any, _ref) => { + return ReactModule.createElement(View, { testID: 'webview', ...props }); }); MockWebView.displayName = 'MockWebView'; return { From 553b82b51bf7e5b94ff00d9d76271d06f761d041 Mon Sep 17 00:00:00 2001 From: "Seshanth.S" <35675963+seshanthS@users.noreply.github.com> Date: Wed, 29 Oct 2025 18:18:25 +0530 Subject: [PATCH 11/18] fix: ios symlink (#1327) * fix: ios symlink * replace ios symlinks with files --- .../OpenSSL.framework/Headers | 1 - .../OpenSSL.framework/Headers/OpenSSL.h | 111 + .../OpenSSL.framework/Headers/aes.h | 92 + .../OpenSSL.framework/Headers/asn1.h | 886 +++ .../OpenSSL.framework/Headers/asn1err.h | 256 + .../OpenSSL.framework/Headers/asn1t.h | 945 +++ .../OpenSSL.framework/Headers/async.h | 76 + .../OpenSSL.framework/Headers/asyncerr.h | 42 + .../OpenSSL.framework/Headers/bio.h | 801 +++ .../OpenSSL.framework/Headers/bioerr.h | 124 + .../OpenSSL.framework/Headers/blowfish.h | 61 + .../OpenSSL.framework/Headers/bn.h | 539 ++ .../OpenSSL.framework/Headers/bnerr.h | 101 + .../OpenSSL.framework/Headers/buffer.h | 58 + .../OpenSSL.framework/Headers/buffererr.h | 34 + .../OpenSSL.framework/Headers/camellia.h | 83 + .../OpenSSL.framework/Headers/cast.h | 53 + .../OpenSSL.framework/Headers/cmac.h | 41 + .../OpenSSL.framework/Headers/cms.h | 339 ++ .../OpenSSL.framework/Headers/cmserr.h | 203 + .../OpenSSL.framework/Headers/comp.h | 53 + .../OpenSSL.framework/Headers/comperr.h | 44 + .../OpenSSL.framework/Headers/conf.h | 168 + .../OpenSSL.framework/Headers/conf_api.h | 40 + .../OpenSSL.framework/Headers/conferr.h | 76 + .../OpenSSL.framework/Headers/crypto.h | 445 ++ .../OpenSSL.framework/Headers/cryptoerr.h | 57 + .../OpenSSL.framework/Headers/ct.h | 474 ++ .../OpenSSL.framework/Headers/cterr.h | 80 + .../OpenSSL.framework/Headers/des.h | 174 + .../OpenSSL.framework/Headers/dh.h | 343 ++ .../OpenSSL.framework/Headers/dherr.h | 89 + .../OpenSSL.framework/Headers/dsa.h | 244 + .../OpenSSL.framework/Headers/dsaerr.h | 72 + .../OpenSSL.framework/Headers/dtls1.h | 55 + .../OpenSSL.framework/Headers/e_os2.h | 301 + .../OpenSSL.framework/Headers/ebcdic.h | 33 + .../OpenSSL.framework/Headers/ec.h | 1484 +++++ .../OpenSSL.framework/Headers/ecdh.h | 10 + .../OpenSSL.framework/Headers/ecdsa.h | 10 + .../OpenSSL.framework/Headers/ecerr.h | 276 + .../OpenSSL.framework/Headers/engine.h | 752 +++ .../OpenSSL.framework/Headers/engineerr.h | 111 + .../OpenSSL.framework/Headers/err.h | 274 + .../OpenSSL.framework/Headers/evp.h | 1666 ++++++ .../OpenSSL.framework/Headers/evperr.h | 204 + .../OpenSSL.framework/Headers/hmac.h | 51 + .../OpenSSL.framework/Headers/idea.h | 64 + .../OpenSSL.framework/Headers/kdf.h | 97 + .../OpenSSL.framework/Headers/kdferr.h | 55 + .../OpenSSL.framework/Headers/lhash.h | 241 + .../OpenSSL.framework/Headers/md2.h | 44 + .../OpenSSL.framework/Headers/md4.h | 51 + .../OpenSSL.framework/Headers/md5.h | 50 + .../OpenSSL.framework/Headers/mdc2.h | 42 + .../OpenSSL.framework/Headers/modes.h | 208 + .../OpenSSL.framework/Headers/obj_mac.h | 5198 +++++++++++++++++ .../OpenSSL.framework/Headers/objects.h | 175 + .../OpenSSL.framework/Headers/objectserr.h | 42 + .../OpenSSL.framework/Headers/ocsp.h | 352 ++ .../OpenSSL.framework/Headers/ocsperr.h | 78 + .../OpenSSL.framework/Headers/opensslconf.h | 642 ++ .../OpenSSL.framework/Headers/opensslv.h | 101 + .../OpenSSL.framework/Headers/ossl_typ.h | 197 + .../OpenSSL.framework/Headers/pem.h | 378 ++ .../OpenSSL.framework/Headers/pem2.h | 13 + .../OpenSSL.framework/Headers/pemerr.h | 105 + .../OpenSSL.framework/Headers/pkcs12.h | 223 + .../OpenSSL.framework/Headers/pkcs12err.h | 81 + .../OpenSSL.framework/Headers/pkcs7.h | 319 + .../OpenSSL.framework/Headers/pkcs7err.h | 103 + .../OpenSSL.framework/Headers/rand.h | 77 + .../OpenSSL.framework/Headers/rand_drbg.h | 130 + .../OpenSSL.framework/Headers/randerr.h | 94 + .../OpenSSL.framework/Headers/rc2.h | 51 + .../OpenSSL.framework/Headers/rc4.h | 36 + .../OpenSSL.framework/Headers/rc5.h | 63 + .../OpenSSL.framework/Headers/ripemd.h | 47 + .../OpenSSL.framework/Headers/rsa.h | 513 ++ .../OpenSSL.framework/Headers/rsaerr.h | 167 + .../OpenSSL.framework/Headers/safestack.h | 207 + .../OpenSSL.framework/Headers/seed.h | 96 + .../OpenSSL.framework/Headers/sha.h | 119 + .../OpenSSL.framework/Headers/shim.h | 41 + .../OpenSSL.framework/Headers/srp.h | 135 + .../OpenSSL.framework/Headers/srtp.h | 50 + .../OpenSSL.framework/Headers/ssl.h | 2448 ++++++++ .../OpenSSL.framework/Headers/ssl2.h | 24 + .../OpenSSL.framework/Headers/ssl3.h | 342 ++ .../OpenSSL.framework/Headers/sslerr.h | 776 +++ .../OpenSSL.framework/Headers/stack.h | 83 + .../OpenSSL.framework/Headers/store.h | 266 + .../OpenSSL.framework/Headers/storeerr.h | 91 + .../OpenSSL.framework/Headers/symhacks.h | 37 + .../OpenSSL.framework/Headers/tls1.h | 1237 ++++ .../OpenSSL.framework/Headers/ts.h | 559 ++ .../OpenSSL.framework/Headers/tserr.h | 132 + .../OpenSSL.framework/Headers/txt_db.h | 57 + .../OpenSSL.framework/Headers/ui.h | 368 ++ .../OpenSSL.framework/Headers/uierr.h | 65 + .../OpenSSL.framework/Headers/whrlpool.h | 48 + .../OpenSSL.framework/Headers/x509.h | 1050 ++++ .../OpenSSL.framework/Headers/x509_vfy.h | 632 ++ .../OpenSSL.framework/Headers/x509err.h | 129 + .../OpenSSL.framework/Headers/x509v3.h | 938 +++ .../OpenSSL.framework/Headers/x509v3err.h | 164 + .../OpenSSL.framework/Modules | 1 - .../Modules/module.modulemap | 6 + .../OpenSSL.framework/OpenSSL | Bin 24 -> 5177408 bytes .../OpenSSL.framework/Resources | 1 - .../OpenSSL.framework/Resources/Info.plist | 50 + .../Resources/PrivacyInfo.xcprivacy | 14 + .../OpenSSL.framework/Versions/Current | 1 - .../Versions/Current/Headers/OpenSSL.h | 111 + .../Versions/Current/Headers/aes.h | 92 + .../Versions/Current/Headers/asn1.h | 886 +++ .../Versions/Current/Headers/asn1err.h | 256 + .../Versions/Current/Headers/asn1t.h | 945 +++ .../Versions/Current/Headers/async.h | 76 + .../Versions/Current/Headers/asyncerr.h | 42 + .../Versions/Current/Headers/bio.h | 801 +++ .../Versions/Current/Headers/bioerr.h | 124 + .../Versions/Current/Headers/blowfish.h | 61 + .../Versions/Current/Headers/bn.h | 539 ++ .../Versions/Current/Headers/bnerr.h | 101 + .../Versions/Current/Headers/buffer.h | 58 + .../Versions/Current/Headers/buffererr.h | 34 + .../Versions/Current/Headers/camellia.h | 83 + .../Versions/Current/Headers/cast.h | 53 + .../Versions/Current/Headers/cmac.h | 41 + .../Versions/Current/Headers/cms.h | 339 ++ .../Versions/Current/Headers/cmserr.h | 203 + .../Versions/Current/Headers/comp.h | 53 + .../Versions/Current/Headers/comperr.h | 44 + .../Versions/Current/Headers/conf.h | 168 + .../Versions/Current/Headers/conf_api.h | 40 + .../Versions/Current/Headers/conferr.h | 76 + .../Versions/Current/Headers/crypto.h | 445 ++ .../Versions/Current/Headers/cryptoerr.h | 57 + .../Versions/Current/Headers/ct.h | 474 ++ .../Versions/Current/Headers/cterr.h | 80 + .../Versions/Current/Headers/des.h | 174 + .../Versions/Current/Headers/dh.h | 343 ++ .../Versions/Current/Headers/dherr.h | 89 + .../Versions/Current/Headers/dsa.h | 244 + .../Versions/Current/Headers/dsaerr.h | 72 + .../Versions/Current/Headers/dtls1.h | 55 + .../Versions/Current/Headers/e_os2.h | 301 + .../Versions/Current/Headers/ebcdic.h | 33 + .../Versions/Current/Headers/ec.h | 1484 +++++ .../Versions/Current/Headers/ecdh.h | 10 + .../Versions/Current/Headers/ecdsa.h | 10 + .../Versions/Current/Headers/ecerr.h | 276 + .../Versions/Current/Headers/engine.h | 752 +++ .../Versions/Current/Headers/engineerr.h | 111 + .../Versions/Current/Headers/err.h | 274 + .../Versions/Current/Headers/evp.h | 1666 ++++++ .../Versions/Current/Headers/evperr.h | 204 + .../Versions/Current/Headers/hmac.h | 51 + .../Versions/Current/Headers/idea.h | 64 + .../Versions/Current/Headers/kdf.h | 97 + .../Versions/Current/Headers/kdferr.h | 55 + .../Versions/Current/Headers/lhash.h | 241 + .../Versions/Current/Headers/md2.h | 44 + .../Versions/Current/Headers/md4.h | 51 + .../Versions/Current/Headers/md5.h | 50 + .../Versions/Current/Headers/mdc2.h | 42 + .../Versions/Current/Headers/modes.h | 208 + .../Versions/Current/Headers/obj_mac.h | 5198 +++++++++++++++++ .../Versions/Current/Headers/objects.h | 175 + .../Versions/Current/Headers/objectserr.h | 42 + .../Versions/Current/Headers/ocsp.h | 352 ++ .../Versions/Current/Headers/ocsperr.h | 78 + .../Versions/Current/Headers/opensslconf.h | 642 ++ .../Versions/Current/Headers/opensslv.h | 101 + .../Versions/Current/Headers/ossl_typ.h | 197 + .../Versions/Current/Headers/pem.h | 378 ++ .../Versions/Current/Headers/pem2.h | 13 + .../Versions/Current/Headers/pemerr.h | 105 + .../Versions/Current/Headers/pkcs12.h | 223 + .../Versions/Current/Headers/pkcs12err.h | 81 + .../Versions/Current/Headers/pkcs7.h | 319 + .../Versions/Current/Headers/pkcs7err.h | 103 + .../Versions/Current/Headers/rand.h | 77 + .../Versions/Current/Headers/rand_drbg.h | 130 + .../Versions/Current/Headers/randerr.h | 94 + .../Versions/Current/Headers/rc2.h | 51 + .../Versions/Current/Headers/rc4.h | 36 + .../Versions/Current/Headers/rc5.h | 63 + .../Versions/Current/Headers/ripemd.h | 47 + .../Versions/Current/Headers/rsa.h | 513 ++ .../Versions/Current/Headers/rsaerr.h | 167 + .../Versions/Current/Headers/safestack.h | 207 + .../Versions/Current/Headers/seed.h | 96 + .../Versions/Current/Headers/sha.h | 119 + .../Versions/Current/Headers/shim.h | 41 + .../Versions/Current/Headers/srp.h | 135 + .../Versions/Current/Headers/srtp.h | 50 + .../Versions/Current/Headers/ssl.h | 2448 ++++++++ .../Versions/Current/Headers/ssl2.h | 24 + .../Versions/Current/Headers/ssl3.h | 342 ++ .../Versions/Current/Headers/sslerr.h | 776 +++ .../Versions/Current/Headers/stack.h | 83 + .../Versions/Current/Headers/store.h | 266 + .../Versions/Current/Headers/storeerr.h | 91 + .../Versions/Current/Headers/symhacks.h | 37 + .../Versions/Current/Headers/tls1.h | 1237 ++++ .../Versions/Current/Headers/ts.h | 559 ++ .../Versions/Current/Headers/tserr.h | 132 + .../Versions/Current/Headers/txt_db.h | 57 + .../Versions/Current/Headers/ui.h | 368 ++ .../Versions/Current/Headers/uierr.h | 65 + .../Versions/Current/Headers/whrlpool.h | 48 + .../Versions/Current/Headers/x509.h | 1050 ++++ .../Versions/Current/Headers/x509_vfy.h | 632 ++ .../Versions/Current/Headers/x509err.h | 129 + .../Versions/Current/Headers/x509v3.h | 938 +++ .../Versions/Current/Headers/x509v3err.h | 164 + .../Versions/Current/Modules/module.modulemap | 6 + .../Versions/Current/OpenSSL | Bin 0 -> 5177408 bytes .../Versions/Current/Resources/Info.plist | 50 + .../Current/Resources/PrivacyInfo.xcprivacy | 14 + .../Current/_CodeSignature/CodeResources | 881 +++ .../OpenSSL.framework/Headers | 1 - .../OpenSSL.framework/Headers/OpenSSL.h | 109 + .../OpenSSL.framework/Headers/aes.h | 92 + .../OpenSSL.framework/Headers/asn1.h | 886 +++ .../OpenSSL.framework/Headers/asn1err.h | 256 + .../OpenSSL.framework/Headers/asn1t.h | 945 +++ .../OpenSSL.framework/Headers/async.h | 76 + .../OpenSSL.framework/Headers/asyncerr.h | 42 + .../OpenSSL.framework/Headers/bio.h | 801 +++ .../OpenSSL.framework/Headers/bioerr.h | 124 + .../OpenSSL.framework/Headers/blowfish.h | 61 + .../OpenSSL.framework/Headers/bn.h | 539 ++ .../OpenSSL.framework/Headers/bnerr.h | 101 + .../OpenSSL.framework/Headers/buffer.h | 58 + .../OpenSSL.framework/Headers/buffererr.h | 34 + .../OpenSSL.framework/Headers/camellia.h | 83 + .../OpenSSL.framework/Headers/cast.h | 53 + .../OpenSSL.framework/Headers/cmac.h | 41 + .../OpenSSL.framework/Headers/cms.h | 339 ++ .../OpenSSL.framework/Headers/cmserr.h | 203 + .../OpenSSL.framework/Headers/comp.h | 53 + .../OpenSSL.framework/Headers/comperr.h | 44 + .../OpenSSL.framework/Headers/conf.h | 168 + .../OpenSSL.framework/Headers/conf_api.h | 40 + .../OpenSSL.framework/Headers/conferr.h | 76 + .../OpenSSL.framework/Headers/crypto.h | 445 ++ .../OpenSSL.framework/Headers/cryptoerr.h | 57 + .../OpenSSL.framework/Headers/ct.h | 474 ++ .../OpenSSL.framework/Headers/cterr.h | 80 + .../OpenSSL.framework/Headers/des.h | 174 + .../OpenSSL.framework/Headers/dh.h | 343 ++ .../OpenSSL.framework/Headers/dherr.h | 89 + .../OpenSSL.framework/Headers/dsa.h | 244 + .../OpenSSL.framework/Headers/dsaerr.h | 72 + .../OpenSSL.framework/Headers/dtls1.h | 55 + .../OpenSSL.framework/Headers/e_os2.h | 301 + .../OpenSSL.framework/Headers/ebcdic.h | 33 + .../OpenSSL.framework/Headers/ec.h | 1484 +++++ .../OpenSSL.framework/Headers/ecdh.h | 10 + .../OpenSSL.framework/Headers/ecdsa.h | 10 + .../OpenSSL.framework/Headers/ecerr.h | 276 + .../OpenSSL.framework/Headers/engine.h | 752 +++ .../OpenSSL.framework/Headers/engineerr.h | 111 + .../OpenSSL.framework/Headers/err.h | 274 + .../OpenSSL.framework/Headers/evp.h | 1666 ++++++ .../OpenSSL.framework/Headers/evperr.h | 204 + .../OpenSSL.framework/Headers/hmac.h | 51 + .../OpenSSL.framework/Headers/idea.h | 64 + .../OpenSSL.framework/Headers/kdf.h | 97 + .../OpenSSL.framework/Headers/kdferr.h | 55 + .../OpenSSL.framework/Headers/lhash.h | 241 + .../OpenSSL.framework/Headers/md2.h | 44 + .../OpenSSL.framework/Headers/md4.h | 51 + .../OpenSSL.framework/Headers/md5.h | 50 + .../OpenSSL.framework/Headers/mdc2.h | 42 + .../OpenSSL.framework/Headers/modes.h | 208 + .../OpenSSL.framework/Headers/obj_mac.h | 5198 +++++++++++++++++ .../OpenSSL.framework/Headers/objects.h | 175 + .../OpenSSL.framework/Headers/objectserr.h | 42 + .../OpenSSL.framework/Headers/ocsp.h | 352 ++ .../OpenSSL.framework/Headers/ocsperr.h | 78 + .../OpenSSL.framework/Headers/opensslconf.h | 642 ++ .../OpenSSL.framework/Headers/opensslv.h | 101 + .../OpenSSL.framework/Headers/ossl_typ.h | 197 + .../OpenSSL.framework/Headers/pem.h | 378 ++ .../OpenSSL.framework/Headers/pem2.h | 13 + .../OpenSSL.framework/Headers/pemerr.h | 105 + .../OpenSSL.framework/Headers/pkcs12.h | 223 + .../OpenSSL.framework/Headers/pkcs12err.h | 81 + .../OpenSSL.framework/Headers/pkcs7.h | 319 + .../OpenSSL.framework/Headers/pkcs7err.h | 103 + .../OpenSSL.framework/Headers/rand.h | 77 + .../OpenSSL.framework/Headers/rand_drbg.h | 130 + .../OpenSSL.framework/Headers/randerr.h | 94 + .../OpenSSL.framework/Headers/rc2.h | 51 + .../OpenSSL.framework/Headers/rc4.h | 36 + .../OpenSSL.framework/Headers/rc5.h | 63 + .../OpenSSL.framework/Headers/ripemd.h | 47 + .../OpenSSL.framework/Headers/rsa.h | 513 ++ .../OpenSSL.framework/Headers/rsaerr.h | 167 + .../OpenSSL.framework/Headers/safestack.h | 207 + .../OpenSSL.framework/Headers/seed.h | 96 + .../OpenSSL.framework/Headers/sha.h | 119 + .../OpenSSL.framework/Headers/shim.h | 41 + .../OpenSSL.framework/Headers/srp.h | 135 + .../OpenSSL.framework/Headers/srtp.h | 50 + .../OpenSSL.framework/Headers/ssl.h | 2448 ++++++++ .../OpenSSL.framework/Headers/ssl2.h | 24 + .../OpenSSL.framework/Headers/ssl3.h | 342 ++ .../OpenSSL.framework/Headers/sslerr.h | 776 +++ .../OpenSSL.framework/Headers/stack.h | 83 + .../OpenSSL.framework/Headers/store.h | 266 + .../OpenSSL.framework/Headers/storeerr.h | 91 + .../OpenSSL.framework/Headers/symhacks.h | 37 + .../OpenSSL.framework/Headers/tls1.h | 1237 ++++ .../OpenSSL.framework/Headers/ts.h | 559 ++ .../OpenSSL.framework/Headers/tserr.h | 132 + .../OpenSSL.framework/Headers/txt_db.h | 57 + .../OpenSSL.framework/Headers/ui.h | 368 ++ .../OpenSSL.framework/Headers/uierr.h | 65 + .../OpenSSL.framework/Headers/whrlpool.h | 48 + .../OpenSSL.framework/Headers/x509.h | 1050 ++++ .../OpenSSL.framework/Headers/x509_vfy.h | 632 ++ .../OpenSSL.framework/Headers/x509err.h | 129 + .../OpenSSL.framework/Headers/x509v3.h | 938 +++ .../OpenSSL.framework/Headers/x509v3err.h | 164 + .../OpenSSL.framework/Modules | 1 - .../Modules/module.modulemap | 6 + .../OpenSSL.framework/OpenSSL | Bin 24 -> 5170272 bytes .../OpenSSL.framework/Resources | 1 - .../OpenSSL.framework/Resources/Info.plist | 46 + .../Resources/PrivacyInfo.xcprivacy | 14 + .../OpenSSL.framework/Versions/Current | 1 - .../Versions/Current/Headers/OpenSSL.h | 109 + .../Versions/Current/Headers/aes.h | 92 + .../Versions/Current/Headers/asn1.h | 886 +++ .../Versions/Current/Headers/asn1err.h | 256 + .../Versions/Current/Headers/asn1t.h | 945 +++ .../Versions/Current/Headers/async.h | 76 + .../Versions/Current/Headers/asyncerr.h | 42 + .../Versions/Current/Headers/bio.h | 801 +++ .../Versions/Current/Headers/bioerr.h | 124 + .../Versions/Current/Headers/blowfish.h | 61 + .../Versions/Current/Headers/bn.h | 539 ++ .../Versions/Current/Headers/bnerr.h | 101 + .../Versions/Current/Headers/buffer.h | 58 + .../Versions/Current/Headers/buffererr.h | 34 + .../Versions/Current/Headers/camellia.h | 83 + .../Versions/Current/Headers/cast.h | 53 + .../Versions/Current/Headers/cmac.h | 41 + .../Versions/Current/Headers/cms.h | 339 ++ .../Versions/Current/Headers/cmserr.h | 203 + .../Versions/Current/Headers/comp.h | 53 + .../Versions/Current/Headers/comperr.h | 44 + .../Versions/Current/Headers/conf.h | 168 + .../Versions/Current/Headers/conf_api.h | 40 + .../Versions/Current/Headers/conferr.h | 76 + .../Versions/Current/Headers/crypto.h | 445 ++ .../Versions/Current/Headers/cryptoerr.h | 57 + .../Versions/Current/Headers/ct.h | 474 ++ .../Versions/Current/Headers/cterr.h | 80 + .../Versions/Current/Headers/des.h | 174 + .../Versions/Current/Headers/dh.h | 343 ++ .../Versions/Current/Headers/dherr.h | 89 + .../Versions/Current/Headers/dsa.h | 244 + .../Versions/Current/Headers/dsaerr.h | 72 + .../Versions/Current/Headers/dtls1.h | 55 + .../Versions/Current/Headers/e_os2.h | 301 + .../Versions/Current/Headers/ebcdic.h | 33 + .../Versions/Current/Headers/ec.h | 1484 +++++ .../Versions/Current/Headers/ecdh.h | 10 + .../Versions/Current/Headers/ecdsa.h | 10 + .../Versions/Current/Headers/ecerr.h | 276 + .../Versions/Current/Headers/engine.h | 752 +++ .../Versions/Current/Headers/engineerr.h | 111 + .../Versions/Current/Headers/err.h | 274 + .../Versions/Current/Headers/evp.h | 1666 ++++++ .../Versions/Current/Headers/evperr.h | 204 + .../Versions/Current/Headers/hmac.h | 51 + .../Versions/Current/Headers/idea.h | 64 + .../Versions/Current/Headers/kdf.h | 97 + .../Versions/Current/Headers/kdferr.h | 55 + .../Versions/Current/Headers/lhash.h | 241 + .../Versions/Current/Headers/md2.h | 44 + .../Versions/Current/Headers/md4.h | 51 + .../Versions/Current/Headers/md5.h | 50 + .../Versions/Current/Headers/mdc2.h | 42 + .../Versions/Current/Headers/modes.h | 208 + .../Versions/Current/Headers/obj_mac.h | 5198 +++++++++++++++++ .../Versions/Current/Headers/objects.h | 175 + .../Versions/Current/Headers/objectserr.h | 42 + .../Versions/Current/Headers/ocsp.h | 352 ++ .../Versions/Current/Headers/ocsperr.h | 78 + .../Versions/Current/Headers/opensslconf.h | 642 ++ .../Versions/Current/Headers/opensslv.h | 101 + .../Versions/Current/Headers/ossl_typ.h | 197 + .../Versions/Current/Headers/pem.h | 378 ++ .../Versions/Current/Headers/pem2.h | 13 + .../Versions/Current/Headers/pemerr.h | 105 + .../Versions/Current/Headers/pkcs12.h | 223 + .../Versions/Current/Headers/pkcs12err.h | 81 + .../Versions/Current/Headers/pkcs7.h | 319 + .../Versions/Current/Headers/pkcs7err.h | 103 + .../Versions/Current/Headers/rand.h | 77 + .../Versions/Current/Headers/rand_drbg.h | 130 + .../Versions/Current/Headers/randerr.h | 94 + .../Versions/Current/Headers/rc2.h | 51 + .../Versions/Current/Headers/rc4.h | 36 + .../Versions/Current/Headers/rc5.h | 63 + .../Versions/Current/Headers/ripemd.h | 47 + .../Versions/Current/Headers/rsa.h | 513 ++ .../Versions/Current/Headers/rsaerr.h | 167 + .../Versions/Current/Headers/safestack.h | 207 + .../Versions/Current/Headers/seed.h | 96 + .../Versions/Current/Headers/sha.h | 119 + .../Versions/Current/Headers/shim.h | 41 + .../Versions/Current/Headers/srp.h | 135 + .../Versions/Current/Headers/srtp.h | 50 + .../Versions/Current/Headers/ssl.h | 2448 ++++++++ .../Versions/Current/Headers/ssl2.h | 24 + .../Versions/Current/Headers/ssl3.h | 342 ++ .../Versions/Current/Headers/sslerr.h | 776 +++ .../Versions/Current/Headers/stack.h | 83 + .../Versions/Current/Headers/store.h | 266 + .../Versions/Current/Headers/storeerr.h | 91 + .../Versions/Current/Headers/symhacks.h | 37 + .../Versions/Current/Headers/tls1.h | 1237 ++++ .../Versions/Current/Headers/ts.h | 559 ++ .../Versions/Current/Headers/tserr.h | 132 + .../Versions/Current/Headers/txt_db.h | 57 + .../Versions/Current/Headers/ui.h | 368 ++ .../Versions/Current/Headers/uierr.h | 65 + .../Versions/Current/Headers/whrlpool.h | 48 + .../Versions/Current/Headers/x509.h | 1050 ++++ .../Versions/Current/Headers/x509_vfy.h | 632 ++ .../Versions/Current/Headers/x509err.h | 129 + .../Versions/Current/Headers/x509v3.h | 938 +++ .../Versions/Current/Headers/x509v3err.h | 164 + .../Versions/Current/Modules/module.modulemap | 6 + .../Versions/Current/OpenSSL | Bin 0 -> 5170272 bytes .../Versions/Current/Resources/Info.plist | 46 + .../Current/Resources/PrivacyInfo.xcprivacy | 14 + .../Current/_CodeSignature/CodeResources | 881 +++ .../mobile-sdk-alpha/scripts/build-ios.sh | 2 +- 447 files changed, 132279 insertions(+), 9 deletions(-) delete mode 120000 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/OpenSSL.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/aes.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1t.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/async.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asyncerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bio.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bioerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/blowfish.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bn.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bnerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/buffer.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/buffererr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/camellia.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cast.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cmac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cms.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cmserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/comp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/comperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conf_api.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conferr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/crypto.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cryptoerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ct.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cterr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/des.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dh.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dherr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dsaerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dtls1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/e_os2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ebcdic.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ec.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecdh.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecdsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/engine.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/engineerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/evp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/evperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/hmac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/idea.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/kdf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/kdferr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/lhash.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md4.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md5.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/mdc2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/modes.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/obj_mac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/objects.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/objectserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ocsp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ocsperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/opensslconf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/opensslv.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ossl_typ.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pem.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pem2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pemerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs12.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs12err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs7.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs7err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rand.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rand_drbg.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/randerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc4.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc5.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ripemd.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rsaerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/safestack.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/seed.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/sha.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/shim.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/srp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/srtp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl3.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/sslerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/stack.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/store.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/storeerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/symhacks.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/tls1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ts.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/tserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/txt_db.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ui.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/uierr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/whrlpool.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509_vfy.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509v3.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509v3err.h delete mode 120000 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Modules create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Modules/module.modulemap mode change 120000 => 100755 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/OpenSSL delete mode 120000 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Resources create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Resources/Info.plist create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Resources/PrivacyInfo.xcprivacy delete mode 120000 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/OpenSSL.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/aes.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/asn1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/asn1err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/asn1t.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/async.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/asyncerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/bio.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/bioerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/blowfish.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/bn.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/bnerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/buffer.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/buffererr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/camellia.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/cast.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/cmac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/cms.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/cmserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/comp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/comperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/conf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/conf_api.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/conferr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/crypto.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/cryptoerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ct.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/cterr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/des.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/dh.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/dherr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/dsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/dsaerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/dtls1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/e_os2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ebcdic.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ec.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ecdh.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ecdsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ecerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/engine.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/engineerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/evp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/evperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/hmac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/idea.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/kdf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/kdferr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/lhash.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/md2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/md4.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/md5.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/mdc2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/modes.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/obj_mac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/objects.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/objectserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ocsp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ocsperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/opensslconf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/opensslv.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ossl_typ.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/pem.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/pem2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/pemerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/pkcs12.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/pkcs12err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/pkcs7.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/pkcs7err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/rand.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/rand_drbg.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/randerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/rc2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/rc4.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/rc5.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ripemd.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/rsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/rsaerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/safestack.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/seed.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/sha.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/shim.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/srp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/srtp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ssl.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ssl2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ssl3.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/sslerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/stack.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/store.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/storeerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/symhacks.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/tls1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ts.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/tserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/txt_db.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/ui.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/uierr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/whrlpool.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/x509.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/x509_vfy.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/x509err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/x509v3.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Headers/x509v3err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Modules/module.modulemap create mode 100755 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/OpenSSL create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Resources/Info.plist create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/Resources/PrivacyInfo.xcprivacy create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Versions/Current/_CodeSignature/CodeResources delete mode 120000 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/OpenSSL.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/aes.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/asn1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/asn1err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/asn1t.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/async.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/asyncerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/bio.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/bioerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/blowfish.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/bn.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/bnerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/buffer.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/buffererr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/camellia.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/cast.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/cmac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/cms.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/cmserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/comp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/comperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/conf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/conf_api.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/conferr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/crypto.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/cryptoerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ct.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/cterr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/des.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/dh.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/dherr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/dsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/dsaerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/dtls1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/e_os2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ebcdic.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ec.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ecdh.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ecdsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ecerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/engine.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/engineerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/evp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/evperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/hmac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/idea.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/kdf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/kdferr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/lhash.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/md2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/md4.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/md5.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/mdc2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/modes.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/obj_mac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/objects.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/objectserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ocsp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ocsperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/opensslconf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/opensslv.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ossl_typ.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/pem.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/pem2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/pemerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/pkcs12.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/pkcs12err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/pkcs7.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/pkcs7err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/rand.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/rand_drbg.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/randerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/rc2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/rc4.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/rc5.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ripemd.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/rsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/rsaerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/safestack.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/seed.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/sha.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/shim.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/srp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/srtp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ssl.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ssl2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ssl3.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/sslerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/stack.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/store.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/storeerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/symhacks.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/tls1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ts.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/tserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/txt_db.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/ui.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/uierr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/whrlpool.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/x509.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/x509_vfy.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/x509err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/x509v3.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Headers/x509v3err.h delete mode 120000 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Modules create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Modules/module.modulemap mode change 120000 => 100755 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/OpenSSL delete mode 120000 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Resources create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Resources/Info.plist create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Resources/PrivacyInfo.xcprivacy delete mode 120000 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/OpenSSL.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/aes.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/asn1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/asn1err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/asn1t.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/async.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/asyncerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/bio.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/bioerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/blowfish.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/bn.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/bnerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/buffer.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/buffererr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/camellia.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/cast.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/cmac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/cms.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/cmserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/comp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/comperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/conf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/conf_api.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/conferr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/crypto.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/cryptoerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ct.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/cterr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/des.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/dh.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/dherr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/dsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/dsaerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/dtls1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/e_os2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ebcdic.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ec.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ecdh.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ecdsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ecerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/engine.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/engineerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/evp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/evperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/hmac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/idea.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/kdf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/kdferr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/lhash.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/md2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/md4.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/md5.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/mdc2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/modes.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/obj_mac.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/objects.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/objectserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ocsp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ocsperr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/opensslconf.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/opensslv.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ossl_typ.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/pem.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/pem2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/pemerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/pkcs12.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/pkcs12err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/pkcs7.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/pkcs7err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/rand.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/rand_drbg.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/randerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/rc2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/rc4.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/rc5.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ripemd.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/rsa.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/rsaerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/safestack.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/seed.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/sha.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/shim.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/srp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/srtp.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ssl.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ssl2.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ssl3.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/sslerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/stack.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/store.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/storeerr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/symhacks.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/tls1.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ts.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/tserr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/txt_db.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/ui.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/uierr.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/whrlpool.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/x509.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/x509_vfy.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/x509err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/x509v3.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Headers/x509v3err.h create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Modules/module.modulemap create mode 100755 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/OpenSSL create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Resources/Info.plist create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/Resources/PrivacyInfo.xcprivacy create mode 100644 packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/macos-arm64_x86_64/OpenSSL.framework/Versions/Current/_CodeSignature/CodeResources diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers deleted file mode 120000 index a177d2a6b..000000000 --- a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/OpenSSL.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/OpenSSL.h new file mode 100644 index 000000000..61aca09c8 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/OpenSSL.h @@ -0,0 +1,111 @@ +// Include before others: +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include +// #include +// #include +// #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include \ No newline at end of file diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/aes.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/aes.h new file mode 100644 index 000000000..245c552ab --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/aes.h @@ -0,0 +1,92 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_AES_H +# define HEADER_AES_H + +# include + +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define AES_ENCRYPT 1 +# define AES_DECRYPT 0 + +/* + * Because array size can't be a const in C, the following two are macros. + * Both sizes are in bytes. + */ +# define AES_MAXNR 14 +# define AES_BLOCK_SIZE 16 + +/* 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; + +const char *AES_options(void); + +int AES_set_encrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); +int AES_set_decrypt_key(const unsigned char *userKey, const int bits, + AES_KEY *key); + +void AES_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); +void AES_decrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key); + +void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, + const AES_KEY *key, const int enc); +void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const AES_KEY *key, + unsigned char *ivec, const int enc); +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); +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); +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); +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 */ +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 */ +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); + +int AES_wrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); +int AES_unwrap_key(AES_KEY *key, const unsigned char *iv, + unsigned char *out, + const unsigned char *in, unsigned int inlen); + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1.h new file mode 100644 index 000000000..9522eec18 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1.h @@ -0,0 +1,886 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1_H +# define HEADER_ASN1_H + +# include +# include +# include +# include +# include +# include +# include + +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +# 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 + struct X509_algor_st; +DEFINE_STACK_OF(X509_ALGOR) + +# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +# define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +# define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +# define ASN1_STRING_FLAG_MSTRING 0x040 +/* String is embedded and only content should be freed */ +# define ASN1_STRING_FLAG_EMBED 0x080 +/* String should be parsed in RFC 5280's time format */ +# define ASN1_STRING_FLAG_X509_TIME 0x100 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +# define ASN1_LONG_UNDEF 0x7fffffffL + +# define STABLE_FLAGS_MALLOC 0x01 +/* + * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted + * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting + * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias + * STABLE_FLAGS_CLEAR to reflect this. + */ +# define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC +# define STABLE_NO_MASK 0x02 +# define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) +# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) + +typedef struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +} ASN1_STRING_TABLE; + +DEFINE_STACK_OF(ASN1_STRING_TABLE) + +/* size limits: this stuff is taken straight from RFC2459 */ + +# define ub_name 32768 +# define ub_common_name 64 +# define ub_locality_name 128 +# define ub_state_name 128 +# define ub_organization_name 64 +# define ub_organization_unit_name 64 +# define ub_title 64 +# define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro in in asn1t.h */ + +# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) + +# 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_ENCODE_FUNCTIONS(type, itname, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(itname) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(const type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(name) + +# define DECLARE_ASN1_NDEF_FUNCTION(name) \ + int i2d_##name##_NDEF(name *a, unsigned char **out); + +# define DECLARE_ASN1_FUNCTIONS_const(name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + type *name##_new(void); \ + void name##_free(type *a); + +# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) + +# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx); + +# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) +# define I2D_OF(type) int (*)(type *,unsigned char **) +# define I2D_OF_const(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(type *,unsigned char **) +# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) + +TYPEDEF_D2I2D_OF(void); + +/*- + * 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. + * + */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM ASN1_ITEM_EXP; + +/* 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(name) \ + OPENSSL_EXTERN const ASN1_ITEM name##_it; + +# else + +/* + * 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(name) \ + const ASN1_ITEM * name##_it(void); + +# endif + +/* 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 + +/* + * 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) + +DEFINE_STACK_OF(ASN1_INTEGER) + +DEFINE_STACK_OF(ASN1_GENERALSTRING) + +DEFINE_STACK_OF(ASN1_UTF8STRING) + +typedef 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; +} ASN1_TYPE; + +DEFINE_STACK_OF(ASN1_TYPE) + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(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_FUNCTIONS_fname(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); + +ASN1_OBJECT *ASN1_OBJECT_new(void); +void ASN1_OBJECT_free(ASN1_OBJECT *a); +int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp); +ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_ITEM(ASN1_OBJECT) + +DEFINE_STACK_OF(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); +ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); +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); +void ASN1_STRING_length_set(ASN1_STRING *x, int n); +int ASN1_STRING_type(const ASN1_STRING *x); +DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x)) +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); + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); +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) +ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); +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); + +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); + +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_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, 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(type, x))) + +# define ASN1_dup_of_const(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, void *x); + +/* 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(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); + +# define ASN1_i2d_fp_of(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, 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(const ASN1_ITEM *it, BIO *in, void *x); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); + +# define ASN1_i2d_bio_of(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); +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 *fp, const ASN1_TIME *a); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags); +int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +const char *ASN1_tag2str(int tag); + +/* Used to load and write Netscape format cert */ + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(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, 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); + +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); +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); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +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); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1err.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1err.h new file mode 100644 index 000000000..e1ad1fefe --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1err.h @@ -0,0 +1,256 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1ERR_H +# define HEADER_ASN1ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASN1_strings(void); + +/* + * ASN1 function codes. + */ +# define ASN1_F_A2D_ASN1_OBJECT 100 +# define ASN1_F_A2I_ASN1_INTEGER 102 +# define ASN1_F_A2I_ASN1_STRING 103 +# define ASN1_F_APPEND_EXP 176 +# define ASN1_F_ASN1_BIO_INIT 113 +# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 +# define ASN1_F_ASN1_CB 177 +# define ASN1_F_ASN1_CHECK_TLEN 104 +# define ASN1_F_ASN1_COLLECT 106 +# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 +# define ASN1_F_ASN1_D2I_FP 109 +# define ASN1_F_ASN1_D2I_READ_BIO 107 +# define ASN1_F_ASN1_DIGEST 184 +# define ASN1_F_ASN1_DO_ADB 110 +# define ASN1_F_ASN1_DO_LOCK 233 +# define ASN1_F_ASN1_DUP 111 +# define ASN1_F_ASN1_ENC_SAVE 115 +# define ASN1_F_ASN1_EX_C2I 204 +# define ASN1_F_ASN1_FIND_END 190 +# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 +# define ASN1_F_ASN1_GENERATE_V3 178 +# define ASN1_F_ASN1_GET_INT64 224 +# define ASN1_F_ASN1_GET_OBJECT 114 +# define ASN1_F_ASN1_GET_UINT64 225 +# define ASN1_F_ASN1_I2D_BIO 116 +# define ASN1_F_ASN1_I2D_FP 117 +# define ASN1_F_ASN1_ITEM_D2I_FP 206 +# define ASN1_F_ASN1_ITEM_DUP 191 +# define ASN1_F_ASN1_ITEM_EMBED_D2I 120 +# define ASN1_F_ASN1_ITEM_EMBED_NEW 121 +# define ASN1_F_ASN1_ITEM_EX_I2D 144 +# define ASN1_F_ASN1_ITEM_FLAGS_I2D 118 +# define ASN1_F_ASN1_ITEM_I2D_BIO 192 +# define ASN1_F_ASN1_ITEM_I2D_FP 193 +# define ASN1_F_ASN1_ITEM_PACK 198 +# define ASN1_F_ASN1_ITEM_SIGN 195 +# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 +# define ASN1_F_ASN1_ITEM_UNPACK 199 +# define ASN1_F_ASN1_ITEM_VERIFY 197 +# define ASN1_F_ASN1_MBSTRING_NCOPY 122 +# define ASN1_F_ASN1_OBJECT_NEW 123 +# define ASN1_F_ASN1_OUTPUT_DATA 214 +# define ASN1_F_ASN1_PCTX_NEW 205 +# define ASN1_F_ASN1_PRIMITIVE_NEW 119 +# define ASN1_F_ASN1_SCTX_NEW 221 +# define ASN1_F_ASN1_SIGN 128 +# define ASN1_F_ASN1_STR2TYPE 179 +# define ASN1_F_ASN1_STRING_GET_INT64 227 +# define ASN1_F_ASN1_STRING_GET_UINT64 230 +# define ASN1_F_ASN1_STRING_SET 186 +# define ASN1_F_ASN1_STRING_TABLE_ADD 129 +# define ASN1_F_ASN1_STRING_TO_BN 228 +# define ASN1_F_ASN1_STRING_TYPE_NEW 130 +# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 +# define ASN1_F_ASN1_TEMPLATE_NEW 133 +# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 +# define ASN1_F_ASN1_TIME_ADJ 217 +# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 +# define ASN1_F_ASN1_UTCTIME_ADJ 218 +# define ASN1_F_ASN1_VERIFY 137 +# define ASN1_F_B64_READ_ASN1 209 +# define ASN1_F_B64_WRITE_ASN1 210 +# define ASN1_F_BIO_NEW_NDEF 208 +# define ASN1_F_BITSTR_CB 180 +# define ASN1_F_BN_TO_ASN1_STRING 229 +# define ASN1_F_C2I_ASN1_BIT_STRING 189 +# define ASN1_F_C2I_ASN1_INTEGER 194 +# define ASN1_F_C2I_ASN1_OBJECT 196 +# define ASN1_F_C2I_IBUF 226 +# define ASN1_F_C2I_UINT64_INT 101 +# define ASN1_F_COLLECT_DATA 140 +# define ASN1_F_D2I_ASN1_OBJECT 147 +# define ASN1_F_D2I_ASN1_UINTEGER 150 +# define ASN1_F_D2I_AUTOPRIVATEKEY 207 +# define ASN1_F_D2I_PRIVATEKEY 154 +# define ASN1_F_D2I_PUBLICKEY 155 +# define ASN1_F_DO_BUF 142 +# define ASN1_F_DO_CREATE 124 +# define ASN1_F_DO_DUMP 125 +# define ASN1_F_DO_TCREATE 222 +# define ASN1_F_I2A_ASN1_OBJECT 126 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# define ASN1_F_I2D_ASN1_OBJECT 143 +# define ASN1_F_I2D_DSA_PUBKEY 161 +# define ASN1_F_I2D_EC_PUBKEY 181 +# define ASN1_F_I2D_PRIVATEKEY 163 +# define ASN1_F_I2D_PUBLICKEY 164 +# define ASN1_F_I2D_RSA_PUBKEY 165 +# define ASN1_F_LONG_C2I 166 +# define ASN1_F_NDEF_PREFIX 127 +# define ASN1_F_NDEF_SUFFIX 136 +# define ASN1_F_OID_MODULE_INIT 174 +# define ASN1_F_PARSE_TAGGING 182 +# define ASN1_F_PKCS5_PBE2_SET_IV 167 +# define ASN1_F_PKCS5_PBE2_SET_SCRYPT 231 +# define ASN1_F_PKCS5_PBE_SET 202 +# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 +# define ASN1_F_PKCS5_PBKDF2_SET 219 +# define ASN1_F_PKCS5_SCRYPT_SET 232 +# define ASN1_F_SMIME_READ_ASN1 212 +# define ASN1_F_SMIME_TEXT 213 +# define ASN1_F_STABLE_GET 138 +# define ASN1_F_STBL_MODULE_INIT 223 +# define ASN1_F_UINT32_C2I 105 +# define ASN1_F_UINT32_NEW 139 +# define ASN1_F_UINT64_C2I 112 +# define ASN1_F_UINT64_NEW 141 +# define ASN1_F_X509_CRL_ADD0_REVOKED 169 +# define ASN1_F_X509_INFO_NEW 170 +# define ASN1_F_X509_NAME_ENCODE 203 +# define ASN1_F_X509_NAME_EX_D2I 158 +# define ASN1_F_X509_NAME_EX_NEW 171 +# define ASN1_F_X509_PKEY_NEW 173 + +/* + * ASN1 reason codes. + */ +# define ASN1_R_ADDING_OBJECT 171 +# define ASN1_R_ASN1_PARSE_ERROR 203 +# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 +# define ASN1_R_AUX_ERROR 100 +# define ASN1_R_BAD_OBJECT_HEADER 102 +# define ASN1_R_BAD_TEMPLATE 230 +# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 +# define ASN1_R_BN_LIB 105 +# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 +# define ASN1_R_BUFFER_TOO_SMALL 107 +# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 +# define ASN1_R_CONTEXT_NOT_INITIALISED 217 +# define ASN1_R_DATA_IS_WRONG 109 +# define ASN1_R_DECODE_ERROR 110 +# define ASN1_R_DEPTH_EXCEEDED 174 +# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 +# define ASN1_R_ENCODE_ERROR 112 +# define ASN1_R_ERROR_GETTING_TIME 173 +# define ASN1_R_ERROR_LOADING_SECTION 172 +# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 +# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 +# define ASN1_R_FIELD_MISSING 121 +# define ASN1_R_FIRST_NUM_TOO_LARGE 122 +# define ASN1_R_HEADER_TOO_LONG 123 +# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 +# define ASN1_R_ILLEGAL_BOOLEAN 176 +# define ASN1_R_ILLEGAL_CHARACTERS 124 +# define ASN1_R_ILLEGAL_FORMAT 177 +# define ASN1_R_ILLEGAL_HEX 178 +# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 +# define ASN1_R_ILLEGAL_INTEGER 180 +# define ASN1_R_ILLEGAL_NEGATIVE_VALUE 226 +# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 +# define ASN1_R_ILLEGAL_NULL 125 +# define ASN1_R_ILLEGAL_NULL_VALUE 182 +# define ASN1_R_ILLEGAL_OBJECT 183 +# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 +# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 +# define ASN1_R_ILLEGAL_PADDING 221 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_ILLEGAL_ZERO_CONTENT 222 +# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 +# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 +# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 +# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 +# define ASN1_R_INVALID_DIGIT 130 +# define ASN1_R_INVALID_MIME_TYPE 205 +# define ASN1_R_INVALID_MODIFIER 186 +# define ASN1_R_INVALID_NUMBER 187 +# define ASN1_R_INVALID_OBJECT_ENCODING 216 +# define ASN1_R_INVALID_SCRYPT_PARAMETERS 227 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_STRING_TABLE_VALUE 218 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_INVALID_VALUE 219 +# define ASN1_R_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_FORMAT 160 +# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 +# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 +# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 +# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 +# define ASN1_R_UNKNOWN_TAG 194 +# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 228 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_INTEGER_TYPE 225 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1t.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1t.h new file mode 100644 index 000000000..a450ba0d9 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asn1t.h @@ -0,0 +1,945 @@ +/* + * Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1T_H +# define HEADER_ASN1T_H + +# 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 + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* 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 = { + +# define static_ASN1_ITEM_start(itname) \ + static const ASN1_ITEM itname##_it = { + +# define ASN1_ITEM_end(itname) \ + }; + +# else + +/* 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; \ + } + +# endif + +/* 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}; \ + ASN1_SEQUENCE(tname) + +# define ASN1_BROKEN_SEQUENCE(tname) \ + static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, 0, 0}; \ + 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}; \ + 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)}; \ + 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_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname) +# define static_ASN1_BROKEN_SEQUENCE_END(stname) \ + static_ASN1_SEQUENCE_END_ref(stname, stname) + +# 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}; \ + 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 */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) } +# else +# 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 } +# endif +/* 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[] + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \ + ;\ + static const ASN1_ADB name##_adb = {\ + flags,\ + offsetof(name, field),\ + adb_cb,\ + name##_adbtbl,\ + sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\ + def,\ + none\ + } + +# else + +# 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) + +# endif + +# 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; /* functions that handle this type */ + long size; /* Structure size (usually) */ + const char *sname; /* Structure name */ +}; + +/*- + * These are values for the itype field and + * determine how the type 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 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 + +# define ASN1_ITYPE_EXTERN 0x4 + +# define ASN1_ITYPE_MSTRING 0x5 + +# define ASN1_ITYPE_NDEF_SEQUENCE 0x6 + +/* + * 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_i2d(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 void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); + +typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval, + int indent, const char *fname, + const ASN1_PCTX *pctx); + +typedef int ASN1_primitive_i2c(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, 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_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. + */ + +typedef int ASN1_aux_cb(int operation, 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; /* Lock type to use */ + ASN1_aux_cb *asn1_cb; + int enc_offset; /* Offset of ASN1_ENCODING structure */ +} 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 + +/* 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 + +/* 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(stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ + int i2d_##stname##_NDEF(stname *a, unsigned char **out) \ + { \ + return ASN1_item_ndef_i2d((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(stname *a, unsigned char **out) \ + { \ + return ASN1_item_i2d((ASN1_VALUE *)a, out, \ + ASN1_ITEM_rptr(stname)); \ + } + +/* + * This includes evil casts to remove const: they will go away when full ASN1 + * constification is done. + */ +# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_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((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ + } + +# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ + stname * stname##_dup(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, stname *x, int indent, \ + const ASN1_PCTX *pctx) \ + { \ + return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \ + ASN1_ITEM_rptr(itname), pctx); \ + } + +# define IMPLEMENT_ASN1_FUNCTIONS_const(name) \ + IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name) + +# define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ + IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) + +/* 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) + +# if OPENSSL_API_COMPAT < 0x10200000L +/* + * 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 + +DEFINE_STACK_OF(ASN1_VALUE) + +/* Functions used internally by the ASN1 code */ + +int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it); +void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it); + +int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, + const ASN1_ITEM *it, int tag, int aclass, char opt, + ASN1_TLC *ctx); + +int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, + const ASN1_ITEM *it, int tag, int aclass); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/async.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/async.h new file mode 100644 index 000000000..7052b8905 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/async.h @@ -0,0 +1,76 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with 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 HEADER_ASYNC_H +# define HEADER_ASYNC_H + +#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; + +#define ASYNC_ERR 0 +#define ASYNC_NO_JOBS 1 +#define ASYNC_PAUSE 2 +#define ASYNC_FINISH 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_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); +#endif + +int ASYNC_is_capable(void); + +int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, + int (*func)(void *), void *args, size_t size); +int ASYNC_pause_job(void); + +ASYNC_JOB *ASYNC_get_current_job(void); +ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job); +void ASYNC_block_pause(void); +void ASYNC_unblock_pause(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asyncerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asyncerr.h new file mode 100644 index 000000000..91afbbb2f --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/asyncerr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASYNCERR_H +# define HEADER_ASYNCERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASYNC_strings(void); + +/* + * ASYNC function codes. + */ +# define ASYNC_F_ASYNC_CTX_NEW 100 +# define ASYNC_F_ASYNC_INIT_THREAD 101 +# define ASYNC_F_ASYNC_JOB_NEW 102 +# define ASYNC_F_ASYNC_PAUSE_JOB 103 +# define ASYNC_F_ASYNC_START_FUNC 104 +# define ASYNC_F_ASYNC_START_JOB 105 +# define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 106 + +/* + * 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bio.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bio.h new file mode 100644 index 000000000..ae559a510 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bio.h @@ -0,0 +1,801 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# 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_START 128 + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +# define BIO_NOCLOSE 0x00 +# define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ +# define BIO_CTRL_EOF 2/* opt - are we at the eof */ +# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ +# define BIO_CTRL_SET 4/* man - set the 'IO' type */ +# define BIO_CTRL_GET 5/* man - get the 'IO' type */ +# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ +# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ +# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ +# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ +# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ +# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ +# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ +# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_PEEK 29/* BIO_f_buffer special */ +# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ + +/* dgram BIO stuff */ +# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ +# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected + * socket to be passed in */ +# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ +# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ + +# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd 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 + +/* 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 BIO_FLAGS_UPLINK +/* + * "UPLINK" flag denotes file descriptors provided by application. It + * defaults to 0, as most platforms don't require UPLINK interface. + */ +# 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 + +typedef union bio_addr_st BIO_ADDR; +typedef struct bio_addrinfo_st BIO_ADDRINFO; + +int BIO_get_new_index(void); +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +# define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +# define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +# define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +# define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +# define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +# define BIO_CB_RETURN 0x80 +# define BIO_CB_return(a) ((a)|BIO_CB_RETURN) +# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) +# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) + +typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, + long argl, long ret); +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 BIO_get_callback(const BIO *b); +void BIO_set_callback(BIO *b, BIO_callback_fn callback); + +BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); +void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); + +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 */ + +DEFINE_STACK_OF(BIO) + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +# ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +# endif + +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +# define BIO_C_SET_CONNECT 100 +# define BIO_C_DO_STATE_MACHINE 101 +# define BIO_C_SET_NBIO 102 +/* # define BIO_C_SET_PROXY_PARAM 103 */ +# define BIO_C_SET_FD 104 +# define BIO_C_GET_FD 105 +# define BIO_C_SET_FILE_PTR 106 +# define BIO_C_GET_FILE_PTR 107 +# define BIO_C_SET_FILENAME 108 +# define BIO_C_SET_SSL 109 +# define BIO_C_GET_SSL 110 +# define BIO_C_SET_MD 111 +# define BIO_C_GET_MD 112 +# define BIO_C_GET_CIPHER_STATUS 113 +# define BIO_C_SET_BUF_MEM 114 +# define BIO_C_GET_BUF_MEM_PTR 115 +# define BIO_C_GET_BUFF_NUM_LINES 116 +# define BIO_C_SET_BUFF_SIZE 117 +# define BIO_C_SET_ACCEPT 118 +# define BIO_C_SSL_MODE 119 +# define BIO_C_GET_MD_CTX 120 +/* # define BIO_C_GET_PROXY_PARAM 121 */ +# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ +# define BIO_C_GET_CONNECT 123 +# define BIO_C_GET_ACCEPT 124 +# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +# define BIO_C_FILE_SEEK 128 +# define BIO_C_GET_CIPHER_CTX 129 +# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input + * value */ +# define BIO_C_SET_BIND_MODE 131 +# define BIO_C_GET_BIND_MODE 132 +# define BIO_C_FILE_TELL 133 +# define BIO_C_GET_SOCKS 134 +# define BIO_C_SET_SOCKS 135 + +# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ +# define BIO_C_GET_WRITE_BUF_SIZE 137 +# define BIO_C_MAKE_BIO_PAIR 138 +# define BIO_C_DESTROY_BIO_PAIR 139 +# define BIO_C_GET_WRITE_GUARANTEE 140 +# define BIO_C_GET_READ_REQUEST 141 +# define BIO_C_SHUTDOWN_WR 142 +# define BIO_C_NREAD0 143 +# define BIO_C_NREAD 144 +# define BIO_C_NWRITE0 145 +# define BIO_C_NWRITE 146 +# define BIO_C_RESET_READ_REQUEST 147 +# define BIO_C_SET_MD_CTX 148 + +# define BIO_C_SET_PREFIX 149 +# define BIO_C_GET_PREFIX 150 +# define BIO_C_SET_SUFFIX 151 +# define BIO_C_GET_SUFFIX 152 + +# define BIO_C_SET_EX_ARG 153 +# define BIO_C_GET_EX_ARG 154 + +# define BIO_C_SET_CONNECT_MODE 155 + +# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) +# define BIO_get_app_data(s) BIO_get_ex_data(s,0) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +# ifndef OPENSSL_NO_SOCK +/* IP families we support, for BIO_s_connect() and BIO_s_accept() */ +/* Note: the underlying operating system may not support some of them */ +# define BIO_FAMILY_IPV4 4 +# define BIO_FAMILY_IPV6 6 +# define BIO_FAMILY_IPANY 256 + +/* BIO_s_connect() */ +# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0, \ + (char *)(name)) +# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1, \ + (char *)(port)) +# define BIO_set_conn_address(b,addr) BIO_ctrl(b,BIO_C_SET_CONNECT,2, \ + (char *)(addr)) +# define BIO_set_conn_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_CONNECT,3,f) +# define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)) +# define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) +# define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) +# define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) + +/* BIO_s_accept() */ +# define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ + (char *)(name)) +# define BIO_set_accept_port(b,port) BIO_ctrl(b,BIO_C_SET_ACCEPT,1, \ + (char *)(port)) +# define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)) +# define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,1)) +# define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,2)) +# define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3)) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(n)?(void *)"a":NULL) +# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,3, \ + (char *)(bio)) +# define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) +# define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) + +/* Aliases kept for backward compatibility */ +# define BIO_BIND_NORMAL 0 +# define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR +# define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR +# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) +# define BIO_get_bind_mode(b) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) + +/* BIO_s_accept() and BIO_s_connect() */ +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) +# endif /* OPENSSL_NO_SOCK */ + +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c)) + +/* BIO_s_file() */ +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp)) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp)) + +/* BIO_s_fd() and BIO_s_file() */ +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)(name)) +# endif +# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)(ssl)) +# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)(sslp)) +# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) +# define BIO_set_ssl_renegotiate_bytes(b,num) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL) +# define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL) +# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL) + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */ + +# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)(pp)) +# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)(bm)) +# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0, \ + (char *)(pp)) +# define BIO_set_mem_eof_return(b,v) \ + BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) + +/* For the BIO_f_buffer() type */ +# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) +# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) +# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) +# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) +# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) + +/* Don't use the next one unless you know what you are doing :-) */ +# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) + +# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) +# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) +# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) +# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) +# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ + cbp) +# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) + +/* For the BIO_f_buffer() type */ +# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) +# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s)) + +/* For BIO_s_bio() */ +# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) +# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) +# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) +# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) +# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) +# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +# define BIO_ctrl_dgram_connect(b,peer) \ + (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)(peer)) +# define BIO_ctrl_set_connected(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer)) +# define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +# define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +# define BIO_dgram_get_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) +# define BIO_dgram_set_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) + +#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(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); +# ifndef OPENSSL_NO_STDIO +BIO *BIO_new_fp(FILE *stream, int close_flag); +# endif +BIO *BIO_new(const BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_set_data(BIO *a, void *ptr); +void *BIO_get_data(BIO *a); +void BIO_set_init(BIO *a, int init); +int BIO_get_init(BIO *a); +void BIO_set_shutdown(BIO *a, int shut); +int BIO_get_shutdown(BIO *a); +void BIO_vfree(BIO *a); +int BIO_up_ref(BIO *a); +int BIO_read(BIO *b, void *data, int dlen); +int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int dlen); +int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp); +void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +void BIO_set_next(BIO *b, BIO *next); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +void BIO_set_retry_reason(BIO *bio, int reason); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, + long argl, long ret); + +const BIO_METHOD *BIO_s_mem(void); +const BIO_METHOD *BIO_s_secmem(void); +BIO *BIO_new_mem_buf(const void *buf, int len); +# ifndef OPENSSL_NO_SOCK +const BIO_METHOD *BIO_s_socket(void); +const BIO_METHOD *BIO_s_connect(void); +const BIO_METHOD *BIO_s_accept(void); +# endif +const BIO_METHOD *BIO_s_fd(void); +const BIO_METHOD *BIO_s_log(void); +const BIO_METHOD *BIO_s_bio(void); +const BIO_METHOD *BIO_s_null(void); +const BIO_METHOD *BIO_f_null(void); +const BIO_METHOD *BIO_f_buffer(void); +const BIO_METHOD *BIO_f_linebuffer(void); +const BIO_METHOD *BIO_f_nbio_test(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_datagram(void); +int BIO_dgram_non_fatal_error(int error); +BIO *BIO_new_dgram(int fd, int close_flag); +# ifndef OPENSSL_NO_SCTP +const BIO_METHOD *BIO_s_datagram_sctp(void); +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + void (*handle_notifications) (BIO *bio, + void *context, + void *buf), + 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); +# endif + +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 char *s, int len); +int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len, int indent); +int BIO_dump(BIO *b, const char *bytes, int len); +int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); +# ifndef OPENSSL_NO_STDIO +int BIO_dump_fp(FILE *fp, const char *s, int len); +int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); +# endif +int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, + int datalen); + +# ifndef OPENSSL_NO_SOCK +BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, + const void *where, size_t wherelen, unsigned short port); +void BIO_ADDR_free(BIO_ADDR *); +void BIO_ADDR_clear(BIO_ADDR *ap); +int BIO_ADDR_family(const BIO_ADDR *ap); +int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); +unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); +char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_path_string(const BIO_ADDR *ap); + +const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); +const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); +void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); + +enum BIO_hostserv_priorities { + BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV +}; +int BIO_parse_hostserv(const char *hostserv, char **host, char **service, + enum BIO_hostserv_priorities hostserv_prio); +enum BIO_lookup_type { + BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER +}; +int BIO_lookup(const char *host, const char *service, + enum BIO_lookup_type lookup_type, + int family, int socktype, BIO_ADDRINFO **res); +int BIO_lookup_ex(const char *host, const char *service, + int lookup_type, int family, int socktype, int protocol, + BIO_ADDRINFO **res); +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_sock_init(void); +# if OPENSSL_API_COMPAT < 0x10100000L +# define BIO_sock_cleanup() while(0) continue +# endif +int BIO_set_tcp_ndelay(int sock, int turn_on); + +DEPRECATEDIN_1_1_0(struct hostent *BIO_gethostbyname(const char *name)) +DEPRECATEDIN_1_1_0(int BIO_get_port(const char *str, unsigned short *port_ptr)) +DEPRECATEDIN_1_1_0(int BIO_get_host_ip(const char *str, unsigned char *ip)) +DEPRECATEDIN_1_1_0(int BIO_get_accept_socket(char *host_port, int mode)) +DEPRECATEDIN_1_1_0(int BIO_accept(int sock, char **ip_port)) + +union BIO_sock_info_u { + BIO_ADDR *addr; +}; +enum BIO_sock_info_type { + BIO_SOCK_INFO_ADDRESS +}; +int BIO_sock_info(int sock, + enum BIO_sock_info_type type, union BIO_sock_info_u *info); + +# define BIO_SOCK_REUSEADDR 0x01 +# define BIO_SOCK_V6_ONLY 0x02 +# define BIO_SOCK_KEEPALIVE 0x04 +# define BIO_SOCK_NONBLOCK 0x08 +# define BIO_SOCK_NODELAY 0x10 + +int BIO_socket(int domain, int socktype, int protocol, int options); +int BIO_connect(int sock, const BIO_ADDR *addr, int options); +int BIO_bind(int sock, const BIO_ADDR *addr, int options); +int BIO_listen(int sock, const BIO_ADDR *addr, int options); +int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); +int BIO_closesocket(int sock); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); +# endif /* OPENSSL_NO_SOCK*/ + +BIO *BIO_new_fd(int fd, int close_flag); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +# define ossl_bio__attr__(x) +# if defined(__GNUC__) && defined(__STDC_VERSION__) \ + && !defined(__APPLE__) + /* + * Because we support the 'z' modifier, which made its appearance in C99, + * we can't use __attribute__ with pre C99 dialects. + */ +# if __STDC_VERSION__ >= 199901L +# undef ossl_bio__attr__ +# define ossl_bio__attr__ __attribute__ +# if __GNUC__*10 + __GNUC_MINOR__ >= 44 +# define ossl_bio__printf__ __gnu_printf__ +# else +# define ossl_bio__printf__ __printf__ +# endif +# endif +# endif +int BIO_printf(BIO *bio, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); +# undef ossl_bio__attr__ +# undef ossl_bio__printf__ + + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); +int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, + size_t *); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write) (BIO *, const char *, int)); +int BIO_meth_set_write_ex(BIO_METHOD *biom, + int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read) (BIO *, char *, int)); +int BIO_meth_set_read_ex(BIO_METHOD *biom, + int (*bread) (BIO *, char *, size_t, size_t *)); +int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts) (BIO *, const char *)); +int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*gets) (BIO *, char *, int)); +long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl) (BIO *, int, long, void *)); +int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); +int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); +long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) + (BIO *, int, BIO_info_cb *); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl) (BIO *, int, + BIO_info_cb *)); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bioerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bioerr.h new file mode 100644 index 000000000..46e2c96ee --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bioerr.h @@ -0,0 +1,124 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIOERR_H +# define HEADER_BIOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BIO_strings(void); + +/* + * BIO function codes. + */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_ADDRINFO_WRAP 148 +# define BIO_F_ADDR_STRINGS 134 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_ACCEPT_EX 137 +# define BIO_F_BIO_ACCEPT_NEW 152 +# define BIO_F_BIO_ADDR_NEW 144 +# define BIO_F_BIO_BIND 147 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CONNECT 138 +# define BIO_F_BIO_CONNECT_NEW 153 +# define BIO_F_BIO_CTRL 103 +# define BIO_F_BIO_GETS 104 +# define BIO_F_BIO_GET_HOST_IP 106 +# define BIO_F_BIO_GET_NEW_INDEX 102 +# define BIO_F_BIO_GET_PORT 107 +# define BIO_F_BIO_LISTEN 139 +# define BIO_F_BIO_LOOKUP 135 +# define BIO_F_BIO_LOOKUP_EX 143 +# define BIO_F_BIO_MAKE_PAIR 121 +# define BIO_F_BIO_METH_NEW 146 +# define BIO_F_BIO_NEW 108 +# define BIO_F_BIO_NEW_DGRAM_SCTP 145 +# define BIO_F_BIO_NEW_FILE 109 +# define BIO_F_BIO_NEW_MEM_BUF 126 +# define BIO_F_BIO_NREAD 123 +# define BIO_F_BIO_NREAD0 124 +# define BIO_F_BIO_NWRITE 125 +# define BIO_F_BIO_NWRITE0 122 +# define BIO_F_BIO_PARSE_HOSTSERV 136 +# define BIO_F_BIO_PUTS 110 +# define BIO_F_BIO_READ 111 +# define BIO_F_BIO_READ_EX 105 +# define BIO_F_BIO_READ_INTERN 120 +# define BIO_F_BIO_SOCKET 140 +# define BIO_F_BIO_SOCKET_NBIO 142 +# define BIO_F_BIO_SOCK_INFO 141 +# define BIO_F_BIO_SOCK_INIT 112 +# define BIO_F_BIO_WRITE 113 +# define BIO_F_BIO_WRITE_EX 119 +# define BIO_F_BIO_WRITE_INTERN 128 +# define BIO_F_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_NEW 149 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_DGRAM_SCTP_WRITE 133 +# define BIO_F_DOAPR_OUTCH 150 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_LINEBUFFER_NEW 151 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_NBIOF_NEW 154 +# define BIO_F_SLG_WRITE 155 +# define BIO_F_SSL_NEW 118 + +/* + * 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_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_GETSOCKNAME_ERROR 132 +# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133 +# define BIO_R_GETTING_SOCKTYPE 134 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_SOCKET 135 +# define BIO_R_IN_USE 123 +# define BIO_R_LENGTH_TOO_LONG 102 +# define BIO_R_LISTEN_V6_ONLY 136 +# define BIO_R_LOOKUP_RETURNED_NOTHING 142 +# define BIO_R_MALFORMED_HOST_OR_SERVICE 130 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143 +# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_KEEPALIVE 137 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNABLE_TO_NODELAY 138 +# define BIO_R_UNABLE_TO_REUSEADDR 139 +# define BIO_R_UNAVAILABLE_IP_FAMILY 145 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNKNOWN_INFO_TYPE 140 +# define BIO_R_UNSUPPORTED_IP_FAMILY 146 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/blowfish.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/blowfish.h new file mode 100644 index 000000000..cd3e460e9 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/blowfish.h @@ -0,0 +1,61 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BLOWFISH_H +# define HEADER_BLOWFISH_H + +# include + +# ifndef OPENSSL_NO_BF +# include +# ifdef __cplusplus +extern "C" { +# endif + +# 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 +# define BF_BLOCK 8 + +typedef struct bf_key_st { + BF_LONG P[BF_ROUNDS + 2]; + BF_LONG S[4 * 256]; +} BF_KEY; + +void BF_set_key(BF_KEY *key, int len, const unsigned char *data); + +void BF_encrypt(BF_LONG *data, const BF_KEY *key); +void BF_decrypt(BF_LONG *data, const BF_KEY *key); + +void BF_ecb_encrypt(const unsigned char *in, unsigned char *out, + const BF_KEY *key, int enc); +void BF_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + const BF_KEY *schedule, unsigned char *ivec, int enc); +void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const BF_KEY *schedule, + unsigned char *ivec, int *num); +const char *BF_options(void); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bn.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bn.h new file mode 100644 index 000000000..d87766049 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bn.h @@ -0,0 +1,539 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# 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 + +# if OPENSSL_API_COMPAT < 0x00908000L +/* 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); + +# 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) + +# 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_COMPAT >= 0x00908000L +# 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(void); +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(BIGNUM *rnd, int bits, int top, int bottom); +int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_num_bits(const BIGNUM *a); +int BN_num_bits_word(BN_ULONG l); +int BN_security_bits(int L, int N); +BIGNUM *BN_new(void); +BIGNUM *BN_secure_new(void); +void BN_clear_free(BIGNUM *a); +BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); +void BN_swap(BIGNUM *a, BIGNUM *b); +BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2bin(const BIGNUM *a, unsigned char *to); +int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_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_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 */ +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 */ +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)) +DEPRECATEDIN_0_9_8(int + BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg)) +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)) + +/* Newer versions */ +int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, + const BIGNUM *rem, BN_GENCB *cb); +int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); +int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, + int do_trial_division, BN_GENCB *cb); + +int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); + +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); +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); + +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); + +DEPRECATEDIN_0_9_8(void BN_set_params(int mul, int high, int low, int mont)) +DEPRECATEDIN_0_9_8(int BN_get_params(int which)) /* 0, mul, 1 high, 2 low, 3 + * mont */ + +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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bnerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bnerr.h new file mode 100644 index 000000000..5c83777f9 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/bnerr.h @@ -0,0 +1,101 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BNERR_H +# define HEADER_BNERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BN_strings(void); + +/* + * BN function codes. + */ +# define BN_F_BNRAND 127 +# define BN_F_BNRAND_RANGE 138 +# define BN_F_BN_BLINDING_CONVERT_EX 100 +# define BN_F_BN_BLINDING_CREATE_PARAM 128 +# define BN_F_BN_BLINDING_INVERT_EX 101 +# define BN_F_BN_BLINDING_NEW 102 +# define BN_F_BN_BLINDING_UPDATE 103 +# define BN_F_BN_BN2DEC 104 +# define BN_F_BN_BN2HEX 105 +# define BN_F_BN_COMPUTE_WNAF 142 +# define BN_F_BN_CTX_GET 116 +# define BN_F_BN_CTX_NEW 106 +# define BN_F_BN_CTX_START 129 +# define BN_F_BN_DIV 107 +# define BN_F_BN_DIV_RECP 130 +# define BN_F_BN_EXP 123 +# define BN_F_BN_EXPAND_INTERNAL 120 +# define BN_F_BN_GENCB_NEW 143 +# define BN_F_BN_GENERATE_DSA_NONCE 140 +# define BN_F_BN_GENERATE_PRIME_EX 141 +# define BN_F_BN_GF2M_MOD 131 +# define BN_F_BN_GF2M_MOD_EXP 132 +# define BN_F_BN_GF2M_MOD_MUL 133 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 +# define BN_F_BN_GF2M_MOD_SQR 136 +# define BN_F_BN_GF2M_MOD_SQRT 137 +# define BN_F_BN_LSHIFT 145 +# define BN_F_BN_MOD_EXP2_MONT 118 +# define BN_F_BN_MOD_EXP_MONT 109 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 +# define BN_F_BN_MOD_EXP_MONT_WORD 117 +# define BN_F_BN_MOD_EXP_RECP 125 +# define BN_F_BN_MOD_EXP_SIMPLE 126 +# define BN_F_BN_MOD_INVERSE 110 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 +# define BN_F_BN_MOD_LSHIFT_QUICK 119 +# define BN_F_BN_MOD_SQRT 121 +# define BN_F_BN_MONT_CTX_NEW 149 +# define BN_F_BN_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_POOL_GET 147 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_RECP_CTX_NEW 150 +# define BN_F_BN_RSHIFT 146 +# define BN_F_BN_SET_WORDS 144 +# define BN_F_BN_STACK_PUSH 148 +# define BN_F_BN_USUB 115 +# define BN_F_OSSL_BN_RSA_DO_UNBLIND 151 + +/* + * 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_SOLUTION 116 +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/buffer.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/buffer.h new file mode 100644 index 000000000..d2765766b --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/buffer.h @@ -0,0 +1,58 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFFER_H +# define HEADER_BUFFER_H + +# include +# ifndef HEADER_CRYPTO_H +# include +# endif +# include + + +#ifdef __cplusplus +extern "C" { +#endif + +# include +# include + +/* + * These names are outdated as of OpenSSL 1.1; a future release + * will move them to be deprecated. + */ +# 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) + +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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/buffererr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/buffererr.h new file mode 100644 index 000000000..04f6ff7a8 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/buffererr.h @@ -0,0 +1,34 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFERR_H +# define HEADER_BUFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BUF_strings(void); + +/* + * BUF function codes. + */ +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 + +/* + * BUF reason codes. + */ + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/camellia.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/camellia.h new file mode 100644 index 000000000..151f3c134 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/camellia.h @@ -0,0 +1,83 @@ +/* + * Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAMELLIA_H +# define HEADER_CAMELLIA_H + +# include + +# ifndef OPENSSL_NO_CAMELLIA +# include +#ifdef __cplusplus +extern "C" { +#endif + +# 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_BLOCK_SIZE 16 +# 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; + +int Camellia_set_key(const unsigned char *userKey, const int bits, + CAMELLIA_KEY *key); + +void Camellia_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); +void Camellia_decrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key); + +void Camellia_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAMELLIA_KEY *key, const int enc); +void Camellia_cbc_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, const int enc); +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); +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); +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); +void Camellia_ofb128_encrypt(const unsigned char *in, unsigned char *out, + size_t length, const CAMELLIA_KEY *key, + unsigned char *ivec, int *num); +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); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cast.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cast.h new file mode 100644 index 000000000..2cc89ae01 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cast.h @@ -0,0 +1,53 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CAST_H +# define HEADER_CAST_H + +# include + +# ifndef OPENSSL_NO_CAST +# ifdef __cplusplus +extern "C" { +# endif + +# define CAST_ENCRYPT 1 +# define CAST_DECRYPT 0 + +# define CAST_LONG unsigned int + +# define CAST_BLOCK 8 +# define CAST_KEY_LENGTH 16 + +typedef struct cast_key_st { + CAST_LONG data[32]; + int short_key; /* Use reduced rounds for short key */ +} CAST_KEY; + +void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); +void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, + const CAST_KEY *key, int enc); +void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key); +void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *ks, unsigned char *iv, + int enc); +void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num, int enc); +void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, const CAST_KEY *schedule, + unsigned char *ivec, int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cmac.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cmac.h new file mode 100644 index 000000000..3535a9abf --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cmac.h @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMAC_H +# define HEADER_CMAC_H + +# ifndef OPENSSL_NO_CMAC + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +/* Opaque */ +typedef struct CMAC_CTX_st CMAC_CTX; + +CMAC_CTX *CMAC_CTX_new(void); +void CMAC_CTX_cleanup(CMAC_CTX *ctx); +void CMAC_CTX_free(CMAC_CTX *ctx); +EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx); +int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in); + +int CMAC_Init(CMAC_CTX *ctx, const void *key, size_t keylen, + const EVP_CIPHER *cipher, ENGINE *impl); +int CMAC_Update(CMAC_CTX *ctx, const void *data, size_t dlen); +int CMAC_Final(CMAC_CTX *ctx, unsigned char *out, size_t *poutlen); +int CMAC_resume(CMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cms.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cms.h new file mode 100644 index 000000000..c7627968c --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cms.h @@ -0,0 +1,339 @@ +/* + * Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMS_H +# define HEADER_CMS_H + +# include + +# ifndef OPENSSL_NO_CMS +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct CMS_ContentInfo_st CMS_ContentInfo; +typedef struct CMS_SignerInfo_st CMS_SignerInfo; +typedef struct CMS_CertificateChoices CMS_CertificateChoices; +typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice; +typedef struct CMS_RecipientInfo_st CMS_RecipientInfo; +typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest; +typedef struct CMS_Receipt_st CMS_Receipt; +typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey; +typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute; + +DEFINE_STACK_OF(CMS_SignerInfo) +DEFINE_STACK_OF(CMS_RecipientEncryptedKey) +DEFINE_STACK_OF(CMS_RecipientInfo) +DEFINE_STACK_OF(CMS_RevocationInfoChoice) +DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) +DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) +DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) + +# define CMS_SIGNERINFO_ISSUER_SERIAL 0 +# define CMS_SIGNERINFO_KEYIDENTIFIER 1 + +# define CMS_RECIPINFO_NONE -1 +# define CMS_RECIPINFO_TRANS 0 +# define CMS_RECIPINFO_AGREE 1 +# define CMS_RECIPINFO_KEK 2 +# define CMS_RECIPINFO_PASS 3 +# define CMS_RECIPINFO_OTHER 4 + +/* S/MIME related flags */ + +# define CMS_TEXT 0x1 +# define CMS_NOCERTS 0x2 +# define CMS_NO_CONTENT_VERIFY 0x4 +# define CMS_NO_ATTR_VERIFY 0x8 +# define CMS_NOSIGS \ + (CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY) +# define CMS_NOINTERN 0x10 +# define CMS_NO_SIGNER_CERT_VERIFY 0x20 +# define CMS_NOVERIFY 0x20 +# define CMS_DETACHED 0x40 +# define CMS_BINARY 0x80 +# define CMS_NOATTR 0x100 +# define CMS_NOSMIMECAP 0x200 +# define CMS_NOOLDMIMETYPE 0x400 +# define CMS_CRLFEOL 0x800 +# define CMS_STREAM 0x1000 +# define CMS_NOCRL 0x2000 +# define CMS_PARTIAL 0x4000 +# define CMS_REUSE_DIGEST 0x8000 +# define CMS_USE_KEYID 0x10000 +# define CMS_DEBUG_DECRYPT 0x20000 +# define CMS_KEY_PARAM 0x40000 +# define CMS_ASCIICRLF 0x80000 + +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 HEADER_PEM_H +DECLARE_PEM_rw_const(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); +int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags); + +int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont, + unsigned int flags); + +CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey, + STACK_OF(X509) *certs, BIO *data, + unsigned int flags); + +CMS_ContentInfo *CMS_sign_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); + +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); + +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); + +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); + +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_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_EnvelopedData_create(const EVP_CIPHER *cipher); +CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, + X509 *recip, 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(CMS_ContentInfo *cms, CMS_RecipientInfo *ri); + +int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out, + unsigned int flags); +CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags); + +int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid); +const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms); + +CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms); +int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert); +int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert); +STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms); + +CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms); +int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl); +int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl); +STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms); + +int CMS_SignedData_init(CMS_ContentInfo *cms); +CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms, + X509 *signer, EVP_PKEY *pk, const EVP_MD *md, + unsigned int flags); +EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si); +EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si); +STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms); + +void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer); +int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si, + ASN1_OCTET_STRING **keyid, + X509_NAME **issuer, ASN1_INTEGER **sno); +int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert); +int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs, + unsigned int flags); +void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk, + X509 **signer, X509_ALGOR **pdig, + X509_ALGOR **psig); +ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si); +int CMS_SignerInfo_sign(CMS_SignerInfo *si); +int CMS_SignerInfo_verify(CMS_SignerInfo *si); +int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain); + +int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs); +int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs, + int algnid, int keysize); +int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap); + +int CMS_signed_get_attr_count(const CMS_SignerInfo *si); +int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid, + int lastpos); +int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc); +X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc); +int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr); +int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, + const ASN1_OBJECT *obj, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, + int nid, int type, + const void *bytes, int len); +int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, + const char *attrname, int type, + const void *bytes, int len); +void *CMS_signed_get0_data_by_OBJ(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); +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); +EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri); +int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms, + CMS_RecipientInfo *ri, + CMS_RecipientEncryptedKey *rek); + +int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg, + ASN1_OCTET_STRING *ukm, int keylen); + +/* Backward compatibility for spelling errors. */ +# define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM +# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \ + CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cmserr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cmserr.h new file mode 100644 index 000000000..d589f592c --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cmserr.h @@ -0,0 +1,203 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CMSERR_H +# define HEADER_CMSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CMS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CMS_strings(void); + +/* + * CMS function codes. + */ +# define CMS_F_CHECK_CONTENT 99 +# define CMS_F_CMS_ADD0_CERT 164 +# define CMS_F_CMS_ADD0_RECIPIENT_KEY 100 +# define CMS_F_CMS_ADD0_RECIPIENT_PASSWORD 165 +# define CMS_F_CMS_ADD1_RECEIPTREQUEST 158 +# define CMS_F_CMS_ADD1_RECIPIENT_CERT 101 +# define CMS_F_CMS_ADD1_SIGNER 102 +# define CMS_F_CMS_ADD1_SIGNINGTIME 103 +# define CMS_F_CMS_COMPRESS 104 +# define CMS_F_CMS_COMPRESSEDDATA_CREATE 105 +# define CMS_F_CMS_COMPRESSEDDATA_INIT_BIO 106 +# define CMS_F_CMS_COPY_CONTENT 107 +# define CMS_F_CMS_COPY_MESSAGEDIGEST 108 +# define CMS_F_CMS_DATA 109 +# define CMS_F_CMS_DATAFINAL 110 +# define CMS_F_CMS_DATAINIT 111 +# define CMS_F_CMS_DECRYPT 112 +# define CMS_F_CMS_DECRYPT_SET1_KEY 113 +# define CMS_F_CMS_DECRYPT_SET1_PASSWORD 166 +# define CMS_F_CMS_DECRYPT_SET1_PKEY 114 +# define CMS_F_CMS_DIGESTALGORITHM_FIND_CTX 115 +# define CMS_F_CMS_DIGESTALGORITHM_INIT_BIO 116 +# define CMS_F_CMS_DIGESTEDDATA_DO_FINAL 117 +# define CMS_F_CMS_DIGEST_VERIFY 118 +# define CMS_F_CMS_ENCODE_RECEIPT 161 +# define CMS_F_CMS_ENCRYPT 119 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT 179 +# define CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO 120 +# define CMS_F_CMS_ENCRYPTEDDATA_DECRYPT 121 +# define CMS_F_CMS_ENCRYPTEDDATA_ENCRYPT 122 +# define CMS_F_CMS_ENCRYPTEDDATA_SET1_KEY 123 +# define CMS_F_CMS_ENVELOPEDDATA_CREATE 124 +# define CMS_F_CMS_ENVELOPEDDATA_INIT_BIO 125 +# define CMS_F_CMS_ENVELOPED_DATA_INIT 126 +# define CMS_F_CMS_ENV_ASN1_CTRL 171 +# define CMS_F_CMS_FINAL 127 +# define CMS_F_CMS_GET0_CERTIFICATE_CHOICES 128 +# define CMS_F_CMS_GET0_CONTENT 129 +# define CMS_F_CMS_GET0_ECONTENT_TYPE 130 +# define CMS_F_CMS_GET0_ENVELOPED 131 +# define CMS_F_CMS_GET0_REVOCATION_CHOICES 132 +# define CMS_F_CMS_GET0_SIGNED 133 +# define CMS_F_CMS_MSGSIGDIGEST_ADD1 162 +# define CMS_F_CMS_RECEIPTREQUEST_CREATE0 159 +# define CMS_F_CMS_RECEIPT_VERIFY 160 +# define CMS_F_CMS_RECIPIENTINFO_DECRYPT 134 +# define CMS_F_CMS_RECIPIENTINFO_ENCRYPT 169 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ENCRYPT 178 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ALG 175 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_ORIG_ID 173 +# define CMS_F_CMS_RECIPIENTINFO_KARI_GET0_REKS 172 +# define CMS_F_CMS_RECIPIENTINFO_KARI_ORIG_ID_CMP 174 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT 135 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT 136 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID 137 +# define CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP 138 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP 139 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT 140 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT 141 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS 142 +# define CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID 143 +# define CMS_F_CMS_RECIPIENTINFO_PWRI_CRYPT 167 +# define CMS_F_CMS_RECIPIENTINFO_SET0_KEY 144 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PASSWORD 168 +# define CMS_F_CMS_RECIPIENTINFO_SET0_PKEY 145 +# define CMS_F_CMS_SD_ASN1_CTRL 170 +# define CMS_F_CMS_SET1_IAS 176 +# define CMS_F_CMS_SET1_KEYID 177 +# define CMS_F_CMS_SET1_SIGNERIDENTIFIER 146 +# define CMS_F_CMS_SET_DETACHED 147 +# define CMS_F_CMS_SIGN 148 +# define CMS_F_CMS_SIGNED_DATA_INIT 149 +# define CMS_F_CMS_SIGNERINFO_CONTENT_SIGN 150 +# define CMS_F_CMS_SIGNERINFO_SIGN 151 +# define CMS_F_CMS_SIGNERINFO_VERIFY 152 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CERT 153 +# define CMS_F_CMS_SIGNERINFO_VERIFY_CONTENT 154 +# define CMS_F_CMS_SIGN_RECEIPT 163 +# define CMS_F_CMS_SI_CHECK_ATTRIBUTES 183 +# define CMS_F_CMS_STREAM 155 +# define CMS_F_CMS_UNCOMPRESS 156 +# define CMS_F_CMS_VERIFY 157 +# define CMS_F_KEK_UNWRAP_KEY 180 + +/* + * 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_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_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_INVALID_ENCRYPTED_KEY_LENGTH 117 +# define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER 176 +# define CMS_R_INVALID_KEY_LENGTH 118 +# define CMS_R_MD_BIO_INIT_ERROR 119 +# define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH 120 +# define CMS_R_MESSAGEDIGEST_WRONG_LENGTH 121 +# define CMS_R_MSGSIGDIGEST_ERROR 172 +# define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE 162 +# define CMS_R_MSGSIGDIGEST_WRONG_LENGTH 163 +# define CMS_R_NEED_ONE_SIGNER 164 +# define CMS_R_NOT_A_SIGNED_RECEIPT 165 +# define CMS_R_NOT_ENCRYPTED_DATA 122 +# define CMS_R_NOT_KEK 123 +# define CMS_R_NOT_KEY_AGREEMENT 181 +# define CMS_R_NOT_KEY_TRANSPORT 124 +# define CMS_R_NOT_PWRI 177 +# define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 125 +# define CMS_R_NO_CIPHER 126 +# define CMS_R_NO_CONTENT 127 +# define CMS_R_NO_CONTENT_TYPE 173 +# define CMS_R_NO_DEFAULT_DIGEST 128 +# define CMS_R_NO_DIGEST_SET 129 +# define CMS_R_NO_KEY 130 +# define CMS_R_NO_KEY_OR_CERT 174 +# define CMS_R_NO_MATCHING_DIGEST 131 +# define CMS_R_NO_MATCHING_RECIPIENT 132 +# define CMS_R_NO_MATCHING_SIGNATURE 166 +# define CMS_R_NO_MSGSIGDIGEST 167 +# define CMS_R_NO_PASSWORD 178 +# define CMS_R_NO_PRIVATE_KEY 133 +# define CMS_R_NO_PUBLIC_KEY 134 +# define CMS_R_NO_RECEIPT_REQUEST 168 +# define CMS_R_NO_SIGNERS 135 +# define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136 +# define CMS_R_RECEIPT_DECODE_ERROR 169 +# define CMS_R_RECIPIENT_ERROR 137 +# define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 138 +# define CMS_R_SIGNFINAL_ERROR 139 +# define CMS_R_SMIME_TEXT_ERROR 140 +# define CMS_R_STORE_INIT_ERROR 141 +# define CMS_R_TYPE_NOT_COMPRESSED_DATA 142 +# define CMS_R_TYPE_NOT_DATA 143 +# define CMS_R_TYPE_NOT_DIGESTED_DATA 144 +# define CMS_R_TYPE_NOT_ENCRYPTED_DATA 145 +# define CMS_R_TYPE_NOT_ENVELOPED_DATA 146 +# define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 147 +# define CMS_R_UNKNOWN_CIPHER 148 +# define CMS_R_UNKNOWN_DIGEST_ALGORITHM 149 +# define CMS_R_UNKNOWN_ID 150 +# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151 +# define CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM 194 +# define CMS_R_UNSUPPORTED_CONTENT_TYPE 152 +# define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153 +# define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179 +# define CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE 155 +# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154 +# define CMS_R_UNSUPPORTED_TYPE 156 +# define CMS_R_UNWRAP_ERROR 157 +# define CMS_R_UNWRAP_FAILURE 180 +# define CMS_R_VERIFICATION_FAILURE 158 +# define CMS_R_WRAP_ERROR 159 + +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/comp.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/comp.h new file mode 100644 index 000000000..d814d3cf2 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/comp.h @@ -0,0 +1,53 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +# ifndef OPENSSL_NO_COMP +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +#define COMP_zlib_cleanup() while(0) continue +#endif + +# ifdef HEADER_BIO_H +# ifdef ZLIB +const BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/comperr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/comperr.h new file mode 100644 index 000000000..90231e9aa --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/comperr.h @@ -0,0 +1,44 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMPERR_H +# define HEADER_COMPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_COMP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_COMP_strings(void); + +/* + * COMP function codes. + */ +# define COMP_F_BIO_ZLIB_FLUSH 99 +# define COMP_F_BIO_ZLIB_NEW 100 +# define COMP_F_BIO_ZLIB_READ 101 +# define COMP_F_BIO_ZLIB_WRITE 102 +# define COMP_F_COMP_CTX_NEW 103 + +/* + * COMP reason codes. + */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conf.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conf.h new file mode 100644 index 000000000..7336cd2f1 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conf.h @@ -0,0 +1,168 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONF_H +# define HEADER_CONF_H + +# include +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + char *section; + char *name; + char *value; +} CONF_VALUE; + +DEFINE_STACK_OF(CONF_VALUE) +DEFINE_LHASH_OF(CONF_VALUE); + +struct conf_st; +struct conf_method_st; +typedef struct conf_method_st CONF_METHOD; + +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); +}; + +/* Module definitions */ + +typedef struct conf_imodule_st CONF_IMODULE; +typedef struct conf_module_st CONF_MODULE; + +DEFINE_STACK_OF(CONF_MODULE) +DEFINE_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); + +DEPRECATEDIN_1_1_0(void OPENSSL_config(const char *config_name)) + +#if OPENSSL_API_COMPAT < 0x10100000L +# 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 + */ + +struct conf_st { + CONF_METHOD *meth; + void *meth_data; + LHASH_OF(CONF_VALUE) *data; +}; + +CONF *NCONF_new(CONF_METHOD *meth); +CONF_METHOD *NCONF_default(void); +CONF_METHOD *NCONF_WIN32(void); +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(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(const char *filename, const char *appname, + unsigned long flags); +void CONF_modules_unload(int all); +void CONF_modules_finish(void); +#if OPENSSL_API_COMPAT < 0x10100000L +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conf_api.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conf_api.h new file mode 100644 index 000000000..a0275ad79 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conf_api.h @@ -0,0 +1,40 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONF_API_H +# define HEADER_CONF_API_H + +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conferr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conferr.h new file mode 100644 index 000000000..32b922918 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/conferr.h @@ -0,0 +1,76 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CONFERR_H +# define HEADER_CONFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CONF_strings(void); + +/* + * CONF function codes. + */ +# define CONF_F_CONF_DUMP_FP 104 +# define CONF_F_CONF_LOAD 100 +# define CONF_F_CONF_LOAD_FP 103 +# define CONF_F_CONF_PARSE_LIST 119 +# define CONF_F_DEF_LOAD 120 +# define CONF_F_DEF_LOAD_BIO 121 +# define CONF_F_GET_NEXT_FILE 107 +# define CONF_F_MODULE_ADD 122 +# define CONF_F_MODULE_INIT 115 +# define CONF_F_MODULE_LOAD_DSO 117 +# define CONF_F_MODULE_RUN 118 +# define CONF_F_NCONF_DUMP_BIO 105 +# define CONF_F_NCONF_DUMP_FP 106 +# define CONF_F_NCONF_GET_NUMBER_E 112 +# define CONF_F_NCONF_GET_SECTION 108 +# define CONF_F_NCONF_GET_STRING 109 +# define CONF_F_NCONF_LOAD 113 +# define CONF_F_NCONF_LOAD_BIO 110 +# define CONF_F_NCONF_LOAD_FP 114 +# define CONF_F_NCONF_NEW 111 +# define CONF_F_PROCESS_INCLUDE 116 +# define CONF_F_SSL_MODULE_INIT 123 +# define CONF_F_STR_COPY 101 + +/* + * CONF reason codes. + */ +# define CONF_R_ERROR_LOADING_DSO 110 +# define CONF_R_LIST_CANNOT_BE_NULL 115 +# 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_RECURSIVE_DIRECTORY_INCLUDE 111 +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/crypto.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/crypto.h new file mode 100644 index 000000000..7d0b52623 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/crypto.h @@ -0,0 +1,445 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTO_H +# define HEADER_CRYPTO_H + +# include +# include + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif + +# 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 + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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_API_COMPAT */ + +typedef void CRYPTO_RWLOCK; + +CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); +int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); +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); + +/* + * 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 */ + +struct crypto_ex_data_st { + STACK_OF(void) *sk; +}; +DEFINE_STACK_OF(void) + +/* + * Per class, we have a STACK of function pointers. + */ +# define CRYPTO_EX_INDEX_SSL 0 +# define CRYPTO_EX_INDEX_SSL_CTX 1 +# define CRYPTO_EX_INDEX_SSL_SESSION 2 +# define CRYPTO_EX_INDEX_X509 3 +# define CRYPTO_EX_INDEX_X509_STORE 4 +# define CRYPTO_EX_INDEX_X509_STORE_CTX 5 +# define CRYPTO_EX_INDEX_DH 6 +# define CRYPTO_EX_INDEX_DSA 7 +# define CRYPTO_EX_INDEX_EC_KEY 8 +# define CRYPTO_EX_INDEX_RSA 9 +# define CRYPTO_EX_INDEX_ENGINE 10 +# define CRYPTO_EX_INDEX_UI 11 +# define CRYPTO_EX_INDEX_BIO 12 +# define CRYPTO_EX_INDEX_APP 13 +# define CRYPTO_EX_INDEX_UI_METHOD 14 +# define CRYPTO_EX_INDEX_DRBG 15 +# define CRYPTO_EX_INDEX__COUNT 16 + +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() while(0) continue + +int CRYPTO_mem_ctrl(int mode); + +# define OPENSSL_malloc(num) \ + CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_zalloc(num) \ + CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_realloc(addr, num) \ + CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_realloc(addr, old_num, num) \ + CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_free(addr, num) \ + CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_free(addr) \ + CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_memdup(str, s) \ + CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strdup(str) \ + CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strndup(str, n) \ + CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_malloc(num) \ + CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_zalloc(num) \ + CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_free(addr) \ + CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_clear_free(addr, num) \ + CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_actual_size(ptr) \ + CRYPTO_secure_actual_size(ptr) + +size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); +size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); +size_t OPENSSL_strnlen(const char *str, size_t maxlen); +char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len); +unsigned char *OPENSSL_hexstr2buf(const char *str, long *len); +int OPENSSL_hexchar2int(unsigned char c); + +# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) + +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 + +int OPENSSL_issetugid(void); + +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); + +/* + * 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); + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * 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) + +# if OPENSSL_API_COMPAT < 0x10000000L +# define CRYPTO_set_id_callback(func) +# define CRYPTO_get_id_callback() (NULL) +# define CRYPTO_thread_id() (0UL) +# endif /* OPENSSL_API_COMPAT < 0x10000000L */ + +# 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_API_COMPAT < 0x10100000L */ + +int CRYPTO_set_mem_functions( + void *(*m) (size_t, const char *, int), + void *(*r) (void *, size_t, const char *, int), + void (*f) (void *, const char *, int)); +int CRYPTO_set_mem_debug(int flag); +void CRYPTO_get_mem_functions( + void *(**m) (size_t, const char *, int), + void *(**r) (void *, size_t, const char *, int), + void (**f) (void *, const char *, int)); + +void *CRYPTO_malloc(size_t num, const char *file, int line); +void *CRYPTO_zalloc(size_t num, 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); + +int CRYPTO_secure_malloc_init(size_t sz, int minsize); +int CRYPTO_secure_malloc_done(void); +void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +void CRYPTO_secure_free(void *ptr, const char *file, int line); +void CRYPTO_secure_clear_free(void *ptr, size_t num, + const char *file, int line); +int CRYPTO_secure_allocated(const void *ptr); +int CRYPTO_secure_malloc_initialized(void); +size_t CRYPTO_secure_actual_size(void *ptr); +size_t CRYPTO_secure_used(void); + +void OPENSSL_cleanse(void *ptr, size_t len); + +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_mem_debug_push(info) \ + CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_mem_debug_pop() \ + CRYPTO_mem_debug_pop() +int CRYPTO_mem_debug_push(const char *info, const char *file, int line); +int CRYPTO_mem_debug_pop(void); +void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); + +/*- + * Debugging functions (enabled by CRYPTO_set_mem_debug(1)) + * The flag argument has the following significance: + * 0: called before the actual memory allocation has taken place + * 1: called after the actual memory allocation has taken place + */ +void CRYPTO_mem_debug_malloc(void *addr, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_free(void *addr, int flag, + const char *file, int line); + +int CRYPTO_mem_leaks_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_STDIO +int CRYPTO_mem_leaks_fp(FILE *); +# endif +int CRYPTO_mem_leaks(BIO *bio); +# endif + +/* die if we have to */ +ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); +# if OPENSSL_API_COMPAT < 0x10100000L +# 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); + +int FIPS_mode(void); +int FIPS_mode_set(int r); + +void OPENSSL_init(void); +# ifdef OPENSSL_SYS_UNIX +void OPENSSL_fork_prepare(void); +void OPENSSL_fork_parent(void); +void OPENSSL_fork_child(void); +# 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 +/* OPENSSL_INIT_ZLIB 0x00010000L */ +# define OPENSSL_INIT_ATFORK 0x00020000L +/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ +# define OPENSSL_INIT_NO_ATEXIT 0x00080000L +/* OPENSSL_INIT flag range 0xfff00000 reserved for OPENSSL_init_ssl() */ +/* 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); + +/* 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 +# include +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); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cryptoerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cryptoerr.h new file mode 100644 index 000000000..3db5a4ee9 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cryptoerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTOERR_H +# define HEADER_CRYPTOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CRYPTO_strings(void); + +/* + * CRYPTO function codes. + */ +# define CRYPTO_F_CMAC_CTX_NEW 120 +# define CRYPTO_F_CRYPTO_DUP_EX_DATA 110 +# define CRYPTO_F_CRYPTO_FREE_EX_DATA 111 +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 +# define CRYPTO_F_CRYPTO_MEMDUP 115 +# define CRYPTO_F_CRYPTO_NEW_EX_DATA 112 +# define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 121 +# define CRYPTO_F_CRYPTO_OCB128_INIT 122 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_GET_AND_LOCK 113 +# define CRYPTO_F_OPENSSL_ATEXIT 114 +# define CRYPTO_F_OPENSSL_BUF2HEXSTR 117 +# define CRYPTO_F_OPENSSL_FOPEN 119 +# define CRYPTO_F_OPENSSL_HEXSTR2BUF 118 +# define CRYPTO_F_OPENSSL_INIT_CRYPTO 116 +# define CRYPTO_F_OPENSSL_LH_NEW 126 +# define CRYPTO_F_OPENSSL_SK_DEEP_COPY 127 +# define CRYPTO_F_OPENSSL_SK_DUP 128 +# define CRYPTO_F_PKEY_HMAC_INIT 123 +# define CRYPTO_F_PKEY_POLY1305_INIT 124 +# define CRYPTO_F_PKEY_SIPHASH_INIT 125 +# define CRYPTO_F_SK_RESERVE 129 + +/* + * CRYPTO reason codes. + */ +# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 +# define CRYPTO_R_ILLEGAL_HEX_DIGIT 102 +# define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ct.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ct.h new file mode 100644 index 000000000..ebdba34d6 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ct.h @@ -0,0 +1,474 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CT_H +# define HEADER_CT_H + +# 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 + +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; + +DEFINE_STACK_OF(SCT) +DEFINE_STACK_OF(CTLOG) + +/****************************************** + * CT policy evaluation context functions * + ******************************************/ + +/* + * Creates a new, empty policy evaluation context. + * 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(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 serialisation * + *********************************/ + +/* + * 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|. + * 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(EVP_PKEY *public_key, const char *name); + +/* + * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER + * in |pkey_base64|. 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(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. + * 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cterr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cterr.h new file mode 100644 index 000000000..feb7bc566 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/cterr.h @@ -0,0 +1,80 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CTERR_H +# define HEADER_CTERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CT + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CT_strings(void); + +/* + * CT function codes. + */ +# define CT_F_CTLOG_NEW 117 +# define CT_F_CTLOG_NEW_FROM_BASE64 118 +# define CT_F_CTLOG_NEW_FROM_CONF 119 +# define CT_F_CTLOG_STORE_LOAD_CTX_NEW 122 +# define CT_F_CTLOG_STORE_LOAD_FILE 123 +# define CT_F_CTLOG_STORE_LOAD_LOG 130 +# define CT_F_CTLOG_STORE_NEW 131 +# define CT_F_CT_BASE64_DECODE 124 +# define CT_F_CT_POLICY_EVAL_CTX_NEW 133 +# define CT_F_CT_V1_LOG_ID_FROM_PKEY 125 +# define CT_F_I2O_SCT 107 +# define CT_F_I2O_SCT_LIST 108 +# define CT_F_I2O_SCT_SIGNATURE 109 +# define CT_F_O2I_SCT 110 +# define CT_F_O2I_SCT_LIST 111 +# define CT_F_O2I_SCT_SIGNATURE 112 +# define CT_F_SCT_CTX_NEW 126 +# define CT_F_SCT_CTX_VERIFY 128 +# define CT_F_SCT_NEW 100 +# define CT_F_SCT_NEW_FROM_BASE64 127 +# define CT_F_SCT_SET0_LOG_ID 101 +# define CT_F_SCT_SET1_EXTENSIONS 114 +# define CT_F_SCT_SET1_LOG_ID 115 +# define CT_F_SCT_SET1_SIGNATURE 116 +# define CT_F_SCT_SET_LOG_ENTRY_TYPE 102 +# define CT_F_SCT_SET_SIGNATURE_NID 103 +# define CT_F_SCT_SET_VERSION 104 + +/* + * 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/des.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/des.h new file mode 100644 index 000000000..be4abbdfd --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/des.h @@ -0,0 +1,174 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DES_H +# define HEADER_DES_H + +# include + +# ifndef OPENSSL_NO_DES +# ifdef __cplusplus +extern "C" { +# endif +# include + +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)) + +OPENSSL_DECLARE_GLOBAL(int, DES_check_key); /* defaults to false */ +# define DES_check_key OPENSSL_GLOBAL_REF(DES_check_key) + +const char *DES_options(void); +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); +DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output, + long length, DES_key_schedule *schedule, + const_DES_cblock *ivec); +/* DES_cbc_encrypt does not update the IV! Use DES_ncbc_encrypt instead. */ +void DES_cbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +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); +void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output, + DES_key_schedule *ks, int enc); + +/* + * 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. + */ +void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc); + +/* + * 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 :-). + */ +void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc); + +void DES_encrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1, + DES_key_schedule *ks2, DES_key_schedule *ks3); +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); +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); +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); +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); +char *DES_fcrypt(const char *buf, const char *salt, char *ret); +char *DES_crypt(const char *buf, const char *salt); +void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits, + long length, DES_key_schedule *schedule, + DES_cblock *ivec); +void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int enc); +DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[], + long length, int out_count, DES_cblock *seed); +int DES_random_key(DES_cblock *ret); +void DES_set_odd_parity(DES_cblock *key); +int DES_check_key_parity(const_DES_cblock *key); +int DES_is_weak_key(const_DES_cblock *key); +/* + * DES_set_key (= set_key = DES_key_sched = key_sched) calls + * DES_set_key_checked if global variable DES_check_key is set, + * DES_set_key_unchecked otherwise. + */ +int DES_set_key(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_key_sched(const_DES_cblock *key, DES_key_schedule *schedule); +int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule); +void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule); +void DES_string_to_key(const char *str, DES_cblock *key); +void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2); +void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num, int enc); +void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, DES_key_schedule *schedule, + DES_cblock *ivec, int *num); + +# define DES_fixup_key_parity DES_set_odd_parity + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dh.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dh.h new file mode 100644 index 000000000..6c6ff3636 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dh.h @@ -0,0 +1,343 @@ +/* + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DH_H +# define HEADER_DH_H + +# include + +# ifndef OPENSSL_NO_DH +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# 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 + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * 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 + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +DECLARE_ASN1_ITEM(DHparams) + +# define DH_GENERATOR_2 2 +/* #define DH_GENERATOR_3 3 */ +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +# define DH_CHECK_P_NOT_PRIME 0x01 +# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 +# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 +# define DH_NOT_SUITABLE_GENERATOR 0x08 +# define DH_CHECK_Q_NOT_PRIME 0x10 +# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_J_VALUE 0x40 + +/* DH_check_pub_key error codes */ +# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 +# define DH_CHECK_PUBKEY_INVALID 0x04 + +/* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for + * backward compatibility: + */ +# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + +# define d2i_DHparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHparams,(fp), (unsigned char *)(x)) +# define d2i_DHparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHparams, bp, x) +# define i2d_DHparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) + +# define d2i_DHxparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHxparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHxparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHxparams,(fp), (unsigned char *)(x)) +# define d2i_DHxparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x) +# define i2d_DHxparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH, i2d_DHxparams, bp, x) + +DH *DHparams_dup(DH *); + +const DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(const DH_METHOD *meth); +const DH_METHOD *DH_get_default_method(void); +int DH_set_method(DH *dh, const DH_METHOD *meth); +DH *DH_new_method(ENGINE *engine); + +DH *DH_new(void); +void DH_free(DH *dh); +int DH_up_ref(DH *dh); +int DH_bits(const DH *dh); +int DH_size(const DH *dh); +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) +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, + BN_GENCB *cb); + +int DH_check_params_ex(const DH *dh); +int DH_check_ex(const DH *dh); +int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key); +int DH_check_params(const DH *dh, int *ret); +int DH_check(const DH *dh, int *codes); +int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); +int DH_generate_key(DH *dh); +int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); +DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); +int i2d_DHparams(const DH *a, unsigned char **pp); +DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); +int i2d_DHxparams(const DH *a, unsigned char **pp); +# ifndef OPENSSL_NO_STDIO +int DHparams_print_fp(FILE *fp, const DH *x); +# endif +int DHparams_print(BIO *bp, const DH *x); + +/* RFC 5114 parameters */ +DH *DH_get_1024_160(void); +DH *DH_get_2048_224(void); +DH *DH_get_2048_256(void); + +/* Named parameters, currently RFC7919 */ +DH *DH_new_by_nid(int nid); +int DH_get_nid(const DH *dh); + +# ifndef OPENSSL_NO_CMS +/* RFC2631 KDF */ +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); +# endif + +void DH_get0_pqg(const DH *dh, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DH_get0_key(const DH *dh, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DH_get0_p(const DH *dh); +const BIGNUM *DH_get0_q(const DH *dh); +const BIGNUM *DH_get0_g(const DH *dh); +const BIGNUM *DH_get0_priv_key(const DH *dh); +const BIGNUM *DH_get0_pub_key(const DH *dh); +void DH_clear_flags(DH *dh, int flags); +int DH_test_flags(const DH *dh, int flags); +void DH_set_flags(DH *dh, int flags); +ENGINE *DH_get0_engine(DH *d); +long DH_get_length(const DH *dh); +int DH_set_length(DH *dh, long length); + +DH_METHOD *DH_meth_new(const char *name, int flags); +void DH_meth_free(DH_METHOD *dhm); +DH_METHOD *DH_meth_dup(const DH_METHOD *dhm); +const char *DH_meth_get0_name(const DH_METHOD *dhm); +int DH_meth_set1_name(DH_METHOD *dhm, const char *name); +int DH_meth_get_flags(const DH_METHOD *dhm); +int DH_meth_set_flags(DH_METHOD *dhm, int flags); +void *DH_meth_get0_app_data(const DH_METHOD *dhm); +int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data); +int (*DH_meth_get_generate_key(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_generate_key(DH_METHOD *dhm, int (*generate_key) (DH *)); +int (*DH_meth_get_compute_key(const DH_METHOD *dhm)) + (unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_meth_set_compute_key(DH_METHOD *dhm, + int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh)); +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 *); +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 *)); +int (*DH_meth_get_init(const DH_METHOD *dhm))(DH *); +int DH_meth_set_init(DH_METHOD *dhm, int (*init)(DH *)); +int (*DH_meth_get_finish(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_finish(DH_METHOD *dhm, int (*finish) (DH *)); +int (*DH_meth_get_generate_params(const DH_METHOD *dhm)) + (DH *, int, int, BN_GENCB *); +int DH_meth_set_generate_params(DH_METHOD *dhm, + int (*generate_params) (DH *, int, int, BN_GENCB *)); + + +# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, \ + EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_DH_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_dh_pad(ctx, pad) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_PAD, pad, NULL) + +# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)(oid)) + +# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)(poid)) + +# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)(plen)) + +# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)(p)) + +# 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 +# ifndef OPENSSL_NO_CMS +# define EVP_PKEY_DH_KDF_X9_42 2 +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dherr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dherr.h new file mode 100644 index 000000000..528c81985 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dherr.h @@ -0,0 +1,89 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DHERR_H +# define HEADER_DHERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DH + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DH_strings(void); + +/* + * DH function codes. + */ +# define DH_F_COMPUTE_KEY 102 +# define DH_F_DHPARAMS_PRINT_FP 101 +# define DH_F_DH_BUILTIN_GENPARAMS 106 +# define DH_F_DH_CHECK 126 +# define DH_F_DH_CHECK_EX 121 +# define DH_F_DH_CHECK_PARAMS_EX 122 +# define DH_F_DH_CHECK_PUB_KEY_EX 123 +# define DH_F_DH_CMS_DECRYPT 114 +# define DH_F_DH_CMS_SET_PEERKEY 115 +# define DH_F_DH_CMS_SET_SHARED_INFO 116 +# define DH_F_DH_METH_DUP 117 +# define DH_F_DH_METH_NEW 118 +# define DH_F_DH_METH_SET1_NAME 119 +# define DH_F_DH_NEW_BY_NID 104 +# define DH_F_DH_NEW_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# define DH_F_DH_PKEY_PUBLIC_CHECK 124 +# define DH_F_DH_PRIV_DECODE 110 +# define DH_F_DH_PRIV_ENCODE 111 +# define DH_F_DH_PUB_DECODE 108 +# define DH_F_DH_PUB_ENCODE 109 +# define DH_F_DO_DH_PRINT 100 +# define DH_F_GENERATE_KEY 103 +# define DH_F_PKEY_DH_CTRL_STR 120 +# define DH_F_PKEY_DH_DERIVE 112 +# define DH_F_PKEY_DH_INIT 125 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* + * DH reason codes. + */ +# 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_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_NOT_SUITABLE_GENERATOR 120 +# define DH_R_NO_PARAMETERS_SET 107 +# define DH_R_NO_PRIVATE_VALUE 100 +# define DH_R_PARAMETER_ENCODING_ERROR 105 +# define DH_R_PEER_KEY_ERROR 111 +# define DH_R_SHARED_INFO_ERROR 113 +# define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dsa.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dsa.h new file mode 100644 index 000000000..6d8a18a4a --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dsa.h @@ -0,0 +1,244 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSA_H +# define HEADER_DSA_H + +# include + +# ifndef OPENSSL_NO_DSA +# ifdef __cplusplus +extern "C" { +# endif +# include +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifndef OPENSSL_DSA_MAX_MODULUS_BITS +# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024 + +# define DSA_FLAG_CACHE_MONT_P 0x01 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DSA_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * 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; */ + +typedef struct DSA_SIG_st DSA_SIG; + +# define d2i_DSAparams_fp(fp,x) (DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \ + (char *(*)())d2i_DSAparams,(fp),(unsigned char **)(x)) +# define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \ + (unsigned char *)(x)) +# define d2i_DSAparams_bio(bp,x) ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAparams,bp,x) +# define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x) + +DSA *DSAparams_dup(DSA *x); +DSA_SIG *DSA_SIG_new(void); +void DSA_SIG_free(DSA_SIG *a); +int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp); +DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length); +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); + +DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); +int DSA_do_verify(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, DSA *dsa); + +const DSA_METHOD *DSA_OpenSSL(void); + +void DSA_set_default_method(const DSA_METHOD *); +const DSA_METHOD *DSA_get_default_method(void); +int DSA_set_method(DSA *dsa, const DSA_METHOD *); +const DSA_METHOD *DSA_get_method(DSA *d); + +DSA *DSA_new(void); +DSA *DSA_new_method(ENGINE *engine); +void DSA_free(DSA *r); +/* "up" the DSA object's reference count */ +int DSA_up_ref(DSA *r); +int DSA_size(const DSA *); +int DSA_bits(const DSA *d); +int DSA_security_bits(const DSA *d); + /* next 4 return -1 on error */ +DEPRECATEDIN_1_2_0(int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)) +int DSA_sign(int type, const unsigned char *dgst, int dlen, + unsigned char *sig, unsigned int *siglen, DSA *dsa); +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) +int DSA_set_ex_data(DSA *d, int idx, void *arg); +void *DSA_get_ex_data(DSA *d, int idx); + +DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length); + +/* Deprecated version */ +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)) + +/* New version */ +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); + +int DSA_generate_key(DSA *a); +int i2d_DSAPublicKey(const DSA *a, unsigned char **pp); +int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp); +int i2d_DSAparams(const DSA *a, unsigned char **pp); + +int DSAparams_print(BIO *bp, const DSA *x); +int DSA_print(BIO *bp, const DSA *x, int off); +# ifndef OPENSSL_NO_STDIO +int DSAparams_print_fp(FILE *fp, const DSA *x); +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!) + */ +DH *DSA_dup_DH(const DSA *r); +# endif + +# define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_q_bits(ctx, qbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS, qbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0, (void *)(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) + +void DSA_get0_pqg(const DSA *d, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DSA_get0_key(const DSA *d, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DSA_get0_p(const DSA *d); +const BIGNUM *DSA_get0_q(const DSA *d); +const BIGNUM *DSA_get0_g(const DSA *d); +const BIGNUM *DSA_get0_pub_key(const DSA *d); +const BIGNUM *DSA_get0_priv_key(const DSA *d); +void DSA_clear_flags(DSA *d, int flags); +int DSA_test_flags(const DSA *d, int flags); +void DSA_set_flags(DSA *d, int flags); +ENGINE *DSA_get0_engine(DSA *d); + +DSA_METHOD *DSA_meth_new(const char *name, int flags); +void DSA_meth_free(DSA_METHOD *dsam); +DSA_METHOD *DSA_meth_dup(const DSA_METHOD *dsam); +const char *DSA_meth_get0_name(const DSA_METHOD *dsam); +int DSA_meth_set1_name(DSA_METHOD *dsam, const char *name); +int DSA_meth_get_flags(const DSA_METHOD *dsam); +int DSA_meth_set_flags(DSA_METHOD *dsam, int flags); +void *DSA_meth_get0_app_data(const DSA_METHOD *dsam); +int DSA_meth_set0_app_data(DSA_METHOD *dsam, void *app_data); +DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA *); +int DSA_meth_set_sign(DSA_METHOD *dsam, + DSA_SIG *(*sign) (const unsigned char *, int, DSA *)); +int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam)) + (DSA *, BN_CTX *, BIGNUM **, BIGNUM **); +int DSA_meth_set_sign_setup(DSA_METHOD *dsam, + int (*sign_setup) (DSA *, BN_CTX *, BIGNUM **, BIGNUM **)); +int (*DSA_meth_get_verify(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA_SIG *, DSA *); +int DSA_meth_set_verify(DSA_METHOD *dsam, + int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *)); +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 *); +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 *)); +int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +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 *)); +int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *); +int DSA_meth_set_init(DSA_METHOD *dsam, int (*init)(DSA *)); +int (*DSA_meth_get_finish(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_finish(DSA_METHOD *dsam, int (*finish) (DSA *)); +int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam)) + (DSA *, int, const unsigned char *, int, int *, unsigned long *, + BN_GENCB *); +int DSA_meth_set_paramgen(DSA_METHOD *dsam, + int (*paramgen) (DSA *, int, const unsigned char *, int, int *, + unsigned long *, BN_GENCB *)); +int (*DSA_meth_get_keygen(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_keygen(DSA_METHOD *dsam, int (*keygen) (DSA *)); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dsaerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dsaerr.h new file mode 100644 index 000000000..495a1ac89 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dsaerr.h @@ -0,0 +1,72 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSAERR_H +# define HEADER_DSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DSA + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DSA_strings(void); + +/* + * DSA function codes. + */ +# define DSA_F_DSAPARAMS_PRINT 100 +# define DSA_F_DSAPARAMS_PRINT_FP 101 +# define DSA_F_DSA_BUILTIN_PARAMGEN 125 +# define DSA_F_DSA_BUILTIN_PARAMGEN2 126 +# define DSA_F_DSA_DO_SIGN 112 +# define DSA_F_DSA_DO_VERIFY 113 +# define DSA_F_DSA_METH_DUP 127 +# define DSA_F_DSA_METH_NEW 128 +# define DSA_F_DSA_METH_SET1_NAME 129 +# define DSA_F_DSA_NEW_METHOD 103 +# define DSA_F_DSA_PARAM_DECODE 119 +# define DSA_F_DSA_PRINT_FP 105 +# define DSA_F_DSA_PRIV_DECODE 115 +# define DSA_F_DSA_PRIV_ENCODE 116 +# define DSA_F_DSA_PUB_DECODE 117 +# define DSA_F_DSA_PUB_ENCODE 118 +# define DSA_F_DSA_SIGN 106 +# define DSA_F_DSA_SIGN_SETUP 107 +# define DSA_F_DSA_SIG_NEW 102 +# define DSA_F_OLD_DSA_PRIV_DECODE 122 +# define DSA_F_PKEY_DSA_CTRL 120 +# define DSA_F_PKEY_DSA_CTRL_STR 104 +# define DSA_F_PKEY_DSA_KEYGEN 121 + +/* + * DSA reason codes. + */ +# 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_Q_NOT_PRIME 113 +# define DSA_R_SEED_LEN_SMALL 110 + +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dtls1.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dtls1.h new file mode 100644 index 000000000..d55ca9c33 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/dtls1.h @@ -0,0 +1,55 @@ +/* + * Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DTLS1_H +# define HEADER_DTLS1_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS_MIN_VERSION DTLS1_VERSION +# define DTLS_MAX_VERSION DTLS1_2_VERSION +# define DTLS1_VERSION_MAJOR 0xFE + +# define DTLS1_BAD_VER 0x0100 + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +/* lengths of messages */ +/* + * Actually the max cookie length in DTLS is 255. But we can't change this now + * due to compatibility concerns. + */ +# define DTLS1_COOKIE_LENGTH 256 + +# 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 + +/* Timeout multipliers */ +# define DTLS1_TMO_READ_COUNT 2 +# define DTLS1_TMO_WRITE_COUNT 2 + +# define DTLS1_TMO_ALERT_COUNT 12 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/e_os2.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/e_os2.h new file mode 100644 index 000000000..41eaf01c6 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/e_os2.h @@ -0,0 +1,301 @@ +/* + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_E_OS2_H +# define HEADER_E_OS2_H + +# 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 implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYS_VMS) +# if !defined(OPENSSL_SYS_VMS) +# undef OPENSSL_SYS_UNIX +# endif +# define OPENSSL_SYS_VMS +# 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 + +/** + * That's it for OS-specific stuff + *****************************************************************************/ + +/* Specials for I/O an exit */ +# ifdef OPENSSL_SYS_MSDOS +# define OPENSSL_UNISTD_IO +# define OPENSSL_DECLARE_EXIT extern void exit(int); +# else +# define OPENSSL_UNISTD_IO OPENSSL_UNISTD +# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ +# endif + +/*- + * 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 + +/*- + * Macros to allow global variables to be reached through function calls when + * required (if a shared library version requires it, for example. + * The way it's done allows definitions like this: + * + * // in foobar.c + * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) + * // in foobar.h + * OPENSSL_DECLARE_GLOBAL(int,foobar); + * #define foobar OPENSSL_GLOBAL_REF(foobar) + */ +# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ + type *_shadow_##name(void) \ + { static type _hide_##name=value; return &_hide_##name; } +# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) +# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) +# else +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) type _shadow_##name=value; +# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name +# define OPENSSL_GLOBAL_REF(name) _shadow_##name +# endif + +# ifdef _WIN32 +# ifdef _WIN64 +# define ossl_ssize_t __int64 +# define OSSL_SSIZE_MAX _I64_MAX +# else +# define ossl_ssize_t int +# define OSSL_SSIZE_MAX INT_MAX +# endif +# endif + +# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t) +# define ossl_ssize_t INTN +# define OSSL_SSIZE_MAX MAX_INTN +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# if defined(SSIZE_MAX) +# define OSSL_SSIZE_MAX SSIZE_MAX +# elif defined(_POSIX_SSIZE_MAX) +# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX +# else +# define OSSL_SSIZE_MAX ((ssize_t)(SIZE_MAX>>1)) +# endif +# endif + +# ifdef DEBUG_UNUSED +# define __owur __attribute__((__warn_unused_result__)) +# else +# define __owur +# endif + +/* Standard integer types */ +# if defined(OPENSSL_SYS_UEFI) +typedef INT8 int8_t; +typedef UINT8 uint8_t; +typedef INT16 int16_t; +typedef UINT16 uint16_t; +typedef INT32 int32_t; +typedef UINT32 uint32_t; +typedef INT64 int64_t; +typedef UINT64 uint64_t; +# elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + defined(__osf__) || defined(__sgi) || defined(__hpux) || \ + defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__) +# include +# 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; +# else +# include +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ebcdic.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ebcdic.h new file mode 100644 index 000000000..aa0128559 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ebcdic.h @@ -0,0 +1,33 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EBCDIC_H +# define HEADER_EBCDIC_H + +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ec.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ec.h new file mode 100644 index 000000000..24baf53c3 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ec.h @@ -0,0 +1,1484 @@ +/* + * Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifndef OPENSSL_NO_EC +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +/** 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; + +typedef struct ec_method_st EC_METHOD; +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) */ +/********************************************************************/ + +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +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 + */ +const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp521_method(void); +# endif + +# ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +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. + */ +EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +void EC_GROUP_clear_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 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); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +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. + */ +int EC_METHOD_get_field_type(const EC_METHOD *meth); + +/** 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); + +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 a 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); + +/** 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 + */ +DEPRECATEDIN_1_2_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 + */ +DEPRECATEDIN_1_2_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 + */ +DEPRECATEDIN_1_2_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 + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx)) +# endif +/** 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 a NID + * \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); + +/********************************************************************/ +/* 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); + +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** 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); + +/** 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 + */ +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 + */ +int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BIGNUM *z, + BN_CTX *ctx); + +/** 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); + +/** 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 + */ +DEPRECATEDIN_1_2_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 + */ +DEPRECATEDIN_1_2_0(int EC_POINT_get_affine_coordinates_GFp(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 + * \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); + +/** 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 + */ +DEPRECATEDIN_1_2_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 + */ +DEPRECATEDIN_1_2_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 + */ +DEPRECATEDIN_1_2_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 + */ +DEPRECATEDIN_1_2_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 +/** 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: */ +BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BIGNUM *, BN_CTX *); +EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, + EC_POINT *, BN_CTX *); +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); + +int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); +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 + */ +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); + +/** 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); + +/** 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 + */ +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 + */ +int EC_GROUP_have_precompute_mult(const EC_GROUP *group); + +/********************************************************************/ +/* 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 + +# define OPENSSL_EC_EXPLICIT_CURVE 0x000 +# define OPENSSL_EC_NAMED_CURVE 0x001 + +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_const(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)) + +int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); +# ifndef OPENSSL_NO_STDIO +int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); +# endif + +/********************************************************************/ +/* 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_NON_FIPS_ALLOW 0x1 +# define EC_FLAG_FIPS_CHECKED 0x2 +# define EC_FLAG_COFACTOR_ECDH 0x1000 + +/** Creates a new EC_KEY object. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new(void); + +int EC_KEY_get_flags(const EC_KEY *key); + +void EC_KEY_set_flags(EC_KEY *key, int flags); + +void EC_KEY_clear_flags(EC_KEY *key, int flags); + +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 nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +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. + */ +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. + */ +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. + */ +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). + */ +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). + */ +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. + */ +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). + */ +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. + */ +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) + */ +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. + */ +int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); + +#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) +int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +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. + */ +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. + */ +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. + */ +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 can sign and 0 otherwise. + */ +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. + */ +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 + */ +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 + */ + +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 + */ + +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 + */ + +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 + */ +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. + */ +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. + */ +int i2d_ECPrivateKey(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. + */ +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. + */ +int i2d_ECParameters(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes a 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. + */ +EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a 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 + */ +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 + */ +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 + */ +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 + */ +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 + */ +int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); + +# endif + +const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +const EC_KEY_METHOD *EC_KEY_get_default_method(void); +void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +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); + +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)); + +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); + +/** DER encode content of ECDSA_SIG object (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 + */ +int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp); + +/** Decodes a DER encoded ECDSA signature (note: this function changes *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) + */ +ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len); + +/** 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 (may be NULL) + * \param s pointer to BIGNUM for s (may be NULL) + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +/** 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 + */ +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 + */ +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 + */ +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 + */ +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 + */ +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 + */ +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 + */ +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 + */ +int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +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)); + +void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +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)); + +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)); + +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)); + +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)); + +void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, + int (**pkeygen)(EC_KEY *key)); + +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)); + +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)); + +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)); + +# 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 + +# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) + +# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) + +# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, \ + (void *)(plen)) + +# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)(p)) + +/* SM2 will skip the operation check so no need to pass operation here */ +# define EVP_PKEY_CTX_set1_id(ctx, id, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_SET1_ID, (int)id_len, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id(ctx, id) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID, 0, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id_len(ctx, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID_LEN, 0, (void*)(id_len)) + +# 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) +# define EVP_PKEY_CTRL_SET1_ID (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET1_ID (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_GET1_ID_LEN (EVP_PKEY_ALG_CTRL + 13) +/* 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 mistakingly 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 + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecdh.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecdh.h new file mode 100644 index 000000000..681f3d5e5 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecdh.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecdsa.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecdsa.h new file mode 100644 index 000000000..681f3d5e5 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecdsa.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecerr.h new file mode 100644 index 000000000..51738113d --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ecerr.h @@ -0,0 +1,276 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ECERR_H +# define HEADER_ECERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_EC + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EC_strings(void); + +/* + * EC function codes. + */ +# define EC_F_BN_TO_FELEM 224 +# define EC_F_D2I_ECPARAMETERS 144 +# define EC_F_D2I_ECPKPARAMETERS 145 +# define EC_F_D2I_ECPRIVATEKEY 146 +# define EC_F_DO_EC_KEY_PRINT 221 +# define EC_F_ECDH_CMS_DECRYPT 238 +# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 +# define EC_F_ECDH_COMPUTE_KEY 246 +# define EC_F_ECDH_SIMPLE_COMPUTE_KEY 257 +# define EC_F_ECDSA_DO_SIGN_EX 251 +# define EC_F_ECDSA_DO_VERIFY 252 +# define EC_F_ECDSA_SIGN_EX 254 +# define EC_F_ECDSA_SIGN_SETUP 248 +# define EC_F_ECDSA_SIG_NEW 265 +# define EC_F_ECDSA_VERIFY 253 +# define EC_F_ECD_ITEM_VERIFY 270 +# define EC_F_ECKEY_PARAM2TYPE 223 +# define EC_F_ECKEY_PARAM_DECODE 212 +# define EC_F_ECKEY_PRIV_DECODE 213 +# define EC_F_ECKEY_PRIV_ENCODE 214 +# define EC_F_ECKEY_PUB_DECODE 215 +# define EC_F_ECKEY_PUB_ENCODE 216 +# define EC_F_ECKEY_TYPE2PARAM 220 +# define EC_F_ECPARAMETERS_PRINT 147 +# define EC_F_ECPARAMETERS_PRINT_FP 148 +# define EC_F_ECPKPARAMETERS_PRINT 149 +# define EC_F_ECPKPARAMETERS_PRINT_FP 150 +# define EC_F_ECP_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_INV_MOD_ORD 275 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# define EC_F_ECX_KEY_OP 266 +# define EC_F_ECX_PRIV_ENCODE 267 +# define EC_F_ECX_PUB_ENCODE 268 +# define EC_F_EC_ASN1_GROUP2CURVE 153 +# define EC_F_EC_ASN1_GROUP2FIELDID 154 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 296 +# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 +# define EC_F_EC_GF2M_SIMPLE_LADDER_POST 285 +# define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 288 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 289 +# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 +# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 +# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 +# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 +# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_INV 297 +# define EC_F_EC_GFP_MONT_FIELD_MUL 131 +# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 +# define EC_F_EC_GFP_MONT_FIELD_SQR 132 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 +# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 +# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 +# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 +# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 +# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 +# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 +# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 +# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 +# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 +# define EC_F_EC_GFP_NIST_FIELD_MUL 200 +# define EC_F_EC_GFP_NIST_FIELD_SQR 201 +# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 +# define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 287 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 298 +# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 +# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 +# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 +# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 +# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 +# define EC_F_EC_GROUP_CHECK 170 +# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 +# define EC_F_EC_GROUP_COPY 106 +# define EC_F_EC_GROUP_GET_CURVE 291 +# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 +# define EC_F_EC_GROUP_GET_CURVE_GFP 130 +# define EC_F_EC_GROUP_GET_DEGREE 173 +# define EC_F_EC_GROUP_GET_ECPARAMETERS 261 +# define EC_F_EC_GROUP_GET_ECPKPARAMETERS 262 +# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 +# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 +# define EC_F_EC_GROUP_NEW 108 +# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 +# define EC_F_EC_GROUP_NEW_FROM_DATA 175 +# define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 263 +# define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 264 +# define EC_F_EC_GROUP_SET_CURVE 292 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# define EC_F_EC_GROUP_SET_SEED 286 +# define EC_F_EC_KEY_CHECK_KEY 177 +# define EC_F_EC_KEY_COPY 178 +# define EC_F_EC_KEY_GENERATE_KEY 179 +# define EC_F_EC_KEY_NEW 182 +# define EC_F_EC_KEY_NEW_METHOD 245 +# define EC_F_EC_KEY_OCT2PRIV 255 +# define EC_F_EC_KEY_PRINT 180 +# define EC_F_EC_KEY_PRINT_FP 181 +# define EC_F_EC_KEY_PRIV2BUF 279 +# define EC_F_EC_KEY_PRIV2OCT 256 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 +# define EC_F_EC_KEY_SIMPLE_CHECK_KEY 258 +# define EC_F_EC_KEY_SIMPLE_OCT2PRIV 259 +# define EC_F_EC_KEY_SIMPLE_PRIV2OCT 260 +# define EC_F_EC_PKEY_CHECK 273 +# define EC_F_EC_PKEY_PARAM_CHECK 274 +# define EC_F_EC_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINTS_MUL 290 +# define EC_F_EC_POINT_ADD 112 +# define EC_F_EC_POINT_BN2POINT 280 +# define EC_F_EC_POINT_CMP 113 +# define EC_F_EC_POINT_COPY 114 +# define EC_F_EC_POINT_DBL 115 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES 293 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 +# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 +# define EC_F_EC_POINT_INVERT 210 +# define EC_F_EC_POINT_IS_AT_INFINITY 118 +# define EC_F_EC_POINT_IS_ON_CURVE 119 +# define EC_F_EC_POINT_MAKE_AFFINE 120 +# define EC_F_EC_POINT_NEW 121 +# define EC_F_EC_POINT_OCT2POINT 122 +# define EC_F_EC_POINT_POINT2BUF 281 +# define EC_F_EC_POINT_POINT2OCT 123 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES 294 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 295 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 +# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 +# define EC_F_EC_POINT_SET_TO_INFINITY 127 +# define EC_F_EC_PRE_COMP_NEW 196 +# define EC_F_EC_SCALAR_MUL_LADDER 284 +# define EC_F_EC_WNAF_MUL 187 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 +# define EC_F_I2D_ECPARAMETERS 190 +# define EC_F_I2D_ECPKPARAMETERS 191 +# define EC_F_I2D_ECPRIVATEKEY 192 +# define EC_F_I2O_ECPUBLICKEY 151 +# define EC_F_NISTP224_PRE_COMP_NEW 227 +# define EC_F_NISTP256_PRE_COMP_NEW 236 +# define EC_F_NISTP521_PRE_COMP_NEW 237 +# define EC_F_O2I_ECPUBLICKEY 152 +# define EC_F_OLD_EC_PRIV_DECODE 222 +# define EC_F_OSSL_ECDH_COMPUTE_KEY 247 +# define EC_F_OSSL_ECDSA_SIGN_SIG 249 +# define EC_F_OSSL_ECDSA_VERIFY_SIG 250 +# define EC_F_PKEY_ECD_CTRL 271 +# define EC_F_PKEY_ECD_DIGESTSIGN 272 +# define EC_F_PKEY_ECD_DIGESTSIGN25519 276 +# define EC_F_PKEY_ECD_DIGESTSIGN448 277 +# define EC_F_PKEY_ECX_DERIVE 269 +# define EC_F_PKEY_EC_CTRL 197 +# define EC_F_PKEY_EC_CTRL_STR 198 +# define EC_F_PKEY_EC_DERIVE 217 +# define EC_F_PKEY_EC_INIT 282 +# define EC_F_PKEY_EC_KDF_DERIVE 283 +# define EC_F_PKEY_EC_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 +# define EC_F_VALIDATE_ECX_DERIVE 278 + +/* + * 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_SIGNING 159 +# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 +# 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_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_ARGUMENT 112 +# 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_GROUP_ORDER 122 +# define EC_R_INVALID_KEY 116 +# define EC_R_INVALID_OUTPUT_LENGTH 161 +# 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_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_PKPARAMETERS2GROUP_FAILURE 127 +# 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_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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/engine.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/engine.h new file mode 100644 index 000000000..d707eaeb6 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/engine.h @@ -0,0 +1,752 @@ +/* + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINE_H +# define HEADER_ENGINE_H + +# include + +# ifndef OPENSSL_NO_ENGINE +# if OPENSSL_API_COMPAT < 0x10100000L +# 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 if for an ENGINE that does not want its methods registered as + * part of ENGINE_register_all_complete() for example if the methods are not + * usable as default methods. + */ + +# define ENGINE_FLAGS_NO_REGISTER_ALL (int)0x0008 + +/* + * ENGINEs can support their own command types, and these flags are used in + * ENGINE_CTRL_GET_CMD_FLAGS to indicate to the caller what kind of input + * each command expects. Currently only numeric and string input is + * supported. If a control command supports none of the _NUMERIC, _STRING, or + * _NO_INPUT options, then it is regarded as an "internal" control command - + * and not for use in config setting situations. As such, they're not + * available to the ENGINE_ctrl_cmd_string() function, only raw ENGINE_ctrl() + * access. Changes to this list of 'command types' should be reflected + * carefully in ENGINE_cmd_is_executable() and ENGINE_ctrl_cmd_string(). + */ + +/* accepts a 'long' input value (3rd parameter to ENGINE_ctrl) */ +# define ENGINE_CMD_FLAG_NUMERIC (unsigned int)0x0001 +/* + * accepts string input (cast from 'void*' to 'const char *', 4th parameter + * to ENGINE_ctrl) + */ +# define ENGINE_CMD_FLAG_STRING (unsigned int)0x0002 +/* + * Indicates that the control command takes *no* input. Ie. the control + * command is unparameterised. + */ +# define ENGINE_CMD_FLAG_NO_INPUT (unsigned int)0x0004 +/* + * Indicates that the control command is internal. This control command won't + * be shown in any output, and is only usable through the ENGINE_ctrl_cmd() + * function. + */ +# define ENGINE_CMD_FLAG_INTERNAL (unsigned int)0x0008 + +/* + * NB: These 3 control commands are deprecated and should not be used. + * ENGINEs relying on these commands should compile conditional support for + * compatibility (eg. if these symbols are defined) but should also migrate + * the same functionality to their own ENGINE-specific control functions that + * can be "discovered" by calling applications. The fact these control + * commands wouldn't be "executable" (ie. usable by text-based config) + * doesn't change the fact that application code can find and use them + * without requiring per-ENGINE hacking. + */ + +/* + * These flags are used to tell the ctrl function what should be done. All + * command numbers are shared between all engines, even if some don't make + * sense to some engines. In such a case, they do nothing but return the + * error ENGINE_R_CTRL_COMMAND_NOT_IMPLEMENTED. + */ +# define ENGINE_CTRL_SET_LOGSTREAM 1 +# define ENGINE_CTRL_SET_PASSWORD_CALLBACK 2 +# define ENGINE_CTRL_HUP 3/* Close and reinitialise + * any handles/connections + * etc. */ +# define ENGINE_CTRL_SET_USER_INTERFACE 4/* Alternative to callback */ +# define ENGINE_CTRL_SET_CALLBACK_DATA 5/* User-specific data, used + * when calling the password + * callback and the user + * interface */ +# define ENGINE_CTRL_LOAD_CONFIGURATION 6/* Load a configuration, + * given a string that + * represents a file name + * or so */ +# define ENGINE_CTRL_LOAD_SECTION 7/* Load data from a given + * section in the already + * loaded configuration */ + +/* + * These control commands allow an application to deal with an arbitrary + * engine in a dynamic way. Warn: Negative return values indicate errors FOR + * THESE COMMANDS because zero is used to indicate 'end-of-list'. Other + * commands, including ENGINE-specific command types, return zero for an + * error. An ENGINE can choose to implement these ctrl functions, and can + * internally manage things however it chooses - it does so by setting the + * ENGINE_FLAGS_MANUAL_CMD_CTRL flag (using ENGINE_set_flags()). Otherwise + * the ENGINE_ctrl() code handles this on the ENGINE's behalf using the + * cmd_defns data (set using ENGINE_set_cmd_defns()). This means an ENGINE's + * ctrl() handler need only implement its own commands - the above "meta" + * commands will be taken care of. + */ + +/* + * Returns non-zero if the supplied ENGINE has a ctrl() handler. If "not", + * then all the remaining control commands will return failure, so it is + * worth checking this first if the caller is trying to "discover" the + * engine's capabilities and doesn't want errors generated unnecessarily. + */ +# define ENGINE_CTRL_HAS_CTRL_FUNCTION 10 +/* + * Returns a positive command number for the first command supported by the + * engine. Returns zero if no ctrl commands are supported. + */ +# define ENGINE_CTRL_GET_FIRST_CMD_TYPE 11 +/* + * The 'long' argument specifies a command implemented by the engine, and the + * return value is the next command supported, or zero if there are no more. + */ +# define ENGINE_CTRL_GET_NEXT_CMD_TYPE 12 +/* + * The 'void*' argument is a command name (cast from 'const char *'), and the + * return value is the command that corresponds to it. + */ +# define ENGINE_CTRL_GET_CMD_FROM_NAME 13 +/* + * The next two allow a command to be converted into its corresponding string + * form. In each case, the 'long' argument supplies the command. In the + * NAME_LEN case, the return value is the length of the command name (not + * counting a trailing EOL). In the NAME case, the 'void*' argument must be a + * string buffer large enough, and it will be populated with the name of the + * command (WITH a trailing EOL). + */ +# define ENGINE_CTRL_GET_NAME_LEN_FROM_CMD 14 +# define ENGINE_CTRL_GET_NAME_FROM_CMD 15 +/* The next two are similar but give a "short description" of a command. */ +# define ENGINE_CTRL_GET_DESC_LEN_FROM_CMD 16 +# define ENGINE_CTRL_GET_DESC_FROM_CMD 17 +/* + * With this command, the return value is the OR'd combination of + * ENGINE_CMD_FLAG_*** values that indicate what kind of input a given + * engine-specific ctrl command expects. + */ +# define ENGINE_CTRL_GET_CMD_FLAGS 18 + +/* + * ENGINE implementations should start the numbering of their own control + * commands from this value. (ie. ENGINE_CMD_BASE, ENGINE_CMD_BASE + 1, etc). + */ +# define ENGINE_CMD_BASE 200 + +/* + * NB: These 2 nCipher "chil" control commands are deprecated, and their + * functionality is now available through ENGINE-specific control commands + * (exposed through the above-mentioned 'CMD'-handling). Code using these 2 + * commands should be migrated to the more general command handling before + * these are removed. + */ + +/* Flags specific to the nCipher "chil" engine */ +# define ENGINE_CTRL_CHIL_SET_FORKCHECK 100 + /* + * Depending on the value of the (long)i argument, this sets or + * unsets the SimpleForkCheck flag in the CHIL API to enable or + * disable checking and workarounds for applications that fork(). + */ +# define ENGINE_CTRL_CHIL_NO_LOCKING 101 + /* + * This prevents the initialisation function from providing mutex + * callbacks to the nCipher library. + */ + +/* + * If an ENGINE supports its own specific control commands and wishes the + * framework to handle the above 'ENGINE_CMD_***'-manipulation commands on + * its behalf, it should supply a null-terminated array of ENGINE_CMD_DEFN + * entries to ENGINE_set_cmd_defns(). It should also implement a ctrl() + * handler that supports the stated commands (ie. the "cmd_num" entries as + * described by the array). NB: The array must be ordered in increasing order + * of cmd_num. "null-terminated" means that the last ENGINE_CMD_DEFN element + * has cmd_num set to zero and/or cmd_name set to NULL. + */ +typedef struct ENGINE_CMD_DEFN_st { + unsigned int cmd_num; /* The command number */ + const char *cmd_name; /* The command name itself */ + const char *cmd_desc; /* A short description of the command */ + unsigned int cmd_flags; /* The input the command expects */ +} ENGINE_CMD_DEFN; + +/* Generic function pointer */ +typedef int (*ENGINE_GEN_FUNC_PTR) (void); +/* Generic function pointer taking no arguments */ +typedef int (*ENGINE_GEN_INT_FUNC_PTR) (ENGINE *); +/* Specific control function pointer */ +typedef int (*ENGINE_CTRL_FUNC_PTR) (ENGINE *, int, long, void *, + void (*f) (void)); +/* Generic load_key function pointer */ +typedef EVP_PKEY *(*ENGINE_LOAD_KEY_PTR)(ENGINE *, const char *, + UI_METHOD *ui_method, + void *callback_data); +typedef int (*ENGINE_SSL_CLIENT_CERT_PTR) (ENGINE *, SSL *ssl, + STACK_OF(X509_NAME) *ca_dn, + X509 **pcert, EVP_PKEY **pkey, + STACK_OF(X509) **pother, + UI_METHOD *ui_method, + void *callback_data); +/*- + * These callback types are for an ENGINE's handler for cipher and digest logic. + * These handlers have these prototypes; + * int foo(ENGINE *e, const EVP_CIPHER **cipher, const int **nids, int nid); + * int foo(ENGINE *e, const EVP_MD **digest, const int **nids, int nid); + * Looking at how to implement these handlers in the case of cipher support, if + * the framework wants the EVP_CIPHER for 'nid', it will call; + * foo(e, &p_evp_cipher, NULL, nid); (return zero for failure) + * If the framework wants a list of supported 'nid's, it will call; + * foo(e, NULL, &p_nids, 0); (returns number of 'nids' or -1 for error) + */ +/* + * Returns to a pointer to the array of supported cipher 'nid's. If the + * second parameter is non-NULL it is set to the size of the returned array. + */ +typedef int (*ENGINE_CIPHERS_PTR) (ENGINE *, const EVP_CIPHER **, + const int **, int); +typedef int (*ENGINE_DIGESTS_PTR) (ENGINE *, const EVP_MD **, const int **, + int); +typedef int (*ENGINE_PKEY_METHS_PTR) (ENGINE *, EVP_PKEY_METHOD **, + const int **, int); +typedef int (*ENGINE_PKEY_ASN1_METHS_PTR) (ENGINE *, EVP_PKEY_ASN1_METHOD **, + const int **, int); +/* + * STRUCTURE functions ... all of these functions deal with pointers to + * ENGINE structures where the pointers have a "structural reference". This + * means that their reference is to allowed access to the structure but it + * does not imply that the structure is functional. To simply increment or + * decrement the structural reference count, use ENGINE_by_id and + * ENGINE_free. NB: This is not required when iterating using ENGINE_get_next + * as it will automatically decrement the structural reference count of the + * "current" ENGINE and increment the structural reference count of the + * ENGINE it returns (unless it is NULL). + */ + +/* Get the first/last "ENGINE" type available. */ +ENGINE *ENGINE_get_first(void); +ENGINE *ENGINE_get_last(void); +/* Iterate to the next/previous "ENGINE" type (NULL = end of the list). */ +ENGINE *ENGINE_get_next(ENGINE *e); +ENGINE *ENGINE_get_prev(ENGINE *e); +/* Add another "ENGINE" type into the array. */ +int ENGINE_add(ENGINE *e); +/* Remove an existing "ENGINE" type from the array. */ +int ENGINE_remove(ENGINE *e); +/* Retrieve an engine from the list by its unique "id" value. */ +ENGINE *ENGINE_by_id(const char *id); + +#if OPENSSL_API_COMPAT < 0x10100000L +# 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 +void ENGINE_load_builtin_engines(void); + +/* + * Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation + * "registry" handling. + */ +unsigned int ENGINE_get_table_flags(void); +void ENGINE_set_table_flags(unsigned int flags); + +/*- 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. + */ + +int ENGINE_register_RSA(ENGINE *e); +void ENGINE_unregister_RSA(ENGINE *e); +void ENGINE_register_all_RSA(void); + +int ENGINE_register_DSA(ENGINE *e); +void ENGINE_unregister_DSA(ENGINE *e); +void ENGINE_register_all_DSA(void); + +int ENGINE_register_EC(ENGINE *e); +void ENGINE_unregister_EC(ENGINE *e); +void ENGINE_register_all_EC(void); + +int ENGINE_register_DH(ENGINE *e); +void ENGINE_unregister_DH(ENGINE *e); +void ENGINE_register_all_DH(void); + +int ENGINE_register_RAND(ENGINE *e); +void ENGINE_unregister_RAND(ENGINE *e); +void ENGINE_register_all_RAND(void); + +int ENGINE_register_ciphers(ENGINE *e); +void ENGINE_unregister_ciphers(ENGINE *e); +void ENGINE_register_all_ciphers(void); + +int ENGINE_register_digests(ENGINE *e); +void ENGINE_unregister_digests(ENGINE *e); +void ENGINE_register_all_digests(void); + +int ENGINE_register_pkey_meths(ENGINE *e); +void ENGINE_unregister_pkey_meths(ENGINE *e); +void ENGINE_register_all_pkey_meths(void); + +int ENGINE_register_pkey_asn1_meths(ENGINE *e); +void ENGINE_unregister_pkey_asn1_meths(ENGINE *e); +void ENGINE_register_all_pkey_asn1_meths(void); + +/* + * 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. + */ +int ENGINE_register_complete(ENGINE *e); +int ENGINE_register_all_complete(void); + +/* + * 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. + */ +int ENGINE_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void)); + +/* + * 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(). + */ +int ENGINE_cmd_is_executable(ENGINE *e, int cmd); + +/* + * 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. + */ +int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name, + long i, void *p, void (*f) (void), int cmd_optional); + +/* + * 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. + */ +int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg, + int cmd_optional); + +/* + * 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! + */ +ENGINE *ENGINE_new(void); +int ENGINE_free(ENGINE *e); +int ENGINE_up_ref(ENGINE *e); +int ENGINE_set_id(ENGINE *e, const char *id); +int ENGINE_set_name(ENGINE *e, const char *name); +int ENGINE_set_RSA(ENGINE *e, const RSA_METHOD *rsa_meth); +int ENGINE_set_DSA(ENGINE *e, const DSA_METHOD *dsa_meth); +int ENGINE_set_EC(ENGINE *e, const EC_KEY_METHOD *ecdsa_meth); +int ENGINE_set_DH(ENGINE *e, const DH_METHOD *dh_meth); +int ENGINE_set_RAND(ENGINE *e, const RAND_METHOD *rand_meth); +int ENGINE_set_destroy_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR destroy_f); +int ENGINE_set_init_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR init_f); +int ENGINE_set_finish_function(ENGINE *e, ENGINE_GEN_INT_FUNC_PTR finish_f); +int ENGINE_set_ctrl_function(ENGINE *e, ENGINE_CTRL_FUNC_PTR ctrl_f); +int ENGINE_set_load_privkey_function(ENGINE *e, + ENGINE_LOAD_KEY_PTR loadpriv_f); +int ENGINE_set_load_pubkey_function(ENGINE *e, ENGINE_LOAD_KEY_PTR loadpub_f); +int ENGINE_set_load_ssl_client_cert_function(ENGINE *e, + ENGINE_SSL_CLIENT_CERT_PTR + loadssl_f); +int ENGINE_set_ciphers(ENGINE *e, ENGINE_CIPHERS_PTR f); +int ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f); +int ENGINE_set_pkey_meths(ENGINE *e, ENGINE_PKEY_METHS_PTR f); +int ENGINE_set_pkey_asn1_meths(ENGINE *e, ENGINE_PKEY_ASN1_METHS_PTR f); +int ENGINE_set_flags(ENGINE *e, int flags); +int ENGINE_set_cmd_defns(ENGINE *e, const ENGINE_CMD_DEFN *defns); +/* 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) +int ENGINE_set_ex_data(ENGINE *e, int idx, void *arg); +void *ENGINE_get_ex_data(const ENGINE *e, int idx); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* + * 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! + */ +const char *ENGINE_get_id(const ENGINE *e); +const char *ENGINE_get_name(const ENGINE *e); +const RSA_METHOD *ENGINE_get_RSA(const ENGINE *e); +const DSA_METHOD *ENGINE_get_DSA(const ENGINE *e); +const EC_KEY_METHOD *ENGINE_get_EC(const ENGINE *e); +const DH_METHOD *ENGINE_get_DH(const ENGINE *e); +const RAND_METHOD *ENGINE_get_RAND(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_destroy_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_init_function(const ENGINE *e); +ENGINE_GEN_INT_FUNC_PTR ENGINE_get_finish_function(const ENGINE *e); +ENGINE_CTRL_FUNC_PTR ENGINE_get_ctrl_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_privkey_function(const ENGINE *e); +ENGINE_LOAD_KEY_PTR ENGINE_get_load_pubkey_function(const ENGINE *e); +ENGINE_SSL_CLIENT_CERT_PTR ENGINE_get_ssl_client_cert_function(const ENGINE + *e); +ENGINE_CIPHERS_PTR ENGINE_get_ciphers(const ENGINE *e); +ENGINE_DIGESTS_PTR ENGINE_get_digests(const ENGINE *e); +ENGINE_PKEY_METHS_PTR ENGINE_get_pkey_meths(const ENGINE *e); +ENGINE_PKEY_ASN1_METHS_PTR ENGINE_get_pkey_asn1_meths(const ENGINE *e); +const EVP_CIPHER *ENGINE_get_cipher(ENGINE *e, int nid); +const EVP_MD *ENGINE_get_digest(ENGINE *e, int nid); +const EVP_PKEY_METHOD *ENGINE_get_pkey_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth(ENGINE *e, int nid); +const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth_str(ENGINE *e, + const char *str, + int len); +const EVP_PKEY_ASN1_METHOD *ENGINE_pkey_asn1_find_str(ENGINE **pe, + const char *str, + int len); +const ENGINE_CMD_DEFN *ENGINE_get_cmd_defns(const ENGINE *e); +int ENGINE_get_flags(const ENGINE *e); + +/* + * 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 a 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. + */ +int ENGINE_init(ENGINE *e); +/* + * Free a functional reference to a engine type. This does not require a + * corresponding call to ENGINE_free as it also releases a structural + * reference. + */ +int ENGINE_finish(ENGINE *e); + +/* + * 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. + */ +EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +EVP_PKEY *ENGINE_load_public_key(ENGINE *e, const char *key_id, + UI_METHOD *ui_method, void *callback_data); +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); + +/* + * 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. + */ +ENGINE *ENGINE_get_default_RSA(void); +/* Same for the other "methods" */ +ENGINE *ENGINE_get_default_DSA(void); +ENGINE *ENGINE_get_default_EC(void); +ENGINE *ENGINE_get_default_DH(void); +ENGINE *ENGINE_get_default_RAND(void); +/* + * These functions can be used to get a functional reference to perform + * ciphering or digesting corresponding to "nid". + */ +ENGINE *ENGINE_get_cipher_engine(int nid); +ENGINE *ENGINE_get_digest_engine(int nid); +ENGINE *ENGINE_get_pkey_meth_engine(int nid); +ENGINE *ENGINE_get_pkey_asn1_meth_engine(int nid); + +/* + * 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'. + */ +int ENGINE_set_default_RSA(ENGINE *e); +int ENGINE_set_default_string(ENGINE *e, const char *def_list); +/* Same for the other "methods" */ +int ENGINE_set_default_DSA(ENGINE *e); +int ENGINE_set_default_EC(ENGINE *e); +int ENGINE_set_default_DH(ENGINE *e); +int ENGINE_set_default_RAND(ENGINE *e); +int ENGINE_set_default_ciphers(ENGINE *e); +int ENGINE_set_default_digests(ENGINE *e); +int ENGINE_set_default_pkey_meths(ENGINE *e); +int ENGINE_set_default_pkey_asn1_meths(ENGINE *e); + +/* + * 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. + */ +int ENGINE_set_default(ENGINE *e, unsigned int flags); + +void ENGINE_add_conf_module(void); + +/* 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__) +DEPRECATEDIN_1_1_0(void ENGINE_setup_bsd_cryptodev(void)) +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/engineerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/engineerr.h new file mode 100644 index 000000000..05e84bd2a --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/engineerr.h @@ -0,0 +1,111 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENGINEERR_H +# define HEADER_ENGINEERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_ENGINE + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ENGINE_strings(void); + +/* + * ENGINE function codes. + */ +# define ENGINE_F_DIGEST_UPDATE 198 +# define ENGINE_F_DYNAMIC_CTRL 180 +# define ENGINE_F_DYNAMIC_GET_DATA_CTX 181 +# define ENGINE_F_DYNAMIC_LOAD 182 +# define ENGINE_F_DYNAMIC_SET_DATA_CTX 183 +# define ENGINE_F_ENGINE_ADD 105 +# define ENGINE_F_ENGINE_BY_ID 106 +# define ENGINE_F_ENGINE_CMD_IS_EXECUTABLE 170 +# define ENGINE_F_ENGINE_CTRL 142 +# define ENGINE_F_ENGINE_CTRL_CMD 178 +# define ENGINE_F_ENGINE_CTRL_CMD_STRING 171 +# define ENGINE_F_ENGINE_FINISH 107 +# define ENGINE_F_ENGINE_GET_CIPHER 185 +# define ENGINE_F_ENGINE_GET_DIGEST 186 +# define ENGINE_F_ENGINE_GET_FIRST 195 +# define ENGINE_F_ENGINE_GET_LAST 196 +# define ENGINE_F_ENGINE_GET_NEXT 115 +# define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 193 +# define ENGINE_F_ENGINE_GET_PKEY_METH 192 +# define ENGINE_F_ENGINE_GET_PREV 116 +# define ENGINE_F_ENGINE_INIT 119 +# define ENGINE_F_ENGINE_LIST_ADD 120 +# define ENGINE_F_ENGINE_LIST_REMOVE 121 +# define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 150 +# define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 151 +# define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 194 +# define ENGINE_F_ENGINE_NEW 122 +# define ENGINE_F_ENGINE_PKEY_ASN1_FIND_STR 197 +# define ENGINE_F_ENGINE_REMOVE 123 +# define ENGINE_F_ENGINE_SET_DEFAULT_STRING 189 +# define ENGINE_F_ENGINE_SET_ID 129 +# define ENGINE_F_ENGINE_SET_NAME 130 +# define ENGINE_F_ENGINE_TABLE_REGISTER 184 +# define ENGINE_F_ENGINE_UNLOCKED_FINISH 191 +# define ENGINE_F_ENGINE_UP_REF 190 +# define ENGINE_F_INT_CLEANUP_ITEM 199 +# define ENGINE_F_INT_CTRL_HELPER 172 +# define ENGINE_F_INT_ENGINE_CONFIGURE 188 +# define ENGINE_F_INT_ENGINE_MODULE_INIT 187 +# define ENGINE_F_OSSL_HMAC_INIT 200 + +/* + * 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/err.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/err.h new file mode 100644 index 000000000..b49f88129 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/err.h @@ -0,0 +1,274 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ERR_H +# define HEADER_ERR_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# include +# endif + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# ifndef OPENSSL_NO_ERR +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e) +# else +# define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0) +# endif + +# include + +# define ERR_TXT_MALLOCED 0x01 +# define ERR_TXT_STRING 0x02 + +# define ERR_FLAG_MARK 0x01 +# define ERR_FLAG_CLEAR 0x02 + +# define ERR_NUM_ERRORS 16 +typedef struct err_state_st { + int err_flags[ERR_NUM_ERRORS]; + unsigned long err_buffer[ERR_NUM_ERRORS]; + char *err_data[ERR_NUM_ERRORS]; + int err_data_flags[ERR_NUM_ERRORS]; + const char *err_file[ERR_NUM_ERRORS]; + int err_line[ERR_NUM_ERRORS]; + int top, bottom; +} ERR_STATE; + +/* 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_USER 128 + +# define SYSerr(f,r) ERR_PUT_error(ERR_LIB_SYS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BNerr(f,r) ERR_PUT_error(ERR_LIB_BN,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RSAerr(f,r) ERR_PUT_error(ERR_LIB_RSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DHerr(f,r) ERR_PUT_error(ERR_LIB_DH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define EVPerr(f,r) ERR_PUT_error(ERR_LIB_EVP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BUFerr(f,r) ERR_PUT_error(ERR_LIB_BUF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OBJerr(f,r) ERR_PUT_error(ERR_LIB_OBJ,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PEMerr(f,r) ERR_PUT_error(ERR_LIB_PEM,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSAerr(f,r) ERR_PUT_error(ERR_LIB_DSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509err(f,r) ERR_PUT_error(ERR_LIB_X509,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASN1err(f,r) ERR_PUT_error(ERR_LIB_ASN1,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CONFerr(f,r) ERR_PUT_error(ERR_LIB_CONF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CRYPTOerr(f,r) ERR_PUT_error(ERR_LIB_CRYPTO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECerr(f,r) ERR_PUT_error(ERR_LIB_EC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SSLerr(f,r) ERR_PUT_error(ERR_LIB_SSL,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define BIOerr(f,r) ERR_PUT_error(ERR_LIB_BIO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS7err(f,r) ERR_PUT_error(ERR_LIB_PKCS7,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define X509V3err(f,r) ERR_PUT_error(ERR_LIB_X509V3,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define PKCS12err(f,r) ERR_PUT_error(ERR_LIB_PKCS12,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define RANDerr(f,r) ERR_PUT_error(ERR_LIB_RAND,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define DSOerr(f,r) ERR_PUT_error(ERR_LIB_DSO,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ENGINEerr(f,r) ERR_PUT_error(ERR_LIB_ENGINE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OCSPerr(f,r) ERR_PUT_error(ERR_LIB_OCSP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define UIerr(f,r) ERR_PUT_error(ERR_LIB_UI,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define COMPerr(f,r) ERR_PUT_error(ERR_LIB_COMP,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDSAerr(f,r) ERR_PUT_error(ERR_LIB_ECDSA,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ECDHerr(f,r) ERR_PUT_error(ERR_LIB_ECDH,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define OSSL_STOREerr(f,r) ERR_PUT_error(ERR_LIB_OSSL_STORE,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define CTerr(f,r) ERR_PUT_error(ERR_LIB_CT,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define ASYNCerr(f,r) ERR_PUT_error(ERR_LIB_ASYNC,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define KDFerr(f,r) ERR_PUT_error(ERR_LIB_KDF,(f),(r),OPENSSL_FILE,OPENSSL_LINE) +# define SM2err(f,r) ERR_PUT_error(ERR_LIB_SM2,(f),(r),OPENSSL_FILE,OPENSSL_LINE) + +# define ERR_PACK(l,f,r) ( \ + (((unsigned int)(l) & 0x0FF) << 24L) | \ + (((unsigned int)(f) & 0xFFF) << 12L) | \ + (((unsigned int)(r) & 0xFFF) ) ) +# define ERR_GET_LIB(l) (int)(((l) >> 24L) & 0x0FFL) +# define ERR_GET_FUNC(l) (int)(((l) >> 12L) & 0xFFFL) +# define ERR_GET_REASON(l) (int)( (l) & 0xFFFL) +# define ERR_FATAL_ERROR(l) (int)( (l) & ERR_R_FATAL) + +/* OS functions */ +# define SYS_F_FOPEN 1 +# define SYS_F_CONNECT 2 +# define SYS_F_GETSERVBYNAME 3 +# define SYS_F_SOCKET 4 +# define SYS_F_IOCTLSOCKET 5 +# define SYS_F_BIND 6 +# define SYS_F_LISTEN 7 +# define SYS_F_ACCEPT 8 +# define SYS_F_WSASTARTUP 9/* Winsock stuff */ +# define SYS_F_OPENDIR 10 +# define SYS_F_FREAD 11 +# define SYS_F_GETADDRINFO 12 +# define SYS_F_GETNAMEINFO 13 +# define SYS_F_SETSOCKOPT 14 +# define SYS_F_GETSOCKOPT 15 +# define SYS_F_GETSOCKNAME 16 +# define SYS_F_GETHOSTBYNAME 17 +# define SYS_F_FFLUSH 18 +# define SYS_F_OPEN 19 +# define SYS_F_CLOSE 20 +# define SYS_F_IOCTL 21 +# define SYS_F_STAT 22 +# define SYS_F_FCNTL 23 +# define SYS_F_FSTAT 24 + +/* reasons */ +# define ERR_R_SYS_LIB ERR_LIB_SYS/* 2 */ +# define ERR_R_BN_LIB ERR_LIB_BN/* 3 */ +# define ERR_R_RSA_LIB ERR_LIB_RSA/* 4 */ +# define ERR_R_DH_LIB ERR_LIB_DH/* 5 */ +# define ERR_R_EVP_LIB ERR_LIB_EVP/* 6 */ +# define ERR_R_BUF_LIB ERR_LIB_BUF/* 7 */ +# define ERR_R_OBJ_LIB ERR_LIB_OBJ/* 8 */ +# define ERR_R_PEM_LIB ERR_LIB_PEM/* 9 */ +# define ERR_R_DSA_LIB ERR_LIB_DSA/* 10 */ +# define ERR_R_X509_LIB ERR_LIB_X509/* 11 */ +# define ERR_R_ASN1_LIB ERR_LIB_ASN1/* 13 */ +# define ERR_R_EC_LIB ERR_LIB_EC/* 16 */ +# define ERR_R_BIO_LIB ERR_LIB_BIO/* 32 */ +# define ERR_R_PKCS7_LIB ERR_LIB_PKCS7/* 33 */ +# define ERR_R_X509V3_LIB ERR_LIB_X509V3/* 34 */ +# define ERR_R_ENGINE_LIB ERR_LIB_ENGINE/* 38 */ +# define ERR_R_UI_LIB ERR_LIB_UI/* 40 */ +# define ERR_R_ECDSA_LIB ERR_LIB_ECDSA/* 42 */ +# define ERR_R_OSSL_STORE_LIB ERR_LIB_OSSL_STORE/* 44 */ + +# define ERR_R_NESTED_ASN1_ERROR 58 +# define ERR_R_MISSING_ASN1_EOS 63 + +/* fatal error */ +# define ERR_R_FATAL 64 +# define ERR_R_MALLOC_FAILURE (1|ERR_R_FATAL) +# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (2|ERR_R_FATAL) +# define ERR_R_PASSED_NULL_PARAMETER (3|ERR_R_FATAL) +# define ERR_R_INTERNAL_ERROR (4|ERR_R_FATAL) +# define ERR_R_DISABLED (5|ERR_R_FATAL) +# define ERR_R_INIT_FAIL (6|ERR_R_FATAL) +# define ERR_R_PASSED_INVALID_ARGUMENT (7) +# define ERR_R_OPERATION_FAIL (8|ERR_R_FATAL) + +/* + * 99 is the maximum possible ERR_R_... code, higher values are reserved for + * the individual libraries + */ + +typedef struct ERR_string_data_st { + unsigned long error; + const char *string; +} ERR_STRING_DATA; + +DEFINE_LHASH_OF(ERR_STRING_DATA); + +void ERR_put_error(int lib, int func, int reason, const char *file, int line); +void ERR_set_error_data(char *data, int flags); + +unsigned long ERR_get_error(void); +unsigned long ERR_get_error_line(const char **file, int *line); +unsigned long ERR_get_error_line_data(const char **file, int *line, + const char **data, int *flags); +unsigned long ERR_peek_error(void); +unsigned long ERR_peek_error_line(const char **file, int *line); +unsigned long ERR_peek_error_line_data(const char **file, int *line, + const char **data, int *flags); +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_line_data(const char **file, int *line, + const char **data, int *flags); +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); +const char *ERR_func_error_string(unsigned long e); +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); +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); +int ERR_load_ERR_strings(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define ERR_load_crypto_strings() \ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# define ERR_free_strings() while(0) continue +#endif + +DEPRECATEDIN_1_1_0(void ERR_remove_thread_state(void *)) +DEPRECATEDIN_1_0_0(void ERR_remove_state(unsigned long pid)) +ERR_STATE *ERR_get_state(void); + +int ERR_get_next_error_library(void); + +int ERR_set_mark(void); +int ERR_pop_to_mark(void); +int ERR_clear_last_mark(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/evp.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/evp.h new file mode 100644 index 000000000..a411f3f2f --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/evp.h @@ -0,0 +1,1666 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# 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 PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# 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 + +# 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 + +#ifdef __cplusplus +extern "C" { +#endif + +# 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 +EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +void EVP_MD_meth_free(EVP_MD *md); + +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, + const void *data, + size_t count)); +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, + unsigned char *md)); +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, + const EVP_MD_CTX *from)); +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2)); + +int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +int EVP_MD_meth_get_result_size(const EVP_MD *md); +int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, + size_t count); +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); + +/* 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 + +/* 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. + */ + +# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS + * digest in FIPS mode */ + +/* + * 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 is reserved for internal usage */ + +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); + +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +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)); +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)); +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup) (EVP_CIPHER_CTX *)); +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl) (EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); + +int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +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); +int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + int type, int arg, + void *ptr); + +/* 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_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 +/* Allow use default ASN1 get/set iv */ +# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 +/* Buffer length in bits not bytes: CFB1 mode only */ +# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Note if suitable for use in FIPS mode */ +# define EVP_CIPH_FLAG_FIPS 0x4000 +/* Allow non FIPS cipher in FIPS mode */ +# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +# 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 + +/* + * 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 + +# define EVP_CTRL_GET_IVLEN 0x25 + +/* 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); + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) +# endif + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) +# endif + +# ifndef OPENSSL_NO_DH +# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ + (char *)(dh)) +# endif + +# ifndef OPENSSL_NO_EC +# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ + (char *)(eckey)) +# endif +# ifndef OPENSSL_NO_SIPHASH +# define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),EVP_PKEY_SIPHASH,\ + (char *)(shkey)) +# endif + +# ifndef OPENSSL_NO_POLY1305 +# define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),EVP_PKEY_POLY1305,\ + (char *)(polykey)) +# 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_type(const EVP_MD *md); +# define EVP_MD_nid(e) EVP_MD_type(e) +# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) +int EVP_MD_pkey_type(const EVP_MD *md); +int EVP_MD_size(const EVP_MD *md); +int EVP_MD_block_size(const EVP_MD *md); +unsigned long EVP_MD_flags(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update) (EVP_MD_CTX *ctx, + const void *data, size_t count)); +# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) +EVP_PKEY_CTX *EVP_MD_CTX_pkey_ctx(const EVP_MD_CTX *ctx); +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx); + +int EVP_CIPHER_nid(const EVP_CIPHER *cipher); +# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) +int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); +int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); +unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); +# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) + +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_encrypting(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_num(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +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_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(c)) +# endif +# define EVP_CIPHER_CTX_mode(c) EVP_CIPHER_mode(EVP_CIPHER_CTX_cipher(c)) + +# 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) +# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) + +# 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,(char *)(md)) +# endif +# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)(mdp)) +# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0, \ + (char *)(mdcp)) +# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0, \ + (char *)(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, \ + (char *)(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_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 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_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_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 *md, + size_t len); + +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_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_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_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_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_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_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +# ifndef OPENSSL_NO_RSA +__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); +# endif + +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, 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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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); + +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 + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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_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); + +int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, int enc_key_len, + EVP_PKEY *private_key); +int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, int key_len, + EVP_PKEY *pub_key); +int EVP_PKEY_type(int type); +int EVP_PKEY_id(const EVP_PKEY *pkey); +int EVP_PKEY_base_id(const EVP_PKEY *pkey); +int EVP_PKEY_bits(const EVP_PKEY *pkey); +int EVP_PKEY_security_bits(const EVP_PKEY *pkey); +int EVP_PKEY_size(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_alias_type(EVP_PKEY *pkey, int type); +# ifndef OPENSSL_NO_ENGINE +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +# endif +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +# ifndef OPENSSL_NO_POLY1305 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +# endif +# ifndef OPENSSL_NO_SIPHASH +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +# endif + +# ifndef OPENSSL_NO_RSA +struct rsa_st; +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +struct rsa_st *EVP_PKEY_get0_RSA(EVP_PKEY *pkey); +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DSA +struct dsa_st; +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +struct dsa_st *EVP_PKEY_get0_DSA(EVP_PKEY *pkey); +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DH +struct dh_st; +int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +struct dh_st *EVP_PKEY_get0_DH(EVP_PKEY *pkey); +struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_EC +struct ec_key_st; +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +struct ec_key_st *EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey); +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); + +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_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); + +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); + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); + +int EVP_PKEY_set1_tls_encodedpoint(EVP_PKEY *pkey, + const unsigned char *pt, size_t ptlen); +size_t EVP_PKEY_get1_tls_encodedpoint(EVP_PKEY *pkey, unsigned char **ppt); + +int EVP_CIPHER_type(const EVP_CIPHER *ctx); + +/* 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_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); + +#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 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); +#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); + +/* 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); +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 + +int EVP_PKEY_asn1_get_count(void); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +int EVP_PKEY_asn1_add_alias(int to, int from); +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); + +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); +EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode) (EVP_PKEY *pk, + 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)); +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)); +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)); + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free) (EVP_PKEY *pkey)); +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *a, + ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +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)); + +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check) (const EVP_PKEY *pk)); + +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)); +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)); +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)); +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)); + +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits) (const EVP_PKEY + *pk)); + +# define EVP_PKEY_OP_UNDEFINED 0 +# define EVP_PKEY_OP_PARAMGEN (1<<1) +# define EVP_PKEY_OP_KEYGEN (1<<2) +# define EVP_PKEY_OP_SIGN (1<<3) +# define EVP_PKEY_OP_VERIFY (1<<4) +# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) +# define EVP_PKEY_OP_SIGNCTX (1<<6) +# define EVP_PKEY_OP_VERIFYCTX (1<<7) +# define EVP_PKEY_OP_ENCRYPT (1<<8) +# define EVP_PKEY_OP_DECRYPT (1<<9) +# define EVP_PKEY_OP_DERIVE (1<<10) + +# define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | 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_NOGEN \ + (EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT | EVP_PKEY_OP_DERIVE) + +# define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_GET_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_mac_key(ctx, key, len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_SET_MAC_KEY, len, (void *)(key)) + +# define EVP_PKEY_CTRL_MD 1 +# define EVP_PKEY_CTRL_PEER_KEY 2 + +# 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_SET_MAC_KEY 6 + +# define EVP_PKEY_CTRL_DIGESTINIT 7 + +/* Used by GOST key encryption in TLS */ +# define EVP_PKEY_CTRL_SET_IV 8 + +# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +# define EVP_PKEY_CTRL_CMS_DECRYPT 10 +# define EVP_PKEY_CTRL_CMS_SIGN 11 + +# define EVP_PKEY_CTRL_CIPHER 12 + +# define EVP_PKEY_CTRL_GET_MD 13 + +# define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 + +# 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 + +const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); +void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +size_t EVP_PKEY_meth_get_count(void); +const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); + +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_dup(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); + +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(int type, ENGINE *e, + const unsigned char *priv, + 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); + +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(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_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +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_recover_init(EVP_PKEY_CTX *ctx); +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(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(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_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); + +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +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_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); + +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); + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, + int (*copy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, + void (*cleanup) (EVP_PKEY_CTX *ctx)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, + int (*digest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +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)); + +void EVP_PKEY_meth_get_digestsign(EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_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)); + +void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_digest_custom(EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); +void EVP_add_alg_module(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/evperr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/evperr.h new file mode 100644 index 000000000..b4ea90ae9 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/evperr.h @@ -0,0 +1,204 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EVPERR_H +# define HEADER_EVPERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EVP_strings(void); + +/* + * EVP function codes. + */ +# define EVP_F_AESNI_INIT_KEY 165 +# define EVP_F_AESNI_XTS_INIT_KEY 207 +# define EVP_F_AES_GCM_CTRL 196 +# define EVP_F_AES_INIT_KEY 133 +# define EVP_F_AES_OCB_CIPHER 169 +# define EVP_F_AES_T4_INIT_KEY 178 +# define EVP_F_AES_T4_XTS_INIT_KEY 208 +# define EVP_F_AES_WRAP_CIPHER 170 +# define EVP_F_AES_XTS_INIT_KEY 209 +# define EVP_F_ALG_MODULE_INIT 177 +# define EVP_F_ARIA_CCM_INIT_KEY 175 +# define EVP_F_ARIA_GCM_CTRL 197 +# define EVP_F_ARIA_GCM_INIT_KEY 176 +# define EVP_F_ARIA_INIT_KEY 185 +# define EVP_F_B64_NEW 198 +# define EVP_F_CAMELLIA_INIT_KEY 159 +# define EVP_F_CHACHA20_POLY1305_CTRL 182 +# define EVP_F_CMLL_T4_INIT_KEY 179 +# define EVP_F_DES_EDE3_WRAP_CIPHER 171 +# define EVP_F_DO_SIGVER_INIT 161 +# define EVP_F_ENC_NEW 199 +# define EVP_F_EVP_CIPHERINIT_EX 123 +# define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 204 +# define EVP_F_EVP_CIPHER_CTX_COPY 163 +# define EVP_F_EVP_CIPHER_CTX_CTRL 124 +# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 +# define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 205 +# define EVP_F_EVP_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DECRYPTUPDATE 166 +# define EVP_F_EVP_DIGESTFINALXOF 174 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 219 +# define EVP_F_EVP_ENCRYPTFINAL_EX 127 +# define EVP_F_EVP_ENCRYPTUPDATE 167 +# define EVP_F_EVP_MD_CTX_COPY_EX 110 +# define EVP_F_EVP_MD_SIZE 162 +# define EVP_F_EVP_OPENINIT 102 +# define EVP_F_EVP_PBE_ALG_ADD 115 +# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 +# define EVP_F_EVP_PBE_CIPHERINIT 116 +# define EVP_F_EVP_PBE_SCRYPT 181 +# define EVP_F_EVP_PKCS82PKEY 111 +# define EVP_F_EVP_PKEY2PKCS8 113 +# define EVP_F_EVP_PKEY_ASN1_ADD0 188 +# define EVP_F_EVP_PKEY_CHECK 186 +# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 +# define EVP_F_EVP_PKEY_CTX_CTRL 137 +# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 +# define EVP_F_EVP_PKEY_CTX_DUP 156 +# define EVP_F_EVP_PKEY_CTX_MD 168 +# define EVP_F_EVP_PKEY_DECRYPT 104 +# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 +# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 +# define EVP_F_EVP_PKEY_DERIVE 153 +# define EVP_F_EVP_PKEY_DERIVE_INIT 154 +# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 +# define EVP_F_EVP_PKEY_ENCRYPT 105 +# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 +# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 +# define EVP_F_EVP_PKEY_GET0_DH 119 +# define EVP_F_EVP_PKEY_GET0_DSA 120 +# define EVP_F_EVP_PKEY_GET0_EC_KEY 131 +# define EVP_F_EVP_PKEY_GET0_HMAC 183 +# define EVP_F_EVP_PKEY_GET0_POLY1305 184 +# define EVP_F_EVP_PKEY_GET0_RSA 121 +# define EVP_F_EVP_PKEY_GET0_SIPHASH 172 +# define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 202 +# define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 203 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_METH_ADD0 194 +# define EVP_F_EVP_PKEY_METH_NEW 195 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_NEW_CMAC_KEY 193 +# define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 191 +# define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 192 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# define EVP_F_EVP_PKEY_PARAM_CHECK 189 +# define EVP_F_EVP_PKEY_PUBLIC_CHECK 190 +# define EVP_F_EVP_PKEY_SET1_ENGINE 187 +# define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 206 +# define EVP_F_EVP_PKEY_SIGN 140 +# define EVP_F_EVP_PKEY_SIGN_INIT 141 +# define EVP_F_EVP_PKEY_VERIFY 142 +# define EVP_F_EVP_PKEY_VERIFY_INIT 143 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 +# define EVP_F_EVP_SIGNFINAL 107 +# define EVP_F_EVP_VERIFYFINAL 108 +# define EVP_F_INT_CTX_NEW 157 +# define EVP_F_OK_NEW 200 +# define EVP_F_PKCS5_PBE_KEYIVGEN 117 +# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 +# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 +# define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 180 +# define EVP_F_PKEY_SET_TYPE 158 +# define EVP_F_RC2_MAGIC_TO_METH 109 +# define EVP_F_RC5_CTRL 125 +# define EVP_F_R_32_12_16_INIT_KEY 242 +# define EVP_F_S390X_AES_GCM_CTRL 201 +# define EVP_F_UPDATE 173 + +/* + * EVP reason codes. + */ +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ARIA_KEY_SETUP_FAILED 176 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 195 +# define EVP_R_BUFFER_TOO_SMALL 155 +# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +# define EVP_R_CIPHER_PARAMETER_ERROR 122 +# define EVP_R_COMMAND_NOT_SUPPORTED 147 +# 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_DIFFERENT_KEY_TYPES 101 +# define EVP_R_DIFFERENT_PARAMETERS 153 +# define EVP_R_ERROR_LOADING_SECTION 165 +# define EVP_R_ERROR_SETTING_FIPS_MODE 166 +# 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_EC_KEY 142 +# define EVP_R_EXPECTING_A_POLY1305_KEY 164 +# define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 +# define EVP_R_GET_RAW_KEY_FAILED 182 +# define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +# define EVP_R_INITIALIZATION_ERROR 134 +# define EVP_R_INPUT_NOT_INITIALIZED 111 +# define EVP_R_INVALID_DIGEST 152 +# define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_IV_LENGTH 194 +# define EVP_R_INVALID_KEY 163 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_KEYGEN_FAILURE 120 +# define EVP_R_KEY_SETUP_FAILED 180 +# 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_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_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_OUTPUT_WOULD_OVERFLOW 184 +# define EVP_R_PARTIALLY_OVERLAPPING 162 +# define EVP_R_PBKDF2_ERROR 181 +# 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_PUBLIC_KEY_NOT_RSA 106 +# define EVP_R_UNKNOWN_CIPHER 160 +# define EVP_R_UNKNOWN_DIGEST 161 +# define EVP_R_UNKNOWN_OPTION 169 +# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# 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_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_WRAP_MODE_NOT_ALLOWED 170 +# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +# define EVP_R_XTS_DUPLICATED_KEYS 183 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/hmac.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/hmac.h new file mode 100644 index 000000000..458efc1d5 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/hmac.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_HMAC_H +# define HEADER_HMAC_H + +# include + +# include + +# if OPENSSL_API_COMPAT < 0x10200000L +# define HMAC_MAX_MD_CBLOCK 128 /* Deprecated */ +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +size_t HMAC_size(const HMAC_CTX *e); +HMAC_CTX *HMAC_CTX_new(void); +int HMAC_CTX_reset(HMAC_CTX *ctx); +void HMAC_CTX_free(HMAC_CTX *ctx); + +DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md)) + +/*__owur*/ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +/*__owur*/ int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +/*__owur*/ int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *d, size_t n, unsigned char *md, + unsigned int *md_len); +__owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); + +void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/idea.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/idea.h new file mode 100644 index 000000000..4334f3ea7 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/idea.h @@ -0,0 +1,64 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_IDEA_H +# define HEADER_IDEA_H + +# include + +# ifndef OPENSSL_NO_IDEA +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int IDEA_INT; + +# define IDEA_ENCRYPT 1 +# define IDEA_DECRYPT 0 + +# define IDEA_BLOCK 8 +# define IDEA_KEY_LENGTH 16 + +typedef struct idea_key_st { + IDEA_INT data[9][6]; +} IDEA_KEY_SCHEDULE; + +const char *IDEA_options(void); +void IDEA_ecb_encrypt(const unsigned char *in, unsigned char *out, + IDEA_KEY_SCHEDULE *ks); +void IDEA_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks); +void IDEA_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk); +void IDEA_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int enc); +void IDEA_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num, int enc); +void IDEA_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, + int *num); +void IDEA_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/kdf.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/kdf.h new file mode 100644 index 000000000..5abd4c371 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/kdf.h @@ -0,0 +1,97 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDF_H +# define HEADER_KDF_H + +# include +#ifdef __cplusplus +extern "C" { +#endif + +# 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 0 +# define EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY 1 +# define EVP_PKEY_HKDEF_MODE_EXPAND_ONLY 2 + +# define EVP_PKEY_CTX_set_tls1_prf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_tls1_prf_secret(pctx, sec, seclen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SECRET, seclen, (void *)(sec)) + +# define EVP_PKEY_CTX_add1_tls1_prf_seed(pctx, seed, seedlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_TLS_SEED, seedlen, (void *)(seed)) + +# define EVP_PKEY_CTX_set_hkdf_md(pctx, md) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set1_hkdf_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set1_hkdf_key(pctx, key, keylen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_KEY, keylen, (void *)(key)) + +# define EVP_PKEY_CTX_add1_hkdf_info(pctx, info, infolen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_INFO, infolen, (void *)(info)) + +# define EVP_PKEY_CTX_hkdf_mode(pctx, mode) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_HKDF_MODE, mode, NULL) + +# define EVP_PKEY_CTX_set1_pbe_pass(pctx, pass, passlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_PASS, passlen, (void *)(pass)) + +# define EVP_PKEY_CTX_set1_scrypt_salt(pctx, salt, saltlen) \ + EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_SALT, saltlen, (void *)(salt)) + +# define EVP_PKEY_CTX_set_scrypt_N(pctx, n) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_N, n) + +# define EVP_PKEY_CTX_set_scrypt_r(pctx, r) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_R, r) + +# define EVP_PKEY_CTX_set_scrypt_p(pctx, p) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_P, p) + +# define EVP_PKEY_CTX_set_scrypt_maxmem_bytes(pctx, maxmem_bytes) \ + EVP_PKEY_CTX_ctrl_uint64(pctx, -1, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_SCRYPT_MAXMEM_BYTES, maxmem_bytes) + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/kdferr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/kdferr.h new file mode 100644 index 000000000..3f51bd022 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/kdferr.h @@ -0,0 +1,55 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_KDFERR_H +# define HEADER_KDFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_KDF_strings(void); + +/* + * KDF function codes. + */ +# define KDF_F_PKEY_HKDF_CTRL_STR 103 +# define KDF_F_PKEY_HKDF_DERIVE 102 +# define KDF_F_PKEY_HKDF_INIT 108 +# define KDF_F_PKEY_SCRYPT_CTRL_STR 104 +# define KDF_F_PKEY_SCRYPT_CTRL_UINT64 105 +# define KDF_F_PKEY_SCRYPT_DERIVE 109 +# define KDF_F_PKEY_SCRYPT_INIT 106 +# define KDF_F_PKEY_SCRYPT_SET_MEMBUF 107 +# define KDF_F_PKEY_TLS1_PRF_CTRL_STR 100 +# define KDF_F_PKEY_TLS1_PRF_DERIVE 101 +# define KDF_F_PKEY_TLS1_PRF_INIT 110 +# define KDF_F_TLS1_PRF_ALG 111 + +/* + * KDF reason codes. + */ +# define KDF_R_INVALID_DIGEST 100 +# define KDF_R_MISSING_ITERATION_COUNT 109 +# define KDF_R_MISSING_KEY 104 +# define KDF_R_MISSING_MESSAGE_DIGEST 105 +# define KDF_R_MISSING_PARAMETER 101 +# define KDF_R_MISSING_PASS 110 +# define KDF_R_MISSING_SALT 111 +# define KDF_R_MISSING_SECRET 107 +# define KDF_R_MISSING_SEED 106 +# define KDF_R_UNKNOWN_PARAMETER_TYPE 103 +# define KDF_R_VALUE_ERROR 108 +# define KDF_R_VALUE_MISSING 102 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/lhash.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/lhash.h new file mode 100644 index 000000000..2e42d727d --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/lhash.h @@ -0,0 +1,241 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef HEADER_LHASH_H +# define HEADER_LHASH_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +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); +void OPENSSL_LH_free(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); +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 +void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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 + +# define DEFINE_LHASH_OF(type) \ + LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + 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_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + } \ + static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((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 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); \ + } \ + 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(LHASH_OF(type) *lh, \ + void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + 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(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + } \ + LHASH_OF(type) + +DEFINE_LHASH_OF(OPENSSL_STRING); +# ifdef _MSC_VER +/* + * push and pop this warning: + * warning C4090: 'function': different 'const' qualifiers + */ +# pragma warning (push) +# pragma warning (disable: 4090) +# endif + +DEFINE_LHASH_OF(OPENSSL_CSTRING); + +# ifdef _MSC_VER +# pragma warning (pop) +# endif + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_LH_new +# pragma weak OPENSSL_LH_free +# pragma weak OPENSSL_LH_insert +# pragma weak OPENSSL_LH_delete +# pragma weak OPENSSL_LH_retrieve +# pragma weak OPENSSL_LH_error +# pragma weak OPENSSL_LH_num_items +# pragma weak OPENSSL_LH_node_stats_bio +# pragma weak OPENSSL_LH_node_usage_stats_bio +# pragma weak OPENSSL_LH_stats_bio +# pragma weak OPENSSL_LH_get_down_load +# pragma weak OPENSSL_LH_set_down_load +# pragma weak OPENSSL_LH_doall +# pragma weak OPENSSL_LH_doall_arg +# endif /* __SUNPRO_C */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md2.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md2.h new file mode 100644 index 000000000..7faf8e3d6 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md2.h @@ -0,0 +1,44 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD2_H +# define HEADER_MD2_H + +# include + +# ifndef OPENSSL_NO_MD2 +# include +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned char MD2_INT; + +# define MD2_DIGEST_LENGTH 16 +# 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; + +const char *MD2_options(void); +int MD2_Init(MD2_CTX *c); +int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len); +int MD2_Final(unsigned char *md, MD2_CTX *c); +unsigned char *MD2(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md4.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md4.h new file mode 100644 index 000000000..940e29db4 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md4.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD4_H +# define HEADER_MD4_H + +# include + +# ifndef OPENSSL_NO_MD4 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! 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) +# define MD4_DIGEST_LENGTH 16 + +typedef struct MD4state_st { + MD4_LONG A, B, C, D; + MD4_LONG Nl, Nh; + MD4_LONG data[MD4_LBLOCK]; + unsigned int num; +} MD4_CTX; + +int MD4_Init(MD4_CTX *c); +int MD4_Update(MD4_CTX *c, const void *data, size_t len); +int MD4_Final(unsigned char *md, MD4_CTX *c); +unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); +void MD4_Transform(MD4_CTX *c, const unsigned char *b); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md5.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md5.h new file mode 100644 index 000000000..2deb77211 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/md5.h @@ -0,0 +1,50 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MD5_H +# define HEADER_MD5_H + +# include + +# ifndef OPENSSL_NO_MD5 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! 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) +# define MD5_DIGEST_LENGTH 16 + +typedef struct MD5state_st { + MD5_LONG A, B, C, D; + MD5_LONG Nl, Nh; + MD5_LONG data[MD5_LBLOCK]; + unsigned int num; +} MD5_CTX; + +int MD5_Init(MD5_CTX *c); +int MD5_Update(MD5_CTX *c, const void *data, size_t len); +int MD5_Final(unsigned char *md, MD5_CTX *c); +unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md); +void MD5_Transform(MD5_CTX *c, const unsigned char *b); +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/mdc2.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/mdc2.h new file mode 100644 index 000000000..aabd2bfaa --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/mdc2.h @@ -0,0 +1,42 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MDC2_H +# define HEADER_MDC2_H + +# include + +#ifndef OPENSSL_NO_MDC2 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define MDC2_BLOCK 8 +# define MDC2_DIGEST_LENGTH 16 + +typedef struct mdc2_ctx_st { + unsigned int num; + unsigned char data[MDC2_BLOCK]; + DES_cblock h, hh; + int pad_type; /* either 1 or 2, default 1 */ +} MDC2_CTX; + +int MDC2_Init(MDC2_CTX *c); +int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len); +int MDC2_Final(unsigned char *md, MDC2_CTX *c); +unsigned char *MDC2(const unsigned char *d, size_t n, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/modes.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/modes.h new file mode 100644 index 000000000..d544f98d5 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/modes.h @@ -0,0 +1,208 @@ +/* + * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_MODES_H +# define HEADER_MODES_H + +# 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 (*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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/obj_mac.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/obj_mac.h new file mode 100644 index 000000000..53516a06c --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/obj_mac.h @@ -0,0 +1,5198 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#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_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_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_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_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_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_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_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 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 SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,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 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 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 1L,3L,6L,1L,4L,1L,311L,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 1L,3L,6L,1L,4L,1L,311L,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 1L,3L,6L,1L,4L,1L,311L,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 1L,3L,6L,1L,4L,1L,311L,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 1L,3L,6L,1L,4L,1L,311L,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 1L,3L,6L,1L,4L,1L,311L,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 1L,3L,6L,1L,4L,1L,311L,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 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L + +#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_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_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_auditEntity "ac-auditEntity" +#define NID_ac_auditEntity 287 +#define OBJ_ac_auditEntity OBJ_id_pe,4L + +#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_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_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_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_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_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_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 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_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L,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_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_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_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_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 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_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_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_id_tc26_cipher_gostr3412_2015_magma_ctracpkm "id-tc26-cipher-gostr3412-2015-magma-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm 1174 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac 1175 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_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_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm 1177 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac 1178 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_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_id_tc26_wrap_gostr3412_2015_magma_kexp15 "id-tc26-wrap-gostr3412-2015-magma-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 1181 +#define OBJ_id_tc26_wrap_gostr3412_2015_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_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 "id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1183 +#define OBJ_id_tc26_wrap_gostr3412_2015_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_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_grasshopper_ecb "grasshopper-ecb" +#define NID_grasshopper_ecb 1012 + +#define SN_grasshopper_ctr "grasshopper-ctr" +#define NID_grasshopper_ctr 1013 + +#define SN_grasshopper_ofb "grasshopper-ofb" +#define NID_grasshopper_ofb 1014 + +#define SN_grasshopper_cbc "grasshopper-cbc" +#define NID_grasshopper_cbc 1015 + +#define SN_grasshopper_cfb "grasshopper-cfb" +#define NID_grasshopper_cfb 1016 + +#define SN_grasshopper_mac "grasshopper-mac" +#define NID_grasshopper_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_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_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_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_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_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 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,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_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_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_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 diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/objects.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/objects.h new file mode 100644 index 000000000..5e8b5762f --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/objects.h @@ -0,0 +1,175 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJECTS_H +# define HEADER_OBJECTS_H + +# 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_NUM 0x05 + +# 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); + +ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o); +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); +#if OPENSSL_API_COMPAT < 0x10100000L +# 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); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/objectserr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/objectserr.h new file mode 100644 index 000000000..02e166f1a --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/objectserr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJERR_H +# define HEADER_OBJERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OBJ_strings(void); + +/* + * OBJ function codes. + */ +# define OBJ_F_OBJ_ADD_OBJECT 105 +# define OBJ_F_OBJ_ADD_SIGID 107 +# define OBJ_F_OBJ_CREATE 100 +# define OBJ_F_OBJ_DUP 101 +# define OBJ_F_OBJ_NAME_NEW_INDEX 106 +# define OBJ_F_OBJ_NID2LN 102 +# define OBJ_F_OBJ_NID2OBJ 103 +# define OBJ_F_OBJ_NID2SN 104 +# define OBJ_F_OBJ_TXT2OBJ 108 + +/* + * OBJ reason codes. + */ +# define OBJ_R_OID_EXISTS 102 +# define OBJ_R_UNKNOWN_NID 101 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ocsp.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ocsp.h new file mode 100644 index 000000000..4d759a49d --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ocsp.h @@ -0,0 +1,352 @@ +/* + * Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSP_H +# define HEADER_OCSP_H + +#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), + * removeFromCRL (8) } + */ +# 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 + + +# ifndef OPENSSL_NO_OCSP + +# include +# 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 + +typedef struct ocsp_cert_id_st OCSP_CERTID; + +DEFINE_STACK_OF(OCSP_CERTID) + +typedef struct ocsp_one_request_st OCSP_ONEREQ; + +DEFINE_STACK_OF(OCSP_ONEREQ) + +typedef struct ocsp_req_info_st OCSP_REQINFO; +typedef struct ocsp_signature_st OCSP_SIGNATURE; +typedef struct ocsp_request_st OCSP_REQUEST; + +# 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 + +DEFINE_STACK_OF(OCSP_RESPID) + +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; + +DEFINE_STACK_OF(OCSP_SINGLERESP) + +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( \ + (char *(*)())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(\ + (char *(*)())d2i_OCSP_RESPONSE,PEM_STRING_OCSP_RESPONSE, \ + bp,(char **)(x),cb,NULL) + +# define PEM_write_bio_OCSP_REQUEST(bp,o) \ + PEM_ASN1_write_bio((int (*)())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((int (*)())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((int(*)())i2d_OCSP_CERTSTATUS,\ + (char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs)) + +OCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id); + +OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); +OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, OCSP_REQUEST *req, + int maxline); +int OCSP_REQ_CTX_nbio(OCSP_REQ_CTX *rctx); +int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx); +OCSP_REQ_CTX *OCSP_REQ_CTX_new(BIO *io, int maxline); +void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx); +void OCSP_set_max_response_length(OCSP_REQ_CTX *rctx, unsigned long len); +int OCSP_REQ_CTX_i2d(OCSP_REQ_CTX *rctx, const ASN1_ITEM *it, + ASN1_VALUE *val); +int OCSP_REQ_CTX_nbio_d2i(OCSP_REQ_CTX *rctx, ASN1_VALUE **pval, + const ASN1_ITEM *it); +BIO *OCSP_REQ_CTX_get0_mem_bio(OCSP_REQ_CTX *rctx); +int OCSP_REQ_CTX_http(OCSP_REQ_CTX *rctx, const char *op, const char *path); +int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req); +int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx, + const char *name, const char *value); + +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, 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); + +int OCSP_parse_url(const char *url, char **phost, char **pport, char **ppath, + int *pssl); + +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(OCSP_RESPID *respid, X509 *cert); +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(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 +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ocsperr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ocsperr.h new file mode 100644 index 000000000..8dd9e01a1 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ocsperr.h @@ -0,0 +1,78 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OCSPERR_H +# define HEADER_OCSPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_OCSP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OCSP_strings(void); + +/* + * OCSP function codes. + */ +# define OCSP_F_D2I_OCSP_NONCE 102 +# define OCSP_F_OCSP_BASIC_ADD1_STATUS 103 +# define OCSP_F_OCSP_BASIC_SIGN 104 +# define OCSP_F_OCSP_BASIC_SIGN_CTX 119 +# define OCSP_F_OCSP_BASIC_VERIFY 105 +# define OCSP_F_OCSP_CERT_ID_NEW 101 +# define OCSP_F_OCSP_CHECK_DELEGATED 106 +# define OCSP_F_OCSP_CHECK_IDS 107 +# define OCSP_F_OCSP_CHECK_ISSUER 108 +# define OCSP_F_OCSP_CHECK_VALIDITY 115 +# define OCSP_F_OCSP_MATCH_ISSUERID 109 +# define OCSP_F_OCSP_PARSE_URL 114 +# define OCSP_F_OCSP_REQUEST_SIGN 110 +# define OCSP_F_OCSP_REQUEST_VERIFY 116 +# define OCSP_F_OCSP_RESPONSE_GET1_BASIC 111 +# define OCSP_F_PARSE_HTTP_LINE1 118 + +/* + * OCSP reason codes. + */ +# define OCSP_R_CERTIFICATE_VERIFY_ERROR 101 +# define OCSP_R_DIGEST_ERR 102 +# define OCSP_R_ERROR_IN_NEXTUPDATE_FIELD 122 +# define OCSP_R_ERROR_IN_THISUPDATE_FIELD 123 +# define OCSP_R_ERROR_PARSING_URL 121 +# 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_SERVER_RESPONSE_ERROR 114 +# define OCSP_R_SERVER_RESPONSE_PARSE_ERROR 115 +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/opensslconf.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/opensslconf.h new file mode 100644 index 000000000..a1c95e54d --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/opensslconf.h @@ -0,0 +1,642 @@ +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with 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 + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_MacOSX +# define OPENSSL_SYS_MacOSX 1 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#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_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#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_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_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; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#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 + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#undef RC4_INT +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif +#if defined(__APPLE__) && defined (__x86_64__) +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with 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 + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_MacOSX +# define OPENSSL_SYS_MacOSX 1 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#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_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#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_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_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; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#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 + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#undef RC4_INT +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif +#elif defined(__APPLE__) && defined (__arm64__) +/* + * WARNING: do not edit! + * Generated by Makefile from include/openssl/opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with 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 + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_MacOSX +# define OPENSSL_SYS_MacOSX 1 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#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_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#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_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_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; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#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 + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# define SIXTY_FOUR_BIT_LONG +# undef SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#undef RC4_INT +#define RC4_INT unsigned char + +#ifdef __cplusplus +} +#endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/opensslv.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/opensslv.h new file mode 100644 index 000000000..5667d4712 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/opensslv.h @@ -0,0 +1,101 @@ +/* + * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSLV_H +# define HEADER_OPENSSLV_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * Numeric release version identifier: + * MNNFFPPS: major minor fix patch status + * The status nibble has one of the values 0 for development, 1 to e for betas + * 1 to 14, and f for release. The patch level is exactly that. + * For example: + * 0.9.3-dev 0x00903000 + * 0.9.3-beta1 0x00903001 + * 0.9.3-beta2-dev 0x00903002 + * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) + * 0.9.3 0x0090300f + * 0.9.3a 0x0090301f + * 0.9.4 0x0090400f + * 1.2.3z 0x102031af + * + * For continuity reasons (because 0.9.5 is already out, and is coded + * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level + * part is slightly different, by setting the highest bit. This means + * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start + * with 0x0090600S... + * + * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.) + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +# define OPENSSL_VERSION_NUMBER 0x1010117fL +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1w 11 Sep 2023" + +/*- + * The macros below are to be used for shared library (.so, .dll, ...) + * versioning. That kind of versioning works a bit differently between + * operating systems. The most usual scheme is to set a major and a minor + * number, and have the runtime loader check that the major number is equal + * to what it was at application link time, while the minor number has to + * be greater or equal to what it was at application link time. With this + * scheme, the version number is usually part of the file name, like this: + * + * libcrypto.so.0.9 + * + * Some unixen also make a softlink with the major version number only: + * + * libcrypto.so.0 + * + * On Tru64 and IRIX 6.x it works a little bit differently. There, the + * shared library version is stored in the file, and is actually a series + * of versions, separated by colons. The rightmost version present in the + * library when linking an application is stored in the application to be + * matched at run time. When the application is run, a check is done to + * see if the library version stored in the application matches any of the + * versions in the version string of the library itself. + * This version string can be constructed in any way, depending on what + * kind of matching is desired. However, to implement the same scheme as + * the one used in the other unixen, all compatible versions, from lowest + * to highest, should be part of the string. Consecutive builds would + * give the following versions strings: + * + * 3.0 + * 3.0:3.1 + * 3.0:3.1:3.2 + * 4.0 + * 4.0:4.1 + * + * Notice how version 4 is completely incompatible with version, and + * therefore give the breach you can see. + * + * There may be other schemes as well that I haven't yet discovered. + * + * So, here's the way it works here: first of all, the library version + * number doesn't need at all to match the overall OpenSSL version. + * However, it's nice and more understandable if it actually does. + * The current library version is stored in the macro SHLIB_VERSION_NUMBER, + * which is just a piece of text in the format "M.m.e" (Major, minor, edit). + * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, + * we need to keep a history of version numbers, which is done in the + * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and + * should only keep the versions that are binary compatible with the current. + */ +# define SHLIB_VERSION_HISTORY "" +# define SHLIB_VERSION_NUMBER "1.1" + + +#ifdef __cplusplus +} +#endif +#endif /* HEADER_OPENSSLV_H */ diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ossl_typ.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ossl_typ.h new file mode 100644 index 000000000..e0edfaaf4 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ossl_typ.h @@ -0,0 +1,197 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSL_TYPES_H +# define HEADER_OPENSSL_TYPES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# 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_object_st ASN1_OBJECT; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +# ifdef _WIN32 +# undef X509_NAME +# undef X509_EXTENSIONS +# undef PKCS7_ISSUER_AND_SERIAL +# undef PKCS7_SIGNER_INFO +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +# ifdef BIGNUM +# undef BIGNUM +# endif +struct dane_st; +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; + +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_pkey_st EVP_PKEY; + +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_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; + +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; + +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; + +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 ocsp_req_ctx_st OCSP_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; + +#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 +/* + * Not long long, because the C-library can only be expected to provide + * strtoll(), strtoull() at the same time as intmax_t and strtoimax(), + * strtoumax(). Since we use these for parsing arguments, we need the + * conversion functions, not just the sizes. + */ +typedef long ossl_intmax_t; +typedef unsigned long ossl_uintmax_t; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pem.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pem.h new file mode 100644 index 000000000..2ef5b5d04 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pem.h @@ -0,0 +1,378 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM_H +# define HEADER_PEM_H + +# include +# include +# include +# include +# include +# include + +#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_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(...) + */ + +# ifdef OPENSSL_NO_STDIO + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# 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) \ +int PEM_write_##name(FILE *fp, type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, const type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# 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) \ +int PEM_write_bio_##name(BIO *bp, type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, const type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# 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) + +# 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) + +# 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) + +# 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) + +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) + +# 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 */ + +# if defined(OPENSSL_NO_STDIO) + +# define DECLARE_PEM_read_fp(name, type) /**/ +# define DECLARE_PEM_write_fp(name, type) /**/ +# define DECLARE_PEM_write_fp_const(name, type) /**/ +# define DECLARE_PEM_write_cb_fp(name, type) /**/ +# else + +# define DECLARE_PEM_read_fp(name, type) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x); + +# define DECLARE_PEM_write_fp_const(name, type) \ + int PEM_write_##name(FILE *fp, const type *x); + +# define DECLARE_PEM_write_cb_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# endif + +# define DECLARE_PEM_read_bio(name, type) \ + type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x); + +# define DECLARE_PEM_write_bio_const(name, type) \ + int PEM_write_bio_##name(BIO *bp, const type *x); + +# define DECLARE_PEM_write_cb_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_fp(name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_fp_const(name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_fp(name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_fp(name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write(name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_const(name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_cb(name, type) +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); + +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, void *x, + const EVP_CIPHER *enc, 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); +int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, + 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, + void *x, const EVP_CIPHER *enc, 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); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, 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, 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(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_RSA +DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) +DECLARE_PEM_rw_const(RSAPublicKey, RSA) +DECLARE_PEM_rw(RSA_PUBKEY, RSA) +# endif +# ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) +DECLARE_PEM_rw(DSA_PUBKEY, DSA) +DECLARE_PEM_rw_const(DSAparams, DSA) +# endif +# ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) +DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) +# endif +# ifndef OPENSSL_NO_DH +DECLARE_PEM_rw_const(DHparams, DH) +DECLARE_PEM_write_const(DHxparams, DH) +# endif +DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, EVP_PKEY *x, + const EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, + char *, int, pem_password_cb *, void *); +int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, + 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, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, + 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, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, pem_password_cb *cd, + void *u); +# endif +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); + +# ifndef OPENSSL_NO_DSA +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, EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); +# ifndef OPENSSL_NO_RC4 +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +# endif +# endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pem2.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pem2.h new file mode 100644 index 000000000..038fe790a --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pem2.h @@ -0,0 +1,13 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM2_H +# define HEADER_PEM2_H +# include +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pemerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pemerr.h new file mode 100644 index 000000000..4f7e3574b --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pemerr.h @@ -0,0 +1,105 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEMERR_H +# define HEADER_PEMERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PEM_strings(void); + +/* + * PEM function codes. + */ +# define PEM_F_B2I_DSS 127 +# define PEM_F_B2I_PVK_BIO 128 +# define PEM_F_B2I_RSA 129 +# define PEM_F_CHECK_BITLEN_DSA 130 +# define PEM_F_CHECK_BITLEN_RSA 131 +# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 +# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 +# define PEM_F_DO_B2I 132 +# define PEM_F_DO_B2I_BIO 133 +# define PEM_F_DO_BLOB_HEADER 134 +# define PEM_F_DO_I2B 146 +# define PEM_F_DO_PK8PKEY 126 +# define PEM_F_DO_PK8PKEY_FP 125 +# define PEM_F_DO_PVK_BODY 135 +# define PEM_F_DO_PVK_HEADER 136 +# define PEM_F_GET_HEADER_AND_DATA 143 +# define PEM_F_GET_NAME 144 +# define PEM_F_I2B_PVK 137 +# define PEM_F_I2B_PVK_BIO 138 +# define PEM_F_LOAD_IV 101 +# define PEM_F_PEM_ASN1_READ 102 +# define PEM_F_PEM_ASN1_READ_BIO 103 +# define PEM_F_PEM_ASN1_WRITE 104 +# define PEM_F_PEM_ASN1_WRITE_BIO 105 +# define PEM_F_PEM_DEF_CALLBACK 100 +# define PEM_F_PEM_DO_HEADER 106 +# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 +# define PEM_F_PEM_READ 108 +# define PEM_F_PEM_READ_BIO 109 +# define PEM_F_PEM_READ_BIO_DHPARAMS 141 +# define PEM_F_PEM_READ_BIO_EX 145 +# define PEM_F_PEM_READ_BIO_PARAMETERS 140 +# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 +# define PEM_F_PEM_READ_DHPARAMS 142 +# define PEM_F_PEM_READ_PRIVATEKEY 124 +# define PEM_F_PEM_SIGNFINAL 112 +# define PEM_F_PEM_WRITE 113 +# define PEM_F_PEM_WRITE_BIO 114 +# define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 147 +# define PEM_F_PEM_WRITE_PRIVATEKEY 139 +# define PEM_F_PEM_X509_INFO_READ 115 +# define PEM_F_PEM_X509_INFO_READ_BIO 116 +# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 + +/* + * 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_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# 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 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs12.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs12.h new file mode 100644 index 000000000..3f43dad6d --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs12.h @@ -0,0 +1,223 @@ +/* + * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12_H +# define HEADER_PKCS12_H + +# include +# include +# include + +#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 + +# define PKCS12_SALT_LEN 8 + +/* 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; + +DEFINE_STACK_OF(PKCS12_SAFEBAG) + +typedef struct pkcs12_bag_st PKCS12_BAGS; + +# define PKCS12_ERROR 0 +# define PKCS12_OK 1 + +/* Compatibility macros */ + +#if OPENSSL_API_COMPAT < 0x10100000L + +# 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 + +DEPRECATEDIN_1_1_0(ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, int attr_nid)) + +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); + +X509 *PKCS12_SAFEBAG_get1_cert(const PKCS12_SAFEBAG *bag); +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_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_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 *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, + const char *pass, int passlen); +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_set0_pbe(const char *pass, int passlen, + PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); +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); +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 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); +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); +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); +ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, + const ASN1_ITEM *it, + const char *pass, int passlen, + void *obj, int zbuf); +PKCS12 *PKCS12_init(int mode); +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_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_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_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_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_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); +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_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); +int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, + int safe_nid, int iter, const char *pass); +PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); + +int i2d_PKCS12_bio(BIO *bp, PKCS12 *p12); +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS12_fp(FILE *fp, 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs12err.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs12err.h new file mode 100644 index 000000000..eff5eb260 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs12err.h @@ -0,0 +1,81 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS12ERR_H +# define HEADER_PKCS12ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS12_strings(void); + +/* + * PKCS12 function codes. + */ +# define PKCS12_F_OPENSSL_ASC2UNI 121 +# define PKCS12_F_OPENSSL_UNI2ASC 124 +# define PKCS12_F_OPENSSL_UNI2UTF8 127 +# define PKCS12_F_OPENSSL_UTF82UNI 129 +# define PKCS12_F_PKCS12_CREATE 105 +# define PKCS12_F_PKCS12_GEN_MAC 107 +# define PKCS12_F_PKCS12_INIT 109 +# define PKCS12_F_PKCS12_ITEM_DECRYPT_D2I 106 +# define PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT 108 +# define PKCS12_F_PKCS12_ITEM_PACK_SAFEBAG 117 +# define PKCS12_F_PKCS12_KEY_GEN_ASC 110 +# define PKCS12_F_PKCS12_KEY_GEN_UNI 111 +# define PKCS12_F_PKCS12_KEY_GEN_UTF8 116 +# define PKCS12_F_PKCS12_NEWPASS 128 +# define PKCS12_F_PKCS12_PACK_P7DATA 114 +# define PKCS12_F_PKCS12_PACK_P7ENCDATA 115 +# define PKCS12_F_PKCS12_PARSE 118 +# define PKCS12_F_PKCS12_PBE_CRYPT 119 +# define PKCS12_F_PKCS12_PBE_KEYIVGEN 120 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_P8INF 112 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE0_PKCS8 113 +# define PKCS12_F_PKCS12_SAFEBAG_CREATE_PKCS8_ENCRYPT 133 +# define PKCS12_F_PKCS12_SETUP_MAC 122 +# define PKCS12_F_PKCS12_SET_MAC 123 +# define PKCS12_F_PKCS12_UNPACK_AUTHSAFES 130 +# define PKCS12_F_PKCS12_UNPACK_P7DATA 131 +# define PKCS12_F_PKCS12_VERIFY_MAC 126 +# define PKCS12_F_PKCS8_ENCRYPT 125 +# define PKCS12_F_PKCS8_SET0_PBE 132 + +/* + * PKCS12 reason codes. + */ +# 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_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_ALGOR_CIPHERINIT_ERROR 115 +# define PKCS12_R_PKCS12_CIPHERFINAL_ERROR 116 +# define PKCS12_R_PKCS12_PBE_CRYPT_ERROR 117 +# define PKCS12_R_UNKNOWN_DIGEST_ALGORITHM 118 +# define PKCS12_R_UNSUPPORTED_PKCS12_MODE 119 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs7.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs7.h new file mode 100644 index 000000000..9b66e002d --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs7.h @@ -0,0 +1,319 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7_H +# define HEADER_PKCS7_H + +# include +# include +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +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; + ASN1_OCTET_STRING *enc_digest; + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; +} PKCS7_SIGNER_INFO; + +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) + +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 */ +} PKCS7_RECIP_INFO; + +DEFINE_STACK_OF(PKCS7_RECIP_INFO) + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + 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; +} 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 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + 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; + /* 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; + +DEFINE_STACK_OF(PKCS7) + +# 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, PKCS7 *p7); +# endif +PKCS7 *PKCS7_dup(PKCS7 *p7); +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, 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) + +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_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 *x509); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +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 *x509); + +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_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(PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(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_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); +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(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs7err.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs7err.h new file mode 100644 index 000000000..02e0299a3 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/pkcs7err.h @@ -0,0 +1,103 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7ERR_H +# define HEADER_PKCS7ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS7_strings(void); + +/* + * PKCS7 function codes. + */ +# define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136 +# define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135 +# define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118 +# define PKCS7_F_PKCS7_ADD_CERTIFICATE 100 +# define PKCS7_F_PKCS7_ADD_CRL 101 +# define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102 +# define PKCS7_F_PKCS7_ADD_SIGNATURE 131 +# define PKCS7_F_PKCS7_ADD_SIGNER 103 +# define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125 +# define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138 +# define PKCS7_F_PKCS7_CTRL 104 +# define PKCS7_F_PKCS7_DATADECODE 112 +# define PKCS7_F_PKCS7_DATAFINAL 128 +# define PKCS7_F_PKCS7_DATAINIT 105 +# define PKCS7_F_PKCS7_DATAVERIFY 107 +# define PKCS7_F_PKCS7_DECRYPT 114 +# define PKCS7_F_PKCS7_DECRYPT_RINFO 133 +# define PKCS7_F_PKCS7_ENCODE_RINFO 132 +# define PKCS7_F_PKCS7_ENCRYPT 115 +# define PKCS7_F_PKCS7_FINAL 134 +# define PKCS7_F_PKCS7_FIND_DIGEST 127 +# define PKCS7_F_PKCS7_GET0_SIGNERS 124 +# define PKCS7_F_PKCS7_RECIP_INFO_SET 130 +# define PKCS7_F_PKCS7_SET_CIPHER 108 +# define PKCS7_F_PKCS7_SET_CONTENT 109 +# define PKCS7_F_PKCS7_SET_DIGEST 126 +# define PKCS7_F_PKCS7_SET_TYPE 110 +# define PKCS7_F_PKCS7_SIGN 116 +# define PKCS7_F_PKCS7_SIGNATUREVERIFY 113 +# define PKCS7_F_PKCS7_SIGNER_INFO_SET 129 +# define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139 +# define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137 +# define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119 +# define PKCS7_F_PKCS7_VERIFY 117 + +/* + * 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rand.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rand.h new file mode 100644 index 000000000..38a2a2718 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rand.h @@ -0,0 +1,77 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RAND_H +# define HEADER_RAND_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +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); +}; + +int RAND_set_rand_method(const RAND_METHOD *meth); +const RAND_METHOD *RAND_get_rand_method(void); +# ifndef OPENSSL_NO_ENGINE +int RAND_set_rand_engine(ENGINE *engine); +# endif + +RAND_METHOD *RAND_OpenSSL(void); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define RAND_cleanup() while(0) continue +# endif +int RAND_bytes(unsigned char *buf, int num); +int RAND_priv_bytes(unsigned char *buf, int num); +DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num)) + +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 */ +DEPRECATEDIN_1_1_0(void RAND_screen(void)) +DEPRECATEDIN_1_1_0(int RAND_event(UINT, WPARAM, LPARAM)) +# endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rand_drbg.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rand_drbg.h new file mode 100644 index 000000000..45b731b73 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rand_drbg.h @@ -0,0 +1,130 @@ +/* + * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DRBG_RAND_H +# define HEADER_DRBG_RAND_H + +# include +# include +# include + +/* + * RAND_DRBG flags + * + * Note: if new flags are added, the constant `rand_drbg_used_flags` + * in drbg_lib.c needs to be updated accordingly. + */ + +/* In CTR mode, disable derivation function ctr_df */ +# define RAND_DRBG_FLAG_CTR_NO_DF 0x1 + + +# if OPENSSL_API_COMPAT < 0x10200000L +/* This #define was replaced by an internal constant and should not be used. */ +# define RAND_DRBG_USED_FLAGS (RAND_DRBG_FLAG_CTR_NO_DF) +# 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. + * + * RAND_DRBG_STRENGTH is currently only used for the legacy RAND + * implementation. + * + * Currently supported ciphers are: NID_aes_128_ctr, NID_aes_192_ctr and + * NID_aes_256_ctr + */ +# define RAND_DRBG_STRENGTH 256 +/* Default drbg type */ +# define RAND_DRBG_TYPE NID_aes_256_ctr +/* Default drbg flags */ +# define RAND_DRBG_FLAGS 0 + + +# ifdef __cplusplus +extern "C" { +# endif + +/* + * Object lifetime functions. + */ +RAND_DRBG *RAND_DRBG_new(int type, unsigned int flags, RAND_DRBG *parent); +RAND_DRBG *RAND_DRBG_secure_new(int type, unsigned int flags, RAND_DRBG *parent); +int RAND_DRBG_set(RAND_DRBG *drbg, int type, unsigned int flags); +int RAND_DRBG_set_defaults(int type, unsigned int flags); +int RAND_DRBG_instantiate(RAND_DRBG *drbg, + const unsigned char *pers, size_t perslen); +int RAND_DRBG_uninstantiate(RAND_DRBG *drbg); +void RAND_DRBG_free(RAND_DRBG *drbg); + +/* + * Object "use" functions. + */ +int RAND_DRBG_reseed(RAND_DRBG *drbg, + const unsigned char *adin, size_t adinlen, + int prediction_resistance); +int RAND_DRBG_generate(RAND_DRBG *drbg, unsigned char *out, size_t outlen, + int prediction_resistance, + const unsigned char *adin, size_t adinlen); +int RAND_DRBG_bytes(RAND_DRBG *drbg, unsigned char *out, size_t outlen); + +int RAND_DRBG_set_reseed_interval(RAND_DRBG *drbg, unsigned int interval); +int RAND_DRBG_set_reseed_time_interval(RAND_DRBG *drbg, time_t interval); + +int RAND_DRBG_set_reseed_defaults( + unsigned int master_reseed_interval, + unsigned int slave_reseed_interval, + time_t master_reseed_time_interval, + time_t slave_reseed_time_interval + ); + +RAND_DRBG *RAND_DRBG_get0_master(void); +RAND_DRBG *RAND_DRBG_get0_public(void); +RAND_DRBG *RAND_DRBG_get0_private(void); + +/* + * EXDATA + */ +# define RAND_DRBG_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DRBG, l, p, newf, dupf, freef) +int RAND_DRBG_set_ex_data(RAND_DRBG *drbg, int idx, void *arg); +void *RAND_DRBG_get_ex_data(const RAND_DRBG *drbg, int idx); + +/* + * Callback function typedefs + */ +typedef size_t (*RAND_DRBG_get_entropy_fn)(RAND_DRBG *drbg, + unsigned char **pout, + int entropy, size_t min_len, + size_t max_len, + int prediction_resistance); +typedef void (*RAND_DRBG_cleanup_entropy_fn)(RAND_DRBG *ctx, + unsigned char *out, size_t outlen); +typedef size_t (*RAND_DRBG_get_nonce_fn)(RAND_DRBG *drbg, unsigned char **pout, + int entropy, size_t min_len, + size_t max_len); +typedef void (*RAND_DRBG_cleanup_nonce_fn)(RAND_DRBG *drbg, + unsigned char *out, size_t outlen); + +int RAND_DRBG_set_callbacks(RAND_DRBG *drbg, + RAND_DRBG_get_entropy_fn get_entropy, + RAND_DRBG_cleanup_entropy_fn cleanup_entropy, + RAND_DRBG_get_nonce_fn get_nonce, + RAND_DRBG_cleanup_nonce_fn cleanup_nonce); + + +# ifdef __cplusplus +} +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/randerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/randerr.h new file mode 100644 index 000000000..79d57905e --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/randerr.h @@ -0,0 +1,94 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RANDERR_H +# define HEADER_RANDERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RAND_strings(void); + +/* + * RAND function codes. + */ +# define RAND_F_DATA_COLLECT_METHOD 127 +# define RAND_F_DRBG_BYTES 101 +# define RAND_F_DRBG_GET_ENTROPY 105 +# define RAND_F_DRBG_SETUP 117 +# define RAND_F_GET_ENTROPY 106 +# define RAND_F_RAND_BYTES 100 +# define RAND_F_RAND_DRBG_ENABLE_LOCKING 119 +# define RAND_F_RAND_DRBG_GENERATE 107 +# define RAND_F_RAND_DRBG_GET_ENTROPY 120 +# define RAND_F_RAND_DRBG_GET_NONCE 123 +# define RAND_F_RAND_DRBG_INSTANTIATE 108 +# define RAND_F_RAND_DRBG_NEW 109 +# define RAND_F_RAND_DRBG_RESEED 110 +# define RAND_F_RAND_DRBG_RESTART 102 +# define RAND_F_RAND_DRBG_SET 104 +# define RAND_F_RAND_DRBG_SET_DEFAULTS 121 +# define RAND_F_RAND_DRBG_UNINSTANTIATE 118 +# define RAND_F_RAND_LOAD_FILE 111 +# define RAND_F_RAND_POOL_ACQUIRE_ENTROPY 122 +# define RAND_F_RAND_POOL_ADD 103 +# define RAND_F_RAND_POOL_ADD_BEGIN 113 +# define RAND_F_RAND_POOL_ADD_END 114 +# define RAND_F_RAND_POOL_ATTACH 124 +# define RAND_F_RAND_POOL_BYTES_NEEDED 115 +# define RAND_F_RAND_POOL_GROW 125 +# define RAND_F_RAND_POOL_NEW 116 +# define RAND_F_RAND_PSEUDO_BYTES 126 +# define RAND_F_RAND_WRITE_FILE 112 + +/* + * 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_INTERNAL_ERROR 113 +# 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_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_UNSUPPORTED_DRBG_FLAGS 132 +# define RAND_R_UNSUPPORTED_DRBG_TYPE 120 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc2.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc2.h new file mode 100644 index 000000000..585f9e4c3 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc2.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC2_H +# define HEADER_RC2_H + +# include + +# ifndef OPENSSL_NO_RC2 +# ifdef __cplusplus +extern "C" { +# endif + +typedef unsigned int RC2_INT; + +# define RC2_ENCRYPT 1 +# define RC2_DECRYPT 0 + +# define RC2_BLOCK 8 +# define RC2_KEY_LENGTH 16 + +typedef struct rc2_key_st { + RC2_INT data[64]; +} RC2_KEY; + +void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits); +void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC2_KEY *key, int enc); +void RC2_encrypt(unsigned long *data, RC2_KEY *key); +void RC2_decrypt(unsigned long *data, RC2_KEY *key); +void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, + RC2_KEY *ks, unsigned char *iv, int enc); +void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num, int enc); +void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC2_KEY *schedule, unsigned char *ivec, + int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc4.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc4.h new file mode 100644 index 000000000..86803b37f --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc4.h @@ -0,0 +1,36 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC4_H +# define HEADER_RC4_H + +# include + +# ifndef OPENSSL_NO_RC4 +# include +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct rc4_key_st { + RC4_INT x, y; + RC4_INT data[256]; +} RC4_KEY; + +const char *RC4_options(void); +void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); +void RC4(RC4_KEY *key, size_t len, const unsigned char *indata, + unsigned char *outdata); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc5.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc5.h new file mode 100644 index 000000000..793f88e4e --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rc5.h @@ -0,0 +1,63 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RC5_H +# define HEADER_RC5_H + +# include + +# ifndef OPENSSL_NO_RC5 +# ifdef __cplusplus +extern "C" { +# endif + +# define RC5_ENCRYPT 1 +# define RC5_DECRYPT 0 + +# define RC5_32_INT unsigned int + +# define RC5_32_BLOCK 8 +# define RC5_32_KEY_LENGTH 16/* This is a default, max is 255 */ + +/* + * 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; + +void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, + int rounds); +void RC5_32_ecb_encrypt(const unsigned char *in, unsigned char *out, + RC5_32_KEY *key, int enc); +void RC5_32_encrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_decrypt(unsigned long *data, RC5_32_KEY *key); +void RC5_32_cbc_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *ks, unsigned char *iv, + int enc); +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); +void RC5_32_ofb64_encrypt(const unsigned char *in, unsigned char *out, + long length, RC5_32_KEY *schedule, + unsigned char *ivec, int *num); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ripemd.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ripemd.h new file mode 100644 index 000000000..c42026aa4 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ripemd.h @@ -0,0 +1,47 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RIPEMD_H +# define HEADER_RIPEMD_H + +# include + +#ifndef OPENSSL_NO_RMD160 +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define RIPEMD160_LONG unsigned int + +# define RIPEMD160_CBLOCK 64 +# define RIPEMD160_LBLOCK (RIPEMD160_CBLOCK/4) +# define RIPEMD160_DIGEST_LENGTH 20 + +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; + +int RIPEMD160_Init(RIPEMD160_CTX *c); +int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len); +int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); +unsigned char *RIPEMD160(const unsigned char *d, size_t n, unsigned char *md); +void RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *b); + +# ifdef __cplusplus +} +# endif +# endif + + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rsa.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rsa.h new file mode 100644 index 000000000..5e76365c0 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rsa.h @@ -0,0 +1,513 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSA_H +# define HEADER_RSA_H + +# include + +# ifndef OPENSSL_NO_RSA +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +# ifndef OPENSSL_RSA_MAX_MODULUS_BITS +# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +# endif + +# define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 1024 + +# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +# endif +# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS + +/* exponent limit enforced for "large" modulus only */ +# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +# endif + +# define RSA_3 0x3L +# define RSA_F4 0x10001L + +/* 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/* don't check pub/private + * match */ + +# 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 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define RSA_FLAG_NO_CONSTTIME 0x0000 +# endif +# if OPENSSL_API_COMPAT < 0x00908000L +/* 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. + */ +# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +# endif + +# define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_RSA_PADDING, pad, NULL) + +# define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad) + +# define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) +/* 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 +/* Old compatible max salt length for sign only */ +# define RSA_PSS_SALTLEN_MAX_SIGN -2 + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN, 0, plen) + +# define EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, bits) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL) + +# define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp) + +# define EVP_PKEY_CTX_set_rsa_keygen_primes(ctx, primes) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES, primes, NULL) + +# define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_oaep_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_rsa_mgf1_md(ctx, pmd) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_MGF1_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_get_rsa_oaep_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, l, llen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_LABEL, llen, (void *)(l)) + +# define EVP_PKEY_CTX_get0_rsa_oaep_label(ctx, l) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, 0, (void *)(l)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, \ + EVP_PKEY_OP_KEYGEN, EVP_PKEY_CTRL_MD, \ + 0, (void *)(md)) + +# 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 RSA_PKCS1_PADDING 1 +# define RSA_SSLV23_PADDING 2 +# 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_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) + +RSA *RSA_new(void); +RSA *RSA_new_method(ENGINE *engine); +int RSA_bits(const RSA *rsa); +int RSA_size(const RSA *rsa); +int RSA_security_bits(const RSA *rsa); + +int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +int RSA_set0_crt_params(RSA *r,BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp); +int RSA_set0_multi_prime_params(RSA *r, BIGNUM *primes[], BIGNUM *exps[], + BIGNUM *coeffs[], int pnum); +void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, const BIGNUM **d); +void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q); +int RSA_get_multi_prime_extra_count(const RSA *r); +int RSA_get0_multi_prime_factors(const RSA *r, const BIGNUM *primes[]); +void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, const BIGNUM **dmq1, + const BIGNUM **iqmp); +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +const BIGNUM *RSA_get0_n(const RSA *d); +const BIGNUM *RSA_get0_e(const RSA *d); +const BIGNUM *RSA_get0_d(const RSA *d); +const BIGNUM *RSA_get0_p(const RSA *d); +const BIGNUM *RSA_get0_q(const RSA *d); +const BIGNUM *RSA_get0_dmp1(const RSA *r); +const BIGNUM *RSA_get0_dmq1(const RSA *r); +const BIGNUM *RSA_get0_iqmp(const RSA *r); +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +void RSA_clear_flags(RSA *r, int flags); +int RSA_test_flags(const RSA *r, int flags); +void RSA_set_flags(RSA *r, int flags); +int RSA_get_version(RSA *r); +ENGINE *RSA_get0_engine(const RSA *r); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void + (*callback) (int, int, void *), + void *cb_arg)) + +/* New version */ +int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +/* Multi-prime version */ +int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes, + BIGNUM *e, BN_GENCB *cb); + +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); +int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, + BN_GENCB *cb); + +int RSA_check_key(const RSA *); +int RSA_check_key_ex(const RSA *, BN_GENCB *cb); + /* next 4 return -1 on error */ +int RSA_public_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_public_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +int RSA_up_ref(RSA *r); + +int RSA_flags(const RSA *r); + +void RSA_set_default_method(const RSA_METHOD *meth); +const RSA_METHOD *RSA_get_default_method(void); +const RSA_METHOD *RSA_null_method(void); +const RSA_METHOD *RSA_get_method(const RSA *rsa); +int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) + +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) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +} RSA_OAEP_PARAMS; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +# ifndef OPENSSL_NO_STDIO +int RSA_print_fp(FILE *fp, const RSA *r, int offset); +# endif + +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 + */ +int RSA_sign(int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, RSA *rsa); +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 + */ +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +int RSA_verify_ASN1_OCTET_STRING(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +void RSA_blinding_off(RSA *rsa); +BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed, + long seedlen, const EVP_MD *dgst); +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +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); +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); +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); +int RSA_padding_add_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_X931(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_X931_hash_id(int nid); + +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +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); + +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) +int RSA_set_ex_data(RSA *r, int idx, void *arg); +void *RSA_get_ex_data(const RSA *r, int idx); + +RSA *RSAPublicKey_dup(RSA *rsa); +RSA *RSAPrivateKey_dup(RSA *rsa); + +/* + * 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 + +RSA_METHOD *RSA_meth_new(const char *name, int flags); +void RSA_meth_free(RSA_METHOD *meth); +RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +const char *RSA_meth_get0_name(const RSA_METHOD *meth); +int RSA_meth_set1_name(RSA_METHOD *meth, const char *name); +int RSA_meth_get_flags(const RSA_METHOD *meth); +int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +int RSA_meth_set0_app_data(RSA_METHOD *meth, void *app_data); +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +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)); +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +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)); +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +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)); +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +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)); +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx); +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +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); +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)); +int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); +int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); +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); +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)); +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); +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)); +int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen) (RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen) (RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rsaerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rsaerr.h new file mode 100644 index 000000000..59b15e13e --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/rsaerr.h @@ -0,0 +1,167 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSAERR_H +# define HEADER_RSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RSA_strings(void); + +/* + * RSA function codes. + */ +# define RSA_F_CHECK_PADDING_MD 140 +# define RSA_F_ENCODE_PKCS1 146 +# define RSA_F_INT_RSA_VERIFY 145 +# define RSA_F_OLD_RSA_PRIV_DECODE 147 +# define RSA_F_PKEY_PSS_INIT 165 +# define RSA_F_PKEY_RSA_CTRL 143 +# define RSA_F_PKEY_RSA_CTRL_STR 144 +# define RSA_F_PKEY_RSA_SIGN 142 +# define RSA_F_PKEY_RSA_VERIFY 149 +# define RSA_F_PKEY_RSA_VERIFYRECOVER 141 +# define RSA_F_RSA_ALGOR_TO_MD 156 +# define RSA_F_RSA_BUILTIN_KEYGEN 129 +# define RSA_F_RSA_CHECK_KEY 123 +# define RSA_F_RSA_CHECK_KEY_EX 160 +# define RSA_F_RSA_CMS_DECRYPT 159 +# define RSA_F_RSA_CMS_VERIFY 158 +# define RSA_F_RSA_ITEM_VERIFY 148 +# define RSA_F_RSA_METH_DUP 161 +# define RSA_F_RSA_METH_NEW 162 +# define RSA_F_RSA_METH_SET1_NAME 163 +# define RSA_F_RSA_MGF1_TO_MD 157 +# define RSA_F_RSA_MULTIP_INFO_NEW 166 +# define RSA_F_RSA_NEW_METHOD 106 +# define RSA_F_RSA_NULL 124 +# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 132 +# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 133 +# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 134 +# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 135 +# define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 101 +# define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 102 +# define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 103 +# define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 104 +# define RSA_F_RSA_PADDING_ADD_NONE 107 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 154 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 152 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109 +# define RSA_F_RSA_PADDING_ADD_SSLV23 110 +# define RSA_F_RSA_PADDING_ADD_X931 127 +# define RSA_F_RSA_PADDING_CHECK_NONE 111 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 153 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113 +# define RSA_F_RSA_PADDING_CHECK_SSLV23 114 +# define RSA_F_RSA_PADDING_CHECK_X931 128 +# define RSA_F_RSA_PARAM_DECODE 164 +# define RSA_F_RSA_PRINT 115 +# define RSA_F_RSA_PRINT_FP 116 +# define RSA_F_RSA_PRIV_DECODE 150 +# define RSA_F_RSA_PRIV_ENCODE 138 +# define RSA_F_RSA_PSS_GET_PARAM 151 +# define RSA_F_RSA_PSS_TO_CTX 155 +# define RSA_F_RSA_PUB_DECODE 139 +# define RSA_F_RSA_SETUP_BLINDING 136 +# define RSA_F_RSA_SIGN 117 +# define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118 +# define RSA_F_RSA_VERIFY 119 +# define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120 +# define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 126 +# define RSA_F_SETUP_TBUF 167 + +/* + * 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_LABEL 160 +# define RSA_R_INVALID_MESSAGE_LENGTH 131 +# define RSA_R_INVALID_MGF1_MD 156 +# 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_SALT_LENGTH 150 +# 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_MISSING_PRIVATE_KEY 179 +# define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +# 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_PKCS_DECODING_ERROR 159 +# define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +# define RSA_R_P_NOT_PRIME 128 +# define RSA_R_Q_NOT_PRIME 129 +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/safestack.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/safestack.h new file mode 100644 index 000000000..38b557897 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/safestack.h @@ -0,0 +1,207 @@ +/* + * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SAFESTACK_H +# define HEADER_SAFESTACK_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define STACK_OF(type) struct stack_st_##type + +# 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_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) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + 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) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + } \ + 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_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 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_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +# define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) +# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) + +/*- + * 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. + */ +DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING, char) +DEFINE_SPECIAL_STACK_OF_CONST(OPENSSL_CSTRING, char) + +/* + * Similarly, we sometimes use a block of characters, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +DEFINE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void) + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_sk_num +# pragma weak OPENSSL_sk_value +# pragma weak OPENSSL_sk_new +# pragma weak OPENSSL_sk_new_null +# pragma weak OPENSSL_sk_new_reserve +# pragma weak OPENSSL_sk_reserve +# pragma weak OPENSSL_sk_free +# pragma weak OPENSSL_sk_zero +# pragma weak OPENSSL_sk_delete +# pragma weak OPENSSL_sk_delete_ptr +# pragma weak OPENSSL_sk_push +# pragma weak OPENSSL_sk_unshift +# pragma weak OPENSSL_sk_pop +# pragma weak OPENSSL_sk_shift +# pragma weak OPENSSL_sk_pop_free +# pragma weak OPENSSL_sk_insert +# pragma weak OPENSSL_sk_set +# pragma weak OPENSSL_sk_find +# pragma weak OPENSSL_sk_find_ex +# pragma weak OPENSSL_sk_sort +# pragma weak OPENSSL_sk_is_sorted +# pragma weak OPENSSL_sk_dup +# pragma weak OPENSSL_sk_deep_copy +# pragma weak OPENSSL_sk_set_cmp_func +# endif /* __SUNPRO_C */ + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/seed.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/seed.h new file mode 100644 index 000000000..de10b0857 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/seed.h @@ -0,0 +1,96 @@ +/* + * Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with 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 HEADER_SEED_H +# define HEADER_SEED_H + +# include + +# ifndef OPENSSL_NO_SEED +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* look whether we need 'long' to get 32 bits */ +# ifdef AES_LONG +# ifndef SEED_LONG +# define SEED_LONG 1 +# endif +# endif + +# include + +# define SEED_BLOCK_SIZE 16 +# define SEED_KEY_LENGTH 16 + +typedef struct seed_key_st { +# ifdef SEED_LONG + unsigned long data[32]; +# else + unsigned int data[32]; +# endif +} SEED_KEY_SCHEDULE; + +void SEED_set_key(const unsigned char rawkey[SEED_KEY_LENGTH], + SEED_KEY_SCHEDULE *ks); + +void SEED_encrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); +void SEED_decrypt(const unsigned char s[SEED_BLOCK_SIZE], + unsigned char d[SEED_BLOCK_SIZE], + const SEED_KEY_SCHEDULE *ks); + +void SEED_ecb_encrypt(const unsigned char *in, unsigned char *out, + const SEED_KEY_SCHEDULE *ks, int enc); +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); +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); +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); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/sha.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/sha.h new file mode 100644 index 000000000..6a1eb0de8 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/sha.h @@ -0,0 +1,119 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SHA_H +# define HEADER_SHA_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! 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) +# define SHA_DIGEST_LENGTH 20 + +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; + +int SHA1_Init(SHA_CTX *c); +int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +int SHA1_Final(unsigned char *md, SHA_CTX *c); +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); +void SHA1_Transform(SHA_CTX *c, const unsigned char *data); + +# 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; + +int SHA224_Init(SHA256_CTX *c); +int SHA224_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA224_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +int SHA256_Init(SHA256_CTX *c); +int SHA256_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA256_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); +void SHA256_Transform(SHA256_CTX *c, const unsigned char *data); + +# define SHA224_DIGEST_LENGTH 28 +# define SHA256_DIGEST_LENGTH 32 +# define SHA384_DIGEST_LENGTH 48 +# define SHA512_DIGEST_LENGTH 64 + +/* + * 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 +# define U64(C) C##UI64 +# elif defined(__arch64__) +# define SHA_LONG64 unsigned long +# define U64(C) C##UL +# else +# define SHA_LONG64 unsigned long long +# define U64(C) C##ULL +# 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; + +int SHA384_Init(SHA512_CTX *c); +int SHA384_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA384_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +int SHA512_Init(SHA512_CTX *c); +int SHA512_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA512_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); +void SHA512_Transform(SHA512_CTX *c, const unsigned char *data); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/shim.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/shim.h new file mode 100644 index 000000000..3a9b8bba2 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/shim.h @@ -0,0 +1,41 @@ +#ifndef OpenSSLShim_h +#define OpenSSLShim_h + +#include +#include +#include +#include +#include +#include + +#undef SSL_library_init +static inline void SSL_library_init(void) { + OPENSSL_init_ssl(0, NULL); +} + +#undef SSL_load_error_strings +static inline void SSL_load_error_strings(void) { + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); +} + +#undef OpenSSL_add_all_ciphers +static inline void OpenSSL_add_all_ciphers(void) { + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL); +} + +#undef OpenSSL_add_all_digests +static inline void OpenSSL_add_all_digests(void) { + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL); +} + +#undef OpenSSL_add_all_algorithms +static inline void OpenSSL_add_all_algorithms(void) { + #ifdef OPENSSL_LOAD_CONF + OPENSSL_add_all_algorithms_conf(); + #else + OPENSSL_add_all_algorithms_noconf(); + #endif +} + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/srp.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/srp.h new file mode 100644 index 000000000..aaf13558e --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/srp.h @@ -0,0 +1,135 @@ +/* + * Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2004, EdelKey Project. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with 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. + */ + +#ifndef HEADER_SRP_H +# define HEADER_SRP_H + +#include + +#ifndef OPENSSL_NO_SRP +# include +# include +# include +# include +# include + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct SRP_gN_cache_st { + char *b64_bn; + BIGNUM *bn; +} SRP_gN_cache; + + +DEFINE_STACK_OF(SRP_gN_cache) + +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; + +void SRP_user_pwd_free(SRP_user_pwd *user_pwd); + +DEFINE_STACK_OF(SRP_user_pwd) + +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; + +DEFINE_STACK_OF(SRP_gN) + +SRP_VBASE *SRP_VBASE_new(char *seed_key); +void SRP_VBASE_free(SRP_VBASE *vb); +int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); + +/* This method ignores the configured seed and fails for an unknown user. */ +DEPRECATEDIN_1_1_0(SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username)) +/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ +SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); + +char *SRP_create_verifier(const char *user, const char *pass, char **salt, + char **verifier, const char *N, const char *g); +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 */ +char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); +SRP_gN *SRP_get_default_gN(const char *id); + +/* server side .... */ +BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, + const BIGNUM *b, const BIGNUM *N); +BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, + const BIGNUM *v); +int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); +BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); + +/* client side .... */ +BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); +BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); +BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, + const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); +int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); + +# define SRP_MINIMAL_N 1024 + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/srtp.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/srtp.h new file mode 100644 index 000000000..0b57c2356 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/srtp.h @@ -0,0 +1,50 @@ +/* + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with 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 HEADER_D1_SRTP_H +# define HEADER_D1_SRTP_H + +# 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 + +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl.h new file mode 100644 index 000000000..9af0c8995 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl.h @@ -0,0 +1,2448 @@ +/* + * Copyright 1995-2022 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 OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif +# include +# include +# include +# include + +# include +# include +# include +# include + +#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 +# define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* 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_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_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. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* This is the default set of TLSv1.3 ciphersuites */ +# if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305) +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +# else +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "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; +typedef struct ssl_comp_st SSL_COMP; + +STACK_OF(SSL_CIPHER); +STACK_OF(SSL_COMP); + +/* 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; + +DEFINE_STACK_OF(SRTP_PROTECTION_PROFILE) + +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 0x0001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x0002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x0008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x0020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 +#define SSL_EXT_CLIENT_HELLO 0x0080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 + +/* 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); + +/* + * Some values are reserved until OpenSSL 1.2.0 because they were previously + * included in SSL_OP_ALL in a 1.1.x release. + * + * Reserved value (until OpenSSL 1.2.0) 0x00000001U + * Reserved value (until OpenSSL 1.2.0) 0x00000002U + */ +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004U + +/* Reserved value (until OpenSSL 1.2.0) 0x00000008U */ +# define SSL_OP_TLSEXT_PADDING 0x00000010U +/* Reserved value (until OpenSSL 1.2.0) 0x00000020U */ +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040U +/* + * Reserved value (until OpenSSL 1.2.0) 0x00000080U + * Reserved value (until OpenSSL 1.2.0) 0x00000100U + * Reserved value (until OpenSSL 1.2.0) 0x00000200U + */ + +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +# define SSL_OP_ALLOW_NO_DHE_KEX 0x00000400U + +/* + * 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 0x00000800U + +/* DTLS options */ +# define SSL_OP_NO_QUERY_MTU 0x00001000U +/* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE 0x00002000U +/* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET 0x00004000U +# ifndef OPENSSL_NO_DTLS1_METHOD +/* Use Cisco's "speshul" version of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) */ +# define SSL_OP_CISCO_ANYCONNECT 0x00008000U +# endif + +/* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000U +/* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION 0x00020000U +/* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000U +/* Disable encrypt-then-mac */ +# define SSL_OP_NO_ENCRYPT_THEN_MAC 0x00080000U + +/* + * 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 0x00100000U + +/* Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE */ +# define SSL_OP_PRIORITIZE_CHACHA 0x00200000U + +/* + * Set on servers to choose the cipher according to the server's preferences + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000U +/* + * If set, a server will allow a client to issue a 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 0x00800000U + +/* + * 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 0x01000000U + +# define SSL_OP_NO_SSLv3 0x02000000U +# define SSL_OP_NO_TLSv1 0x04000000U +# define SSL_OP_NO_TLSv1_2 0x08000000U +# define SSL_OP_NO_TLSv1_1 0x10000000U +# define SSL_OP_NO_TLSv1_3 0x20000000U + +# define SSL_OP_NO_DTLSv1 0x04000000U +# define SSL_OP_NO_DTLSv1_2 0x08000000U + +# 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) + +/* Disallow all renegotiation */ +# define SSL_OP_NO_RENEGOTIATION 0x40000000U + +/* + * 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 0x80000000U + +/* + * SSL_OP_ALL: various bug workarounds that should be rather harmless. + * This used to be 0x000FFFFFL before 0.9.7. + * This used to be 0x80000BFFU before 1.1.1. + */ +# define SSL_OP_ALL (SSL_OP_CRYPTOPRO_TLSEXT_BUG|\ + SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS|\ + SSL_OP_LEGACY_SERVER_CONNECT|\ + SSL_OP_TLSEXT_PADDING|\ + SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* OBSOLETE OPTIONS: retained for compatibility */ + +/* Removed from OpenSSL 1.1.0. Was 0x00000001L */ +/* Related to removed SSLv2. */ +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000002L */ +/* Related to removed SSLv2. */ +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +/* Removed from OpenSSL 0.9.8q and 1.0.0c. Was 0x00000008L */ +/* Dead forever, see CVE-2010-4180 */ +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +/* Removed from OpenSSL 1.0.1h and 1.0.2. Was 0x00000010L */ +/* Refers to ancient SSLREF and SSLv2. */ +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000020 */ +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +/* Removed from OpenSSL 0.9.7h and 0.9.8b. Was 0x00000040L */ +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000080 */ +/* Ancient SSLeay version. */ +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000100L */ +# define SSL_OP_TLS_D5_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000200L */ +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00080000L */ +# define SSL_OP_SINGLE_ECDH_USE 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00100000L */ +# define SSL_OP_SINGLE_DH_USE 0x0 +/* Removed from OpenSSL 1.0.1k and 1.0.2. Was 0x00200000L */ +# define SSL_OP_EPHEMERAL_RSA 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x01000000L */ +# define SSL_OP_NO_SSLv2 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x08000000L */ +# define SSL_OP_PKCS1_CHECK_1 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x10000000L */ +# define SSL_OP_PKCS1_CHECK_2 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x20000000L */ +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x40000000L */ +# 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 + +# 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 + +/* 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. + */ + +unsigned long SSL_CTX_get_options(const SSL_CTX *ctx); +unsigned long SSL_get_options(const SSL *s); +unsigned long SSL_CTX_clear_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_clear_options(SSL *s, unsigned long op); +unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_set_options(SSL *s, unsigned long 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) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_heartbeat(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT,0,NULL) +# endif + +# 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 */ +__owur int SSL_SRP_CTX_init(SSL *s); +__owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +int SSL_SRP_CTX_free(SSL *ctx); +int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +__owur int SSL_srp_server_param_with_username(SSL *s, int *ad); +__owur int SRP_Calc_A_param(SSL *s); + +# 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) + +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 *in, unsigned int inlen, + 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 128 +# define PSK_MAX_PSK_LEN 256 +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 + +/* 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_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 + +/* + * 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 */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +DEFINE_STACK_OF_CONST(SSL_CIPHER) +DEFINE_STACK_OF(SSL_COMP) + +/* 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))) +DEPRECATEDIN_1_1_0(void SSL_set_debug(SSL *s, int debug)) + +/* 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_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_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_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_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 + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# 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 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +# 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 +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT 85 +# define SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING 86 +# define SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS 87 +# endif +# 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_VERIFY_CERT_STORE 137 +# define SSL_CTRL_GET_CHAIN_CERT_STORE 138 +# 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) +# define SSL_CTX_set_tmp_dh(ctx,dh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# 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) +# define SSL_set_tmp_dh(ssl,dh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_set_tmp_ecdh(ssl,ecdh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# 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_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_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_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_get_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# 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) + +/* 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) + +/* + * 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 + + +# if OPENSSL_API_COMPAT < 0x10100000L +/* 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); +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); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long 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_RSA +__owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +__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_RSA +__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_RSA +__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 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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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); +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +__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 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(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(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); + +# ifdef HEADER_X509_H +__owur X509 *SSL_get_peer_certificate(const SSL *s); +# 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_RSA +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +__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); +__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 *hostname); +__owur int SSL_add1_host(SSL *s, const char *hostname); +__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, unsigned const 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, unsigned const 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 +int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb) (SSL *, void *)); +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb) (SSL *, void *)); +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb) (SSL *, int *, void *)); +int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +__owur BIGNUM *SSL_get_srp_g(SSL *s); +__owur BIGNUM *SSL_get_srp_N(SSL *s); + +__owur char *SSL_get_srp_username(SSL *s); +__owur char *SSL_get_srp_userinfo(SSL *s); +# 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); +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_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); +# 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 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_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); + +/* This sets the 'default' SSL version that SSL_new() will create */ +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); + +# ifndef OPENSSL_NO_SSL3_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_method(void)) /* SSLv3 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_client_method(void)) +# 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 +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_method(void)) /* TLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_method(void)) /* TLSv1.1 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_2_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_method(void)) /* TLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_method(void)) /* DTLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_client_method(void)) +# 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_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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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_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) + +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 +/* NB: the |keylength| is only applicable when is_export is true */ +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +# 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); +# if OPENSSL_API_COMPAT < 0x10100000L +# 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); + +void 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_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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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); + +extern const char SSL_version_str[]; + +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); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl2.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl2.h new file mode 100644 index 000000000..5321bd272 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl2.h @@ -0,0 +1,24 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL2_H +# define HEADER_SSL2_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL2_VERSION 0x0002 + +# define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl3.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl3.h new file mode 100644 index 000000000..07effba28 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ssl3.h @@ -0,0 +1,342 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL3_H +# define HEADER_SSL3_H + +# 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" + +# define SSL3_VERSION 0x0300 +# 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 +# define DTLS1_RT_HEARTBEAT 24 + +/* 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 + +# 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 10 + +# 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 + +# 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 +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/sslerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/sslerr.h new file mode 100644 index 000000000..701d61c6e --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/sslerr.h @@ -0,0 +1,776 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSLERR_H +# define HEADER_SSLERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_SSL_strings(void); + +/* + * SSL function codes. + */ +# define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 438 +# define SSL_F_ADD_KEY_SHARE 512 +# define SSL_F_BYTES_TO_CIPHER_LIST 519 +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CIPHERSUITE_CB 622 +# define SSL_F_CONSTRUCT_CA_NAMES 552 +# define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 553 +# define SSL_F_CONSTRUCT_STATEFUL_TICKET 636 +# define SSL_F_CONSTRUCT_STATELESS_TICKET 637 +# define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 539 +# define SSL_F_CREATE_TICKET_PREQUEL 638 +# define SSL_F_CT_MOVE_SCTS 345 +# define SSL_F_CT_STRICT 349 +# define SSL_F_CUSTOM_EXT_ADD 554 +# define SSL_F_CUSTOM_EXT_PARSE 555 +# define SSL_F_D2I_SSL_SESSION 103 +# define SSL_F_DANE_CTX_ENABLE 347 +# define SSL_F_DANE_MTYPE_SET 393 +# define SSL_F_DANE_TLSA_ADD 394 +# define SSL_F_DERIVE_SECRET_KEY_AND_IV 514 +# define SSL_F_DO_DTLS1_WRITE 245 +# define SSL_F_DO_SSL3_WRITE 104 +# define SSL_F_DTLS1_BUFFER_RECORD 247 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 318 +# define SSL_F_DTLS1_HEARTBEAT 305 +# define SSL_F_DTLS1_HM_FRAGMENT_NEW 623 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 424 +# define SSL_F_DTLS1_PROCESS_RECORD 257 +# define SSL_F_DTLS1_READ_BYTES 258 +# define SSL_F_DTLS1_READ_FAILED 339 +# define SSL_F_DTLS1_RETRANSMIT_MESSAGE 390 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 +# define SSL_F_DTLS1_WRITE_BYTES 545 +# define SSL_F_DTLSV1_LISTEN 350 +# define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 371 +# define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 385 +# define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 370 +# define SSL_F_DTLS_PROCESS_HELLO_VERIFY 386 +# define SSL_F_DTLS_RECORD_LAYER_NEW 635 +# define SSL_F_DTLS_WAIT_FOR_DRY 592 +# define SSL_F_EARLY_DATA_COUNT_OK 532 +# define SSL_F_FINAL_EARLY_DATA 556 +# define SSL_F_FINAL_EC_PT_FORMATS 485 +# define SSL_F_FINAL_EMS 486 +# define SSL_F_FINAL_KEY_SHARE 503 +# define SSL_F_FINAL_MAXFRAGMENTLEN 557 +# define SSL_F_FINAL_PSK 639 +# define SSL_F_FINAL_RENEGOTIATE 483 +# define SSL_F_FINAL_SERVER_NAME 558 +# define SSL_F_FINAL_SIG_ALGS 497 +# define SSL_F_GET_CERT_VERIFY_TBS_DATA 588 +# define SSL_F_NSS_KEYLOG_INT 500 +# define SSL_F_OPENSSL_INIT_SSL 342 +# define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 436 +# define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 598 +# define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 430 +# define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 593 +# define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 594 +# define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 417 +# define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 599 +# define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 437 +# define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 600 +# define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 431 +# define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 601 +# define SSL_F_OSSL_STATEM_SERVER_POST_WORK 602 +# define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 640 +# define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 603 +# define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 418 +# define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 604 +# define SSL_F_PARSE_CA_NAMES 541 +# define SSL_F_PITEM_NEW 624 +# define SSL_F_PQUEUE_NEW 625 +# define SSL_F_PROCESS_KEY_SHARE_EXT 439 +# define SSL_F_READ_STATE_MACHINE 352 +# define SSL_F_SET_CLIENT_CIPHERSUITE 540 +# define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 595 +# define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 589 +# define SSL_F_SRP_VERIFY_SERVER_PARAM 596 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 +# define SSL_F_SSL3_CTRL 213 +# define SSL_F_SSL3_CTX_CTRL 133 +# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 +# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 +# define SSL_F_SSL3_ENC 608 +# define SSL_F_SSL3_FINAL_FINISH_MAC 285 +# define SSL_F_SSL3_FINISH_MAC 587 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 +# define SSL_F_SSL3_GENERATE_MASTER_SECRET 388 +# define SSL_F_SSL3_GET_RECORD 143 +# define SSL_F_SSL3_INIT_FINISHED_MAC 397 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 +# define SSL_F_SSL3_READ_BYTES 148 +# define SSL_F_SSL3_READ_N 149 +# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 +# define SSL_F_SSL3_SETUP_READ_BUFFER 156 +# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 +# define SSL_F_SSL3_WRITE_BYTES 158 +# define SSL_F_SSL3_WRITE_PENDING 159 +# define SSL_F_SSL_ADD_CERT_CHAIN 316 +# define SSL_F_SSL_ADD_CERT_TO_BUF 319 +# define SSL_F_SSL_ADD_CERT_TO_WPACKET 493 +# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 +# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 +# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 +# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 +# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 +# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 +# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 +# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 +# define SSL_F_SSL_BAD_METHOD 160 +# define SSL_F_SSL_BUILD_CERT_CHAIN 332 +# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 +# define SSL_F_SSL_CACHE_CIPHERLIST 520 +# define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 346 +# define SSL_F_SSL_CERT_DUP 221 +# define SSL_F_SSL_CERT_NEW 162 +# define SSL_F_SSL_CERT_SET0_CHAIN 340 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 +# define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 606 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 +# define SSL_F_SSL_CHOOSE_CLIENT_VERSION 607 +# define SSL_F_SSL_CIPHER_DESCRIPTION 626 +# define SSL_F_SSL_CIPHER_LIST_TO_BYTES 425 +# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 +# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 +# define SSL_F_SSL_CLEAR 164 +# define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 627 +# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 +# define SSL_F_SSL_CONF_CMD 334 +# define SSL_F_SSL_CREATE_CIPHER_LIST 166 +# define SSL_F_SSL_CTRL 232 +# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 +# define SSL_F_SSL_CTX_ENABLE_CT 398 +# define SSL_F_SSL_CTX_MAKE_PROFILES 309 +# define SSL_F_SSL_CTX_NEW 169 +# define SSL_F_SSL_CTX_SET_ALPN_PROTOS 343 +# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 +# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 +# define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 396 +# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 +# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 +# define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 551 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 +# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 +# define SSL_F_SSL_CTX_USE_SERVERINFO 336 +# define SSL_F_SSL_CTX_USE_SERVERINFO_EX 543 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 +# define SSL_F_SSL_DANE_DUP 403 +# define SSL_F_SSL_DANE_ENABLE 395 +# define SSL_F_SSL_DERIVE 590 +# define SSL_F_SSL_DO_CONFIG 391 +# define SSL_F_SSL_DO_HANDSHAKE 180 +# define SSL_F_SSL_DUP_CA_LIST 408 +# define SSL_F_SSL_ENABLE_CT 402 +# define SSL_F_SSL_GENERATE_PKEY_GROUP 559 +# define SSL_F_SSL_GENERATE_SESSION_ID 547 +# define SSL_F_SSL_GET_NEW_SESSION 181 +# define SSL_F_SSL_GET_PREV_SESSION 217 +# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 +# define SSL_F_SSL_GET_SIGN_PKEY 183 +# define SSL_F_SSL_HANDSHAKE_HASH 560 +# define SSL_F_SSL_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_KEY_UPDATE 515 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_LOG_MASTER_SECRET 498 +# define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 499 +# define SSL_F_SSL_MODULE_INIT 392 +# define SSL_F_SSL_NEW 186 +# define SSL_F_SSL_NEXT_PROTO_VALIDATE 565 +# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 +# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 +# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 +# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 +# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 +# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 +# define SSL_F_SSL_PEEK 270 +# define SSL_F_SSL_PEEK_EX 432 +# define SSL_F_SSL_PEEK_INTERNAL 522 +# define SSL_F_SSL_READ 223 +# define SSL_F_SSL_READ_EARLY_DATA 529 +# define SSL_F_SSL_READ_EX 434 +# define SSL_F_SSL_READ_INTERNAL 523 +# define SSL_F_SSL_RENEGOTIATE 516 +# define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 546 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 +# define SSL_F_SSL_SESSION_DUP 348 +# define SSL_F_SSL_SESSION_NEW 189 +# define SSL_F_SSL_SESSION_PRINT_FP 190 +# define SSL_F_SSL_SESSION_SET1_ID 423 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 +# define SSL_F_SSL_SET_ALPN_PROTOS 344 +# define SSL_F_SSL_SET_CERT 191 +# define SSL_F_SSL_SET_CERT_AND_KEY 621 +# define SSL_F_SSL_SET_CIPHER_LIST 271 +# define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 399 +# define SSL_F_SSL_SET_FD 192 +# define SSL_F_SSL_SET_PKEY 193 +# define SSL_F_SSL_SET_RFD 194 +# define SSL_F_SSL_SET_SESSION 195 +# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 +# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 +# define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 550 +# define SSL_F_SSL_SET_WFD 196 +# define SSL_F_SSL_SHUTDOWN 224 +# define SSL_F_SSL_SRP_CTX_INIT 313 +# define SSL_F_SSL_START_ASYNC_JOB 389 +# define SSL_F_SSL_UNDEFINED_FUNCTION 197 +# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 +# define SSL_F_SSL_USE_CERTIFICATE 198 +# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 +# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 +# define SSL_F_SSL_USE_PRIVATEKEY 201 +# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 +# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 +# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 +# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 +# define SSL_F_SSL_VALIDATE_CT 400 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 +# define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 616 +# define SSL_F_SSL_WRITE 208 +# define SSL_F_SSL_WRITE_EARLY_DATA 526 +# define SSL_F_SSL_WRITE_EARLY_FINISH 527 +# define SSL_F_SSL_WRITE_EX 433 +# define SSL_F_SSL_WRITE_INTERNAL 524 +# define SSL_F_STATE_MACHINE 353 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# define SSL_F_TLS12_COPY_SIGALGS 533 +# define SSL_F_TLS13_CHANGE_CIPHER_STATE 440 +# define SSL_F_TLS13_ENC 609 +# define SSL_F_TLS13_FINAL_FINISH_MAC 605 +# define SSL_F_TLS13_GENERATE_SECRET 591 +# define SSL_F_TLS13_HKDF_EXPAND 561 +# define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 617 +# define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 618 +# define SSL_F_TLS13_SETUP_KEY_BLOCK 441 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 +# define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 341 +# define SSL_F_TLS1_ENC 401 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 +# define SSL_F_TLS1_GET_CURVELIST 338 +# define SSL_F_TLS1_PRF 284 +# define SSL_F_TLS1_SAVE_U16 628 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_GROUPS 629 +# define SSL_F_TLS1_SET_RAW_SIGALGS 630 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_TLS1_SET_SHARED_SIGALGS 631 +# define SSL_F_TLS1_SET_SIGALGS 632 +# define SSL_F_TLS_CHOOSE_SIGALG 513 +# define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 354 +# define SSL_F_TLS_COLLECT_EXTENSIONS 435 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 542 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 372 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS 429 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 494 +# define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 496 +# define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 427 +# define SSL_F_TLS_CONSTRUCT_CKE_DHE 404 +# define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 405 +# define SSL_F_TLS_CONSTRUCT_CKE_GOST 406 +# define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 407 +# define SSL_F_TLS_CONSTRUCT_CKE_RSA 409 +# define SSL_F_TLS_CONSTRUCT_CKE_SRP 410 +# define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 484 +# define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 487 +# define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 488 +# define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 489 +# define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 466 +# define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 355 +# define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 535 +# define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 530 +# define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 467 +# define SSL_F_TLS_CONSTRUCT_CTOS_EMS 468 +# define SSL_F_TLS_CONSTRUCT_CTOS_ETM 469 +# define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 356 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 357 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 470 +# define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 549 +# define SSL_F_TLS_CONSTRUCT_CTOS_NPN 471 +# define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 472 +# define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 619 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK 501 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 509 +# define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 473 +# define SSL_F_TLS_CONSTRUCT_CTOS_SCT 474 +# define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 475 +# define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 476 +# define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 477 +# define SSL_F_TLS_CONSTRUCT_CTOS_SRP 478 +# define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 479 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 480 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 481 +# define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 482 +# define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 358 +# define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 443 +# define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 536 +# define SSL_F_TLS_CONSTRUCT_EXTENSIONS 447 +# define SSL_F_TLS_CONSTRUCT_FINISHED 359 +# define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 373 +# define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 510 +# define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 517 +# define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 428 +# define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 426 +# define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 490 +# define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 491 +# define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 492 +# define SSL_F_TLS_CONSTRUCT_STOC_ALPN 451 +# define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 374 +# define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 613 +# define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 452 +# define SSL_F_TLS_CONSTRUCT_STOC_DONE 375 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 531 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 525 +# define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 453 +# define SSL_F_TLS_CONSTRUCT_STOC_EMS 454 +# define SSL_F_TLS_CONSTRUCT_STOC_ETM 455 +# define SSL_F_TLS_CONSTRUCT_STOC_HELLO 376 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 377 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 456 +# define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 548 +# define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 457 +# define SSL_F_TLS_CONSTRUCT_STOC_PSK 504 +# define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 458 +# define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 459 +# define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 460 +# define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 461 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 544 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 611 +# define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 462 +# define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 521 +# define SSL_F_TLS_FINISH_HANDSHAKE 597 +# define SSL_F_TLS_GET_MESSAGE_BODY 351 +# define SSL_F_TLS_GET_MESSAGE_HEADER 387 +# define SSL_F_TLS_HANDLE_ALPN 562 +# define SSL_F_TLS_HANDLE_STATUS_REQUEST 563 +# define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 566 +# define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 449 +# define SSL_F_TLS_PARSE_CTOS_ALPN 567 +# define SSL_F_TLS_PARSE_CTOS_COOKIE 614 +# define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 568 +# define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 569 +# define SSL_F_TLS_PARSE_CTOS_EMS 570 +# define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 463 +# define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 571 +# define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 620 +# define SSL_F_TLS_PARSE_CTOS_PSK 505 +# define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 572 +# define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 464 +# define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 573 +# define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 574 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 575 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 615 +# define SSL_F_TLS_PARSE_CTOS_SRP 576 +# define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 577 +# define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 578 +# define SSL_F_TLS_PARSE_CTOS_USE_SRTP 465 +# define SSL_F_TLS_PARSE_STOC_ALPN 579 +# define SSL_F_TLS_PARSE_STOC_COOKIE 534 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA 538 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 528 +# define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 580 +# define SSL_F_TLS_PARSE_STOC_KEY_SHARE 445 +# define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 581 +# define SSL_F_TLS_PARSE_STOC_NPN 582 +# define SSL_F_TLS_PARSE_STOC_PSK 502 +# define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 448 +# define SSL_F_TLS_PARSE_STOC_SCT 564 +# define SSL_F_TLS_PARSE_STOC_SERVER_NAME 583 +# define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 584 +# define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 585 +# define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 612 +# define SSL_F_TLS_PARSE_STOC_USE_SRTP 446 +# define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 378 +# define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 384 +# define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 360 +# define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 610 +# define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 361 +# define SSL_F_TLS_PROCESS_CERT_STATUS 362 +# define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 495 +# define SSL_F_TLS_PROCESS_CERT_VERIFY 379 +# define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 363 +# define SSL_F_TLS_PROCESS_CKE_DHE 411 +# define SSL_F_TLS_PROCESS_CKE_ECDHE 412 +# define SSL_F_TLS_PROCESS_CKE_GOST 413 +# define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 414 +# define SSL_F_TLS_PROCESS_CKE_RSA 415 +# define SSL_F_TLS_PROCESS_CKE_SRP 416 +# define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 380 +# define SSL_F_TLS_PROCESS_CLIENT_HELLO 381 +# define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 382 +# define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 444 +# define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 537 +# define SSL_F_TLS_PROCESS_FINISHED 364 +# define SSL_F_TLS_PROCESS_HELLO_REQ 507 +# define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 511 +# define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 442 +# define SSL_F_TLS_PROCESS_KEY_EXCHANGE 365 +# define SSL_F_TLS_PROCESS_KEY_UPDATE 518 +# define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 366 +# define SSL_F_TLS_PROCESS_NEXT_PROTO 383 +# define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 367 +# define SSL_F_TLS_PROCESS_SERVER_DONE 368 +# define SSL_F_TLS_PROCESS_SERVER_HELLO 369 +# define SSL_F_TLS_PROCESS_SKE_DHE 419 +# define SSL_F_TLS_PROCESS_SKE_ECDHE 420 +# define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 421 +# define SSL_F_TLS_PROCESS_SKE_SRP 422 +# define SSL_F_TLS_PSK_DO_BINDER 506 +# define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 450 +# define SSL_F_TLS_SETUP_HANDSHAKE 508 +# define SSL_F_USE_CERTIFICATE_CHAIN_FILE 220 +# define SSL_F_WPACKET_INTERN_INIT_LEN 633 +# define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 634 +# define SSL_F_WRITE_STATE_MACHINE 586 + +/* + * 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_0_NEEDED_IN_FIPS_MODE 143 +# define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CIPHER 186 +# 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_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_CIPHER_OR_HASH_UNAVAILABLE 138 +# 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_CONTEXT_NOT_DANE_ENABLED 167 +# define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +# define SSL_R_COOKIE_MISMATCH 308 +# 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_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_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_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_INIT_ASYNC 405 +# 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_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_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_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_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_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_SUITABLE_KEY_SHARE 101 +# 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 294 +# 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_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_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# define SSL_R_RECORD_TOO_SMALL 298 +# 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_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_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_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_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_HEARTBEAT_PEER_DOESNT_ACCEPT 365 +# define SSL_R_TLS_HEARTBEAT_PENDING 366 +# 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_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_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_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_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_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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/stack.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/stack.h new file mode 100644 index 000000000..cfc075057 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/stack.h @@ -0,0 +1,83 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_STACK_H +# define HEADER_STACK_H + +#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_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); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *)); +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_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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/store.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/store.h new file mode 100644 index 000000000..a40a7339e --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/store.h @@ -0,0 +1,266 @@ +/* + * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STORE_H +# define HEADER_OSSL_STORE_H + +# 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); + +/* + * 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. + */ +int OSSL_STORE_ctrl(OSSL_STORE_CTX *ctx, int cmd, ... /* args */); +int OSSL_STORE_vctrl(OSSL_STORE_CTX *ctx, int cmd, va_list args); + +/* + * 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 + +/* + * 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); + +/* + * 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); + + +/*- + * 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_PKEY 3 /* EVP_PKEY * */ +# define OSSL_STORE_INFO_CERT 4 /* X509 * */ +# define OSSL_STORE_INFO_CRL 5 /* 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_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_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); +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_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(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, OSSL_STORE_SEARCH *search); + + +/*- + * Function to register a loader for the given URI scheme. + * ------------------------------------------------------- + * + * The loader receives all the main components of an URI except for the + * scheme. + */ + +typedef struct ossl_store_loader_st OSSL_STORE_LOADER; +OSSL_STORE_LOADER *OSSL_STORE_LOADER_new(ENGINE *e, const char *scheme); +const ENGINE *OSSL_STORE_LOADER_get0_engine(const OSSL_STORE_LOADER *loader); +const char *OSSL_STORE_LOADER_get0_scheme(const OSSL_STORE_LOADER *loader); +/* 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); +int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *loader, + OSSL_STORE_open_fn open_function); +typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd, + va_list args); +int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *loader, + OSSL_STORE_ctrl_fn ctrl_function); +typedef int (*OSSL_STORE_expect_fn)(OSSL_STORE_LOADER_CTX *ctx, int expected); +int OSSL_STORE_LOADER_set_expect(OSSL_STORE_LOADER *loader, + OSSL_STORE_expect_fn expect_function); +typedef int (*OSSL_STORE_find_fn)(OSSL_STORE_LOADER_CTX *ctx, + OSSL_STORE_SEARCH *criteria); +int OSSL_STORE_LOADER_set_find(OSSL_STORE_LOADER *loader, + OSSL_STORE_find_fn find_function); +typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)(OSSL_STORE_LOADER_CTX *ctx, + const UI_METHOD *ui_method, + void *ui_data); +int OSSL_STORE_LOADER_set_load(OSSL_STORE_LOADER *loader, + OSSL_STORE_load_fn load_function); +typedef int (*OSSL_STORE_eof_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_eof(OSSL_STORE_LOADER *loader, + OSSL_STORE_eof_fn eof_function); +typedef int (*OSSL_STORE_error_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_error(OSSL_STORE_LOADER *loader, + OSSL_STORE_error_fn error_function); +typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); +int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *loader, + OSSL_STORE_close_fn close_function); +void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *loader); + +int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); +OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); + +/*- + * Functions to list STORE loaders + * ------------------------------- + */ +int OSSL_STORE_do_all_loaders(void (*do_function) (const OSSL_STORE_LOADER + *loader, void *do_arg), + void *do_arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/storeerr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/storeerr.h new file mode 100644 index 000000000..190eab07f --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/storeerr.h @@ -0,0 +1,91 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OSSL_STOREERR_H +# define HEADER_OSSL_STOREERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OSSL_STORE_strings(void); + +/* + * OSSL_STORE function codes. + */ +# define OSSL_STORE_F_FILE_CTRL 129 +# define OSSL_STORE_F_FILE_FIND 138 +# define OSSL_STORE_F_FILE_GET_PASS 118 +# define OSSL_STORE_F_FILE_LOAD 119 +# define OSSL_STORE_F_FILE_LOAD_TRY_DECODE 124 +# define OSSL_STORE_F_FILE_NAME_TO_URI 126 +# define OSSL_STORE_F_FILE_OPEN 120 +# define OSSL_STORE_F_OSSL_STORE_ATTACH_PEM_BIO 127 +# define OSSL_STORE_F_OSSL_STORE_EXPECT 130 +# define OSSL_STORE_F_OSSL_STORE_FILE_ATTACH_PEM_BIO_INT 128 +# define OSSL_STORE_F_OSSL_STORE_FIND 131 +# define OSSL_STORE_F_OSSL_STORE_GET0_LOADER_INT 100 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CERT 101 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_CRL 102 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME 103 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_NAME_DESCRIPTION 135 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PARAMS 104 +# define OSSL_STORE_F_OSSL_STORE_INFO_GET1_PKEY 105 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CERT 106 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_CRL 107 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_EMBEDDED 123 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_NAME 109 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PARAMS 110 +# define OSSL_STORE_F_OSSL_STORE_INFO_NEW_PKEY 111 +# define OSSL_STORE_F_OSSL_STORE_INFO_SET0_NAME_DESCRIPTION 134 +# define OSSL_STORE_F_OSSL_STORE_INIT_ONCE 112 +# define OSSL_STORE_F_OSSL_STORE_LOADER_NEW 113 +# define OSSL_STORE_F_OSSL_STORE_OPEN 114 +# define OSSL_STORE_F_OSSL_STORE_OPEN_INT 115 +# define OSSL_STORE_F_OSSL_STORE_REGISTER_LOADER_INT 117 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ALIAS 132 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 133 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 136 +# define OSSL_STORE_F_OSSL_STORE_SEARCH_BY_NAME 137 +# define OSSL_STORE_F_OSSL_STORE_UNREGISTER_LOADER_INT 116 +# define OSSL_STORE_F_TRY_DECODE_PARAMS 121 +# define OSSL_STORE_F_TRY_DECODE_PKCS12 122 +# define OSSL_STORE_F_TRY_DECODE_PKCS8ENCRYPTED 125 + +/* + * 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_KEY 102 +# define OSSL_STORE_R_NOT_A_NAME 103 +# define OSSL_STORE_R_NOT_PARAMETERS 104 +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/symhacks.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/symhacks.h new file mode 100644 index 000000000..156ea6e4e --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/symhacks.h @@ -0,0 +1,37 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SYMHACKS_H +# define HEADER_SYMHACKS_H + +# 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 + +/* This one clashes with CMS_data_create */ +# undef cms_Data_create +# define cms_Data_create priv_cms_Data_create + +# endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/tls1.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/tls1.h new file mode 100644 index 000000000..76d9fda46 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/tls1.h @@ -0,0 +1,1237 @@ +/* + * Copyright 1995-2019 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 OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TLS1_H +# define HEADER_TLS1_H + +# 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 1 +# endif + +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS1_3_VERSION 0x0304 +# define TLS_MAX_VERSION TLS1_3_VERSION + +/* 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 RFC5620 */ +# define TLSEXT_TYPE_heartbeat 15 + +/* 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 + +/* + * 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 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 + +/* 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 + +/* 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 + +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); + +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_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) + +# 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) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_DTLSEXT_HB_ENABLED 0x01 +# define SSL_DTLSEXT_HB_DONT_SEND_REQUESTS 0x02 +# define SSL_DTLSEXT_HB_DONT_RECV_REQUESTS 0x04 +# define SSL_get_dtlsext_heartbeat_pending(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING,0,NULL) +# define SSL_set_dtlsext_heartbeat_no_requests(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT \ + SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT +# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING \ + SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING +# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS \ + SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS +# define SSL_TLSEXT_HB_ENABLED \ + SSL_DTLSEXT_HB_ENABLED +# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS \ + SSL_DTLSEXT_HB_DONT_SEND_REQUESTS +# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS \ + SSL_DTLSEXT_HB_DONT_RECV_REQUESTS +# define SSL_get_tlsext_heartbeat_pending(ssl) \ + SSL_get_dtlsext_heartbeat_pending(ssl) +# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ + SSL_set_dtlsext_heartbeat_no_requests(ssl,arg) +# endif +# endif + +/* 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 + +/* 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_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_SIGN 238 +# define TLS_CT_GOST12_512_SIGN 239 + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 10 + +# 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 +# define TLS_MD_CLIENT_FINISH_CONST "client finished" +# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_FINISH_CONST "server finished" +# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +# define TLS_MD_KEY_EXPANSION_CONST "key expansion" +# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" +# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_IV_BLOCK_CONST "IV block" +# define TLS_MD_IV_BLOCK_CONST_SIZE 8 +# define TLS_MD_MASTER_SECRET_CONST "master secret" +# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "extended master secret" +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +# ifdef CHARSET_EBCDIC +# undef TLS_MD_CLIENT_FINISH_CONST +/* + * client finished + */ +# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_FINISH_CONST +/* + * server finished + */ +# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_KEY_EXPANSION_CONST +/* + * key expansion + */ +# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" + +# undef TLS_MD_CLIENT_WRITE_KEY_CONST +/* + * client write key + */ +# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_IV_BLOCK_CONST +/* + * IV block + */ +# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" + +# undef TLS_MD_MASTER_SECRET_CONST +/* + * master secret + */ +# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# undef TLS_MD_EXTENDED_MASTER_SECRET_CONST +/* + * extended master secret + */ +# 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" +# endif + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ts.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ts.h new file mode 100644 index 000000000..3b58aa527 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ts.h @@ -0,0 +1,559 @@ +/* + * Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TS_H +# define HEADER_TS_H + +# include + +# ifndef OPENSSL_NO_TS +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# include +# include + +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 ESS_issuer_serial ESS_ISSUER_SERIAL; +typedef struct ESS_cert_id ESS_CERT_ID; +typedef struct ESS_signing_cert ESS_SIGNING_CERT; + +DEFINE_STACK_OF(ESS_CERT_ID) + +typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; +typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; + +DEFINE_STACK_OF(ESS_CERT_ID_V2) + +typedef struct TS_resp_st TS_RESP; + +TS_REQ *TS_REQ_new(void); +void TS_REQ_free(TS_REQ *a); +int i2d_TS_REQ(const TS_REQ *a, unsigned char **pp); +TS_REQ *d2i_TS_REQ(TS_REQ **a, const unsigned char **pp, long length); + +TS_REQ *TS_REQ_dup(TS_REQ *a); + +#ifndef OPENSSL_NO_STDIO +TS_REQ *d2i_TS_REQ_fp(FILE *fp, TS_REQ **a); +int i2d_TS_REQ_fp(FILE *fp, TS_REQ *a); +#endif +TS_REQ *d2i_TS_REQ_bio(BIO *fp, TS_REQ **a); +int i2d_TS_REQ_bio(BIO *fp, TS_REQ *a); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_new(void); +void TS_MSG_IMPRINT_free(TS_MSG_IMPRINT *a); +int i2d_TS_MSG_IMPRINT(const TS_MSG_IMPRINT *a, unsigned char **pp); +TS_MSG_IMPRINT *d2i_TS_MSG_IMPRINT(TS_MSG_IMPRINT **a, + const unsigned char **pp, long length); + +TS_MSG_IMPRINT *TS_MSG_IMPRINT_dup(TS_MSG_IMPRINT *a); + +#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, 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, TS_MSG_IMPRINT *a); + +TS_RESP *TS_RESP_new(void); +void TS_RESP_free(TS_RESP *a); +int i2d_TS_RESP(const TS_RESP *a, unsigned char **pp); +TS_RESP *d2i_TS_RESP(TS_RESP **a, const unsigned char **pp, long length); +TS_TST_INFO *PKCS7_to_TS_TST_INFO(PKCS7 *token); +TS_RESP *TS_RESP_dup(TS_RESP *a); + +#ifndef OPENSSL_NO_STDIO +TS_RESP *d2i_TS_RESP_fp(FILE *fp, TS_RESP **a); +int i2d_TS_RESP_fp(FILE *fp, TS_RESP *a); +#endif +TS_RESP *d2i_TS_RESP_bio(BIO *bio, TS_RESP **a); +int i2d_TS_RESP_bio(BIO *bio, TS_RESP *a); + +TS_STATUS_INFO *TS_STATUS_INFO_new(void); +void TS_STATUS_INFO_free(TS_STATUS_INFO *a); +int i2d_TS_STATUS_INFO(const TS_STATUS_INFO *a, unsigned char **pp); +TS_STATUS_INFO *d2i_TS_STATUS_INFO(TS_STATUS_INFO **a, + const unsigned char **pp, long length); +TS_STATUS_INFO *TS_STATUS_INFO_dup(TS_STATUS_INFO *a); + +TS_TST_INFO *TS_TST_INFO_new(void); +void TS_TST_INFO_free(TS_TST_INFO *a); +int i2d_TS_TST_INFO(const TS_TST_INFO *a, unsigned char **pp); +TS_TST_INFO *d2i_TS_TST_INFO(TS_TST_INFO **a, const unsigned char **pp, + long length); +TS_TST_INFO *TS_TST_INFO_dup(TS_TST_INFO *a); + +#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, 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, TS_TST_INFO *a); + +TS_ACCURACY *TS_ACCURACY_new(void); +void TS_ACCURACY_free(TS_ACCURACY *a); +int i2d_TS_ACCURACY(const TS_ACCURACY *a, unsigned char **pp); +TS_ACCURACY *d2i_TS_ACCURACY(TS_ACCURACY **a, const unsigned char **pp, + long length); +TS_ACCURACY *TS_ACCURACY_dup(TS_ACCURACY *a); + +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_new(void); +void ESS_ISSUER_SERIAL_free(ESS_ISSUER_SERIAL *a); +int i2d_ESS_ISSUER_SERIAL(const ESS_ISSUER_SERIAL *a, unsigned char **pp); +ESS_ISSUER_SERIAL *d2i_ESS_ISSUER_SERIAL(ESS_ISSUER_SERIAL **a, + const unsigned char **pp, + long length); +ESS_ISSUER_SERIAL *ESS_ISSUER_SERIAL_dup(ESS_ISSUER_SERIAL *a); + +ESS_CERT_ID *ESS_CERT_ID_new(void); +void ESS_CERT_ID_free(ESS_CERT_ID *a); +int i2d_ESS_CERT_ID(const ESS_CERT_ID *a, unsigned char **pp); +ESS_CERT_ID *d2i_ESS_CERT_ID(ESS_CERT_ID **a, const unsigned char **pp, + long length); +ESS_CERT_ID *ESS_CERT_ID_dup(ESS_CERT_ID *a); + +ESS_SIGNING_CERT *ESS_SIGNING_CERT_new(void); +void ESS_SIGNING_CERT_free(ESS_SIGNING_CERT *a); +int i2d_ESS_SIGNING_CERT(const ESS_SIGNING_CERT *a, unsigned char **pp); +ESS_SIGNING_CERT *d2i_ESS_SIGNING_CERT(ESS_SIGNING_CERT **a, + const unsigned char **pp, long length); +ESS_SIGNING_CERT *ESS_SIGNING_CERT_dup(ESS_SIGNING_CERT *a); + +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_new(void); +void ESS_CERT_ID_V2_free(ESS_CERT_ID_V2 *a); +int i2d_ESS_CERT_ID_V2(const ESS_CERT_ID_V2 *a, unsigned char **pp); +ESS_CERT_ID_V2 *d2i_ESS_CERT_ID_V2(ESS_CERT_ID_V2 **a, + const unsigned char **pp, long length); +ESS_CERT_ID_V2 *ESS_CERT_ID_V2_dup(ESS_CERT_ID_V2 *a); + +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_new(void); +void ESS_SIGNING_CERT_V2_free(ESS_SIGNING_CERT_V2 *a); +int i2d_ESS_SIGNING_CERT_V2(const ESS_SIGNING_CERT_V2 *a, unsigned char **pp); +ESS_SIGNING_CERT_V2 *d2i_ESS_SIGNING_CERT_V2(ESS_SIGNING_CERT_V2 **a, + const unsigned char **pp, + long length); +ESS_SIGNING_CERT_V2 *ESS_SIGNING_CERT_V2_dup(ESS_SIGNING_CERT_V2 *a); + +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; + +DEFINE_STACK_OF_CONST(EVP_MD) + +/* Creates a response context that can be used for generating responses. */ +TS_RESP_CTX *TS_RESP_CTX_new(void); +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); +BIO *TS_VERIFY_CTX_set_data(TS_VERIFY_CTX *ctx, BIO *b); +unsigned char *TS_VERIFY_CTX_set_imprint(TS_VERIFY_CTX *ctx, + unsigned char *hexstr, long len); +X509_STORE *TS_VERIFY_CTX_set_store(TS_VERIFY_CTX *ctx, X509_STORE *s); +STACK_OF(X509) *TS_VERIFY_CTS_set_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(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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/tserr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/tserr.h new file mode 100644 index 000000000..07f23339c --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/tserr.h @@ -0,0 +1,132 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TSERR_H +# define HEADER_TSERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_TS + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_TS_strings(void); + +/* + * TS function codes. + */ +# define TS_F_DEF_SERIAL_CB 110 +# define TS_F_DEF_TIME_CB 111 +# define TS_F_ESS_ADD_SIGNING_CERT 112 +# define TS_F_ESS_ADD_SIGNING_CERT_V2 147 +# define TS_F_ESS_CERT_ID_NEW_INIT 113 +# define TS_F_ESS_CERT_ID_V2_NEW_INIT 156 +# define TS_F_ESS_SIGNING_CERT_NEW_INIT 114 +# define TS_F_ESS_SIGNING_CERT_V2_NEW_INIT 157 +# define TS_F_INT_TS_RESP_VERIFY_TOKEN 149 +# define TS_F_PKCS7_TO_TS_TST_INFO 148 +# define TS_F_TS_ACCURACY_SET_MICROS 115 +# define TS_F_TS_ACCURACY_SET_MILLIS 116 +# define TS_F_TS_ACCURACY_SET_SECONDS 117 +# define TS_F_TS_CHECK_IMPRINTS 100 +# define TS_F_TS_CHECK_NONCES 101 +# define TS_F_TS_CHECK_POLICY 102 +# define TS_F_TS_CHECK_SIGNING_CERTS 103 +# define TS_F_TS_CHECK_STATUS_INFO 104 +# define TS_F_TS_COMPUTE_IMPRINT 145 +# define TS_F_TS_CONF_INVALID 151 +# define TS_F_TS_CONF_LOAD_CERT 153 +# define TS_F_TS_CONF_LOAD_CERTS 154 +# define TS_F_TS_CONF_LOAD_KEY 155 +# define TS_F_TS_CONF_LOOKUP_FAIL 152 +# define TS_F_TS_CONF_SET_DEFAULT_ENGINE 146 +# define TS_F_TS_GET_STATUS_TEXT 105 +# define TS_F_TS_MSG_IMPRINT_SET_ALGO 118 +# define TS_F_TS_REQ_SET_MSG_IMPRINT 119 +# define TS_F_TS_REQ_SET_NONCE 120 +# define TS_F_TS_REQ_SET_POLICY_ID 121 +# define TS_F_TS_RESP_CREATE_RESPONSE 122 +# define TS_F_TS_RESP_CREATE_TST_INFO 123 +# define TS_F_TS_RESP_CTX_ADD_FAILURE_INFO 124 +# define TS_F_TS_RESP_CTX_ADD_MD 125 +# define TS_F_TS_RESP_CTX_ADD_POLICY 126 +# define TS_F_TS_RESP_CTX_NEW 127 +# define TS_F_TS_RESP_CTX_SET_ACCURACY 128 +# define TS_F_TS_RESP_CTX_SET_CERTS 129 +# define TS_F_TS_RESP_CTX_SET_DEF_POLICY 130 +# define TS_F_TS_RESP_CTX_SET_SIGNER_CERT 131 +# define TS_F_TS_RESP_CTX_SET_STATUS_INFO 132 +# define TS_F_TS_RESP_GET_POLICY 133 +# define TS_F_TS_RESP_SET_GENTIME_WITH_PRECISION 134 +# define TS_F_TS_RESP_SET_STATUS_INFO 135 +# define TS_F_TS_RESP_SET_TST_INFO 150 +# define TS_F_TS_RESP_SIGN 136 +# define TS_F_TS_RESP_VERIFY_SIGNATURE 106 +# define TS_F_TS_TST_INFO_SET_ACCURACY 137 +# define TS_F_TS_TST_INFO_SET_MSG_IMPRINT 138 +# define TS_F_TS_TST_INFO_SET_NONCE 139 +# define TS_F_TS_TST_INFO_SET_POLICY_ID 140 +# define TS_F_TS_TST_INFO_SET_SERIAL 141 +# define TS_F_TS_TST_INFO_SET_TIME 142 +# define TS_F_TS_TST_INFO_SET_TSA 143 +# define TS_F_TS_VERIFY 108 +# define TS_F_TS_VERIFY_CERT 109 +# define TS_F_TS_VERIFY_CTX_NEW 144 + +/* + * 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/txt_db.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/txt_db.h new file mode 100644 index 000000000..ec981a439 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/txt_db.h @@ -0,0 +1,57 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TXT_DB_H +# define HEADER_TXT_DB_H + +# 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ui.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ui.h new file mode 100644 index 000000000..7c721ec81 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/ui.h @@ -0,0 +1,368 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UI_H +# define HEADER_UI_H + +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# include +# include +# include + +/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ +# if OPENSSL_API_COMPAT < 0x10200000L +# 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. object_desc is a + * textual short description of the object, for example "pass phrase", + * and object_name is the name of the object (might be a card name or + * a file name. + * 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 {object_desc} for {object_name}:" + * + * So, if object_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 *object_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(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; +DEFINE_STACK_OF(UI_STRING) + +/* + * 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 + *object_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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/uierr.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/uierr.h new file mode 100644 index 000000000..bd68864d0 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/uierr.h @@ -0,0 +1,65 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_UIERR_H +# define HEADER_UIERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_UI_strings(void); + +/* + * UI function codes. + */ +# define UI_F_CLOSE_CONSOLE 115 +# define UI_F_ECHO_CONSOLE 116 +# define UI_F_GENERAL_ALLOCATE_BOOLEAN 108 +# define UI_F_GENERAL_ALLOCATE_PROMPT 109 +# define UI_F_NOECHO_CONSOLE 117 +# define UI_F_OPEN_CONSOLE 114 +# define UI_F_UI_CONSTRUCT_PROMPT 121 +# define UI_F_UI_CREATE_METHOD 112 +# define UI_F_UI_CTRL 111 +# define UI_F_UI_DUP_ERROR_STRING 101 +# define UI_F_UI_DUP_INFO_STRING 102 +# define UI_F_UI_DUP_INPUT_BOOLEAN 110 +# define UI_F_UI_DUP_INPUT_STRING 103 +# define UI_F_UI_DUP_USER_DATA 118 +# define UI_F_UI_DUP_VERIFY_STRING 106 +# define UI_F_UI_GET0_RESULT 107 +# define UI_F_UI_GET_RESULT_LENGTH 119 +# define UI_F_UI_NEW_METHOD 104 +# define UI_F_UI_PROCESS 113 +# define UI_F_UI_SET_RESULT 105 +# define UI_F_UI_SET_RESULT_EX 120 + +/* + * 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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/whrlpool.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/whrlpool.h new file mode 100644 index 000000000..20ea3503b --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/whrlpool.h @@ -0,0 +1,48 @@ +/* + * Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_WHRLPOOL_H +# define HEADER_WHRLPOOL_H + +#include + +# ifndef OPENSSL_NO_WHIRLPOOL +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + +# define WHIRLPOOL_DIGEST_LENGTH (512/8) +# 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; + +int WHIRLPOOL_Init(WHIRLPOOL_CTX *c); +int WHIRLPOOL_Update(WHIRLPOOL_CTX *c, const void *inp, size_t bytes); +void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c, const void *inp, size_t bits); +int WHIRLPOOL_Final(unsigned char *md, WHIRLPOOL_CTX *c); +unsigned char *WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md); + +# ifdef __cplusplus +} +# endif +# endif + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509.h new file mode 100644 index 000000000..3ff86ec7b --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509.h @@ -0,0 +1,1050 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* 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 + +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 +# define X509v3_KU_NON_REPUDIATION 0x0040 +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 +# define X509v3_KU_KEY_AGREEMENT 0x0008 +# define X509v3_KU_KEY_CERT_SIGN 0x0004 +# define X509v3_KU_CRL_SIGN 0x0002 +# define X509v3_KU_ENCIPHER_ONLY 0x0001 +# define X509v3_KU_DECIPHER_ONLY 0x8000 +# define X509v3_KU_UNDEF 0xffff + +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; + +DEFINE_STACK_OF(X509_NAME_ENTRY) + +DEFINE_STACK_OF(X509_NAME) + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; + +DEFINE_STACK_OF(X509_EXTENSION) + +typedef struct x509_attributes_st X509_ATTRIBUTE; + +DEFINE_STACK_OF(X509_ATTRIBUTE) + +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; + +DEFINE_STACK_OF(X509) + +/* 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; + +DEFINE_STACK_OF(X509_TRUST) + +/* 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 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 + +/* 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) + +/* 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) + +DEFINE_STACK_OF(X509_REVOKED) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +DEFINE_STACK_OF(X509_CRL) + +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; + +DEFINE_STACK_OF(X509_INFO) + +/* + * 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; + +#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, + ASN1_INTEGER *ser, + 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_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); +# ifndef OPENSSL_NO_OCSP +int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); +# endif +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); +# ifndef OPENSSL_NO_OCSP +int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); +# endif +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); +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); + +# ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); +DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); +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, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); +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, X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); +DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); +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, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +X509 *X509_dup(X509 *x509); +X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); +X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); +X509_CRL *X509_CRL_dup(X509_CRL *crl); +X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); +X509_REQ *X509_REQ_dup(X509_REQ *req); +X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); +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); + +X509_NAME *X509_NAME_dup(X509_NAME *xn); +X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +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) + +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); +# ifndef OPENSSL_NO_RSA +int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); +RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_DSA +int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); +DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_EC +int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); +EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); +# 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) + +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, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) + +DECLARE_ASN1_FUNCTIONS(X509) +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(X509 *r, int idx); +int i2d_X509_AUX(X509 *a, unsigned char **pp); +X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); + +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); + +int X509_trusted(const X509 *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); +int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, + int); +int X509_TRUST_set(int *t, int trust); +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); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, 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); + +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); + +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); + +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); + +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, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); + +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, + EVP_PKEY *pkey, const EVP_MD *type); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + void *asn, EVP_MD_CTX *ctx); + +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, X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, 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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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); +int X509_certificate_type(const X509 *x, const EVP_PKEY *pubkey); + +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, 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(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(X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, + int nid); +int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); +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); + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, 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); + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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); +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl)) +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl)) +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); +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(X509_REQ *x509, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *x509, 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); +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 + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +unsigned long X509_NAME_hash(X509_NAME *x); +unsigned long X509_NAME_hash_old(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(X509_NAME *name, int nid, char *buf, int len); +int X509_NAME_get_text_by_OBJ(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(X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(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(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); + +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); + +int X509_verify_cert(X509_STORE_CTX *ctx); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, + ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +#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); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +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); + +#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); + +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(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_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); + +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, X509_PUBKEY *pub); + +int X509_check_trust(X509 *x, int id, int flags); +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); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509_vfy.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509_vfy.h new file mode 100644 index 000000000..25c79f1be --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509_vfy.h @@ -0,0 +1,632 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_VFY_H +# define HEADER_X509_VFY_H + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +# ifndef HEADER_X509_H +# include +# endif + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +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; + +#if OPENSSL_API_COMPAT < 0x10100000L +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +DEFINE_STACK_OF(X509_LOOKUP) +DEFINE_STACK_OF(X509_OBJECT) +DEFINE_STACK_OF(X509_VERIFY_PARAM) + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_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, + X509_NAME *nm); +typedef STACK_OF(X509_CRL) *(*X509_STORE_CTX_lookup_crls_fn)(X509_STORE_CTX *ctx, + 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_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_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_INVALID_CA 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_SIGNATURE_ALGORITHM_MISMATCH 76 +# define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 77 +# define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 78 +# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 79 + +/* Certificate verify flags */ + +# if OPENSSL_API_COMPAT < 0x10100000L +# 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 + +# 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, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + 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(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 *v); +int X509_STORE_lock(X509_STORE *ctx); +int X509_STORE_unlock(X509_STORE *ctx); +int X509_STORE_up_ref(X509_STORE *v); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(X509_STORE *v); + +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); +int X509_STORE_set_trust(X509_STORE *ctx, int trust); +int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *ctx); + +void X509_STORE_set_verify(X509_STORE *ctx, 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(X509_STORE *ctx); +void X509_STORE_set_verify_cb(X509_STORE *ctx, + 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(X509_STORE *ctx); +void X509_STORE_set_get_issuer(X509_STORE *ctx, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(X509_STORE *ctx); +void X509_STORE_set_check_issued(X509_STORE *ctx, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(X509_STORE *ctx); +void X509_STORE_set_check_revocation(X509_STORE *ctx, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn X509_STORE_get_check_revocation(X509_STORE *ctx); +void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(X509_STORE *ctx); +void X509_STORE_set_check_crl(X509_STORE *ctx, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(X509_STORE *ctx); +void X509_STORE_set_cert_crl(X509_STORE *ctx, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(X509_STORE *ctx); +void X509_STORE_set_check_policy(X509_STORE *ctx, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(X509_STORE *ctx); +void X509_STORE_set_lookup_certs(X509_STORE *ctx, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(X509_STORE *ctx); +void X509_STORE_set_lookup_crls(X509_STORE *ctx, + 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(X509_STORE *ctx); +void X509_STORE_set_cleanup(X509_STORE *ctx, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(X509_STORE *ctx); + +#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 *ctx, int idx, void *data); +void *X509_STORE_get_ex_data(X509_STORE *ctx, int idx); + +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 *store, + X509 *x509, STACK_OF(X509) *chain); +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(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx); +STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(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(X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(X509_STORE_CTX *ctx); + +#if OPENSSL_API_COMPAT < 0x10100000L +# 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 *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + 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 *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +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); + +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, + X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, 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_locations(X509_STORE *ctx, + const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); + +#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(X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); +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); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(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(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +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); + +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(X509_VERIFY_PARAM *); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +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(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/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509err.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509err.h new file mode 100644 index 000000000..cd08673f8 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509err.h @@ -0,0 +1,129 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509ERR_H +# define HEADER_X509ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509_strings(void); + +/* + * X509 function codes. + */ +# define X509_F_ADD_CERT_DIR 100 +# define X509_F_BUILD_CHAIN 106 +# define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_NAME_CONSTRAINTS 149 +# define X509_F_CHECK_POLICY 145 +# define X509_F_DANE_I2D 107 +# define X509_F_DIR_CTRL 102 +# define X509_F_GET_CERT_BY_SUBJECT 103 +# define X509_F_I2D_X509_AUX 151 +# define X509_F_LOOKUP_CERTS_SK 152 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# define X509_F_NEW_DIR 153 +# define X509_F_X509AT_ADD1_ATTR 135 +# define X509_F_X509V3_ADD_EXT 104 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 +# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 +# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 +# define X509_F_X509_CHECK_PRIVATE_KEY 128 +# define X509_F_X509_CRL_DIFF 105 +# define X509_F_X509_CRL_METHOD_NEW 154 +# define X509_F_X509_CRL_PRINT_FP 147 +# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 +# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 +# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 +# define X509_F_X509_LOAD_CERT_CRL_FILE 132 +# define X509_F_X509_LOAD_CERT_FILE 111 +# define X509_F_X509_LOAD_CRL_FILE 112 +# define X509_F_X509_LOOKUP_METH_NEW 160 +# define X509_F_X509_LOOKUP_NEW 155 +# define X509_F_X509_NAME_ADD_ENTRY 113 +# define X509_F_X509_NAME_CANON 156 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 +# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 +# define X509_F_X509_NAME_ONELINE 116 +# define X509_F_X509_NAME_PRINT 117 +# define X509_F_X509_OBJECT_NEW 150 +# define X509_F_X509_PRINT_EX_FP 118 +# define X509_F_X509_PUBKEY_DECODE 148 +# define X509_F_X509_PUBKEY_GET 161 +# define X509_F_X509_PUBKEY_GET0 119 +# define X509_F_X509_PUBKEY_SET 120 +# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 +# define X509_F_X509_REQ_PRINT_EX 121 +# define X509_F_X509_REQ_PRINT_FP 122 +# define X509_F_X509_REQ_TO_X509 123 +# define X509_F_X509_STORE_ADD_CERT 124 +# define X509_F_X509_STORE_ADD_CRL 125 +# define X509_F_X509_STORE_ADD_LOOKUP 157 +# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 +# define X509_F_X509_STORE_CTX_INIT 143 +# define X509_F_X509_STORE_CTX_NEW 142 +# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 +# define X509_F_X509_STORE_NEW 158 +# define X509_F_X509_TO_X509_REQ 126 +# define X509_F_X509_TRUST_ADD 133 +# define X509_F_X509_TRUST_SET 141 +# define X509_F_X509_VERIFY_CERT 127 +# define X509_F_X509_VERIFY_PARAM_NEW 159 + +/* + * 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_CERT_ALREADY_IN_HASH_TABLE 101 +# define X509_R_CRL_ALREADY_DELTA 127 +# define X509_R_CRL_VERIFY_FAILURE 131 +# define X509_R_IDP_MISMATCH 128 +# define X509_R_INVALID_ATTRIBUTES 138 +# define X509_R_INVALID_DIRECTORY 113 +# 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_TRUST_ID 120 +# define X509_R_UNSUPPORTED_ALGORITHM 111 +# define X509_R_WRONG_LOOKUP_TYPE 112 +# define X509_R_WRONG_TYPE 122 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509v3.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509v3.h new file mode 100644 index 000000000..3a4f04c18 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509v3.h @@ -0,0 +1,938 @@ +/* + * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3_H +# define HEADER_X509V3_H + +# include +# include +# include +# include + +#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) (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 */ +struct v3_ext_ctx { +# define CTX_TEST 0x1 +# 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; +/* Maybe more here */ +}; + +typedef struct v3_ext_method X509V3_EXT_METHOD; + +DEFINE_STACK_OF(X509V3_EXT_METHOD) + +/* 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 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; + +typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; + +typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; + +typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; + +DEFINE_STACK_OF(GENERAL_NAME) +typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; +DEFINE_STACK_OF(GENERAL_NAMES) + +DEFINE_STACK_OF(ACCESS_DESCRIPTION) + +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; +/* 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; +}; + +typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; + +DEFINE_STACK_OF(DIST_POINT) + +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; + +DEFINE_STACK_OF(SXNETID) + +typedef struct SXNET_st { + ASN1_INTEGER *version; + STACK_OF(SXNETID) *ids; +} SXNET; + +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; + +DEFINE_STACK_OF(POLICYQUALINFO) + +typedef struct POLICYINFO_st { + ASN1_OBJECT *policyid; + STACK_OF(POLICYQUALINFO) *qualifiers; +} POLICYINFO; + +typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; + +DEFINE_STACK_OF(POLICYINFO) + +typedef struct POLICY_MAPPING_st { + ASN1_OBJECT *issuerDomainPolicy; + ASN1_OBJECT *subjectDomainPolicy; +} POLICY_MAPPING; + +DEFINE_STACK_OF(POLICY_MAPPING) + +typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; + +typedef struct GENERAL_SUBTREE_st { + GENERAL_NAME *base; + ASN1_INTEGER *minimum; + ASN1_INTEGER *maximum; +} GENERAL_SUBTREE; + +DEFINE_STACK_OF(GENERAL_SUBTREE) + +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, 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_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + +/* X509_PURPOSE stuff */ + +# define EXFLAG_BCONS 0x1 +# define EXFLAG_KUSAGE 0x2 +# define EXFLAG_XKUSAGE 0x4 +# define EXFLAG_NSCERT 0x8 + +# define EXFLAG_CA 0x10 +/* Really self issued not necessarily self signed */ +# define EXFLAG_SI 0x20 +# 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_NO_FINGERPRINT 0x100000 + +# define KU_DIGITAL_SIGNATURE 0x0080 +# define KU_NON_REPUDIATION 0x0040 +# define KU_KEY_ENCIPHERMENT 0x0020 +# define KU_DATA_ENCIPHERMENT 0x0010 +# define KU_KEY_AGREEMENT 0x0008 +# define KU_KEY_CERT_SIGN 0x0004 +# define KU_CRL_SIGN 0x0002 +# define KU_ENCIPHER_ONLY 0x0001 +# define KU_DECIPHER_ONLY 0x8000 + +# 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 +# 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; + +# 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_MIN 1 +# define X509_PURPOSE_MAX 9 + +/* 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 + +DEFINE_STACK_OF(X509_PURPOSE) + +DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) + +DECLARE_ASN1_FUNCTIONS(SXNET) +DECLARE_ASN1_FUNCTIONS(SXNETID) + +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) +GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a); +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); + +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, 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 HEADER_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); + +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); + +#if OPENSSL_API_COMPAT < 0x10100000L +/* 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_PURPOSE_set(int *p, int purpose); +int X509_check_issued(X509 *issuer, X509 *subject); +int X509_check_akid(X509 *issuer, 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); +X509_PURPOSE *X509_PURPOSE_get0(int idx); +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); +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); +void X509_PURPOSE_cleanup(void); +int X509_PURPOSE_get_id(const X509_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); +DEFINE_STACK_OF(X509_POLICY_NODE) + +#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; + +typedef STACK_OF(ASIdOrRange) ASIdOrRanges; +DEFINE_STACK_OF(ASIdOrRange) + +# 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; + +typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; +DEFINE_STACK_OF(IPAddressOrRange) + +# 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; + +typedef STACK_OF(IPAddressFamily) IPAddrBlocks; +DEFINE_STACK_OF(IPAddressFamily) + +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 */ + +DEFINE_STACK_OF(ASN1_STRING) + +/* + * 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) +DEFINE_STACK_OF(ADMISSIONS) +DEFINE_STACK_OF(PROFESSION_INFO) +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); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509v3err.h b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509v3err.h new file mode 100644 index 000000000..3b9f7139d --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Headers/x509v3err.h @@ -0,0 +1,164 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509V3ERR_H +# define HEADER_X509V3ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509V3_strings(void); + +/* + * X509V3 function codes. + */ +# define X509V3_F_A2I_GENERAL_NAME 164 +# define X509V3_F_ADDR_VALIDATE_PATH_INTERNAL 166 +# define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161 +# define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162 +# define X509V3_F_BIGNUM_TO_STRING 167 +# define X509V3_F_COPY_EMAIL 122 +# define X509V3_F_COPY_ISSUER 123 +# define X509V3_F_DO_DIRNAME 144 +# define X509V3_F_DO_EXT_I2D 135 +# define X509V3_F_DO_EXT_NCONF 151 +# define X509V3_F_GNAMES_FROM_SECTNAME 156 +# define X509V3_F_I2S_ASN1_ENUMERATED 121 +# define X509V3_F_I2S_ASN1_IA5STRING 149 +# define X509V3_F_I2S_ASN1_INTEGER 120 +# define X509V3_F_I2V_AUTHORITY_INFO_ACCESS 138 +# define X509V3_F_I2V_AUTHORITY_KEYID 173 +# define X509V3_F_LEVEL_ADD_NODE 168 +# define X509V3_F_NOTICE_SECTION 132 +# define X509V3_F_NREF_NOS 133 +# define X509V3_F_POLICY_CACHE_CREATE 169 +# define X509V3_F_POLICY_CACHE_NEW 170 +# define X509V3_F_POLICY_DATA_NEW 171 +# define X509V3_F_POLICY_SECTION 131 +# define X509V3_F_PROCESS_PCI_VALUE 150 +# define X509V3_F_R2I_CERTPOL 130 +# define X509V3_F_R2I_PCI 155 +# define X509V3_F_S2I_ASN1_IA5STRING 100 +# define X509V3_F_S2I_ASN1_INTEGER 108 +# define X509V3_F_S2I_ASN1_OCTET_STRING 112 +# define X509V3_F_S2I_SKEY_ID 115 +# define X509V3_F_SET_DIST_POINT_NAME 158 +# define X509V3_F_SXNET_ADD_ID_ASC 125 +# define X509V3_F_SXNET_ADD_ID_INTEGER 126 +# define X509V3_F_SXNET_ADD_ID_ULONG 127 +# define X509V3_F_SXNET_GET_ID_ASC 128 +# define X509V3_F_SXNET_GET_ID_ULONG 129 +# define X509V3_F_TREE_INIT 172 +# define X509V3_F_V2I_ASIDENTIFIERS 163 +# define X509V3_F_V2I_ASN1_BIT_STRING 101 +# define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139 +# define X509V3_F_V2I_AUTHORITY_KEYID 119 +# define X509V3_F_V2I_BASIC_CONSTRAINTS 102 +# define X509V3_F_V2I_CRLD 134 +# define X509V3_F_V2I_EXTENDED_KEY_USAGE 103 +# define X509V3_F_V2I_GENERAL_NAMES 118 +# define X509V3_F_V2I_GENERAL_NAME_EX 117 +# define X509V3_F_V2I_IDP 157 +# define X509V3_F_V2I_IPADDRBLOCKS 159 +# define X509V3_F_V2I_ISSUER_ALT 153 +# define X509V3_F_V2I_NAME_CONSTRAINTS 147 +# define X509V3_F_V2I_POLICY_CONSTRAINTS 146 +# define X509V3_F_V2I_POLICY_MAPPINGS 145 +# define X509V3_F_V2I_SUBJECT_ALT 154 +# define X509V3_F_V2I_TLS_FEATURE 165 +# define X509V3_F_V3_GENERIC_EXTENSION 116 +# define X509V3_F_X509V3_ADD1_I2D 140 +# define X509V3_F_X509V3_ADD_LEN_VALUE 174 +# define X509V3_F_X509V3_ADD_VALUE 105 +# define X509V3_F_X509V3_EXT_ADD 104 +# define X509V3_F_X509V3_EXT_ADD_ALIAS 106 +# define X509V3_F_X509V3_EXT_I2D 136 +# define X509V3_F_X509V3_EXT_NCONF 152 +# define X509V3_F_X509V3_GET_SECTION 142 +# define X509V3_F_X509V3_GET_STRING 143 +# define X509V3_F_X509V3_GET_VALUE_BOOL 110 +# define X509V3_F_X509V3_PARSE_LIST 109 +# define X509V3_F_X509_PURPOSE_ADD 137 +# define X509V3_F_X509_PURPOSE_SET 141 + +/* + * X509V3 reason codes. + */ +# define X509V3_R_BAD_IP_ADDRESS 118 +# define X509V3_R_BAD_OBJECT 119 +# 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_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_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_NAME 108 +# 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_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_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_UNSUPPORTED_OPTION 117 +# define X509V3_R_UNSUPPORTED_TYPE 167 +# define X509V3_R_USER_TOO_LONG 132 + +#endif diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Modules b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Modules deleted file mode 120000 index 5736f3186..000000000 --- a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Modules +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Modules \ No newline at end of file diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Modules/module.modulemap b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Modules/module.modulemap new file mode 100644 index 000000000..bf0f22fd0 --- /dev/null +++ b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/Modules/module.modulemap @@ -0,0 +1,6 @@ +framework module OpenSSL { + umbrella header "OpenSSL.h" + export * + + module * { export * } +} diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/OpenSSL b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/OpenSSL deleted file mode 120000 index 79c9cbef6..000000000 --- a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/OpenSSL +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/OpenSSL \ No newline at end of file diff --git a/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/OpenSSL b/packages/mobile-sdk-alpha/ios/Frameworks/OpenSSL.xcframework/ios-arm64_x86_64-maccatalyst/OpenSSL.framework/OpenSSL new file mode 100755 index 0000000000000000000000000000000000000000..b7f61012c768f1f8afab900312f87e82563ada16 GIT binary patch literal 5177408 zcmeFad3;nw)<4{x1)B9H$`VmDAYw9%lAtIN7}C%o_d>U1LTtJ->WS|>x6iDc9 zlKWg6aTImNQ5lzKbVf&f93Tk-9Y7LX1Gu1!3XbA!+XYdRfSP{4->TbNfO+Qq{oa4x z&nNkO(p}4`Q&p!N=TZY|c>x%D8o2}GlE9je#aBrmb#5dxVHrvq3 zQiOWrzw@t?0-Y4-q(CPHIw{aefldl^QlOIpofPP#Kqmz{DbPuQP6~8Vppycf6zHTt zCj~kw&`E(#3UpGSlLDO-=%hd=1v)9vNr6rZbW)&`0-Y4-q(CPHIw{aefldl^QlOIp zofPP#Kqmz{DbPuQP6~8Vppycf6zHTtCj~kw&`E(#3UpGSlLDO-=%hd=1v)9vNrC^5 zDe&g;FWYhP-;Rs_wl4V3#eW!qpe-kZRh@zV0)%GGy0UD>l}zdIS1~X>!HQ=imH))a zzge@qbC!B#SjN-wh5O1p?W#NxU_2`c&PZiybk?jzUf&Ii5=kA~*X=fm=eX#F%@&Wx z3pgx%$@UT7tXt;XwqVXe0CmKddAr2dg`L7*JT7DSJfVFz-ada(vcnzm<#;8&hgQl4 zGM?7o1Y#MOHS5Mj-i5c$zu8Lfh;Mz%0Fl%4T#1kIRD2d05?E)=^37jz>-?K$-8z5n z?MUs2@1-;3xQ@C+7Gb<2js!9U$R{TLXU%dsuXN6uFy->8l3U{Zal|U!Ax^&IKXY?L z`I~P~Qtj0E)&W-h0Uyi9|2Up2;t_mb zhCAb#C~30|MvX-btjo96AX2j(-;7&-IXm)g>l`-Q`d9O9P4C(Tzq8J~-Ggld2ia^z z9}Tgse>B6^18MOg`b{^RjsF++x7q%XZ?gp~TqpZ7-ydQ-O?DtH`%J`G&wIbS>apVA zk9}mlwsq&(Y=u^wbmSkU7V{4-JKt9NAX7U3Iw{ae zfldl^QlOIpofPP#Kqmz{DbPuQP6~8Vppyds|EIt-RsU2CWxsvdK-- zW{lAEMmFo?f7)&Jv{;~;t@Fh9F>`FOs8-cKGzZHz`Ob;n75)MqLzF;Rz_o&nyMTB};v)jlg#T4Y5Pa@5&f9BS|a_dLk`Z4py zLw1{!obj2y%N&}Sfx-RK-_}*Bt_QdtRztn^AfVouRi)aSVh2@YTC-}5&tXGt~Qr`L~_Tq&Y21R92JYj4&wi2{4d6T(26tdkN6k!H=Vxspe1Sa-9O|+ z`ntg1Y4qLqUJ8A8*)94yly#r*XtUCdvE<0>#PvDVh{r z!KfhfJB%(!P_z+Ii_A&d|Bpx%WKPol5s^qEWCz-pUHR{6|JEl7+D9-mPfGi1Uh9ESw`ubPUj4&`g}{w2i5;Yo~pm9>eHH? z`uCK<7o5vUy_55MyAT+S9%IZ9r~jvU-ZMPGn6FRq0VzcCu5l*VMAc_DIYVVJf7|jU z69EwF^;b|NIaK-&l&2XV+aV;%9hxzvNFA*fDS@XzOoR%Q;1dWD=InRuw#WmBXvT^h z@MYvL2yZ68bD{^e(JOM4z@6wi+j?j)Sty3}08`Yw=rt6bjVuA~9_?#Vg1%~dF>-nc(fB;%^#Yc_8{TEuHLY8+rW(td%=ZR~3`i^U?~vl`XP1l&z-BrP_Yj9Z+2K@j zTtjk{+zB}%l#ft8=qO}o*wbAq+c>u)F^dB)mvMoOXIU>a^=HnL%a+m|&24~&4 zAJt${TGnp2`NQr0wrr((0viRSMK(pkfwvYkqHdlc==BtLMS@jJj zxvC-$9dHdPi1ZSb#>{`cC5P_7lae#O{Snj*9`H_~)DRphB)+E!GBjm!M9wS}%#tGn zP4V91-DWqWkf&Y*2DZI$pI!2JQYdtq9p#?M6ju?}ge`SI{SP66{8(xdqQ9{;f) zVzFmX-)8)eI4=L+M>thKgZ2zHNezv>=3j5m=105o(O(S%0cfM#I+ z)=y{6e@1tbjVumhdr}(TpQ!piCpy&|#hm{3-o8B5faG7Avz0$Eq3Z98m3AFgT5Iot zRQboIZ|#Th%*dbb%e1Xwyfz=FjMV;J>HCv*wW_fcXRc-|PCJF_9N31E?9#}Oq`Z9| zakP8?K9DaD@~z&31oPdS#6ZMV+eY)9;anxE^FVU*6&cP)*y&$B%I58%HCBtWQ=}-< z!%ii)x&T4V*hYAg@*HZd13dcH^}wzf6QM1(#wzkGZ9aN|xr;cBZNzETBa9}Mp-GTt z^|RQZtLEg0W`Fo0bhp$!hv>h>PewJ-t46J8<^=E+tGx`&l(Ik2jO7lq_1;W@?xPC{ z?@uk(6UE4W!LaWw!CXT9@1XBU{!P>;n!S(BK1F@iR(-dp)hCMmNl^3O*N1%uri(R} zKNO=LtZn-~z_))h+ivq-%9QIx@6&oS|HKNf5lNz4G@}>`_{al$2H5I(RBV2IBgVZ^ zU?AF*4N%(t>ZJ7EN4%%%{~Af}+b;l2I=%mdVsUyWvjl0XER3T#f^qpF#_v)K-#Kac zL?L$yzJE7<{x9-Vh&q%+wHijvz>nU$jrDW^Q*tWFPfB4~GlFDn1P_wl-$2}{hM;6U z=MKccgmP->f`D#a6!+iB8KO2;+E9}JEZMau)HTE4*geD3dT$S z0XBx0~P^*r!+_C}1VG(Ht?6Sd(m?~ze0I_C>zJ~o0O#x^kv51)T zX0gLQfxrA;VCydSAQrs8whiz$UpIfPaKP}cP(#ZOg65$zs8+^C5>pMWA`o<)gKEiY z2Jb5O^)jZJB@eL7itOkpM3fwxlAEa-nQCDZlxAbHqi_$D<~tNM#&}gj>3GG41j>Nk zRmUF0+O(nz1RDzp;gchX3Dd}txe56r+KV;KchD@s3WW_KiYtM^Y>t1~L7Q?IxciAa z_F6c`9m?MN`T(0#taiX6zUzO1%(_wdaMmryr>XbPv_;2QxU8~^b{bVCGGk#hNLaa) z@y+_ZOk!*3#lr7jJeEl#h}^A8vYtfVO8IAO6GQCZCi$SqzfJIg?|g6+X-MHib5C(g z43-ip;IeDQSXK*iRW-6CIOduOiCJn9{?<4AAD%fuZHSDxbx(N9k(m9cnps0=RTp2G zYgm^qKC6xs=Ux5OSc8>YwVh>TE_>Am&ACpL&J=T;bcdt@-K9j0Oo#fSoKuM;p$}l& zoCD4|V#c8OvKs@yGDmF6qhbHDHheYYHz*q$P&Q}g4q@-ZcU&G?stjeBoG6Wz96bI( z=#btbDDwmpSBjR!fk_$m$DDA=Mw?Glxk-raeBd-cg-;V(I!3In9oN?f|4YjI73Tvg zz2LJb7?=0|PCm0g_i(^ZWN(!;-q|J2-Xj=Y3nNwIp$uxqqc!+)hRU;AoBand=Yva; ztJxdP>~VRvM!_$_lGa||s}zm;<7rfjmDOEXss6GST1A}_#n!M`sN9ZVo(w`h2J>aG z2Z9AM*bBjRGT0lz3K`5ruv7+5M^Kf)eh7||!7~t?A%mk4oGpW65WEFJH8g?9DrJzx zY7lhmPd&{P{gL(f62yhAsi(5aP3jq|YSBBg?O@GV9cEbXImB7p3!!3Ib?UjG!8YsB zzlk+FE64Ryf+JB*HAMd^N3|=#+Yoo@rW#Uz!am=jtb73rt!jkwS*y`a)k94Tg(|*R z{l_zumA@C+YYUL5Y&vaj!*+*D+4Q;U4}a?}F_o2zkUbY`tEdOY3?)#C6f`+YS$PRU zsLFp3)|M|2XmB-lk954A&1(n!KG}x zAw%o-8VY~sE;*t>N=p4W8weNuB=)s z+ew~Cw6m$|7zb^uErvJM>&LD-V1Nd;p~tE3|eel48vi2>(QK z)fUFt8^!;c0NYZF1oqPTQVjFH3g&dX&6`F+G1kMjop)KY~VzI zk?2X>Cm`CtL*9%1qjmHYGY7y$mO1w$$E6>x#~0cI`>K_G7ZU0*}-T6d1{;)%BGCDx;@F#ZbJ-__q-I2mJ((gP(b@g6Efz!=ekfJS=^)q zwxMH?@{qq z4wZ>~XDyDAY~~Y$`VdV6u99>pm^lFT1Dm}JP^x5i(|I;(e^!?0nqJ~DQDQpsB6moD z!`suECjrJ1V1@*E`D6eg0$eHqo=gY$nP~c11n4IL{OJJSi8lP40N(=^-MS$iV2!}= z5&+EqJ`bJ80U@Erq(kv?h_iMi(U6w`aArDytVbn4NCF&hNb9QvxRwC7Nr3m#0e+8E zXYCCHm@ENm(*f=k0Jjr>-9{T8Ob3wUB&j3aB*5Zy0PZ54wJQl=qC@0M!BL@Zf+vIf zkr+9M58xi1Ui3au^iL>it{4I`)dLFikGkUA#>yPz+HH-MJ;gVaLMgFSW6K)M0-Q&I zA#M4rvDIAvqg2Gyo>W)kGY<1?ftW?d%;$62nibI6V&;UuVy1@HQv6xc+6XNr%2ysi zS14ux>Khup5G~fjX#{s7&sm!bjyGRFw>M`DP6YNrp>yfqsz&y`xLQOladcU;uMaku zRXeFfrksbF|1~l%b-yq(a`;PhHckJu_DI46<~C}%;l@FWw}i^^(*KdlF^n8?=D(ZM z6-S_2VPnEpQCoxp*f6jh|Ds)iM5LkoD3s@h7TcHviu(nMI<8G>VS`rkrsC(>39Bpo z!7g{6O7M9rspSRPf&#>a?3sq*8q92Ra{yaOyspVkHPELhKh1lPlmv*e?0anu>3@0!mz=ClS z`$ay_6d%EA1^MoEV>uApSK|+&=8&&h4NW_!hCKV-p)wPsHCNuugCMG=tDZ)qT1xG9 zo;&&as&?3$3;_AVz0|@TOLAfL8K-6@5*B|AgU5av56+=|0xDU9neXk6FqV(jZ=zio zX#GYl+=tEMu$c!{Wx|exNr?MLYv-s+i`C2>s6Fu~_LqtCc(=Yo)8Ekacb)oon*Njd zRhLY*xhEH((;Ol^TdQifm)dL#M`9v`w!|j_=VSfl_;A)jcd(f|^LyKBx%m-W;^f&c zFhL1%>&M;tH=3}vz_}%UG8{P@iy|PLv1vuY@Y0>W`%p(=dL5qvyR)`GKBIq3`U7E$ zoiF#uq-|s6kND)DvayDYRpa?e*;r|3sO)PD%vbJ^=U^Q~jBP9LWtJ6(&2O=Thp7T< z;Oe`Pq#Ae1^IE~qt9pqYa(sJnp>dI9)l7rcsm6U_e(8O%*&tG(3e*#`roTsPg?|B6 zM#zuT5tiztkYr??5nx(kQ8wvp>fD9~=;wRD{aYQSFt9X7b5SPQD}X?*(DOpt{18q3 z6XT8S(56brBkY0AI!u7RjQrIyUkQ+;?$F5Ph)2(W z2`Dk2G~>D)&A$srm2tEn7+e^KtXZqpPQc{iS~LND>sYO7BjfB50Vu9 zA>g%=j=n6C0#6{x6S`}No!jc*7_gw*@HN5R$jsT=2VFQD(`y>|>cjdt?~X*5>$y}q zYp+9L({VPG4q2D^&nEOQ>;3~o28wgfMly=yZlUz88_4-|Uq3cDVsQ`_h zh1_e?b0x~FiE7hU8oIie{Ocd4PCHnr*) z7Xq0K~C6+2hJ8Bw*-NcH13Dv8!Pz}xrcKcvb#EF86BjO1;svT}0N;HdM zw|!Bb+kQmV;fe!G9!2v(u4k6Jrga`H{59#Ilkg_QvWVVzm&3s+4-QV~MuS@N&BFO~ zGW4%N7ba-NIMsmn-79M0b`@P1fqYdd|3(dEU80U<59AW0On`}|CE0^-%-sdD2ZMxX z6a6sz(~k=M^mWxh6{FOlWtQh?Iur-FI*Zn(>znX?)bzJ3ODB$s;LTzkG1Hw8v{3^8 zKtS^^=b${ppm906GLa+VE@@L%u9ey7i%MV5)|PEj3X3Qc2qqD zix#Xwyrr%gSD{UNN#A~|aRu09iNhVrf-CTD&3~w?_hNUbPd_d83Wl@8`G>0Sa@JgY z8dN%m8hb^H?e=}C*_*XkQ?#3gPVvO*6FlP)y!Y+%?{01WkKAlZD_W%&-gjwJf`8WRdMy{lWlvp_Yb=1mG^4c7E>Q2*u} zVb|UbFga11X`Nh212p0e7(O_PSI4JngIc)9U2t(P3DTN4yx<34RAX zuHK2ZI%@~8+u!xYiriakEO#I+xs^yzGWEQMd$nV#v7&$nt6;n{fxvBa^-#T15LS)f z!j1B%I&6BLZ?p@u-`Uat?i2g=mWB-P`EEnYaT~L8JcaMML(?5@!GZ3=4^{oQd2U_H zkzN=X;4<_CGG!f_ig1T-%eKbw>uW)M#pIOqllpt6Bb^eweBx&NzorrUR98N zh= z=E>Fqu22|zh~sGx72XP=Y3WVwkh3k+latA&H8yY=(i*pmuYDhDt$Q^LhQIBYM;VVT z!4ij7ve&Il*sC@|U!w$@o)3XAGlEkKcoN~zFtL8}{sNqOf0(O$jhV2b90!miuUsFW z$=3tk+*68~tWSV&40|Wb&9RW{usZ|uQgGT*ct%deGCLVU9h39eA`h_i1{Ua{_4A11 z5hp!LCQv-kgb>+|Z_K05pO4QY+K8-qbOQ@KdzvtiNbl-Xih*Mk1OMp~@!lXgEYnXa z2Gr2h9EgGpHM2Vf!JDaqpnC^700af9t~%0f1Wb)&Vo0cubNnW9=t4c;W~bH0Fb7NB zcTlxtgBqIDhT{a)PEXNesvJ{Q8IRLsxbc)@z}}e|nFbvm119C~)CvlU7O#r}H;x6s zjpg~oE!G<`fcO19Z2)t|aR7mLLV?_Wz(mm1noSslIfU+mHg4@W2|(myJ-4e&Hr&%uk-TISzREMKr`z+UDKP&YO*fE zQ9jnoHz1j~UVejh6X$V`g;mkP9oARPzK5CmJIq&B&g59NeptLWF0X-4Rd#E-I~Ve6 zdt03t(~@^6zsymQ3juCXAmuzi?jL0dc*rULIGfkHTf_+inK*1pQnB!TDwGOr(V#F2 z#Ud;fi*hIyZm4%U%S@nHS8}0PV5~7Eufp5|aiCPF2FwPjN=1WEDoPSc#rEWW4sJbC zpCElw^$8q{ITrPej=}DCl4cJJ&0;$f7Zy^p2wVL_c}Wi&=n;<7W4qKZz%x?AP^uLY zk~-al0_^LL|BcRkEmG0Y$AT@5I}4aV>#(_$36_u$)a-b^e$`Yc$3h{V&07hfk$(lg z6rJPzF+c#441#)x35qpsVgc1n%+)+Wv{HxAb;U+~KFbQW@3@8+_3jPt!g%FU9(Pzz z$RyR5pwUpoL3<@Y`*(72Ig2qcGi1NibFuSqAdRj}mWn+?DDEkHkJA5q@1YD7k_@Uf z*f5STuCssZRBngXPPG%uI%U}#Nm=GpR!qqO!Bzj^uDAph8iS?&O}Bmo`r>;vJ-ez6 zQLsZ3W{mGE)xMpaA(!`3H(X(2uK3yW2`yr=Thd$6yl%A2Zwmt5jE%PDfi_X#H9 zC~nf^8Lds3bGM;h~7NfY4^wi_DyEw7cZ^qVWL1F5}JreIV~V!VH%KHERc7Gav zD!w1M;?k4tPpKE3CRAliRaNhj&_`1C3sQSJ0~9C#1>ht|&|%IL@T5G8%LnT`Z3Rli zu-y-hyc7+A{_Hl!aou_fLt}<7p;vkg%;q!W>sN}w1Y?x6S5e=lAsvg?@h7nWr-go2Z9zYUFC z1q}7)qQuNdceFaazvyddGjcG4bv5d;zHHPbwd%v4pC{s<>r#@rOJc5{2$taEzA4k)CCK8 zjuuj3DF|Z)IHu}dA>L^tN%RlHe}T17cnh$#bsG+#(v;oBEuNAl3!A1lqZDxNi9Sc2 z6q;O)+KBB9{#5;4fi^{dgWf`IwvySBwYpNffS#r1sJcR(Hc`LK?@t!n>pgca)-O2k zUV)jm7hc~+i8}fhzArd`ja+qfKUHxxoYcPFp+2x24s}GOuvb`>3T0Z-*HBpBZf|eY z7YnPf1|a79js|+!o_qF#JD{hjv^yybQw&5O^vV}KgkB(ka+YkFbu=Bt)pHvD%> z_AKgNS4p)EN8V>b^Q*$%M8p+bLK{nJtOy5puXw5Tz2dO{*tjKV8hZ4^D~tXrHs?uw z37(r){chOeFdQJhn3vFH7oT!F^M= zE*P<@y_Z{<;{eCRyDd1*5720u0u-`e_}qz?;C~w3?9D)dG%uQtS^>o z;}V`k>;Cl$DDnkdaG^dHng5c3QuBQosDOwrqAcCUj7pw{WT#_S4jD`c0N zyxE38h50=Kmz33Ggtfl!c}T_|d|G}#Mt@%vn>dPPReW4E10UDj!ZJ-(-cqi?a==7O0ASUf zTg|$0<&8D+uil1hv~XK2Kb;rlW9A=ArOV(w$kU9whLF?E>|?Q*d;tJ#tps^wg-MX( z4vjtbCyI#n`UWJK^FbcrUDRH`o$>1s2d&IYK&a>vcj&xV1vH#R57+;Z0Hh}Y`T_uz zZ{-xIZ^cKQ3m+c+ptJ4~!hQN_hAj$C6jiRWs-!W){NaK`l{C(pQN)RHM=M*5jheK2m}_MNo}9 zip<}|3m!p3+@Tkn(eUWFczvqzqNu{ZYZOL_4;B0x(hKCS5q1W{pJ>2{IG(3D4vAv0 zk9=fKgn1EdB2C=JW)^WOo4VpH5uc*@8y(T%iT=Tr-44}22?l{>uCt`Pz`NY=-;IL) zaMa&sU$OuNph?pg!(4$XA*bQbFQU!!#7qdPR4Pzw^S?6ar!g06%o-rzAA_i!f01zn zlN~S|b9Hr8tO1{v=`tw?aZ}^vKZt9#lG~pK;RLrk>*!Tz9{)H4#>?pIwLlk(?h@*7 zy1v$krIsC^SZWQJvI&OsCLio{VW=Z&=nlJ9(&igDw?r-Q_BSri@;5~N$LvdbHfEp# zj9EA@Zt+am)8qF)Y5`EDzvj^!HT`uOiO3b%fB)tz3;|{XFM@0%FWY>)x8l;Dx(TiH z=-+wtuRQusc(cd+)fk=5UJ{cCZ*iK>3E0*RI1*lR+!BM|K?&U@H^hnfV3ujYh+nNW-YlB*7~UEU8c zhXgzM_F3EmC8)xj@EvMJ_Es!66hU-Rdw!IV0nqj0;s-(UAM893KV^_ODYD1I#idNh zBT5k0kWyx!L;zhoqzL&}4ngr;_YjuK8Uj&+^%*MiT6TY~J}Jv6&DJx7<`Wv3^&kWd zpWZOY*^PB^E8;@v zK1bCNsXl=QFKr-9uXVQaUgjl5U9$S9xURkZ0|6GeM|Mtl5Sv?27C2&4;oqp#Y=fYZ zbt!=fz}Dj5kI9#%1Y3wYv2>V-MQ)Qc;Y{GNv$_xC5YS3MJka8A!zkDUj3N4$X{-aN zvN2cL=;Rfy8R!vcN-2Qy`r2C%_nv25q;_;(#QmIv=b|CNu!PWmk#>+FK#}ghhuZz^UV@2y|xY2 zI79cCL>9`v_C6_8kr%6{P<7Vbj4?4E_$P)b)OR|vajJ;Dl=x{L>YccSR zLKeia%h z9dMbA)Ij+?=|r#wfd|7k0VX~sCz~^bDFqC^MFkfVJ~^S!LsWJtq<-N)hP!Lhqcr=E z_sS83j*dGKhSrK|m0Oke@ zrUKDay1h)8XCdY>SU@Qj8pld{_royPDBqB(eHW~cN!<nrpOt6pXpe&jUn%ahpYG8c z8q0;g09)eBND(SSCDo`zs*Zzz*5ZdebjIAaKSMgD)BG0zbkcqs*Y6%en$+pu|14Ff zdzuTcw*u%3tUd_Jae%BEE@BNcQ3FqzjO>T4;zA3n#3aSp7_>0rPtn54^j(mecuY;z zg&cJ2Augf`J`#THUM%EvnEEJIv6Q0!ebj_XD37ztU?9Dh+_mT?$CH0>LZCu9`xZJ}h^4$l<;A;ciyLG9bAYUJC%*9npkk}zK!hreL((rCh*i(m&njV7 z4OCE!3!$e8+qvD)Uhe`z9ad6_Sr2j1bBBgNS)8-ZtuL#=Jvy!ns_uIl-JdPGKN?r{ zD@oDoHR@MT&xyr{Ba`e4LLI3ZLSvkDc&@}2xf{$T?o}T*b24cvnDew%)*4OR_{j2= zQlE#Mz<3&!VU)&ua5ZYCSZDDiC?M+>_QzO-15^(D4iqH+*vrslt21Tmu-$kXQFe;M zlqIv1n1QFB;s>3P$a2U%UyDkGoMMZ-C2Y~fX)Th?$V9_VY|5(Crik6BvauAtv0@x+ zoCw7eGisb!*eo1`nrZky#;5MgRyO$$BQ#fcc2hQ%={3$C_^PRK!bv@@ns^7NsU#H7 z;y#6SwNl)u5Paq@tLX)Tn`hv%BxH6Cr@~S+L`)#vE{{hezojaL(Y)wwDA_N8RMhK& z*B})GdacoMKwYTLS@#c4lY8I7G#McQFFFO_lN|Zq3mW?=BDkQCLGkC-H`k)8mV%?| z_cbHt(*G957xJ2z#~mUb3_a#HgzjvfjoxBnMP7nlgXV4dua3==v-nEXD&*;(P5_YY zr>@!eetEMv>Vc9FgI435j_vtH095Q zzLis&r{uz8Qf5ofi#+q{ji4|droo?OQfAQl6XzBBrH!jh;1JAM)yVtPTk`=hGx9nv z{BTFq(f+Of&{*E{2tY(7)v5yAjny;o#lObt*;WXNw}11S2-23HsA#zNEq1OAU>;!>dURt*G!tfw1Hi<@Z3x zLn={990`Hh#Q5^O6#^(1KD(8y{H`~x+QpgH3F9m6X;s@2J6i`=`vAzN(wc%(ZYdgD zN@qK;!WFkfao8R=d{vmwe8L%xJ9Bs+$b1$NsWW=da3g^p;qJ@@rL@$pAs`G=QIzJ! znQa^dN>U4qumAo#f9&t;>CU`J_3x;Fi;NG`@rX2s3a@y{zncz%b*VJS{_2}<0lGxI zHV0BAvzpz(>a*lD^&y<7?!y{jJ)23BQ+8?f0F)5tdnbi|z5{$t5}x#u`icLG0?}F6 z(~qJ>9==K}+_Vj0bfVA7FqdA|qx+|TLGF-+=fB(iQE3QQ*1T=0xXe#;RCvdcOih5q9`Bf zgq1Lsz3|tSV=nFQy9rJem*N==HFK^Lm)XjcO}m{{$0|{3p$1I!5YVTEv0p+f*;wjHgIlu8n)tS=TldtWR?~+XQJdTF)UrlqsrqL2*kgY^QGa43HA-hc?eGo&VY1or z-+4;#(DNZp8UH4tZl&xHMR*~6*P#i~psfyrK?+uLE_B{O(}m16O@-(o`%8wZI9ym!oOJs z3L6^tIXmsP!+~pA)7&+t?O1>75f~W7Ar@lZd2v-ALog|H@hF%6xvTKFx$?Cx+}#Dk z%NN6di1%YWC3r>_zWL>i;#Q2IhfzU`bG8GO9K>Y`cj3W>>*9^p{Z<#)A#39oDaJej zJthV^(qkVmIqNPXJugKZ5ipH%R?-}w)S17+i!b2Nx zHTw(&xIS8}Es=kr5Z?Hyl~~P(_F`)zp77kt5Dtx3Il7>mc<5!}5Kz0Nsw1_rFoD|T z(8wbpAkq0YvUjp(Y~|L1JU>p=gS_gmhs3i1i+jsm#&!5ML=tue%!e(e(gv3R-Z@Gv zN_Jniu;$?!fD*u_)uuO5#J-78$$q7p#}7ci9>qO{pV7+?zDf(i@a`5U=PE12(@N1Z z=ugg9XJ9sywary-7g-cCXKJBx5TOB1migX(yy-2TdeQW7^mL~nQ?xg(eTzgVF8jyA z8m%}J@GMQ6yIWY?5idlzc(2xaL@n9Bs1QyzO5j;AmrHN(AIikFf~-XsV&Q!N#BveP zDF7F~D**ifB#0t*3dOr4e1gS|`#%29e#8xs`1+}q;8lG1Bk#e^`zjo(?A3H!SlA25 zyT5M+1>E}m-|y#l=<*D$WKR+{GadGz1#99P7fG@pzI{(XX;A{l(Y)mRMSa+Ts{VID z;+I4Xc!@{FwW-4q9_(qMiXZ8s(-6tP`)zuY|6nFON_sBJD&8BNtNIW9SiCn~-@#}E z-eyBZfUOXLBk_O@%r8>7#*09HJWv!5lp-Kpj{FTj`u^_5n4uzYoD$&F#|sri3#Z+8 z@N!c&Z_lLYYe4B5aRi@PBhc-9+-3BA5&d;af0NTqmGex+MK?Lu)KG{m$Es(p1M|Ogjb_s;`{~YV%~>U{ZFqG6G#@tG1Y%l zkVLMNdyqdYKl$VmkF68|hVlp48Y};aPyWScx@w3Se2NKw?qIT0TNFNvHSS{vF=Ki0eZ*n*2d6xrg#ssr~}B%jF`&*GnxCJ1!;o4pK{Af#*5T5q}Czd}94-TO&)iRglIgRQ0W?5qw2r`_yDcT`r zHFW|UQRQO=^*stVk$l9ViQJq=YrV}q`bE~V@a{+rlVK~uE98;MU^>XY<9DU3rH>)M zZUsJ^b*mug%r{}ps|6hQEO{wQ3d(Iipl&i}WzBh+VvEGy-}Cx|p)dUK8X$dGh5 z#2`SW^~jTA3{sL?BJ|gC>7i#iLh`8!f1R*Py7k~XByzU^jVxiFJijM!%b5YY1|i%f z;YED`;MRBHmlckkDYqmIVnNwZ0RTf_hmT`V%t&!{nPz{dR%C<{x~L-=xq=GvXDZ#n&+;F{wT>zEPR(u^Yu zNah|*Y=akO6p;eY9+03PF8T>A4))KmY-CV_jKIV!ydz~o--3o%n*{~>RAf3kve&57h<5w-D*TKU}Pu`kVG}c_u09AbpaQ z4L;6w2;Q|T(n*{oXg%)g%OQVJP&#u1hb5lB*R0=mB5l7!9q7&LOHSUKGeKMP@o=Iy zdFYMm-$K>}VY%t0Hp*J6cCb!&=qZjax8lYk6Zf>*T%q~#?Xz2lV*MFLK36vM7s4p~ z6-GTDEknyMz|%LJvi_Y#Fgg@q$!0|wE?!|0{~ekmIf9EIzM_|)+5OmTJlTf0+)<>k z#RY8oXE=e3l;Q{sY#lEyxVtg<4-`WCsq`v=5Cfd6Mokz&Lz|7mc<=988XUeHJgb-m zTz7RHOFNx!j^PggB-R8KaN!L9=7U%l?A|G+J5y@P7vo#l<7E{fiY=rb_aDnxIE+Sl zJe(jJV1ALEG|KBCwkFy=*(wqeNtpD)%Z_wwF+YrAc`(+JDB|)?7*!jhBj{WaQ*R8) zL>QS zHWME%#RX^o;8NrOQ7XB_R@c}-G$)X&Un;q}S>*Da9Tzg*K2%U}cFT76_4V}Mc~^$7 ziy^v!V-F-c@#7&`n49Krw&0Ant*38{e{&7?Z#LgWOzjJ2lJlsGj`S@_T%(P+GsTp3D7gGrBdT_IB*9Y8iC+7nP*n2^AG%0caD-vW9 zHkz7&*04#KtBJ`&;1k$jKq?#bve-ZgW^=`euQ!3#6i(<)PEZ1$AW0t8$Tot6WNq`h zM%juIv;s%?f;2H~MKSvR9sK>PogUnp^^_b|{C@@tNY|n~d_l zCFuJoB!EdCA_<~(k_6Mhv6B3iVbN8QEyr4{Vb)RE1>|fwOC>K-2w=R~5l|u9hj5 z)S@twATXN;@5c^CO!!5pw3%Smc^oddnLRHjm#$dBAzg#{hUpT#om~iJpYz+3uU747 zY6Q=p66S{mCx=-=n86)Lc0%p398|aZ2`U~^7Q*nL1PVpG&4o8c(bzi5Q+MGv=n=c< z4sE6($P(OqsTb9Yg4tf>vE2^!(`95EY9zEM^_$?U>i%F2fk zSd5oXzs5)%+a!miT9i#5R93_}r5td)NN91$ZVMjk_kYA84*||&hd_|+6>P8pUSE_{ zeESp0=15C4oll(p&9$HbG=UdM3gk|Q(xVOw3hoH0II{4EkwaC>SqqVJ!g=L=EdRgB zj*~AT6XJ5iTOyZ>n&3kqF#WbtDy0r34oT~2C5OI87@m}hn%QI*G){Jqj}%d!IpF1* zZG^ZUIl%~K zWSO7loxDsJFn(l+gn91-7-~VzI)iw5B8j>;oB-nzFmDrv+W^4adkUC=tc&9dn0cpw z8BUn{C5(0o7|NySA|NR^1;9`siCzJKuBQNS5da!|h~&j)-1{5*rr zd}ag8!p4R$N=a>=Pe$dbp-1G@{>W^CA`4BmNW=AUyhWKE-kI1*`Yz$^0XP?@Z5el< z%Ii;2Wdr+Zm=EHtnfvcF`vBe}yroQkT{u_22Ip$s_bkmjM)u`ajr6Y;=Yv9j6-)3? zOL0{mX%Lz#PCfIR^s@C-3#gSEo@agMMf)_Ctw)4&IgyI%z#o~}P8)`gg z*u=xt$CVyp?8KF@~=Zk$Y1 zi~E>qGQ=lZeR~D89ng3XEAkOnaCGr%G!K3(`n-SOoogx*`kaSw^0y98JXYfVK@E4> zvU(`VOQB;@NiM6g3_Nb*Z#+AVo&}Syi-k?Mz0G$$PTk_Z$YRU>r7xd#^~x1W*XoN| zk1Q#kz5hAl@Pdb%rZA@^?H5k}T|@8-I!|k{Hz{T;^pWUe*g&vn{K>;CTI`3{_5-Cr zHm@cn>6$R&E#sku^@;CYdPoik^56ru-(!7!cnQne%^v|YBwH~WQrj277wpjsG*s@u zRlihU==+{VCftbXMFDR&;h_8jq`EQH)v_JlrKbxL`f6Qcy;;Q)=V2B+glnWM?oy==V_pq5f*;0Fn?OM=P=ly0b#PNN7v{sKXSg%?vJ zup1_@S|wP7aLabPuRFc5hecMSQKBV#P)tjlMDXwnIaTf4xhSg-Ane=*mb7Vw(D)(I z;SUDS&Ni;N_(|6-99=EbI|Oh095;XcVSlWHcMZw&6oL$BGtSJ_OhI)VhLZS!u&7v^&CkGw!e^WJ6U!$5H#+QOV&uoO_UsUbY# zEdo*rtQNh&Qe1xvYrv1Y>^5HkKXRq|D@+oJ$|LhpuZE^@O4}0235V$^$d23uY%XJS zK%$Zk*KX7Vyq0V2BOsHMaX8i@et)b7o|Z!>fhil9FfS`vkrHf0R)jumZ1utCG0$-+ z!=)ef^+!if2V5zs%^|}Zs1d;VkM|R?eq`*dK0dnWl9a$Tf%DSvR8j-)DrltJ!8hwL z^5=?@AQ%@L9A(ny7<-{*>u_kh2Ht74T4AdgPce{MNh1z=+QdMr#xhLi@U}K z|FVDJzzSOcNEsY%FI(et;1B~kNGE1D+Z6U4=nAy$&xzU(35 z1w->#rzF~tpil*IIx6EMk=hgnhq40;GY z5+d=-sp+oak35s&8onNp$iHyI61}}W5v5c5bVi3h z?S49?Pya+D(ia8Lr{&joB>7FEy*{@0@b^45=>f3mCxD3wT}O9_$Tolh=Asi|{vgQ1 zA7zR>3>b<9%rnEY-qBEb%&r;dd4MrTy~XW?OZq3amv{B$x0iSEo!MTV?d#WGp5@DJFVFP# zY%kC7b!{)V`!d?a3mq0bp1;^eZ%YbL%b_#jAIbd+{9h}OJ#z;dCiX9Ue*zcf+xb{c z4?Yc~zi;+@8_Sq}9d7+k6w9l8=Rx@Y2_MsP+%dKM38nuh-uuO`qRzs_!9l=lPB;QX zdzx2mqCY%OomwGYJd58pRe~WD5*|zm_eqzrbhgv~nZsv-57s~^V}{Pruf0PA87E^c$vgx`0ib6a#MM(Gg&Xz|CN z09^-k7^R6UIO8w4p?e_x)tb1!NZNj{LOk(=XLI1Qu}PeyUC3SeUOUcskou@f2KF1a(ui{CK# zs(uN(`v=lVjuf>vB;Up45noF34Hm=)W-TGfh z0npZo2FQs=QEw48NR+Xsc=cI&r>0!iPdyJ#@Z%40*1+#W3afQx7${uE0`SCPVL?80 zLkG5aL#x_Fwt!TSYyp3wa{QFQ$mg#WJ|L1Ue)Way*D&0tB3roi7s(dVBMKV)UNaAN zA^xf;ym!`y1>d7rzX6WKLe`OEhKi2KDIzwAY4c6^4_t{k2KRt%Boh6jMokW7ZNpuT z9a_~+(TvbY2ddDFG4PIQssD?h7n-UyW(`3YzDzs!W0UFo5Ia}m;GZBrH|ExJ-PZiK z=A(3}4UK%^8qCRm0Ni|@U2hb`;{j@P2F1X#5-0|!2Uy1)U_+N*AY{!_EfgpY_cKkv7AHjc)Tkj5T&QPni zuVWRs)4!R1{LmLI#alJpU5fKu|`6O z2$Obb?4Dndo;bg3ufG&knd_q@C*&}xxeMOXulf$AxJoDFlXy?0TusO~H-5kqQ_;Ty z8~qCZwmeAw45OO64qxvwqjC)NL{~}JsZ0pNsphia?pn%qanh-{j(~MEw4=Tcpz5AP z27FuaX@2`S=fcb#PKf|=3NHj2)dj$+;z9P3=EcKL#1y+a9n(F;^o)f`7lj2+z+>B} z&O@6i|GLL(@I8vgyaW{T6jrndEQ1y;CZ6jpJY?V#`F9##?8EOz?gykMY+Ap2A?f21 zsxAdf!u*m)MLG1Ku*pcOA(0+u;C%W#ijxkQ<{X66*NzfjTT}w*TMF=nBOG`DJCoPO zVYjEFnyECPu#OCz{!gu_Zs?BZKJvvI2jc=&p{86ayI1dwD?RTCHg?QS8 zm!&kz+uGmIj-zv>x}i5)j#n%2j_d|@8rObF6SpDys#L!Sc^cUUsO0!~3}GVo;1~b& zsCTrMYE>sCQhqlQ-ZAevWB6sjM@a7z`h+R*6NwnFZB-N47~9NUPIO1vxZBmOLD|@b zcQ~#blF1*6R5rm^a+<@bFUxZ39@60mE0hi=*sf*bdNVL+#v*iQRTx=Ly33|_O$ok= z4C9ij_AIF6%H3NKi<^^PKp2BAEEMutz%l)m04I+>*4MkpAM2w89|JMa=ckdV`fDEo zeQe&F5y}UP*t|0%E0FJj6PU-iH;fdgu(zF2W^{u`KWn_J7Xre171T(S_>pH|G-72& z4_661IENz~+1pEubtSOit@HDNx9XU%S_SV%PQsrQjUhuq!ojU?yHfp_AVK=6>#(@J zZ?LfU!By5MbKp5nEL{sPjk6N|66o8@#nWi1JISmiA){38C zm{S#)m~mtY*I8^B-VyVSvqOK+{OucZ7W_A`v4q74d@L;k3!O7%+l&j5;AsftQZ?kV zXW;1xoK=_Qvr>HLI2+4Gp+yj;iK`1JEv5ldg%OyN$y3s*tm1e%{mZiY`&MYlbsU^v z_s-W0F}hSrZZQAn5FhGmH2;Wit7+1Exg7I^DjLBag!dkT}TMJ!o*Fw`O`12b6r*MWz=Jw6N5c74IKEBIkb85n9V9Uu4!@FDD zVDp~afyI=-P)L$En<)XV2o?x`7E2M2Mx%2xKxyH)@*L_gUod3{wZpx!Rd*_W1rkON zLqH1I5SqCLQ;!lcF-62gP1h$p#xjR{n7sSG@~&pMg?nT3`k` zh`ko+Xf9+T_@n!$BwwjgJs+7^HFAJbc*{sCs(36S#5Sm*8k-Bn^^lOEq30@)2#G4X zfD0k|0r8_xpo#e|j&GB9D`(4v0JHo;jbj=*K1v5NTp$;NiuqSaI8LvzUx93~LO1T3^M4@SG z5}as5Z^Vg8E0k?tzz46A?&T;;#3QZ(Pf7U1!D2wX+HT1F9vdf#-A3$C7^bA#9^TV;V4$c^!#t+O$lARO=~!u zHN|ihJG81cJ9tO&--9VSCG_)R%n!$8Sbq+d5Rd+v+2tTKO9)B9 zwA4UwipfP*HR@Q2$0!5Xp~;53I3L%?>TRX6*qaZF4%gg`5|cwcFNVi$z7APkhSmX@ zjZhU4K_Ej)94hZ09j(`V`L~H&qev`)CEg#Qu3;kHdc>2G#FYHn| zrr74iPv9-cQZ|k$cIu=2jnUG|7+$t`o@EniiPxjrzi}EDVZMh^mvl1VI*oT)c-Wt& zlvo3uBAL<4G<_6Z_Kl9OpCjb@IgDE=n(T4dW{*FH)en|7y90vgMGRqbJ&l9HkZ*V3 z)lPdUhnX*~V3nbkFYMlYe@EGSah%Yk33*0IjXGU`$3VHF}$hz zGP+4_gH2b%i=7PNmXES>C14>M#$7H&1E!QE8h!@U&N?a*kq^*Nz?=yfYaU5GU5F6m z0j>?ukqv}{)Ee|)s?@^Ie`2uPA+_k_7MEHcz;N;|Mw*mUQm%-VpdF`GXW?CH0>JLY zts&(Z|59EPkq4!ym`L-$)MnETblh_Cndgx`61L$KVfQ}ZBRxc$mO0R<#}Efo=ZjzT z=7n=83|xn)9iM_`$I)icqlZ;Pl4e~5%|0b9p23I#<}hd;XHtb30zV*vw|K&UxN;1A#pkGy3H3&RQ&tOqM#U|P-A z?fnJO@$3kViMKEhWkucrD{rpMyCOAjo0T_7=8Z|k`Gl2sq0BokwOlpwK!lGc!{GiB z21pF(B(x^ZMog1r5x;9&=LQmU;r%eadjW-_e?d_$SxNfs67>5G03&4*#t)b{!afQ5 zoB;@DT{jRTLQfLly5^*CRRZ5dfHRNXhl+oYgL~l#6${>|Gl}puz<}TZ6z$>rxuv-E z_u&^v#kz|IiyybV`Uux`v0RdqA4VyU{$d4|xyUPM9h%fMDNdPq2a*(_DaTni9)RX- zHVj537FmlTap1EPz5R^1Z4=Vz z&nKXjgK>mt$4Ruy00ZHXBAHyG>dAyTQ^H(*0v^dtKL9e)Du-mG1(TeO>jWMy36XvH z;2r~CT)sJ!3|cQ@gb@Z2zEw|7`D@vddnL@9C&0)Fa3iuK^YG!UI%JDMlPGCWg1umjJJvY8?9{GfC{j0A!wiFUGX51XrzQBt;mF z-_E-0@EJLb3K9yA&}Jh8hDA=UFV2{bhNQPdm!sUlXoc!o3VQwzXpu zwgVm$Q-d5*XGjqKf*qocu%0}i&_)`vM(P^7^7%lK923d|DZ-3YpDEr zJvND6={Jy8#D_TR_I8X7%?ryuZ zhU4ShgWk~wwRyU|JP|gkLC$=*>tu~nWAHd{(~9?N`Z2BWJ+1gXPqzlG_?Xsk38_tIF_|rVA?*F0gZQ!FSuK)iHNgyb&K|oMZf}(>syu^#!7?_4+|yM8u1_BVCBfvMkIGfFO)n! zv!52_T1^A%j4d%_GJE@__B0?@-c$M7Z~r`q2@7}yD3}Zb$%Q`idEsDpDN84^Jvy6h ziQEoZ>PKalWxaPO;@Q{8-Zw;_5PKQ;eE9+i>S3rJ;F67M+R9c)kLtvq#H*yq(IY*D zFYT1^6~00Wvs1S8fSWxdk=7TkP@T)nISML>imuy+FQHArDJ@tXLP@9Isd%2f?frS- z3w1kF2Kl?Tm^;|xd6!1~-gKpL=#-dM!lj|X?q}%BlA)=JWy~7G(G9t_9mv~XC;Mi~ zGd)5X?bT^nXvj8<4d~jc{453YXBA0d=pFY_lV>%)a;6jo_CHVdgUjRJFJc)rokA}i zEX32V^vFs%bM6jtphB(PiLbN#rH<^>*nn~cuv_pq>WNek-v}9;b-~tk=|Xc+!J-U; ziHhg_u>jpPDqEC>7tkL9PXo{41Uq;q5+@gOZ2W>r9x98k1xx8jO~E0r2TNb43kOS^ z=-u2us7h4SSCy{gnqY9qi^0+tgI!;%0<`P?VB`ML&S!gH9=H{4eDy77Vsm-o+GcLt zq&M5i0^?2KzztW&r0JnFU%M--t_t_y4q4cQth-DHbfur+L@_j^0rnK?3fQjduFc{_<<2@PwuSrJLEKO}6TeDSd==f9SMF4_9A43K zu=D4({$2ZVkp_wL)L`_~%m6Mt;ip+nZkF(e(R~6A+O)66Hap2d!1?Pm8#914H@jEA zYFoa4CSbe*X!&!b6>aQ%Xjvzj>CxRlK zx`Xp@5#=j#<5q1#b@JamlHAO;jA~GooJ=2mqJ_=I4F8mc^_I}c^9T83yE+5<5BG}^ zN2o_G@Uu)dn(3`CMBc#CnySVIpb~R=P6c7K!VF)3Op|!(eX2|Ae>qyMzt>7&l5@P) zU#`}FI4=8r|4bcbHhI>Xu`z-nps^tenSj9xfI)6l#30Kzn%vUX(noL_0;}6XhjH7B-z|@!GSN zPHTBWixOYtikdaT2+7YB2AgCY2NQRjq8RN}U5yD0IDzSojDE~uRDsQqE!J_D|4s=w zsmH-0cRp(0o!K5T=eWs&t07htNkoJSCAy(cba&xU?PMfkBHI44F80dFXAecfJ9(p( zuIP0de{7o)*tSehGpzS1(}8najOi7E%C{Y^NYBLJARFq2ZRCBxfyH3Ezm~Wl-rKL~ zB=NNE3wcd|-})iuLbBbkt$b7uDL9z0U5$~?K=;>m(>Qe+tGZh2E4{1@6>W&BUa5c5 zXJmRs2pS%HqC#IMlmYtlkq2il&k&tjYGGy`0_Fq3)CtD&F^xC>oyQQs8mx8X#Q3kA7J&{aa``d)9m}9C2`(sJ|J50IM%k z%}YTC>KuCr=(hxITvbRfE0;R`40ST|?f(n(2##2P2zm@Y7(D=QM~@Rcdi>>&J$&ZA zGDNuodT9<3y#{&l_YqIj`CgX}CZ?6(S9WkB1L)>$W>Up$RIB^o20MMs<;nC>?2B9; zdnwyK{*(MFy)@w{=}sB>7Wbsd`eqP65+<#{^H)%Rw#4yj|eqv)od^@ z%3Ls&O{>hnP5!0D;2s<@PyB#~*h6qg<+9)q9EfP>Z?Z%G^$2FgSZn-4Gf1-ceZj_e z82*Oa1@WpHU00-|A{c|ie#a1F--*NY-I32ze;@^2@0MX5yIwg(2UbQko@Xo9L(t~I zKmYI1#xUm_4Y~#9j)uo0A#r(L31lrCWpbX&S1?+hSJaZa0BHB4rP8LY0lDmbJ^4E{ zYiX=+wX@in7wIGOfGl!Gyy%~QEsdd7E_bbx=U}N>5kW<03*9V#ag)s+K``&q!MY^w zU~g#1rNyYt+`)n>@r-0@cYA{!z70IB^k=SsRp(&>a$Qv^H!B*spj=hDJJ@w=u#`D_ z-{|1pt-(O!__x|R>!2ZFmpdtc)#)XHboh}LTVxX;k?pw39;4b8&^4@|VA^yJhm+>s(so?Ap8Csdz6@@gB>>))$?~&ciEq=IG&RhRg1Ub=>b; zY^wMIvc5TAb)M2T9h#M}xYS+Qm19-n8IcMTblgldW`Q|bFUD%DSuP}hqLpJX`J`4u zh!I?p3>xo^#>qmJzXIiqMH>kEEGS**HP=yu`}ro@hzWSG7+f>F$!T0Wlw#`jN45fn zVB5{OrD5gnSp&Dq9hBgYnT4fyT)%Ox&Fu-EZHvq_`M{4%d6#lhz@?bF*9ohLe{fOq z9J|&@&aPQ`Az>V>V}f8BsA=b9&uOBmIs6!l_P-8C=a4P12}}csRiv4AGO- zH8i@&E%~hL3I+9VIDDAp0dEt)|l)Wi7So;M}c`iOCKfkSwV&7Km0oMLKegC%oo9M?^vNyxEx20V2TVjXd_e?&JL<{s4TDu36)|qDV z9y{(HwBxQ734npdQoei_$rqO={xn?8ge&b};ygAbm$`G++hKAfs*xIWIy?$Qzsg%F zqDSA*4yF@X7>K>#ulp@gOq&()z2lSJzBc2WeLPPiN{WYUH^w7}1rr5_bK`DtdRS=# z<+JMKnp$Snsfa-0qE0LgFYnBBSQ6~|ERSN13;&9SVAn17PGbeizRSlI#4DQpD^NMp zQng|;iN+OqAJ36>RpQ!Zk=f{?ixU~?X&S0bnhV(E?vcgJ3^uE{f8d3i)jauodAr|y)5xcDwds2KhYVChPNRBa zhPBa|`(a>zWtYgc{Ouh14u1YTDKd_~c^EWKRLA!h9G)I-s{h^x z-F+cvqhv_zuW&0rvdom8mLSi(eo#;}P<|O19 zFsG;Z>!fzzDZUxS9C0XjnkPpTF=?PcIDKf!^gpz%amKbQ5g&xMXz_;m^OOlsM2p(YJP)-I+AUTf`=U#q zR?nY#ol(+^ngTXfjd)yi_D3J&8}uWm9GuphMaTDy?7PFAOEo|;_BVaEDc9%~wy1xp zMxw~>Brm(RW+5M%?yt&jk%j4W08F`oStXcTRD>s7T({iTV*<}CYw4b;!MqDhD;rMa zj`BcH%mw9wlo6}gWtNnI05R_!yJY$rYE=z+Tpc9cPx|w`R1d-Ayj94^xBi#f+Dv_; zeaGmhTdlopf8fmLBloSpm@d)T9;b(DH%e&}T$S~V5PWoIIrX}Z5oHF#I;vb{yQrt6 zck5{A_rc(fqtt3dw1_q`4tNOik5*LTNqOSb!Qr{gun&<{&cWfS^?o`<)I!kVUIPIg zBwCz2RCLvuEbJ-bzUiuwKQ7few*Ruj$7JCRd8=zy?<-Teo5L4ol+7-|4OqS>XU!<8 z*9t&xqeqxAdD}VE^sAFQ*3>F#bY<^6^+T4nUTQDRjOVF&#z$06$J5lms}7NB4Mq4; z=aG=if9YjzG+xZ0v>Gp8i;O)i%q$P4t*hE@h#w_i>LadYyR#nBa;uJf+tyndd$;J3 z?{|NYV3UttXqMqeva`b`zh#IO4b{oD^2%cc>+X*pO$9@V2c(t1mK>Q2_m*z9wj`^alza6rO%4l^N=OSD^zL8~LoM6krp4~oEyxJH2L+r5?k1M^Dsy?H zd{C#xw~LS!!n#GV39*6$(dEqsgfMx0ogwwiLAZhCY@MLP1%^9<4=`-3K>=C~Dvy5{ zJ>SLo6Z$FLsASC-=yT@t(zQ7-g6;cSUh!RUq7+=XDPZijrEVlJcYQ_8lqoe6xtIz+ z4~^Jx+Zkr)b4BnSbAh0ZTBrZQQmY@?RE@Y6LmxeO^C-0oR7l9w-N3-#<_@Kq4U=so zBIImPoU_T@S8E&oZH3ZIsto2b_#2(QjkhOw1Jo_ON!&A1toMm%@`~LnE|kc00pu4- zo7n7jo@cUj77(4<$e%!>b6eFTw+Cv!(u6+!7V2qce&tm}2lOwG8zs*`>-qWq`Fogg zvSY5hc1a+Hf8Gv))8D{Ay+M`S)1$pc0K%6Z1r{>cSBusT_?8LZn8kh6!kkn&X%q^% z^-s`O#0~nf0Wk4&SF`<{?&Pf3PG`IGbWi>^cjJuvXuLkF>+nz)m=qJ?46abC3EsBMWJ0h3yTEyxyZcgNYTpY$W2_I`;uM zhq;maOKg-+T5l?1{~T<+9yIdT_*q%`O9~B<=>a*Q#R^(&b(B4=0%!M^XVv1PASH^fl!B!nc$*IMt8xfk{m+zOjY35gsQp`Ri7joMtawi#;QH z!o+2ACszHmd+g#KoL*Hw&8S%xYp|+3{(Dvc1ZiFycyQAEfasKLz*E*xsZ`5DDn+j< zCPJ+urs#`=(-)G-y@$x;Tgv1iG6CkML%>uEW(F|aSi*d#Im^Ttespu51Wb6?o!1f> zbY2h25DXsIoquDDs0(f_l7&YdBF{UO=Lsg+#AO(fdK!maiv#fn45n{1eaxv?TslEu z!qc8r1^^Rm8UD%CLeqsJ#P)@Xg*yq1~{BuN=^16 zY{gu}+A-4)Xmt0O2h37>!7+dZlg1q>%fx$(g0l3%e`Ip0`w4w8H03t7e+`I{yxn`I z+eqo6hNgTY6Q^G7PWR%jQXED-gZYtV?Et>%0gM2kt>7B>&6zgSfeObA6$i~nwt=`8 z-eRLW5w^GDQPcB}t&rwka-!@5i58pPR~Ok@RhX@OB9hhjuvTBn=}GAxYt+#Fvj;N} z7%+rOTr@b7kxp6e_2ToC#}ur}Db@D}WeKvfh?6;b z=Kbr+lcyaKXni3%`)NkV8o?19`ztRrLWwXnrY1D<+z0Mgc5}vH$75M2ud*n0HDGk& z%Z@wv2%M%)EQbaj;oN`E;KcTuHqn4XBwC|HLx6EVx);`J|A{}lCv%pqh0ZTIvioyh za^Yn9LiCG*>4pB~jg!`6F*&@48&=`nGEYN5uDsBZzh4I{sB&UEMKdS4%skM!tS)9v zd}Sod@gY(zHgfzpIrv^T)(nRAqsN9?rTbGDr?BY>Hp#fbWncb`s$jBk3ZTI$-QrNX zmA%L{EevD#ybF7=*{a6qr)cNl78Qy|P)$>4f|#%F|N34p>!U3drQ_(nSlw9jg5JW9 zkeRaSY^D{z^V1-!L?i!#hQod2h#`&^W(ShI3B-GX9wuINWOL(;s3Z?oQ z{$%kQ%tv6gm>C-<7CZCe1I?7NWbT#ncqmiKW^{wwO6k?E_P_ZqrSvDaHuTQQCS2Gq z;dp~=hHU+VB-9!|mu!Y$!X!{{@f6vzc+!tt8j&N4>cI?1l5h`R1o4#eNgs|hASDWYP|8Ab<8Bc~ zCDsKSKPthXZe000Yii6Rw!}OZE#(o$?~R9z)G80pe(gm(jx7d)t;ssso(Luu3HxB) zmXOmN8nUGtSMmNo?Ipp8#wt!(_@QhVs|Tjq`II#5FKy?;AL~h9uXg@MSDMV2Sy>~h zVC?;2i|w24%gMfwDOfwZL{a|vFVF(Hz{v3Z;8Z2pX!aEAU2YLXkDc4RPDUWl>arg)gWmmqzbXLG2K1X_-SFy8Vz3<*~1M) zgfAt7ouo9vfK*f8gqH3v?(U03kW^BsW;VM0g2_b!3&hKNe;J5>yZ09r@jH6&3&g8> zx3JB@T~m=eGAR{eh72Vy{i=Po%5(eyd5($Kou~_tW8yzQQFkCK<4>RX5A%KZiCT!X zW$drpO)J;T9?X2RjB2SLJ**B^HRMbGyf0afdvpMiWv0G5F%m5Ttqcdlz&O?H;^8Ue zK-csY>9s$Spt>SvZIi+=(ia@^CYuXl_3kIa+j0=7ta$R29c>1RzwS%0F^055d-taH zh~n}z^#fsK?aZXE);pH($t##ZCm>YFn0}vZXdC55-v8tgN?!5#%IV6$E4PP1$}m>1 zT-&-{(b`MKYB$AdOmnZ@tMK#^vnn(uy#pHAIdT3wwe-XV6C_dHLdpJJP$Br7v8(3O zX=KiMWTw*2KjimVb;kLr0j$dVQhuENk-jEVOprUEIR)KX0UO(oUeV~_sivKR`46kW zOhH!v%Ok4tZ!-C}P^q*|(JztY$Y62i$)#NHHG;m`mIVq33?G0oMO*A5D z67e&qDf;2A=*|{8$4ovsk`+w47wchp&l+iKIsa(JdXPSNw&BL=0i2@4-Ul*RTSmhh z4NcB|YO%>-P__TN?)#a)>jWnS34h9cTI;HzZ@Od^Gcv(y{?3Cm80t$y2L@MxA?tW?mXNZ zOv)2a=n;6P1{^8|ejV8RN+#xnMT)8D`ca^0bD(5vMakA`bPi5kB_^gOu{G5SREP0UW&0~KGA7kU71mCfA!*-tQA;!n;AH-zc11=+FBB> z5I|WDK!cZ&p3&B!;X$OtNQQDqC%4#0`^+8RiACyh!4Y40V~CrcfCilwZXSofJJmnA z;WM1!(dk>@U+RtR`2+fAws%mN6!GpawDn0-x7X|kT%bs1kG5$R!N7jqa09{$L~r+g8*>3u zYDp%>h*0j&h=J5CY8AH1yR-S)6?+B-NJ;?iN-XZ0^=bMreg2+LO@)PTT$kOyiS%~1 zaGb5hO3v1e`*NK&s(ruZ4)o<%-Mfe1zxn0zd#!i;%e%xobKskY)&Y-B@ybp-^5d2H z<`lS+8}Q=_##o*(F}tg-21m63aQ`y2dN<7C!E+rSd6Q<%5RG2PypAkLwk$Eaq`Uys{^cp7F{fcofGgds%ePz|ZKL|qHmWaeqx#Y|sxNg?eW{b`OPy3->ZJNY z3)L4|sJ_rb^@SD#c$^%sp zjfz*E$K(8XIR+Ni4CwhorufZhEbE${9cv#F&i5-GZp5b1%ll=e@wQ-n#SINEDoQFYQx%IE<@0Y zob0Z~RUK!5W*=LU*M5_>$$fVg;TBw1{EW7YaSg{6N%ti7DvX@=A-QtYIGIe{fmd`j z*86zZKN%71r@g6fT~4?Y6^u#q50#KyUB;5m9d##M)9Q{?C1+kKjhEO5Bu)uwHk>+j z%h_NHslw zj8{{${g*HYz3#cHQBzchzWSG~>CF>OP3>VYwCs~p)3Z5MYO856H4W2Lv$wdn+v05t zFPTOXX|!zkx!KT*zexT#6llhwKt0BrQQB#cQp`l6tERN*_05Mse=&B`2Zpf-wf_jz z3WO8lSswpCy*ODgTF#}V?kOLVFJ_P!S$`d6`R6^O5|V|B4?8%e-z7RFI}5;s4}b{} z8(8@V!Hlyo6ApkWH!yL*oM2&2I|NL#V6;ObRB=Exbj z{`>%q9m;z?l-CS3vGx5?wX@OvbWUFmA3x}1ddKW7i2n_x7@)(#oLk}Sb|0iCsIUK# zq8J(c#jHQ5`BHcBhl(b;b|i+a=&y)Qe;0ro4gsLN(q#aI4gk>EUtpzo- zvlP1R66x(=-x&4lb|-8k{IsYeZkE7la&||NFx{LZFLvAy)#(tj$E3;Gta2HS0 zJ!*P|FFXXG;U17VVA@4zKj;CIVNm8CuV)EVXCb&L(jZJ4E!e6gcZqZ$$6Ccr%&8{+8QROEd%E_u!%uhRq*%hczCiFz~4lA|8!A`S5`R*t0c-JU=56J^wM%n4?V zV9U|ptDeFZi&RZk=~&ra`2cY0K3Gs7fx*4X`LoH{iCt;2RRQiVIS3DNqWqwFHsKIt zu~7u7CDPpWwDq06cx{myuYr*aU*O{HLjQu#D5~7qiFux$W}An#rBRgkk8RdoKw}DT zc1dZM29^g(8{p41&>b!jXVa`kdKvz@W{Tn5NH!rk#+(h%#D(t8StzzHe+>5FKvgZN ze++i2PB*|6h*BO~YYW|9HQMlhkr_HDRwM0l^!YYT5L>^~i+s)P^0 zT;sv~IR{1~0Ojl~%y}M65*S!)6(>P){8zAgrJ0tP?P&M&2mKtHk-|FmWZ>^9$Qk$#6R}d<3gb)wx#iVp zqy<@n0QkZIfB^$2O%wMR0S>T$kLCjEq<5tSJf2s>q@o7^SYC4h0PfZ*Pq`49zq+Qo zY48_#?ui=1(Eiv;9SGS0)l{>cB$Q8MSTj}$N5{xUa=90{L}*ZSUjc{E`%3(=8Ukzz z5}-TAr|O@dQ-6c4Mdnn&a4aa8mk$9WNK>Of9|GV)0NmCKO^wtXDP5~~FPXtoR{z@R z`^%mJ3jKy{wr459WSqPFe^~l*xIgqa3b03 zo1HWEnXj27hf)uA$|0`?qt_XX36=N9%NlT-0qOsO9v0KOasL&jzg>MWOf$6UNN=pM zr+eyIu%x$6GPNPx!WdVMswTO*D=*HB5@EB^gCNHOEG_h~xKcPWj<@c#% z`a1yp`~U#kvu+W<1&~(+#4C;a3GOP{AL!APHWLu0>UL&MtTZr&{f;NC6wERh z*v^NDwOtoIZlqxb zC?RHT3YcsHpc+`IE4pq7sI0J5to;*XZrs}cZYTe6r|PAUvkgBq5S@!PrF+~PVY-_9 zt|X`SHFAIT6J{O8<5BlYo%vRO>^GF@K8GfgA(rN`+!4A=B$Bq&^>jyN+2DPD%gbl? zLhegeY$GcE1W~eta-@+f&`*8GJ=>7gzrdV*S{|9WL~|08?cTM=lE7Vpeqi9~&0tC& zoMn>kr*$7QDN(lA=D%kiaOufVZ1esciXBUmmF4^ito%KH4I^B706>7Wft8x7-942e z>7H~&;OXT`&?E4)bd}R+!K!%jzy5&a8Zs5m+wLlpmc7-z?lUX86NHBDE;F=gnMq#T zwBsLb`tZ?@XL5#!U?ZsxlN!dD3|9vWpO~1HSKSb~nilvu-J2BwXPKHyLy5XU)?1MA zwgLJ`6OiX;fa|KS+GN4~k~)*a>c2iJ!w_5Dm9(hhWP^|-G69rWWW>r}dNJQ7X02)O z{J#!bN>*9nWwr-#o*)(z6Y2gf0P~Sx!7VmeKvrj0m z5({=%!7K-{&R$}<|4dA*Q@+acQ>v;2GC=N?!%bB;?m;gSbVVJqVmznBmTZaBC{fAZ zHOYr9`U)cPDtz4gy{wxE;5!GG+r5}4h&ecsuJj-hf;cFVzTrV!4@54JUi89Q)f}8i zYo4+w4+Wq-TJL(5kv)VQ5#P`u5A(entP2`-rIC?L#dbqz+m1X2sYX) z-I(%94*S8E5RB$D1e@X&q}$HzF$;My+L1Xp!A|xdq^oprf)#oY!-2>p*u!3U3E??y z+}5k^{;MUJR@v>*`iobY_le0N*h60Miv-KFPySPeBwjB*-78P$yCN8r3W!tSpCmmI zHZkUlqbTM>%ed=^@PvvKukOMzmdjjLief-@9PnNTfZK`qD}jF(@F(*?+Wo_eOzLE%Z*K299zWx;bow{&0K_CA&e*Y7= z&&W@||0>`ANq&Mo)USoO4|0D0Rhfzt?0g%i(VF*eb$|ONUhxc;iC3n@@it{+03pzO|1MmW}x6MicSH3?g7k z*$6B4rk*3(+P_L%+%Iu?ztTM;wrbAt9n}zR&ci}r`6kc)+N9K`2DId}{y;9BU}Rs6 z1v51q zzUL_4GsOjvVkg>M?vj{aQis+)C$UkhiB|Z&(Y1hSiAy=Ux8v++ozM>;l!LjN$)L7t zlI-{u{>oq0qUFX=1x3weYc@nCnSdScxs0kdVXp`T+(F#n%mg*nC`kVhr^{$6w{yE# z1$nU(c&$nfoAqz8xjm~|RgDzY$YhnMp9}<5ee|<6{>%86O3v?R*wPNKiIOH{8! ziDeB2;N zRrDx#!)_>d?f!#Nu8$Jk-Y!uG${i_);X=||FR@zj$kSI*quM3TP_Cb%j&B#GHg{Wf zD?Xc%={Fyni}E|%f3>SzhQ0%p(Hqg+;&*xUJzi03O_ZT4eR`Eh%bH}=bubFrObdKE z{u$^bkqG+xx|qJy{d44u)0KV>>CIkcR8e;3&5nuecs261U2k&0fg6?D{qt!o|NM(k zG{wvWUc$_HES#bIr*vCp^jXbL{ZEE4>2xj`ihZXq7S{UK6GBKpEh|?;Z@FR zCG;|ti)7kY>!{DnZuK0h=^hgxba860s+=2ngCdWE-bB8s$mnYA7{hg+<*O>Ox}KbA z>~Oh`%SHzi4>b@#e@q`a28(J_K*g6g)+zWc)?cefd>B5K(DSFbcO>)GBf@Vbd~K1D zcSBQ}jBW4^9YSV#uwJ{*eRUzp7N;%|BJKN(0db#tz{Hz2c6O9I``r^35{g9(wEctl+B4Yebc?G*%YwXn zz@e?R|E8~YJkrd?8wqxA7RSiMnMpQv7C8{a)~6l#4+EzfPKhoiD7Db$X88z!WyM5# z{c|DYX~Wq4W*MK0Q`abiD1IJ{JrnB(OO(uRW!*bmUotjV%8TX;yquSm`(uL)RP9a^ z4Z}IYd?!rVPM#65Qa%%A_*%I$v!4x2Q-|`zBO1%0DH~FMvsE(UOQL3bCcE_nC(617 zoX$4YQv%BllHcSeGD3$T+X8~!;kpE!C7Wgu;iQvim~^1DGX%)dJvNx7sf`Y&vkOek!i=-W^6T zP`LitCNsSL4R+i#rCj?xX1PM2*wZNe_0QKLlEThtU)X4H4AlRMOw*URFN_3aarzFo z_bBr+9X0y&k4UsH-L47&m03SYiTV@!R{L0;(gx~lgy$XAGTo3yCA<6b_CR-;a&>FN zy#gSi+)6_jNx5y8kxI`Y9kHt(73hs!iy3H9Ll2FRwDiD|-LGn&cez2}HzY{iuBs34 z-NyoKAHOExE4YcGXXZDRZ+UcnfZt;s;xaJ*r#gs!9)IPxmEXCXAzj7qb{#F{&~_=`I;YBp@vci$K2FHW_)XzAgI|o_BmAD> zC)lsNXC|GltDVcQn&0F6GU11MHXH=zCBpV}2p`F43GvJ5U$(7pxZ=&Ub)&hQv>sWB zDapMETWqn0xkk_Mn}4OVzJ<3YBb2vGpRrHRIo2y7=U?Q5DX_TV1;duP4B^2&>B<9t zY=p~zzvn!~*)xf1^j5Ie{Z_b4XAHGpYEeAnoa*EsZSp?1kem%4B(jxfDw8|96vM5s zOv@bJJ>>jiVKyhL+)$LWAtQUXs$X>f#o@lu{lmk@ME7@&lz^Mz!C1&j%SP7lB1Ux= zUWSV4IDO@%vi*5lwtnE4to(YEm3EIrx;4@+imj|ZyB}qw-GbU+UUTbC!z!Hjn zHNhX7EMX}bErQoZ_mA|)n)nX*i#z*!iWB!En6JuW{#=C9&mi7EbHj%!yo_+%gO-(e zswEGCttsV1@)9>GrCE(k{h5ljGW8RWA1G6Iz1YgsT~uAvn$%8`sc+FOIs0v7YOBE_ zqL^ZK7%^q9d*02SOf6qDlBtKxmrSj5h&rFLOs>9?`XEzFxUfk>K=QgKUtf8snL~R%a-3E+0=o6pz@;Z{3 zW1UhayN_z0b--lJ%F~y++9Z2Yv#v+QOKix{wvf?;lsk_MZwon{kebAmh%6-twwlkq z#J$@hgs^0qooMf1q?<=#wGq$|jC+F7>B4BNF#1IVjFQ9p6QCKU zTw#ahn;Aw4Y=-JXu@SbFK6|en9_6Y=eTDES7C^$Z2xFK8Dpx5*%51mdt*kh8ti{Q+ zUUJwQU$6jw?-Saz$s}*1O=>+zzy^#=tz7H0#qYM9LwQNw+C|M!)Yrp^l6RL5z0MQd z-*)@6lu2p3|6l;_etbuz&Q>fU2Q)Tf_&c0tpSXsIquWJr^fUKKLJQi3W=ux7pFd5U zt3I2}$_nMTe9w9uD{cU%1 z2uPW|Xsek!OmzPOWU^r&xTV7h`@n=5rc&-q?&oz;Nwif{R%=Y9c9@)^gL#MRCZg&u z62dLJX>3;xG=E&Bd!l(RX6}7Nq;C&AGl3FQ60R8eW8Z1lT`LI1mWR6QcP+s2?E%J; zHc-zb=S!KUNp{aW7{Gf17(fp0!=)5j=zegP>eG_yMVP-B-rbW$vSH(V`HO=v@}3u! z@TU@;OfS5wga|l!&x^_wG1RN@77;8t%z4`m$@4TMXK-;?+>X&;hLrRnsok}}{v&T$cAx#^65J(8(2N;$Msr(o$~k`y=DpbZfh^E6B(Vxw zoc<;fT?-%S5HE(?l<`s`wsUUHJ!UrN+tv5UZQr}}-M8&q)2R^-;~I=kU$ac++~fi3 z2pRsb{5|sD#QP8b4Y;RrVAk@E&*j#CcwwLLl>Cii(gbIAGwnHNunxIqFEiFR+@Y9$ zhQEa|)4X8yyKJPx4}D5A;c}m|+u{^$YU3r$aaFG?l>a z7Mhnk+;hHZ9TWaZ>@hKHa&BBdFYf0y?*81kuP(9ar1(y{=G?fQUfkn0?yKCm4PKmd z62u0R!;Ymw>3%u-e)4!5s%fbB%@x1KT%Tc@x2j_G#FV9@fOBY@` zlR;Li#%MdW8;`V~e?=GB`eb{A(df&^Oc{;xr<1%!K@R3T9q(`Ln{$AOqvkfv8L;uD zIV&jH#F*whSuv&$*z-KEJzq(T>*qA$vCikiLe3t!dG+N-27p808Kv_~(HbLL@13qw z$w*-4t}or5v$a;LSjvp8_2HhfB_D)W|a1Y#YFVUMnb|-)NYS35sFy5N= z7WolxZZ>R}3A>80Vwj!-I!C1DZ(ZJ79`FLD-Ple1yhnXu!UDmD=3OZQQ?8@Y}> zW}f+by-K2mzC<@n?t8bFIz3B(1!BAGYtc!}-(}`+y*WSP9tptOAiooMSwu}>LOfC1 zKmmKOTARqn^X15j)BJaHQO3vHQ2#wbGLbi`fTp;k($YA#LI{nRy3iO6U*$tCmV>rL z^*Qts!2RXVVvXjW{Xh{oJU8&}6oItGQXYx8Hmws2hl{x*iZbg25|RFa#O#v2o0`cd zi0N8c<`vm9ZTT1pqdQB2T^oZ~>gc*9wi{RVu@>xClr&>8ydZLz>{v&EO83U5?QC-F zCyKpYo3G=yn^5H5qN_l+?C8b!%t_ok2qY$!1Hv(W9y(gwDscymHfMEZdn)P+!dJ*{ zPIPBc_#zMQn)(8Is1Jq8=ugQORgef;owl>XPqS!E~nZ3am8AEP?#GEqs&MMJ_D?YK!7&OOrJg*}wmPVGP z2PC4~=+@Ao%ojP`jE2``UIx@p^wq!_C!f^OKfKt4emQY z_B&Ev?fg4+AKwSq??(-zsp36aomQD|Hn0-Q%nFeC z{T>Tj>@FAj+$s*CLWz0m{G9)2L6#_^zxSx!m#5)%jk7NLPI34O>j;P(m8Cm>u-et= zwF-f?pYX>l4;6U>ku*!)vx@mNH)cX68LAacsoxXDIHZ)w@aWD?;j^upOQwtyGQj@2 z8X(uQo6%NAXH!P_25jgr&5ImmG{Uk7q)s*pDdQE{DRQLMg~??5yp23PP^);yuMpMw{T%er7*HkC} zFi7_^#fJ_HnVEXL-hX7@xfz4KZnj&P!OznBZ+Vxxp)zTzF`4j&d4ZZDGMwtaZSz$B z7mZjLFyHcj#2ivKO`3sy0py^v%E4E=>`CUVLR)uw`a;^zMSme-Zd{bU6|J{u-WX6t z_E#l;XL0?|y(VaIy;L}@v+v_%Yp$F2TWgOp2!BKG|K{BrR{t5_)gp@a(KDLmIr5?C zi}9n<&6A|kX!WIX<&}QbPLorO%DJa??(QtlP(9n6wl?3c!i=P$`Cj({jQ2s?kWl@? zzK_z_UE9x8p;Yf@Q3WrH|6GMEpo9t`s!muf)$H@t2Td#JhGeSR*(ptO%=Xb2GaZ{= zTp3-dq@5zd!;EM57K6apqAG_Ab{+Dt>2*U-9o(%16up%6VNJD0su2R}u5B9Ox$-OY zG+WShH#2$dJ_UyJv5;|)@;rSTxDwWN z3U0lwz^9znZXu5I%yxog&8sSC(IV#YN-3S?mz< zpI(@}<4m;uhTZ<6t{cp*U)ARbRu&IVVn0lCj5hQ_&Iay{YB7QY(15gp2f|L65iS@6 zM^Qczq@+kQR}LH8bI11erD>e3V+8D1ON%6woHijOvm`R&4zEa|1W5j|7im@|WND|w zQoN_sw2ocnVDA4;9qW{z)9J$G`De&$j5i+8v1_I_Qj~Za@N8(kLec(x zHbdA1@=bP9`&ikxy1$AlPbPrSlMBbePG)Vp^}} zG{W8BoH2*^Cb`zhr1^XLS+kyFZQfL2)*+ndgfC|N-iH6opfSxP_0k>gZN`h%95xpt zOk+FTJ?48Zh0fmPzVRTynGA@0<7J&wRoFWqIlhG3_eawk(eBt!((N>*57syLde$!L zM}OvKT~tK>3E?^~HytRA%4?Tyb-k}r5c$&-=os#S@t)f^PlfA*Z&?zMXCXF|=DN*!2P zC!#m^5+|O$-Q9uh(hU0PaU`2^K(ca^>;{sVTR3A500u=1TozB<9(;Xa_+B`P#O zwy7SFfBpf z6y2FWm1C<&srxC0UA=D6E0BfgA*OyFt zg)j5k>i&&NH)l*mqBF@3(m>PcMF6PF?Nr8}n*^rI?R2M73WPWK;)zj975SGACME&v zNfkyg%$3W5tm znfuDN|7g#HGt?~vljaxrhf%M3SD`H4;FJ?Kvqk#6D1Xb99+y1Ml-lGa)9PfZm+o|8 zjJ@RR1tO!ex%(L-3C!+ioWX~;pCKy?m|kyIwIYKhL(JpCZgq0O`9x43Ld;ESdm;Z# zHVBY~Z-8mC%+)n_ckjl0!5JOv4QY89`B`&L7rIFO-*)7+sz`IO?s2?ldi*Vi0BjcE zFAX57*AXbur_zA7uKbsx?!O9R(5!!W5d+Z9&h~5R10Id^BvI_a>tC6~_ zP43NM{AK;P$QM4*Tl#TVa~Dn6K7H$iVnoFy=A`GYbmpXI5OAwB2m|%~`0L(3Sb9#D ztloxU4dFTXXRe~knNN0mCvrrhYwf-QEj5d@pO@#09Gytik+5~MWSj2M)jJCaw$65) z*WL5C<@;7@(RlXZEKNVF?D}lrnZbaUbdLf*2y#5?juA$E@6cjOgtz_vFT2;!r~34q7w(SBi5O+lX!wda^Z5V z%Rwa(Yy0p=6UcOy8_2sF?RP6dVphMkhw~ys*zRw8n;X0JieRjrkvMy$$u8f!Ui*^< z#W=WQP>=JOqt#W)Ipn<2%0^~%8bS~$BV2-r+Dnc#5~P*cS)P>cU*Ravsf~^7`r_$t z$J(MYnrTZqBMRhD(ue{jMlpy&a{p!fbFlVfm+a^>x=L|2jm(CI_+{cA(+82FuQI{~ zPNsTR)bm@)Z!y2Pzo#+l!9(j;9#`526w=plHHJ6IH^m0?B|_p6!HJ#5M)z5ffxNSHkeQ+S)#b6*w8j;6Jovc zg_85GB)dRj0mA|E$I48a;WkaMEsY6rVxli;YHXUBHqDhL%>qu^f02oU61(e8B3Se71H*CY=d6jVxLA!X zZed$-CIllTWTYcKb=*^^*kHXou_a2CTx?SbBwJ>aHMAvDNSYlUP|qQNKlUZzsS*fkqH+<6-JA){DJycnfm=rH zry06c)blE*4NgS^Bq~!NgdGfFg9acb#abuXVlgV>gL&&n0XUSCR@m4 za!w}K*-ZMGOp5tSR~5QmCJON~+0J}^$xyCaCf8^{qY>mD!G!~C8fvU~y!e3g9PZ;= zRD(JxA7+%C-}l79`(sr?en7w~bKX%eNi%%`Qu1gZwzY?F01MRj7K9X;m$#3V z=@-2F@Yj8^M0a9`J%2`jGX@4tC^Q5s42?K0ta;D96>-t%gLaUu)Crv_2GZG8k%2DH9IP21y=@l6!jOP zKyfm;it*5;u5;)xrVfUGC5N4g=FzGPfp=S~{bX?QG)`XF{7nWBps?KF{KNoG=}PUz z=Fmz=MomzYYDpE&szfBK z<4@TLCGE?m(m7ch&XXLr|5V$XFR!+}xoaqTfiIFDa*ks)yd{JrmO2%zI_$@yT_DFj z66Y9E!|p`=X_d}+-HXA&v+yluaw@)fij1F-KGy)V@(sZp{-zcpjX@`$fr0z!Mb_$# zI;y?i$TR1k*MVT8YXw=}u~oWh@xn=ao<2>0Z7?z<+3{fjC*qrSfi z^-G_7>3He^q34Q8vfW69OdaMMrRHF=@IIhuMD?>K!{1axR6JYsa_#bX8YQ)`$u}m4L-O!4$X>CCH=RaxEmXFx)zel}n&)AXzf9yHl64M9E zBehi;V6{}nx)3D&_pK|d`y$d6`-J}3Bfwz?-hbyJz04X^;IGrTX6o|ac_%Nmvra33 zjfQ{hUvXjoy^Zt0D{@nMS}0Kgm#Jw0LZ|SNk);iR+WlI0%`K!BGcM*!=V$urG$X)Q zC%)#KkuFs&JKc6l`gB|vjo3eDV0w@elCA1lyMI4ZlKbAhsfy|##XnIYDIivml zy0_o0#X)k|O{jp`ZpeAG&wYNJ>4sdQqX@cUP9F>l)C)5n3K>Y-zOmY1cQS@85#nU@^TWFJarOn%f zI8i;wEpC#uMs7?Qajrf>cFat@$hrf?+%??dmT;qk29J?=hjefa%4()}*JtoTV(i;c369cV*t zCm@tuu7`VkeV!3r{%J&)wLZhPS)hGrq?}=|zDdJ8ty*n<+0@Dc&^I>$kXpf?tbA_l zC!nO@d}(H}UH-=TMP$d+5b2ceGN;gN90U^#%74yfmlgW|hK!Lo7J~@A_Ik?FG$5|( zzR9fxqLwO(F!5Y>lMRb|VY?Of7aJxbxt%}jtu!Kx`^9eF@wcb<<2V;2T&OEA^=|ie zn@-b|yMK?kh?#=+5hpxTR}tUFuV@#4-CTHKcB2Ey5kX;YiMxAqA0ht{k6_c-64F!F ztif(q)v;-;cCi#Nl#;P`NI^|whk9Yd;X&ayRO$VzwiD*Q&-D$nXE7Fizga%(H0k2H2RHijHQ;ltfP0r@_U^chOgimwF+1#difHU2xHn*8JV08^oWq78^ zFse`egL0B1v)PtqvW+U3*u^~DkD68gsNVID;3YiVd{abJ@A^mZQXVR0^V6b*Ic@S{ zmYEoj6mO2n+?7x;=^A*rb+#0}>mR|*Jluz+)7KQ$yZ#Zpg@;O+VoTAd{t>gCN475E zY$*yR*5%*3hkLFqMeq7Ya0?HW^7U#{7k%mBCF-Z(t+K4$6xF*IT*9kLdC-=kPcLS$iSa15G?1Z~f+=M<5BHn46uo z#q{aL%rr4xDSs==)J4IE-hcM=Q<7FwD!D-QVXOxI<&D7vr=x?-f?E?8qCJk;xVea* zMfU|t=Tzu?jvqL}DkqIL)IV@vC7g{J5X9k?J?9wnP`=?{rv_R%j^E+l2S{MVhC5ye zC1w{hbA7gvYffLUlxE$e;(Aqw%l*mj55Jn3buJ^!S%Dluj++a|(y zL^de3hSXA!Xr~_`d5rQ8Nz38dw;GKiQ0ZHiG$;SelIF}%VlHdaR<>6P{z9`lO(DlF zQqNXX?^*#uZz0YsTAx0i?TX_d&zx-;@?7PS=R}d`#9~Zx<{rGYTd(|g@C)VOH~*&= zzY%TtegDtx@WaRL9(MxxA!(F~c<1!)<1>0YSxmRRa!^cX`8!~GpuS0VJ%YZ(aL#zl zQK5|TS*?kx+)Rg>TuxiAtpug@o^L6PozNY!>PB34I#dNKz5r*0N z>js#xXoC&Y!=?%*pA^>uP7i;bxssRsNioDFOb=TYerd%K2-Cw~hhiJEWmMyrFg^Tr zC}+{3CN8aVs+Uz6-N{G;wxHRT(aBcDl3;Y!U|+b8M3!P$o!jz8ZzD;3PHN&NpajDh zu_BG)w-b+Eu*Baj7G$O`3<;!)&Av}-xVNDG0u<)zmkR7L17;=?3%M*8GHxN4339H5 zY^Kr{vOX8`8Vgx3$cYxxFmY3QLoVbw7P3K*r&`EWou(6SOToh#+xRpj0B>Ejb;^)34d_NK1`PG#Pn|d^_yRK{`u!y8>9P*=5*q=$ds+YWVieHy#z!_ zuytL!5B!q%!9k4swr+}k!8-4=@T2cK^T9e=&>)rLon$}{^d&I$$MCAxu! z*-$xv|JnJ3X~7KEZ!-dn*5iKd9xVQ=(PFN{P^qMI>E_~FLtWWSGBRr7mRB+ls-e#{ zC9NkX*e^%=vq)@2%ukqEWNPNTaed5aImZC*a8LObyPMKZ-s^t)wt7LUv&rof(Uzwv zDlx5p?FaIStV!tDD<~#8YThYk`{+|{Te&xUj7LhddBid_I_me>k<;eUuv-Nq+4eK{ z%^-r3a(68kH-^zT;m3`RWm@}Lb3U^6CD>>{RdicwCDLOzjs~$;I zAnA^oZa%ML3q|`ZY+&widw?ECarVTqc8T(Z!OjXM{=C$d!SP~*dI_K^ab1bqy~2_$ zwwZ~E>ESz+XV+}nRbLh0PoRD_lydVAW0ku>xg@)fXb*L`fr<+1?_GgP7Q|Z<6b^UX_BzN z#i4HZWvEjffbNq*TW1XtH~?#`I_}> zro0kc-ia!&#FnR^j^!yVTOQI=Hhr_L-}}EN{mws``YEVmdNUlruPbP2>sxAW+5Dsv z!iAK?e3KbaN10k=()14&DhXolr1kX%-+ZrzUN#4p?`Ro@>D3-vi<*`|@6R2-R9Mc- zQ0zR7?c27phGr}00;-`dcOndmu54iFMScI+%L+>jgTn;B=U07b`3?eHjYd)1vbkgV zY7LeD?C(tZ`czS-{5@N2`D@8Hr+foL`42wPq5RwaH_8`rP5o{88Cu)=d*xryzI+3t z`gbgU&yxRn{nc`&{=YT#Hw~Gs|4Ux|$v3C|21fP&L&y66$MQ4!Ypw3jhND|T+phb7 z^Hyg)nib+u46;!R)db05Kjq=p_2l>kb!<&(+Wj;hPbIb(gT?T%wKwvi`Rt3`g=Ri` zjc=(ia~MmsQDb@O9!yUthc^YAylD&EN{W4_x2->T&LiFG44XHdz(Amu&O_<3uJgw+7GX%U%+l^rw7dKfzslglyNb z%=^H-^l{C9k-O3-!{S_Yz$_n^kg_VkpFq9LDY$oIFcXwPPnh;l5y@d)c&OXAl834c zSKlCN3Z=JJ*wxsR5K!x;LN`>X`}Hjyw!|s*)`OKQV;Am`w$yaO=pRl>J@9<*9Q&=} zH~0d8=VWvkrFI0);1=2G4*7+qyG^{i!t7{1S2Me|;vQh;v0O+ys@(Z}$oj|;pt}>* zI#-Sg+&+DM^aVoL(Ry=}-HyXwhtIvRRNHa0T^3BMa0P<>KLX51N3#@95Qd$$wP$9$ zoBpPIG)R^~=SvW5wg?V8Pu;7}uhg2G-0t77opIQEZD;q71DG+3?e(&^-TObay-XX( z+(_i`KhjJSnBH<-((7gq5~-F-a;xijyS|rLb>+jRxiXz=gar@ZNVS^X1f*53xn5o9 zA|UngZFPO)Le_m8_7H3M@e0#B_qhEZGu?)D(O%aFbh?y=d~9Q;`$&}Xy3ZpbRyD?2 z!6@x_$I_%$ACOCWThx2*rOpP0rB6|+*@bk!{$(#uILN*1&|$rEf48T1 z?Z^EPPBW8H;qUewLkWDNEYTEe=GGbL(Mi_m)g8Fn3=V&t2FI5eT6cP zHA*S`cWO=J4aTjYFXphY4JYY=+_g%aXQPJgo$fn5`}(5HhI8EQyd}8QJnDS1H`jyL z9%k~|7pQ+d250>7~uyYGCZ-U9KM|AhbxYlB;NCF}x{!od3qr_1| z7hhyx`c$pjGoMGK``h(RCIr1hkA!~&*I=S>^uH~gaeNi2kluXl2DL+u>O2_LtVeA9uS@-K;#M`%G>3FJ8;+)Hso4!FD@eYl@Uw9l> zwkn*xf#`9m>+I0|(f)3%7(OUqg~ydtic4J!gu9njtT_`$l|wB&g+P^4?##wf z_pD;K(hRCOV<{5;nJcd-TDOPGfzaTP&>DQ(?k`*gvAFDNaws64o33}f6il3L2GI!s zk)2s&#u|)wi@K?z?(c`&D%Cv(-oZpK#yQ9~=ne@-WA5YBSU76Ep}WC$t;HB^&=7wj zWVv~yCqjE7^0e-ss227TIO*=u1ps?pow#D0Xz}e{PK&12n(``^VdzMDNOhjKiLw&W zDogsh7`(YEF}>K$^AL?)p;M=1_e&ewkv*V->W>rI_kPulYs4ZR%Yax7)HMcj2q@ib zo5FbDBM*Q3JnTy8c;)dVd5{2Y)yuX%(g0b`}Vpw@SdE;9Ls$SUIo1Ol(D!hg`XX-os@=qZvg>o=b=`LuAmT0wx_oAX_E(sG(h<{mZsjVQ-DDdWvGI=Q z?KMwz6ZpY}6yjb^RFyLwFN&>pC|CF^_Npwe`jOG;DvYy^fMS1tCYS2kzr9%Gs{7J# zm#_b1Q7$CIHtL13gsQIkoICq<_53%2&P(o{-_SZww^(xT&``pxb|tKuXWI2_6*54D zBqlY8={|Wj-F8ZgJF6?tvd=jKDk`MM(;*cJTw4BdJ_4D&L($nEC?<Ek%#y!c!&Cz{@^%B1QRgEgVlauc> zK$qRjEeXu)X}4N=)c|7Ga|k=Q3lBKW4nEC;+1t@A>Y`jGEZx(((A7J)T|9v#+kb?w zgr%JH(n+3QCiq0X&Eot)rLFC=$flP)`g>@bIVab)$_DeC;kB)(taInJwskZ-K0FCy zA3P(G`XbOxf48>vL9(7ZINI7dd|9+L9Qk%VT*#LW*0y3}*cU#><`bzfBuJOmwk`%f zJgBzyRH7qi)RUPneYC6}`_jGYyXeu)v`D(J9tdwoD?@VC&zv2&N8F0~kL>5~Gx!dz z-DmKvtlekuy{&ei!T0vseZtot)9!)6nKp>ro}N{^&mewQbYJKHMckKwM^$9uc0vLH z5<0R5SqvH!6a^HN0Fg9wpc^|7!3CEnBO~I1gU~HOfpoYD;d*VsaY1KXa2yqN92pmA zgF=TT9UPW`2nY%h6>i%u;1V{a-~U(L+e--QjPu^(qjPILb?Q{rsj5?_PPr#5$J`#b zK%B8RhKtLN3G5vbs%L`0o^knMTiG#Dg)7RAi7E^gRbX6BxTmNG-C5zzqB3-+<60yt zjiuHe-id66#&6%Q6S{dywbA;brcC;2cz*&vkp0i0L|P)#zP8MieoQ_V0D$rP&0y+3 z`a=|kfBMX4poz8zE8COEfF;CBhzOr4&VNP+Q-&~&Ls^^VC_AwXPWJ`Fwb_@XVC}wN z&)AF!9vm#y*#_DfDMPp_**;uLxuj+4I0C5+rZ&G=ma>`+r+>UjW@wKL4mI^>B;tay z3xQ;xCvNvF;8;hGS5t=}Yq*6sqXwyxR_8PSQ%3&n4v~L-eE#}#W&ZEcp+x=`M*jIo zmAtw)!0I;|`5%?}eewC182R5c^KU^c%O8nv%Idz%-_^)}mCS#2eEx|>{uyTe#YX<- z_@=F1f?)mQjYj=t{%-O4vyJ?hnE7uu^4Ih`%aXbJIp%-L$iID*sQ(v;iPEpWr%`|O z9Z~=DjQsPFDtq+~QGX-BnT`l$*w;I`=mf3ayAju}Oy=-KoGKa{P#cY2gwJ$QVO_teSiqAIP$W~!y z3n3P(3nlM7I4thzaP<_fDZ$jObl_hw_1~t;uw?=9puaQB5>`<}t-p2~9)_etDHBokvG!Vz<9c@9_k;1bNdDh)uycf92Y; z88-DU6~c-Au9o%U{I*d20j6qrJ=$8n0Z_$x4&Sm_DN3N`{TuMXYETa6$_OUd(us4|K( zRuK=w2XJ>X+|UWF;Lge4mJlwJ5YTz84{_~>oY_2JJ0#utbcdze%Xyl2O#M~_gnkyG z5%^1|mmNbSQgXWi2ne%Q=x~b}J;dD`F@lAi^4APE3|E#fHQd=qUB%QL@F(XRe>y@9?2CP zpi;3rJXS7f^8A2o318|zgP*?s41Rj~+wjvvE_TlJx1+C}pL)Ys`f$&JrB6$IFy((m z3vwFP39u-t74|~ImEs{-sQrHf5oCshK!)p8AR|^~sd6FX%Q%ZiY+5>yX~j)m8qM#)j0c!Qy<8mk^71W|#Xa2(LfzY$?<Az>@Uw*@7U(rm_C z;-q;CBUAr9tZ=@|YKLhiLH7zD7+HAvI}kiw3TYJWUDEzKzvl0%IJX%V|GnW?;^Wgc z<-X;2=5Gq-e-h?F`Cp^%Bk}EoUl0`OZhYzHuV*8_8E$_2{7Sr;?sVTvkl#G-%(pJb z6@u3H;`YQ^uI;fv@nr;QcMyZzc)v`)4T}fs@&MC8)Kt7yB>G!4QM|l>F!akr`gMuv zr=K=`R3Dv^YJIRz3iYx6xE(?dn-{~+oeiw6#61bfAXZ`0l9sFZfYDDd?1Ge+LE4a| z57UI0Aqz?xxP^_YJ@?~5*0m7S@5L#+X;>xH8~F`ORB4o3v_!51!z+#J6P<5y|IILF z2obP;SS6xRSO~~z0LTg>V*q*J5h0JcVDcgq0I^;J{ADHLW`L)o44ScsxE|40iln7G zDcyZtW*Yzzkl8*6ra10x#2_`KaeNTw+J|_GECj-{5kWZ|@*mM}21Z=nDxj!{+S|tBeVyhv4!z7 zu+=i?ZgXlSmbpK7w7ij25x}X*Qdn*94LtrjVmYfawhLmhG7=^oCLl7zNKToIJo!^c zcJ4xi?}-mTAjA8KjBg}i9txZ@p{r+*OTBdwB&SP5&jJ7M9U|I zfj5$%DE?FA99!3xyHp#r#VP~H(U3ne(?bK)x4mY{;CNrI>KVk@{PmcLLwuvI>;xgR zEcf|zCu7IXZ!@Trc$Rw3h4#v2z!uy6x<7Zely7rc3l0f$sQ1Gw%%S?>&{BJxgN0&<( zvI<96&&OKfTNRFM&vvcQU*X8{Y}5+ht#I`6taEA$1IR$*rk)3sl0Fuke!dQKAtc+} zj?SPxCkxRK=>MGL!Qwcy5uWJ5opDUuKLE2|+SDgPX_%OuK6_5KQ?=(v{a0kfEu>O{ z@D)IUT@-=(J+A>IyGJ{H?wpCxYjr3GPdbk56A?V$aQQ|qaj7GB;aiVy9lim4LGF7Y zI<3if`BJQ~B)PkjPEKF@bceF0-l<-do@ID|%~k1{Hf8-uXZ07U zg-N)lU(K|I>Rsts#2c?og212R#X8hCg^N)%)&Yn5zDuna_`sfwHaFAOkl!`MJr1Aj zH1`$C+%$`)z>)i%dw?VN5cHwI-A3YM^B9I7MEhz$<0nmp=!%=sMEpougP)* zM~VW1BhyF+Xsb9(?A%3111)b1<^ae+dNMZjV+=?Sir$q348b)?gL98`F5zs;^#*f3^Zvo zNuQqm+)kww^Z`D{i4Vkr_RTKX7{ztDaO{Ax*^k&>4eptw)^zl>#Qt+6KPM1qW&w%Vg+QV; zzqJbuM{z}`cA+&G3DKVOq|tM}qx$+3cAH5Y>+0r34$YP+sDL83u*l7z!XcMNDpVV- zl8;tNpu$)bIqOs^Y;oj@%Hz}^;CYcn;(!CCP~il}FX$lCNP#=qoiWygeAlI+zm8#h z^h$CM7yWf8F~1C>8JKL919^jiiKFpAo(4=t0uwoq*(Y;PveuhXN6+&_0dz)bR|5sv zQKw20@J8?sFHls{bb2Zy?q z4TrGfY=2Qc`Gh2aFy#yL!yv&Fank#pIbJ0{YpVV`e}$1XQGYQ|1^+VZk1qHd>fbf( z|7rc-M`I<_KZo=uzXJWgBmMt#M$Xojj4D?DLzp|FeB4KqU7lKfGFDJz<%`H0U?+=* z&4Oz@BDe-Dhw)~LLp|(J>s;E^OXAKu*gK!p__V@>lliYA#`56_qS8 z&7qD(7a56G2)I+YR&lELX1UaRqg}+9g&`~gPjW*)LNK=%!!1!5N%bx$ zLIyfP6gk+g+0W>z%|0VXbDzHM?-M$0eaP00GC$ui`H2gh? zrH+HTx2gjZY(;`by9R)?`8zW5huzRHIg1p>dk^to|B77ty|cwe++aXx6BYJDzty)W z6boQyzG&`1Y)`~`h5LKlPelwcqqfc9c}#>mAfO3$8_c&Dv9{cr*;x5|>cW}v>o22K z-9vD30KDLkQ<`=Bv5Y`Gp8~tTJj-fDs>T9s`OuSZ;CvBwuxc>EV5Z(T&|@T;z`E^9 zqn0KKp%-JHigx`23SQvUF4sSq#r=2p@cGDNL!Kx#|BgHeyU+mKpKul-3|nWRtT-V- z8EaswQQmN-o5H-<>3ab@ycxA?O5Q;ID?4oD+xhN;R?rU}q8IvZmQ%y%>W5PY*paj; zCz`q2M%~Tb&7JDU7)6juTFX0vokO4t$u1mrZEChwkZDt4E291^z}%?RXJZvt;2R&o zW)Bvijs6ah&E2gC*jlj!Ey67qOyI%zO?nP3JuYBiLGJB#YsJG5huUZ_qOuY$moFoL z&)7*R4;LoY+9LHfWp)lN?%#pX!rTMyd{^#go>ZrHV@_tF=E@OVx}_5?FbJ&1U~?P8 z6)dArb-*a~WN1*hbF#Qe6iX4Ua62}rIbwZ^W1UcYKxKa-ewlIjsS_cR#t3X>%bk^l zCpFMxF$`PTD(>lOE#F7qHu|p2ww7an zrVI*0FKQCtqb*2bF*%wPCL%8Nv(Ov(8f{qqB9Y5IU@d=|k-w)M(RSfN3D!NHNRRnl zNCQ#e9XEaobANK51?dRZ6V{5p5d4PEaDg8I_ln2ZAR7K)IAMK)UX4+u_KO>+m~TfT z%Xp;u2YzkPl>+$DIEFd@nesrP1A`kg4y^^Gm*I3Xp6?TKEz^Pf9`|8~mZmxF_S|E3 z>)2!A{dgAK;Tu}PGafLHLw~_k@Ek^`KC+oHryWKNrm%Q;PQcp$D@=fw;FpkJmf!;E6IjnJ!Fp~fP4cLPUWX4RuV9rgSnw7` zip5FA1dC;&B^$<}3iw)`@>QDVS*KlHs}*kK0LF@8d&ILO;#rDncos!Ge*KSlKMm>t zcyDici+FyGvtPc>l8Po34@eBnpV=2j2dGkWu5%|D&$l`w>xBkzxGi05|8N>zs3Ayl z^&&%EJy<{)m?bLv0@nUu!FCz8jvpLsL(1n;-=m$waEnFGNDy#<)mgp~b?QgnPxpDN zS9_10IsL%UR@3);Pvp&PXr8S{ecsFAEs$!+ES!-s8F_~2I)O8@FTFmL843jQnwuxYnja>yhAUtc%U`=Hq*fd z2|8U{t#BPWanByrYT-J0XHgrOjfiYK2!n`A7*XqK8|sDy3s% zvY|}2(bGj3k-_>91h=I;5`wI6b3SAeZG3e*RirgV^Cb7Z%z^} z$G4R0Wk+N!(x;r|bJVG8y!-cg*R1v)KXbb7J=SXaXG2Br35eda!?x-r^jqabn!Am1 zqLuq{D9ha%`T~TlqEHPhE{yOV7~%S$FGNRhKt~l9u02ciT8y2FKnz{z_l-AX{>=0v z#=hQ6W@-my3R?Lb@7q>Ahtj;qj?cJSu1OEDq%3woU&e~Zpqz@su$$|kzZ#_ihBwk! zoJsqBnI0hr&LfooHpzug7zT@@Fv8V>y~OqZ$odf9OGK$Ql-dXvn|N(O-?=3nV^)-| z6}$yDQ4%+)OkVUA+WRb&`Ty(pF3NBA8_Ul?I;QXR8`HUfemhJ*>NvA!<_T`?+G13PXfrYN6>x@teVPI_@7S*^#RH*YpNJb34l$-LrO;r zwA=88(b#M(iwm@wIR#oN)(dO3l0JIg!$8Z|;YonPL)`f@i_tG$0Qk|9+CS$=dcP0? zGwf=#VkjUTLzxRHzu|vRzcZdS-y(2`;KLmV(!hpfO*M(@O6an={ zfFpE<4A^c2Tqa(qK#KiFz`3DsfdK+G837$adu6~2GQe878Gh=)bXY<3Qov*zRi3O51&}JlJLrgbC_dsPMs$%8v*IIoojQ~(BW{gF%$*hb8ZiKKR$Sm8 zL%U?4EiQ0uXsry)j0+qb`lkrY2tO?LbFtPEjdU?OaM`gXNaC4=GL9jUQHRo5FbG~+ z+Rql*3 zh*1A}P$FQ-CITcPq2$vOGCW>lLsNLb=5|(qZ~ut0sM^KFiSSUjtJd^nBMUe0$Wp;9 zP`nqZxI-&{)$o8g){12^)xAt*Mqu)=mb0k|7+XDS1x1yBRkH}GDx~{CxWls%C>%3P z#~pBtWYizvD5qnB=@<*gTMQWqho6o-IOftZ0FE*`@S0_}20G4$<2^d?nq{{a>A=OW zZtLm5YnI(AZbMTjM@vh4+ak4a44Ziml)67aG@AW&tfw&g%Zz5v3ozFNTiH=BP{%7c zWk=b>(gBKiE=ATgOanCXUZn$Q(8!xl2hhk9)#3fKc?c_$}#hTg_E4h;*^NQEn#@oi}AK!yZe#*LRDTT;Nn1|e$$HsvlH{kmPel6hU*ZgHQ z@|)r2xA(8ao9RyX9sE1ddeC#v z0Oha5?|S^+!f%oBrJKLXMt(Eg{66_B@n*WyegF15^PdjxZw-GH<;U-rD6-GuqD(98 zQx-`AGb_eJe!kSc4|cY!#W$PZ(8vWezAx;TQMShPe3A@iB7CVQHKd5{KM2o^$K@!* z?@fqjR>)3#-GT^a;x@WEAIod(e^MOU1nkqLRW97Cik8<-l!rxKss>YK&9zZ>t^lFE zWS94EaO9qFf6Kap0Wv?cM)jMDsMr*755iL-fYu*NMZFK!m$Vr+_Z(Pk5j$%<)rk9l z2)5_;gK$tj^{Iz(Z)mNFTWYK87S!>V@z) z)Vy;=SUmk@d|n3QgQ>~*@E<@?DY-b5aaTJFcO=pKVIsY6;M)rzI(h~RtK!g^-?fRe z9~rIhRpW*BF4n@<^1Cnt!48K_{fUe2W3Q$`#%(R9(QKQqJcmlW%F)0~YC;tQu3VPB zfby%jezf`DK{=sw;1su;_0B(F;p`iDF_ThqShWiA`iMhvIXx3gdApkJ!od&d^7MW| zmmSdE*8B4srj~d1Nd!?q{RHwtcA&pAg|hpS$(Z8yR#J9<1eU3)HW29Lhug@z*ZSYT zhpRnutP+R~1UBL}^+w`WiEwdKQJ;fksK(=f6PMbCc$>c(Ny9e-gC#!;4BTh3^p&@> zbaxw>KM(n_IldgYjEmt?M_k@O1!bbFL|h16;IfU${#~6O{}!WYFZ8+Q#i55^NrNOy zUKmVlPcf8Y{Z(th?pzMAvVV^+!u3X^LE}Xhi6dShoCygWw)x`jBDAqQKNv!?)4)gG z;>Z$aW_N1TpMc*GZEWm*0`BDDegX+?+)r2ta$~)r@nbIVh43zP2ZC6sU%I2f^(6G) z#R`?{NxFGQfd_cANQxh|xVIo$blbA1oDmrF#fg^fE3Uy4w!uS@SV z??2(J;D+mW8BHWJsPnj&y|gc2XNUx{+s(4TRw`m#nZrt?XlLN%lpRH ztkc#;ely(s?)sH@Gu`RF`;b3IkFI0}$MR=(!l0deDkX47*Nad$DS%M|3ZN5{0_fAc zk%BPZNP#qhH&O(3qBnz687OZCgVA0Xr2u5L&jW`;_*LVFAs)*&ito?`&+|5NBOcpX2;S08W1ej69q9Zll1otmaL(d8X_?`Jr2luyz zQ?5#STbGZ@kKVlijgJ0+`CVM+koMrTQN615=6LzVxZe?74`Le)c_B{Ee$Yncylgpy zS9@F8-s74EYXGab8r9n3zR30-*gs}Ds4x`b`akbgshtbeUSfeI)~oURY#chFz@_<~ zFZyFyRf_W{oDLM$f;k<{p7|#=00gaQ;poxOYQdbY5VxG%gTymH{7_b4TP-=$YSANl ziPcBAhggM$&lLB+!|lYY9O3lUVz8#J#u5ZGb?U$m(M@I_P0`<7NL>Ti&uAr=XXnz> zB7}Q#lMaasOF7w|&RF;MhnfZu#c@n13uJ`=@*I4qjIsL&3;+l983v#`B_L~gGsM$w z4&u)HEW^?hHxsFPO%T?K1DKYOnIYA9mkmg z5WC?=dn7r=mu~*>^t||*{>ER5?HY&uC;nXIH~FXD0;j&*kw7=8TI(?N`|fD`iYrsB zk71!Buufc`!9JG$*0X7-+FH3nKB99KDq2+k>-AXms;PYdggPIymvHgzz7Cg}vk+u) zkHu2@;B0d#{Q+89Kl-_Bs{xdXs}nMVWYQw{802=Ud}cFm&v)HH)&~8=O=4BO5nlb< ziS6VPmD2IhJ-|ZlPqY@)>TYuZ1^~wk`#&vuO>k%#Km3EHgkagUuwFS?G@E;X>xhk5 zYTu1cSoIFdw)vZZ?}rqD#s|;o4uO#c_o zxk$wU6j?*j=SpB2vm|XpN#EX|P?BAgbOuTiZ%J)UjFot#BUZm{xi}NnGA=c+A5vKF zX^q7&v~I+0ZG8|h5&z8kit~XYo(#;8cOZFtMY}CcXvk1Yl7|h`-|xs*o-%EGC@td3 z)$hH-p%&NKw6hx4Cb@Cejh)E>o^@W0gfbD7jz%`DO^%PeI6ks>VbV8YTy)9kTx!;p z!u+Z-{IU7Z!G2qR@@-ni3E06J#C`Lqx$d~KJId0a^L3$T2h_omEbc8%DobIMHRzQ9 zMoP~?f1Rw9oS9;+2%t*f1Kswad3#s$Z8r$D(VR1%u!$ZF)%9K$w?>V~>Mv6rTSMrE znJ}9JzS-YVy+1{BU7V)AU$!5E8f#?8nk{&23;C_(N2MD@TIGv=O0Xn!5P=fKhP5zC z)DPrCoqNtrsPjBg=X}=rg|~!xn|4e9sG$CLFflVM2=h*Y_Mvak0ysRZV~gQTA3f~* z$QknWN$g!0Zb7t6sT@6tCv)IM9c>LQQ23k7>dRO`8sNt|PwRZkTMnw|261eRcBEBzKR=*15Gy zldMAH2J?+e81#vsUYNkhRn3IW*bqf^c!0riu4X-Jh$~fl#u&{8P{FfS!sMc0L%b&AtHI zClU7sHibSgh)Lz@jp*|4IFmjpRKF359VRl?qFuIzV4AgpM@lv*rv<)k=KU-s5GFb< zU(Y{(+y&kI>u~pk{U;t<&vusmOnj{6RJa)doO%K$&ld(d$2@z8&Mwb(Ja^L*iU<++ z`vRRuYs5M8d!ZIAP!vr~D7&@jXo30@sbTXTOaU6n5I41#r90KV;U4k(U#C)&oq$6n z+Z{M`BMzTNNwO0-*vpT4wm7xf-2_eWLKtY$Lm&a$=_r{|0>4*8)DPxl5WzpK6ZL)}Gz_3{EAGkN zU2rJBH`GshAAlE3G1LRzsJ&jH_xn8udsnR;?LE!CfttKpe+CsP$CGDR`)>VLwsdTI;3z0fh3+g4n^YUWI8Lt8(cdN&KV1A}n4L!WKsNAHS=b7S$xI74P{ zY$Okfj$a`!g#4@=+(AC;U`!eAD>z+@Kt(xSaH9C5O>2Si8=E7byrEwtD4`W>_Y^Em zcDIeqA67}CzMLF7f@>wYGX-n!E?Il07;FCrHXlMbYF#nmOhYyr6F*A&fpxDe0TWvW zG^;$|aK)h?KW+o{NKB~a{6~E?J|mOG@qi)rsjmFC77 z0ju84u#UaZp}n~jpbevh6e!lfiyO$u0y!Q}74`BL!6^R@7fj3bqe^zZm|;A*&@;sf zfa#uPEUbEBq*(MESOqX3xHF=mn{g@#_WsaO%n1MlBv9CMNDp8|m~S43v!PkGG#kMy z(5%fLqS?1VXA$bXMtBSTEFcwbi)pY1X7wNe<0@q3HCQjjUW1Vq(@ZNbVrn!iCLYBK zO+}}P501k&+rW0T#5SMR9tBKGES`K|=^kQYVvS;WAu%+bER*z$gID*8to?CN2(@<* z-e{+?dI@TMdXT&S^$Q^97$9GgAd5_pwZ90m@|QrKZ-Bf?f}CK2JoJko2mBJqoiEFZ z^LYbQe4+_53;xqr{8RMz)6$aG7ul14E1>2LWKbg?8Q(8NV z<9}kL?gv1@IHaPER@x72e1e;@`G%?`V*U0JwkX>DgQ5YC%7FZ6fFc7N(SYePpeP#f z2N^IS8c-wyCPo8>$$%-*fQw|nv}iy#834Nm4N{XfT?DKozXDs_40HebhH>11?PC&Z zl#&XeFLt%DK*lcRhw7o$EmR?MH~mNI&JiKT{3PFlQBOeAm-7)eNvWe}@aUZ!rHb!= z>+L6-_NzUq;mgp5pbn1c2cC^|RV$fdI*No%NbESEkIv~MWmQMYEIyCdjJ*Vg&q$c zbVi_A9-RMudAI>}R6J3G&f8|yEhxADHa#f^Afek|l4XWO#>Vw#;w;-s+@OlfKUwCl zJ|~*r2wDBx^4}=)m&NiMA*KIOe%mSehc%sFtT*`n0vhRrT|3X#ur3*MCXU#|kUOHk zvJ%@((L=x_%E5oxx3i5%A0ipdO)PRIL2BU}m|;ZD6Orzb>~DuxwnjovI^Az8R=C~0 zA-uU`ZELi0z}-#g;K?bq`>GT{0~)M-U<}CElS=Lb3@aji(6Lm9-H;qV7#RfAutPne9C%@YzB`}L7851wexrtC;93aL&MS6Uj1JP_yu0}ad6+$^F?ddNPG9P_53!Y2#Y4u9VC53fhk`q7AX`G_ z23D}D54?gG7l*D{mlkI~-Jvb!uqzJToMs%qH9CLO#CR+Y4LdcS<9#qIC6Rb-M`I+c z5{dHWry#L)ZJNc8i6jCY;^=u}BY2y3Hiic{tki&0;gvN7&s<+h`HJz_gKS3GQ~Ao! zL3CMlEgnb3oeQsE8pcG`fw3E2Gh(w5%hhMap1H;BkrQkU&GX&ksHxr?hC1c5J04U(^rx{m|U@ zkFdemV|})i0Oo z#d0;^?&L@%32=!EFI?2Zg(=rF0QY3IQ5aMKJPd3s!Q+R;!(l3m9&6jxs?z73% zck2(7w2$Eso8lAqIMMcxjgQ}nk22>Jd@xACwvW&JAL3K@EA%nr+w0%YHt~^RQTp8R z{|BE*r{W{&v-{rvjy{4vu3pOFi4N0VPaeT#4LgJk3&2dg3Tr=D-5h*|FQJPb5Nq$o z`PU3TZT^>jOa6JM&%g88-%$SW)8}8@C_nAdbACL+Iw+-C7Ef!K0?CHNh;yMn2#X;e zLrk28Cs!vew539p+xgH5{G`X%H_tT+}<$vKk;j(tvveu8m>vi#_FywBU$E z2u!!=>L^S^Ahf}=+QvoQ)I~($@@O~}fcr=E8=q(i9QNrsN-9r`unE4$a#&qIfQhg zGdzH_G5#Oz4+4JQ)4*T;AHcu=fIIQ5eiN^@mmXK%e%fh#QiH!aD2n zmdddU@eVLTm17scMq#9&&KB9|(q37DAQ<_?1)g+f#e5BcQZ!h;9_`ZJcmm0Ai7H^% z21D$bPSC1nqr1>K32$)WUQYYC`4950EN5hsyTqp5ly0lo=l-T3cXFCX$7Np%uV6gE zuix{A5Mbdsy2*>o^e{4Lq&HIP=gCxikp(l!eUPT#%ICk;kIFu!(A+&xsu#E~F%H>r z&1_9cxOe|Rc(_qRh(%+Sskj7{!{ac@8pxR)%9mc{Gu-@drJbSH9NE!hN6R%siZ@#A zJJd6zFe1^)d!zO>_A4J?#28%O)83d~qasgD=^LB7y| z;K;2qc&HJqkkG!oZ;arcA{Z86e0fWutxf=KWzd}n+H9nXEF(4DHzVi)Bh^S zji8TY&?p4WFoJ4i5T1^Y+Z2I(|FPlB>iQI{XujLn#iF^>@SFm6ZM$P2L#jO)^)mi( ze5|%i?9yIu`y!4gfOrc*aH=xq_1)41?+^clM;CdYh2Y)`w-FteAM?F8Z{*JImL$*6 z{(HQ6m%#}EK@dr5QqN~N(CPK6c|1WqysD9iwD}<&vgqnxar{6HC2+g`5j@=B&9^=p zge|b!=#@BG^bN!)wCJ004a(%ce;b; zxc&m)HC0(vHw%b4!;yli;Rpl9|`P#d6A=-Fp@ zj(iEv@MALOOL|@~JfG0xH#~Lp>@hrR>G{U+ET^aXELrHw^sF;HPtg-JJPYZ0-|)<% zr&|x1$3ss)!!w1ROGe9>8|Z0%h4hS}=enz<$3{<|Mba~Xp1wPzXC^#opq!U^Al2c% ziJdL0lDr^(UkDZS2aH7HnB(c)GDm^Tabl^+;fm(?`BohF`|`e);fL{&kiI~;KF!FS zMo2RZ&k5)P=#LwoZ|Hf_@O(;7*AHPuyVG;Lz$ZEpcf$I46>ZRyr)@{i5xrkcEry#) zxoYZo;ezn094RegKUR}!V^VI|gvR}IG>oBy9}fa{Pacvj4^z06^xuYc)u>039M ze%Wc$?^)aweD7(~zuIK_qSL0ozsdC3r%iuFlj#q=c)I#_X)=A_wCTf-pHg3;O;E}U zLT`e?kYVT@t0~XKRtGPTW1i6;hx8Xhce?ox!C4G0mBDly!P#(vnb}Z$)fn=hq3hdN zf=WHb5%>of6NDHHcchgPBU|h__TUIRQ;CP|6@pS$F2Ls8;vS7I^7RWQ3I2|tDyFpg zuR|F^*4hjU%ezn;`|^G<9Y@#mcglC@-^65P@$Xu;H0Xok%DLL`e7Vm$f_M; z0{QejB#p4Qx;zQz8`{be&<50NhPqUh5ciX7aSU{AzF~EqM0;fJ>4isvF3f)HVL2^GiyT}uk3U=qjy;FxaBg^3%pXSmuZrW*G*X2tc za~*}hAL*-K!DSL^RdAhf7N@CChQ{f*%!Ro~p`X2SG1K@m?f`VjrMPdYI)Fbmb(j9c zBSM`eid^BkZ)K-zE`gPP3QWZ*mMBHM; z0fGZ@z!v?Dcoe}0Jp3e?Hh-dsn<&v(APXL3q+ALwQudQrQMD4l^QCVJ@)3U)1$8`Y z;QWTp{x39x8n0$JNhJ^Gh#!#V9S%lo8%6w2BG!p4lWdVZGt`iIhxqwha zcTxj@+({sv38c9MvdjeXIVuMrBB`n@WpGfjn5@uXP>O#VKv~?^J2XGJ8+w0dK&(2K z5ZAqjj;|_*Oo-2tT$QOMLIt6{pWSiFVkC2I}eHqn9AO+dx$aVCxKDI_3KZp&t=_px? zIZ^I*l&$fjFp4Dh>JN_)&#ja%1_Xi+0BL~t8ralH?;?0XoHP{5e;_cIU{3Av0BejQ zb|V!0yEHrwI2?V(FG z$rnud3Wg6J!#N>zPEeIfa$uShP7b%2n<@z-Cvg3~L*OCW%6b;&8`!55n02}o+!CuE z1o0nYb$)Qa%!c#KW4IfJSO)PQVvpjZZ$n(%@*r;g;Cm$2$!7DNAmx7S^dNAC3HhJq zP-Zp)g8BQi^*>F6CpaQof<Iu^rtDPKQYCBn$v^mGnZsFbx2aRjlF(K}`I69(9K8Mao2aXqRp-jCIlwlW~wW!AZT zldwU*=MquRT86@Vi}aFtqHOyxP-3hI!lDv*fq#nCrcW$5^ps~$vK={O^%Cgn!kvkx z(OoC-x{7M*Ss5CB&%Ud{H*nGWyGR!Y$ADcOo4JS11)}W9R3*JEwUA z=+;{P#A>~nxC#*CCsBUGLD~erQI7YR-V?0k)u@rGJpffD^c?*&$ntima#N&k!`Zr6 zWRwNDq|lo`-O&^f#mY0`-4KOGo^8M@BfRDL9ODsE<*>*Wr7QI=k-(#xd(JVmjvdMCTRgdT=Wf zGqemU>E-af&CL4dzqUceU@FFlk%<=|asL2SavlpnrM-v1prvC-q3%h?)3`)Ta9sUt z6ePqAiS-BBxMC{~?K_NTuf@Lvc?9CQ!YdA~K5e|r|N3d;W&VY~7~g*z?)!cxF=(oM z#?Sfw^zp@^QX{s}d=$n1H1UT1fspJul+_c_g&?lni@)eoI9z@6aZI5YX&B}Qsutm^ zKmHcmAt-J;Fz{gpmWe=G-gDnf?ZNBi3w?u&kHU2} z5?mRVAd?A_lQHoUn?m))DfrlG=1;>XIXn^yz1@M7VZHQGmfr4dap;SMR26S@>doMn zd#xMLwpBKS32UZQA=J;E&m{_1D8|VQ24^`U4Ec~&DRx0Ear-` zvCI4%k6I;Jo7Yc-@m>VR04Q6}65PN(V`9{n6z|kl{R81P|1qQ$!ieFCu`h|(9}%lh ztstWjz1azM5k*XN7EiX2MyUH%U52DQwK^PKy;#c^APg*(T@ZX4C$vky<@?6&tFeeM zWek3j+0jfciB)A6((2EhOTG$gW=cK0f_cDVoM#@;f9_FpQ6}TR)kj3g0fuOA>P)$tU}0!~!RAPfR`P!oJ92=t;Rz^AO*yWc)N74&0Wk&2{ zK_la10bBObifugBu%`v{)3)S$BX}r`8l`~l=>ZfUt(NbKJq=xOcV^k~2yiS-ORKh4 zh_}ql&6`CV1fdkQ;6hJ=$eKc@D22$V)u-YvYbKE2*#z>Qbeg#=-(an%0lXOIW;Tg> zpfTz!JU?x-wfx^~>O|~FPnxyft)F#%GIksd6#<*|v6}Fm=$MQP-y&s+UN7^i``G&< z_2?6#3#;NU^y9-2MhPKF>!Pk|QCEgQ5pa0KF+^c6oPq6z=yb9>hBFYi4?>Rm8SPOd z?vaQ=g(69zFmC2Ok{0W`P_Uo=aZKD0uCuYrr*xP<%g{m-OwA@ zA3NYH8fo@3p_Xtjx({M~-lO|HzXyK-29FJ%|Alz7+_#a2c4|KP4Qb6h|IN1}mL$wq z_&e*|RM`^&^I`*jQ}OX(BYtB#GtVrf=M9m0SbpUSVMM05@4Rc3>do4rPguXXihv2Zd zaghMlWYF!8!iQ_ORGsaLSb8mPJk1tvjYy`2*E zP`+zr=p0IH&Pl-Ley6fZVsj7VQlbQ~wVQaUB-OgyvY;8%65P0sBBHFz^OI}~3ZSa+ zd3;#1Z9$5Bl+gsC<>T=l80~$&`T1;b)1hS`q5i}O{_q=y_VS zez?=wE4s`m#;d4D)*_u3H#l%}q*~ARNN4j8f>X@V z)rqn1iC7wg(Z8C_1xT2Zm8TLDy)F`wJL^Ft5)(P9690lCFR6KdN}i54Au?`C%>BN| zO>1@GzoLa~>L#o`3(CJ%J=@(7(9CCr?SrOdTIY$bra?lse3L^PS}P>uKOt7{{|_uM zpK#>vvQ~@*9P}M)xuB+-L0wY)WquIBEumSZ|FQ$qe%jkG{!P}%6vzvJaY=G;_Ok zUUQM`A(FtMIn&VHl3}tnY53rj-ZS40>BPpD(S}tNw{}H?)*`XZZ%16nA@*AtUq6tL zfD@I?&%3Ch^JIdJi3w~X0nHSKE|3XcO-v9F2}U!)7vLsXlRtn2LY7%YX`}81;b2I= zR-6D#`kdFmG5+^fz01f+h>XLRrHS=a3;OXMSO8HFOBF2R7ySp99`8jW zbbxgrZN=nYI`=rqmj>ItJ;@wH*} zK6JjkZbIRsi;!KS^L(&htkZ2RALsflG#go+S}86fbo*ujyR}i^ftOfdX_mfeKMSPz zS+>e1L^RbZYY8m}(D2mrGC}FJIfBye`)LaqRGvN^6!uI-C6{^UY)`gU;B40z7bRJt zuaGrbZC|%P#3OT^KnAtX7s$lANPZ$RZN5(*uE}KLJq$(&&W8D6Lzxu?PFW@lkMozGnRDa|1_R{vC>U{YM%JNwGdXf`tBus}AvN~) z?~sM+9n1`W6&dC;4VanOkK25Xq}-3J%5zBQgxk9O16rlWY9MKcLpceS-3~E$%VjOe;YlN>^6AM!UwhnPS<_;Suj~3jfKiwf zMo|!?kH7$g zI~cTRd(m)1>)>PaE=ZTJEHa{%K|Y4_d!;nn0?{`Ym*8sW-5PhO@t133hZ<6dVH~ta<-_uPJ@LGTUG0?f z8e*xxzeAkYaIio^y;zZQbPgna;omTPg=IwNPM8EiV48k$JBmzk zR?}NLvh-}>Seegc>uw|iTA2kmuwLFqitzu*sZAc`P=x=i^m6LJLa6LKi0~g|5RMxW z#D7Ta1^W8>wwx39>7Sg9zNM|?i7~)FFi#TW!*nE>_Z+cZIe}52zz&ApEyE~qVAw8( zT`$A3jIfUwcIg`;?;;lU{&-Oo(|>|EZev5|B2Odvka6E9Q@`VnsTkWgWs3c-T>oDK z-ErQn65WJ7#GS4;o5Vg6g8M5GNo;U>K!8fi*HR$thk)24uNstc;eocLJb3>Cm zGt<+PEyK)K-4D>N+(UTIV2vQzh%ET5@dy*N_vTrzaR{)U0%ovc*ccqL_)&x^mS>Iuw#&gb=I#yVrT9;H<8cOr!uR0e`fd! zCP%nO7vWbM;o|6zKtX{dQ9((8fg-*U1-ySSDPTxR4gEc+62r7-jQ)mdu^U!og2kaK zf;CKX=1YA$<*UqK0p?V8!P3lC>|gpNOokdmBv=Tul)+WEgFFyUcDX6lq80oEu7fhn zO$3~A^Ch-9r^5S;$Tk7*-^KqKJb4M{Qnte(QU9RCS25uCZG`Wg@$lKVWb&(Ia?jR; zDoA>;|BNq!5mIzXea{;ta!`N%N{RpZkgJm%Qv^BexPTYBktuM0^`uKZuHTQPv0!82 zb1)TVMXkyNkY2niX7i85T2>$NCoT>o^A^`hW9?;@&&{|CkC}2?J(w5wO0P<_`kC?0QubV}nm#Fytt@m_smvzQ6$*#$(uw(8!)|Nh z?O899iT-ESSFixB)EK30Q7&kW5$S0i9^^u0I5_)qT+T!lB^|QijnSd>2GZe>2iJEa z`k%+8TEge)UH&DiqJIXev;XxzrTuy%ml%X~s5J*?tog2s+NdF?Fq&^B>r_6qQS-(1 zf6RAU?gL|b#7A*lZNc$s^(s%gBVI5Iz z+K4VKe-jh;5aIE z`8>Kb)f2;?_lhB}$-{C%aMN6E;(AMtCrqh)YXkV|UQXw5*678Lf{Ej1g0-CF zbAmk1AtTdh79|2zQ!3i<^iTMpWa^%awI-K#ha%oI^g*Xw=;@uV;PI-Kea>-WinS(dzQ9sz}ZIVBd z9vD`_L<*0xamIiUt3#Ux`A>uUg5pr~L0EwKGX65lM1!MIEb?rAC&cRd`rA2td1)lW zlbC1~Qri55Oti#E)ObB>md}dE${%2sUsN2Lf0-!%%qVCq8!c5M1n3C_T@Wk(N1BFd zkEm555m%x%KQ#gM>{z0@#6%KFYOv@hrpTJa^%qVntJAo-5Ek(`!V>x;*6Y;eU^Sq! z|K;u!L5kS?lNf*gp2qP~A6F^uXYrgL95IM3WoUM@E58Dnl{_%X?}f>sAH(KfDzS>eygdmrMu7&` z?UAC1L}PU!kJq4d0QYCY?Jj9hKEj~H^IH4(?(7MD2y|31MCrd2CHA_ZIC2}VU}cP% zX*Lrj2jZCB=2v)wVb*Q&(p0c5Ds&g<`0Wx`>wF!~J0H}>+oAei&`JW8n!kp-QTsHa zFX<6S-_bzapf6}E>3i3xPcr`^|0mz_l%BfHc`tF7)+(i14i^4dyANgbQ`m0EF zyu?bX=Q-7r4WsPIo*N+|FGn)vC~TH-dv*&b*Zy9Ua;?Ebs)i%p=HJi0J8UwT0f~Fq zlaQo6$Yk^HWRk8(B9>_3R<__s$_3=Asb5qz05&Y8jZm;=?9lE+#cU1pMWeb~>388d zV{+WH$=krMVG%_d2|NzrA8H(h6RF3mwtkm-YXD-+TH}Q`GZUtOT@bnSW%EId$w>ej zir{(=WpN;>twXn?-PYo8M20zw$>kN+wdmgNIGv!1#zB7hrxfHXF`hN)95h8TdGSU{M+B zPy4nX;YT~m@%>L24;iL8vXo=VP{Svi)`~KfV@d85=qt2Et7JQT3rR_ws}@HlW{U=o z&Hp51#kP_xXm9xnkLo-g!%g94S^?LS;t_+4WiaC+>%0#rRar%yn^6;O&!pJsL|W>9 z>X!k6uq-hKO9rt3N#Ku0`zfV^EY|YB0iILcEV~#OgjOj#cq_a%jb6^X7ZuMU4SC8! zr#QYZZ;j%E3eyP_6w3Ym0EpsoCK?UlA~HS1nNeAp1ssz-r80GEnFLZj>?CO0;~{Ly z)ar^rX-j1#!KJ%zHuT?QhE@m*1(?g1@!E8g1ZTvCSr32@Js}f3*i?csND#hHLc{JI zVktJe#Sajc@a?B^_l=Gy_la`%rJDrz(WeO;Z`Ot9qWvYrG(w@x(#)pH?#=cYatr6L zXs=@XXqBW&to_A$hCCjfU<_Avg6Z7SKhQA34na02Lo9Y|>P~}~W7vDP%3*)2;FP|? z04R^81;`pH%7@MjUT+SSAs8rzCgm7M7YB0ldACTGfr zAy9A)4`lvx>VgHk0N3Quh$^TD=lBr~3C=+@^pDU1h=Rf%4}Fp`u${qUII#;9`pHrL z5yxLqTXNV5QFa%{&(tsVt<>z#(;Dhm; z5jJ>u%r$ya`cg+yb>vgY0?1Cp;4^vJmtelo=C26g$=&+7;Qse#ts>(S1|QzL0y}v1 zRTdJu4#1TA2U*;9wA&UKkdX|&O{@#(Y+a7he>D}`9o$F%xEPnUX`O&0?^_)GVlA)? zW6#`)wN(5(`?YvlL2uy+&UEgFCE^T)OoXgkOtj?hKT6ikYv3|b3S62(RW_Tt-llw! zq|~2;dLI0ks_LTk);a#|Enj5>nyRnN%+iQf8WgKQ5w4e}6sniYNQhRAn+)Ocv5>GG zEEzHJ3&LE~s_}xbL#<@VpZp*&UN|PolG*)G7_LX4m%^@MOpjsFBj^TcNVo#u3yrVa z_%h7=jWyi-l3&HGzt86qdctr)<}1)JS$CPuR*!P4_>LZKcc5WJvmL)PAyy9A3)yTv zZ;bU)EWy{tIQw6*1mc1YB35x5Qt(bJ8j9qydlwF(brc1{7K0b-q7}ux%KRdXwnN}p zxATeuR^udnVFTP^l^-WB74r>bIMhmC5CE(O8)OFqHA`L!T4i>hJihGb?x}vSoJ^ix zgj!x4tw%F<&Jtv?`Nx^HY@Zn0O3=W?S`NFR3Bee6qkgVUQ1BwBZxyfq>6cDBi6QPD zin40%Fli>r!gUmsbtB7KhS;Tvv9m<%wT%6?d3=x2O%3JJIFyJspCTy!OkU7#uZ} zAGF^DfcO%YCFCF%AgJ45^G_#;4h9IrUV387G>y;GQD9WTH1NSKXp3HZ-7nz-bWD7% zPXrX^qG={u%X<55K!XHyT^%Ic}C$tMX< zGX0vgHCXMz8X>ebo0o6%Bp0tW;-H@xkU8P1F37H~fKB8_0|jZdHvIR3k!(-f8nui8 z#rsED5IV2*={4B(AH-@MG%4Mew$<}$_@l=2i*nNHX#>ffACwSsEyzivAWa)nh0!^lat+Dm6Nx)J1Hk` zv{q2t78ZLT6MkPG^>nf&oKDS^%{YMwtxtv?k&v@#;tF^8u)X!0eE=tXu{OeCS7$gx zBrhB+s7El^J!K2Hh{=zLvmM!CKS$)TtKt)aynzYx@ez^Jx`r-;+vyug4bD0^t;!?# z3n;btgkHlRht>?DxCN{jmzUoWG%AI&K)OOjQ`=ay5z|6r(Wu&plF%seb%%zD@9fZJ z{EBTtsE=@Z0V&i&I3cIAggOf66Lhu~&IjpaAAzPRoj-yDJ0>YulgnxuZqz9nB&fi> z2KZ$^9HL=qg9m!)5e^W{2oN+9Zl`a4WHkUAs?<*-Gipr|h~D7J6%??}pM}y5a+okk zK6~qFUG3_$uBJ|__T~VFV$b|7WxCQPa-~p^aoWR}u-3<3#__^_$ zjbAx_58}5NzrW%48h-C14=={7#gF;6HG*Nn;&(HCyYc%PKfc1T2WivsjZZ^&dxRZC zTy_(2jnn=w{LN72{{l`tj0wQK^Zy07W*J=nF2t`7%AgXx8P4xc_&>w%bo{HxY<2ec z78t3!(33Gh8>h!%s5U06|F+!P&iILbVja0Ae*S9#^;JC3p*fpK1!#@=Az17=kWXi$ zd@fbMx8YmDMIn5U-s98&V#p8$&|E(W={2PdjH}E-E}CkIl`r;BV*QPj*7CI+%sd%f z!2&qG%Y7nfpZ*LkBbdT{%=G#>*Uzmum5V?P&Uwxbj-IHvQbxBG!ff~?r9IQleH>;bcr z3j!ZvS#dquD$K(L{oL=`@+D}#6lD60)5E$;$yCBAvTQhry=%+AX=i!0NGFTXrE2j*UYP<>472+X% zPZ1Y8lFag)`IP=D*Si9LNe-T=tROFS_!hH|p)%sE!?#d03F>p}ZH?=r9AghUU41GL z+jM=dK+LK2slVB*4@G%KeJ)~sTK~5C2z#fL8A&N#CqRLKh&LXStq)Q@=h9x{NE7eN zoB-jS>W}7-RSVEekjbt`Fl4X#(xYM&m2YGFP)TsH5m0R;sD$68POaroqcp1j9+x&1 z(x6-Y;xUVO{t$sg;h=sEGUTqc`gku7e)P>hBE$)iFu?PiuHZ)&S+ccIn~VW-5Gp4f z8C{TjWbW;Dbc9#Ymv^eeq z)mU&JqlOjTF(O6hz=9>Z5rp|Ys#D{EtpLBy+)Y?*I(x6T)fBLQ)`qt<;&-w03U>yU zs~wH*R=gITaZ!)h%8yW1)}qeXQ~v{h<*qfh#cFSEv095QmbIc1iTu<&!qqpiV^`OP z@rceoy(eaOjO5_{A$iVHm%3j+ zcC)akxDATSepjj9bxQ9o@g@OlrKUuj2?GC z^bTgqOI950^Efv`VbtKSYPEHFdYg(3?paB-kw9+U^lv6Tyd$GX(MwlISz#tMa@C_V=R8=m<55JEWTA!D?aw|&^9mWyAneHs6yPWCHL^>gx zP?!|FURbI!4pG3mf4tsgb=QI)RoQ?p4ylHRI z>Px!@sPDB%RdpBR$ITM;mG%x+(lUssuaT}V)7`{$=Odl0FQZPaZ)&u@6JqtfojLoB zZo0l`e{K+|OM*`m{X?EvIJAXJMO)*NCe+q6wH{2sq2i^P4R~=uYUF5M9f9nHaqA(4g1^S{5ZiygAW;tbYWokWwsXSp0ngyS(Ad=^LowqffpXsHr1* z2}su?UQam(8W5^@w8mOaeDwWpD8j1BGJqAyE)ie`rl6AK=*o?f5VTih81{1c_(a1M znTByM820jHP=WQhe&8mcL|lrI+NllGQxA(N`k_LWG~pGNtt>H1+CYad@78N!JM6(H zaR~`_h)59v7%Z^J8^^e5GVZ7uH;llBgs^B-l`Iq3Y&i6DWni`$c$+98Q7!nE6B(GI ztmRjTxPfg@!s>j0uDTHCZ2I>3q?nS$;+d)^QaQEx0VEKbO6mG=MUXv>*@Hp=VaXTH zT7(FvZ)F;?ugZj1FW;Mq(&k8~5DCaXxPHP^yqNn{JPks&=unO~ zo7p8;@B>n#?-u{?4o5bt_SH4G&Zh2#1uJ72a_an`wHVSIs%{3rA&(O-3=EeA1!P$O zOt4IdnJP)-SKznHP#Srp)Yns2uz_QKtuirQt4xenR~&@`T`ax2!jcv5*D4d^v0g}s zS63_%wOvepek#AmbU+f}l@xqLbR+ytdm&q1Yf`@u`b}hJ#i4H@ffM9AB|o=2#i1=t z$BX$_?#DHu{U%26CV>;T<-|IFc@i`O(=2Z!c{1V1q@x9`Ji^wPO*=0PS?e zUrQI{z}1i=C>yfF&20ZlD$wS4MIKxBVH+FKsYcn~lhn#LAW%LV|NP1%@f zSDzaMrx;+dZ4p}0VX>C)6RZ4^A~?6hi5hhv5_oeBzOo_2-desK?$F!#Bi8?#c)O?^ zWk~&3jCV~w3ZQw(LWQnlLwcatVafoo4uTYGmN1}ib*Ps+G+VYqP4<(V7)G)CHd6mU#giB- z#GXo7MHYg3QAm#Ei#BQy7RFf)WmO5oJ#9b*s{F!61Q#JrZ50gz*|pmo1?oXt58R~P ziexrrmFS`FzD{inj@BLyAh2QhL_A5!168f1JXEqi_;>i^!IHI{J9yq?Q(Q`nPRs4W-CeIrYpzK7V_lUcX zygc)NC_5MUD2wawClDkE;Q<$0c&Gc#vq z&YU@O=FAzcKJ3pWhp_&`bd8ni)yg5i?jJgq|NDje<0-#i>TnZ`eva!dTP`XVpn1Kp zi$KF~0z@;g`Ez#01Y-B~$A#x>U&{BB$Bu7vDf2E(f6x(B0aF6j)Ol@SM2Uig2*l{x z;%D~5bS)g@dN#(oXH{{?;q6$@)`~(g1$$QEdUxB|a0ZjYA5=ITInVv_Fx?Un9&Ivf z6TX$qdZrUK5lLn?kyCRy(`&k*7j2v^$f-HQi!+(dHJOHv1lT?JMDB%H2cp8h6UPQI zV{B6kCFD6}%hUB}*csVTa7$NCv$JV=DYvc`RGT;%Bxz^bcz}u2n%O(FZ!HvL+du|( z_APt;V7AY)*CX-aGCECVq=kKco5-bz!RPa0qC4;yK$g^y>+`$g6G*?@jOR(-v@i& zi~iFyZ{?gP=pgC$Kj8NnKX_@{zLHg%LGswdOdm;n1Gjsn&>%Q2gP_6h?Sfu#w_ygq zA;S!M!+`!P&;%Rwj_14aY<=^xz`*koG7!A{#Sgj757`eK$E=he4vdjo-sSfRKjEmx z%E$-sO82ZorK)nG=h6_Ou955u@L_OW2&34^$AcXCQefu#QRW$KwpOur21M+G@5zCcIf5b}0U;+0FyiK`f zHdaCUBX$Q5w>NR#T3(?Ue^e}0B)G7G(PIzZsdU_DmwUpyX7RL1iG{lKow{>n*7c-f zLxTG|Y(=!ma3wf63;R0@Mf%DH}vfv3RVuep>Mx%g}F3( zIK%7aa({Sfi?==int@tjot(jchC^P^7jDUV)G$uCCHaJF$pCiATzYnYRqp`xLS(6= zpS(~%8c}a<@-VioaPz14qCRF(XXGQL_=MtUOM7*&s8A zW!Ao?eI(IEZ`OH$mB!921$jvqv55XxUA4pjc|AOYn9L21!9NPCrNy+Qws*R^i{3J1 zY6BWV=M!nhor(N|jkEy`NV5s!Xp_tuz}dZn;%J9Hpu-Alt!firsE2!{jcKPltvd?a zswd6uq4v&jHlWfP_ub_;afR&llNu}Y9iNf&ox^XW0=)q*1@4_2sg!7}3OtOusKtH% z0};j4kqkX=zF;>_WA76pg6!*zSx@&-os#r!Un%P0iEk@e=y0<;*y7FwnBBq2E6ZcO zQ|*0=VOldU)r&0&cgO2wf>RegsCM#w_I?^#Nz>W$pWQ!TQ6`F}&AYhMOVQFa?%5yx z^)_xi!1|+auNCcojJY34^zH?ZRq!h|Snnp-TQukB=a84Z0g3l+?S0YI+54|q@odl% zUt)Fwv-_jO&{D%*)BEvzOW%e5Rl9SgcGVUyFQYKG%iGrLQ+vA5t{x0TtNJWcebtoc zB>!+oq18!d0;ST zzd8x)G=`D-%}u!O+Z~Zdj(`ZvQpMA9rFRiMeVOvhUz^Tvp=0wq+z@R#Q>unpG44X# z8fDsaGCD>MS*91xzJAN#`_Vo=zS4hDx^ThQ-Cg-#O#$T9I+EtsR(V znJ25ICrYKP^LGPl1>DMhV6XYj-BW%S{bYWA`(PmnribB!JsA5oIJgNML1Q_ZMwXzj z3b&3qdHMX9hPJL0Cmyb>WLhDoH(cx2ILh64Ch|q>aw|%i1&_7YsBYBs&G}$%B-)cc z&5wWN)4jz@@Wg-bUenw7EB2C}n>lmV#~FXg(~8~i=z5SY&fse*W%dfWQy1&9?e2v| z(2qQ<{|jIi#TM9vEGESFxo)!91HH$-$=DYy)e?^#qAdOsRJ?I#wW+Qo6$=)9H!GLdKUXgHo|Ra&DTFz|o|d<> zyRk0;m#w+;m61;_I3LC#E#qQ}&UjHeSv=|wXQbCj&=nLqQ`giK zWJoh#r)&B=3F_Mm;P02o`;(2%uBjj9*Yt>KB#~!ilWHQVz(e01l*?yH;c}+U}o=733BIi_Q!MhQEX8IeVE}-u|+dm#jkA@ zKc`iEQ>*y7t>QPfiXUaFA=TkL6!NqP^rl zDl2OD{)^90e0KddW}&(#c*UpT;a7$!;Lc#U`}Cct+8T+5PN(TT)>fieF&1{nA~C!k z%7yeN#ORD!TReBRH*AZFA-vs~N$s1tsrX!a^W^d2?(ht>HxK99voM=fHkl)?+kzNh z*e&*o_+tpvVxZassY+?K&++jr?GKz!*BpIDtL2!HC3@wXlBLaMhR8D2bAj^Ew%p29f0p`LP`wJ`jkd!iYQG0efeEG_$!cMR`&(}l>KsAKY;yNPX=ma*|kz= zhkD^#eJpQQA<;8SA%S2p3OPmttOUEVwa%jZHnA5b4cI z(7hZs7l>g(+~R)xn?h85ny9x4Uf)c6ff~e%I5H4s_DhG>pIO$2_sNRtO^*45gKqF7k`~ z+fH2-lHJhoO77F+N*1r7Zzq2m+L<{J{WA&>`h%SEl709jt7LEUG_Tjgv_MaICNDP( z%*ZKxR;kbEBqiy=`=eLxr47Z1b`gvUd}7|nRR=7!2-||WlT~iin5Zy z5y;G-IpR!#HqbU5(~X0XF!5k^P!P15Lfz0k}Id?meLMgBhh^{d|?>}vlb>^2-K3iYHIO6W@zDrr#&$ckF^m!a6~^`r^a z^ni$B7RAOtoD?qsDTQd}>Hjdaa#8>j?EyLGQK*A9LTUg|*Zy!rp{Oi$YM`aDZ1Aq| zCaScpzh5Q!R<7R&9)a5aLb^`|X{!h`n54dHHQ(6vEa;3>gN7kR5twb%S5}!uJwx`- za0A1p)vf_b$-YDFYT88SknDy>b`E!$9LyE1XQeTnElgiEnCh-J)A+}wWA9b0ZTwGF zkBcyOqVV(;tv`Va*0}9-28;d?InzI)aQ#`c-qga@^3XC3r7_9bm4$oMKg7NGXZIX$ z+V8(oa#%oj5vOzEVan87^5^g;7>_9riZJxR`a*&h21#3lhBQ2_;Y(Bx*l0mUw;VM! zGV%bfti1Sk@sa{x`CKIc8$a8|uM6#GbVwpSOn;WM2h!PFWVVtY{QPfR{<6mQ z%88e7T+=GJz5LVV_Ypj21gb7J70M*38f&WNFHrYZzurpUCD?9!>*UwwB+qRhUq8@* z%F2nZ0#eHzoof=k%ZV9>X-oqlGCXc_ej^yKu3{!M{8#5RG54LRZ|%$PE1lowq;w>~ z*ot7}qn*LTb2IrG=X||xob%i6M-7!)?%#aA!>=K`zs5N?ja$HfH_aU9T=fMnNAkOM zBOlwwIpaUsFwVL4!*R|BAB}T1yi35R*#WCiyUtUgk;a|jg+O4lF@Eh=ysRBp?o53J zH5~gyM>ho%``;T(bb6g0>=GHAUmkgva|6r!1zXmJw`jV$9$(CllaG`*|2_`Y#<}}5 zi0(WK^$R3)Q+fPB(;D%+YzwRlofC}TYiqxvIMpLZz6nNFkny_Ev60)ikz^fqt21*K&#Bg$j@RKz?>k-;#i^TEL$F1m##t`C4&p!R&>G!;Wf zoS-HK_6G$1R)3X3`<=~Qlnv==HU}R|&&yN+*fBHjITi64sz)VNgG(*5^=Ryw>TLKe zZP~B9Wo_uF$g~~cKlrrpmr`tU&T6FV+b+qliGYi?1Y=$8a;X)4Ngw!qmg~QX{dY+o zGLsGS?nXX&$Li$+w-fJ{%lO<%=;!7)CVA>*yL6?pHy<$m=Q3AohVaKz`kS?aj5{OW zwV!yL>dq`$aID&DyIuPJ7uxlfzHg}QUe4!iUBj4_m9gdJ_+m*6dv#OKyt+aWLu>_V zDTsJCe6r>HeigB@1$gBM#%E~~Fg+TK)CnKOw5Fs<`-u=3-=#NL$hE&jykw8LD} z5o~MBR_lssDWh#)GbVW$q)=E7KVR~-oes*OGRu&MQmLl##(xv3n?*j z<$cW@iA|4hB~8;e`Uch~mcB18#jGiYwh$8ET=NbjzN$R34H91wT>g1+=vqpHiw`6~=!2eI+GE^3M zsGRUzIOW{ZSmi2|nDgOu3*1qQ%(Bf5n&)b$6E?(-#iL|ysB*4K;hd+4wQ}$$PDFbd zoS9o-VsD2SBU4tvW@Eg8%|T!zeqsiyK}d&L19j8Y-bYa%=GN_f{kc^D^=2g3juFO( zb;sK0dJFY>E|jTP?fHV*xj#^)K-rSDV58(mfrk$+uw-V64iFQl8>ciEe^2=>pb|`! zy@j8mH*4MrI=UdIa-I|Y%BzwNcj+kN`|jYEwYcHRdQ!~stA1w(GeUdYz1GB(H-Xei z!pb9=Q1U;^^#4G0_2-q1)cb;%zQ*u2Sk^J7= zmP$xd^Y@FejSGN3ulgEv?Ky8L)%X5 zP|KvA_r|6%D>;FJPSW!qodw?~2fnL;55BP}IC#bmq^pT2hi2=A6iOc)ynJGt*jgGX zhaVb!hdbeRx&4#-#?TFJ8D#6T@an=ma#QS|`fs?#jsGO$BHM!}}@S8uG+ant05sL+|-+ z?*wPW%Ut|pi?+0C|KE{yrhT=3ZsjcN*Z%S9%ZEuF8M+8b$9TB7UB!=VmQup{Rf|XF zXlci~&6y#!50o3!aK5^rI>-^-O?W3D=@UzsZfg4Qv9nT^0Kxv6Z>8X6mdxNU;wznmW)%5=`Ce5LFnN zm)K4*3|BtM1q0YfbJ zb)!Dl6?J0gf_9cPYDQmX-_ooPTk{9(L)h$GHzw(j$sWdEy1w!sfHbD1MzF({a2aR} zNTV@BXq;)#I8@F0Q775avHDVlR$nPc4>G-eqydz&kMNtT{B%=Fd2FZTqAq1zo!F61 z`s84B5`OX$;RVtq=bs>rGm1dwOTq{rUF*JlywQWZ`y;Wdr4vkeWMEEo1eRO{BBf55 ztJU1ED&v#;7MiwXf8{DncrOOfsgVaEDsnBQ+3Ctu8UQ#qEvm=W z7HhxfdNcK7kjCtc6*6SAi$$sX4mqPg+SwRwQm*tNjToiWvx1YhYRI&Z2hK#ldJqA@1iLZ8&T%?&GQ$a!u`o z*A+PUGQ|H_WAb+lHJ;Svp@XvP64|jUTvQ)76$eHExZOSK!)Q8U5lrV3or zBDPRW0k>%koI)1lG>u1veJo>wVTN|=524!qC@V|<@C`Z!oTWiRuOP-}k3Tzp6}i5S zLQ#@F1q3hNpFcEF+cC392`ZOsZx2`(Fbu%0_+1+_PzGQVXzgL%H{(+55B$D7(68wl z0zC5T!)vM+v9IOC##RJs`x4~__mwW*Xjaqq1oEFl!QV@pUbqp%KFtqr04+sB0zElh zTin&qm=paE;j|TlivvaY8EbJ@S6NGgzn|LC%q(yE5Q&1SU_7*vlj+TJ23Ih%;dEBm=;-$KrQNMq^Be&me*znlyvuPk=|yF`{_+uiSt zDVdi;qSHz=d&L#8(8^-GgqtQ!T|vvd)XQ(TWn@?1$0N2sIx0M1?*x3X z^ah@s$8=9LsMsu2be?tqT|-oD{>`E?764}(E*S=cq!7ZG9>On>4t8v*bLO50-FAxU;KlaDLQMA6)ye&ehqz_SfLh1b+%VsFol6+Z~n4p!{t z*vHD;AJeToGau>3u1oLJo^4}&2Oxx8&DECQoSc&l9ygSOn)kq*i2BJUf04U8r@iC} zdC?LfwRsuCK!*R@G$M>Xt?nd?e;?piK%*i}_oGOkT4fmgZu6PwA5IOSU%g(3+{2sL zWgotnB4DZ~vC}AH7~>9cMY=f`%&}wh)N*?-2NS3Jx1C6tD^mfmI5&+&BUqT;3DjPy ziZt#6B06hwLK-9o(I9+x8;JU zj6m&g1@d(}Ky?+gk7ariHANj5bh)=7LzV4AQp@> zv?am}ac_CUV@g$uw|lU!T?;R{onD1O2p(1gyt<)A&}2fJO!G79=eFEruDf)fxWVug znkxzYo5xR6YUeV?o@rtQq#V10O_#YneHwvJK8HT@$ zuMe4KeV4;@qbaKH)u7Rx!ou}XE0{we?}q>ZoEqv z52Qt@$NA}u)+r-9kTxr$b!|i+TE4;6%y_Wpy)*N}j8koYKf5{I-#72p-`%#D{=U`p zbo4HAHZw%c0^au23(wz~(+i;qSrfoG8UkjZmU!nkT<|)FJgCF$Zhm9@lK_tj{>y9X zdSY+RjkQ#;L$MW>=CJ zI;YQVc`T*q@{>JzjoBziWc&SH8Ii4oT;R4wWV=Vct`kMSNSF4sO0$H~Pt72a?ckhP zO?X~7}UjY@4u@BSW460H>m|AUmTblYsu;s#Y(=g)IF<~G?vJ|zbl8V z)AGd|PIe(&6{H-*VCr)sJVKjFtlPh(W0rjJ=NGJeaXXFJO1_ww&O%+7?xZcdI{uV= zF&g>etu#ye;Q4I%Ld^-w%E%X^W@h9I+my|21rFss`C@BlzlLJ-9@*-)8TZ#hMDoR} zX^0YG&bji%g-r9FeBn{NyWbAOQpBxi{yHOH z3{7M7oRGHEFPj4Q`5!=9@<;ffFZ z@vw*aa|Lqb-sjH?a>qb={(QwOIt}MM7o7b0b2N^!>}p!mqDSJ(se_q6Ps@$9B)&$m znm>0V@tMEKA#pQ*ZtIj?K%n+5r51U=lM~^Q_jEy5 zq2kYu)>1(S#d`DSg6TPY*UXi3UxBD{X@ zPOST@@6!GL3=NXg?>{ns-n$`Z{1B*|S`?2LDfsnn&s9@`Q19Ri2nFj$fX*->feaFKK_8_RgI7&Jb`?k2?*^0p2CR>-%5&y)`g5mSCp93)Ey!?=Zb( zm+$T&c+k>-{U0^4+RPj?@kG%Vg*nA&mCYhk8C_*FO4Xurl^P&}_Ks>huZ$>>ORffpe8|bx-@wkYxM!^bjpMpRi}%}o=j4G(g0)A06DAK|KQHey&#>f zQ*$`EMy537IZ;mKGUlrbD=+o1)nRFN?M-;^C&`Y0MAV_*;FT)fbLQ?n3U~ zi#%ujn`!&|Zt~*#GjzjFw934{DvPU0+S1vDGDnNf%EY(=w3hGhBbD)I^|!T!0A4>F zy}s0VUxE$VbZH^-(OoxU(^Y_|A;rM-4zk4iz#RXrh8TwWmxFkDLW`< z(YgDKTfU;uS+pK=jvd(LId>jmvaje`82&fAbB5(`-d}aNR59^MJ+Vmn7Kb&EY~4M= z>mk3Aw;BL@Ix@~p+ku`&NnmO@kL{>TeigCt#TAJo&e)e$iR>zH?$q{=IfJnYLoxQj zqEZL)wvQ8S!yDElBf+$xu+&-PVs)~k^60OeJ6&2c5I?~AhoTDo!95N<$r)>A4D{*O$62)*VCr${tP~&+{=iRU5Dx{T|;I5 z*El)xoTtc%dpX@>)Jxys6(_3?qQbN`Mw^)FU_)+fK-kvap%y!9o2JiJ`y%w|pL0{N zHYG(u`MpAHG&k0krfuicGsKR|jkTrSr`S1$ymQy*!5Dh`Z_KXTm}Ey}h&|~)y!l`d z_X$Z0i4}60CQ&^byr-rFsG}uxo6NuwB5u~San@0m`A@JnPdZU;zcZe_382v^SGj!B zeVq+iDObb9qws6cehStYYbz3E3pC6Fmvc}Ab1-^hDj=An%oDHDo{ns2k}96MU*Fd6 z2T{5=7M4)=r=njO|oqhN&_to5q?a zJR&wai+^JYdt6NJeZhZt_Ft8 zYXTY9`R z4auoI=&r>iv%|)8mtB0Wq`TY!Tg}WzmrF{PBlyH237}cO*B_*Enp6&*qJV=Hu*?Rq zXY_vkAqseg01(u7Z+$;(zPG!lZqW4Yw%Yjvo8xn_q45}WI$i2Mw#CQBY+7p{F;TQD zF9-P=>WkM{r?CR+e{EZs7hnbcfA?hsoisiI6v7g8Rkv?O9 z;){tN@D9!j6Gb( zx68R`6-==E$@xWgXKJ=Vn!!tk3%1#N-Y>@HuSu3#q^-5}Vnf?*PpZ{sF4q}7a~7;- zg{}0PKjc)}Qtz*Y^4S*U)t8DDG1Z zy}z4brYfZ}7FvzxGm3J*o2QLW_QSSn%flj386!r~{oIZhvgg4N(X8_E1k|qULYK&Y zO5{^SwO#w@0N8iVqKQl{YmmR1+3ZD-+&bYHXVLA*WQ`Kp*uEZm5+ZM5+2Bp#7dekn zSRU&UjGb&ZgF6Kp+m8YV-vo<28_&ChwHH^3j#1J#=A8tb6b~ll?*2d#`npuc)|AIy z+e76Cyt92pUKi}aI%4zCCC{muM`p~`vf|k2u6fd~cH#=8v*;vRLvxdVA+W@oD`5pw zFAF9{(Hh^in{XbVGPBVM8=Y|2CsY!QZFLr1*h;LPaI~}NW?Dlnv@4i61z)Ud3QKX} z_Y%!TV>qwW$gX5!(sO~ zJkz6P!Jg20JxB34_$-S+`AjG@E(9q)7+-AS-&TBVi`hG~{M;B$Y;l&)mT>Lezl;q} zn*Q+QBx5Z6-~4%R{%vghBaiGc9&KmlLV!#03NG&XHI-rHE&UcoqVqBJK?2+*J&dRk zx&vm6%m1|?q?R)jF~c~C=d|2Lg8B>97I)SU-C=RKJ|^vz>lnYW2yEZ1Sue%RBUrsc zm>HuQal~gHk{&gDD{Ub#_bVmg5C%xV5bL#hoH`G7+)r4^1bpcd{;Lo0pJ&c;g9}eT z1+lW-?jXk3`USwcBY-lTx4C|_zMH9*nD|E9>aFB)Pg182t@Jh6f0+ZznECJUo9QOy zcVTx=A~Ql=Y-PP#(A%`#?|YgA-*SZL&$_pqN9OW$XdgX^kHyGgm|fb?A7p53N0ioWQNYE~yI6Are5l!LfSZ}-)dOirArTv>8hT@e^BnD|&B zkPRMWcen3ixN9t814ywAi~tbc%Ib)U#M9rHROxFXGDEF{GsS=^7WTN&_sfSWm^Ue&RyriUZ zpCYev88HETt}M=ss79({FV$`3@rC{Lp6I@*nZr$HbM<%N3I-OYA$&!u2M8`FT6CvL z*hT-m*P(q8GxvNHW$I;Y4pX z-wUs`#eDuhijfVI`><_y3&-k3i|eG6Qfd8=Vg1_gYYFv2;bNuGE3#o~JcYGa z*tgwGekER52ZeoN!_+W>+gD+)+ptN5xuaKi%UfE-o8cng)O7;DY;xWWm1OI?WGX53 zzS=Q9a}>C6WH#7N?ZEU$+MqezmHP0onGrJH--z{-F zCn5({<&D!-u39~^xJuhep&nis@7|H4q}3nUDd>PzYW&D}CSVR>%~9nGOwfJ(nYH{F zY&EezpE;MjkrEh9Dg|vc$_;6fZMse-oy|6n_sYayRrkvHGlDjzOrJ?R`?=e`xjSpb z8#f>jY%s0*Y0K!fjNvJ9zB!juR6f|;B;iD6fi*`K4*#zio%W2$;q*n_iDVh5yPW@% zj{swwEj!Vjh;zpMvJ=%6St%~}0>X)I=7VhB{iby`ZA~`XcTQajz~bEi6cwnufdAdQ zQ9PuEmB$Qf7HzliS4PP?n6%S&OM8MzJ5Fgwk(L&)N8z&d+V&J!>Qi5Su={!D)TGRv zI75pt+wC@cNlHQ)#`ovGK~%}jZXA17Bh82pXxlgtKZUsM?nhh#LD;M@x$u_)FVJ8X z=pqmFq+HPc9;oz%ey(?WpzU)(+j*ehh`>AquJk~)ACQIc+ZR~`#58@-Q$0}ak!FED z>w!L$1=`UAot_ICHK3uepX26<<|>-2vvRxAf}H1rEVm#fSs3Y|n4m%!Nu48Rkw}Z1fx3_~2A7&0bpf`+Ygy}E!3n=k_UyFr$ zr+!}|v@XDZfx0k2?wZvSER*vH0Y;M8?=TYqOU!P4m!F4D=ubA!?3PWb$;RxvPa_+~ zfZK>31UGya@Q!RMUgr6Wc6)r&ooX2upj1-q4nGH~m~jye&T9$MA7aRS9<};x4&=89 zaaYiI#yD4&=+^ige=h#|tNIHJ63I};GSf0YEK$qc z!71=&_rsLb8@iD-R9-Q7OQ@8?N?pj1$-;V=<%Xa_^X+Zy1l#GeB5`I(FmcPEiowgd zaDMPNxLt|eW8mUlu#aGzaG#Vd;e)SDgNM)7LTZFYPvv&&bm%PML|QgMx&~u+so2zk z!5F92OjfDR-mN6TMzyFF!t-2*)DWJBWavtW-$O7onoFt8d*Tj*U2yQXWKIcvGuZhB z9qyHk&Zpj#+)cN@#hz38)ILTCwExqUXATO+&mN>zHglCzz!1UGW2u1IGtA@0F7MC}{OK&SJ`{i!N(SJAJE@;E6j_P>sj$I~Qx6Kp zZz&-Lzjc$C@aeP;c;lTz($r!EG1I%lIf=>kdDak2@1JMMBWCRRx{us*Sx(J;WazOf z=Wg+A%dVz1MkJZ2Gs@$$XHsz?*^SToD*m(EMDDYF8Nf>sPtA-q7ibR{{ioo2wSu1p zyyiC9R#n6oi_hrDH@6ZEXg0Rk8YM|hT?ifQ45FdiK2}o0))8ACzX*f>^`T?spWn;&d>E=}`?99M64g_?V!|Ta zBU!^IX`jnyTLN9KLPH_lrP4NhV`cmavB`=dkI8RxcucJFmGZRt?I{#VyU#$Af4-Aet25=;7nY=*c_+of;i4OL6OyVQsc; z?K$5Cz$T9-)&Pe4(hgs{wjE9+s@`-_S7arfb&aLlh<$6{_NAAbp2pIDV zuArdJGuZ#mVCdiBs`(6%1%TM0nf#Daa`yubwtKP%8O1)O+|azLEZO2q--EP7NXuWt zE~rd*0-51iRm-Wd_|$%yzgK-;#7t;rg>w`pX5Zi{3=R5BpTl9ff4|{sWOGaf8#IOk zmnWu{lqYT-Bp!E-c-hSv9+$d|KEb;d)#9I#MbhOLoAO7D6~~t>10F4yHf#<#D7@Y0 zw{nBM(jX!2w*C75%c^rQaB8$?pNeWdW#%X8+l)UY|62^bgmAC2dhJU`E27B4Q(UFm@kJ$;E_)hTBD=)!tkm3$KF{dm(wBmsULM=kJQC~&3ggL$pJ0Eq-sjo( zLvqV7!oMx(S*CwarVd1T(D0+*@+W+Q&aR$}h?NNa534h4e z=UU+hn>|IKx_EFiYM5Kqa8I}CZ1lRv5?W0t9aVpaBD&2%&45D{d+DY|_Bz}P8d`ym zDj)qBOif^h9yDB*^%KCJ{Sks+|7`sD7BudOq15W)vrd6I)CTE}Qb#XgR#h`peaQblr`#EX%d+8P|Q#19%yQ2JxN;jfp$Qh@3H%Fz3kk9>L` z1VFvCBOJX@`KPSUqW4LJdkdE=dcWk8JL9xnZwbN3U}#(D_SG2QsGwPb>WrAIzgH-1&0haloEXkmV7jP_NW{wl9- zDNju6qWHFoFWIH}$HuFZ4;3*CA6FV16htVEGg-Y-D%H4+3n}oPrG$24yJJKbt02vc$07; z@_WwAY}8p65ygqm+0~4DB#!?jys_@!WJN!|7~KO@Fmj_<@#@V4nN`Uyw}YZRiMdEQ zL{=dPWuITm_|vw&Y4*d1!bZ_t+qf7SCLdEPn6zn+_uY;kQZ$~3;&Fe{z8;sGg&KuS z+LxoXH}8pwCA1(@_Ex-b5B^R!FQgYuMV84B`v0{YqSVYZi-QF-ueURkIx?;DOunC# z@lxydg{&{m<`1OJ{f+bTZyJ2vs!R`I#tu|-{Iru6t`yyt%7Pk_G3j?ev$En1rs zA6q01dK%vHGjs2R+1`mS8>{9{41Df=_}RN6<<&by>eH|Fn2%v?5){PR;y}ULXs9}l zPUN|R<5J8|H+ewyeGwIuF4d6?6sSLsYot{hy2K#OU#Xu-Y&<9`sqc8s_ZPxcOCD+b z@u#pU``h;qww29dJh}~j8nc4L!2iC-9dgNs&UAA0)fykI;5%6Ol@=by#Jlx(5uZ$ zs|exi`8VOD0nOVPQ^FI0HnRj5>Ye224D_+?V+2=d3-fcMl&X(Ju9$bc)^S z+2-FZlm9HH5kD>YZ$wR*$^V?x9`e6{>CQ{Bd;ZH?3OTI^-opfyC>nSj52ti32N?-0 zRv?!@X4)$a-`&D@F%UldE+LnOFR5y|Wnw?I5?LjQDsdLR29fSm_hetA*hCywukHGf znVu`X@Betu4c_w^@A;(n{EPQ|#C!h1d*1Io=XlS!_nhuMXL!#$z2_9~Imvt8;yrKj zp4WNL|MQ+#c+X3`=V{Z-&B6n`OV_@06#z7-kuNt3>c;TE5B!c2JFJ0 z0i*nu{!F+vKNId%;NIf*KEF@-eZ{YtpD+JI?~~H>e&MDxz3U`p4!w^gPISKZ8v8uU z`+ldvem8sH0q^-s@A)h5Io5k#>pdrVpD<2@hpo(sKao%dYkJy&_pe|XO~z2_M# zEgo-q-|ua!h5Rn(H;&&;{BGqpmEUxJv-tVx_V#?>XTT`!!~FjG zGhmcF|E&*ceD4ajY8`RbvPCHl~=%1f>i}>DxB~xc`fkrig|f)?3+G$V7`#6SxAR-)sK#n?PxYisbj;IUxf1ZG zpjl6P6X}cDeO2va%UPZwif# z+<|X(4&QCTeer=4`s)OO^(InlC^Nq?zF$0yVGxH?Z@7e}V^EZEW)5A^*SIZP8!sHt zP+IeC2p_5!VH9z11C?n$V{BpQ-sa``p?g#949YCOviGA{VT)gzl~HDsvNRqTYs_u2 zRz{-~=5S}AxuGz8K%D(LYhZCOFWUTY?q8njQqsJpAhhp*hCpOfp|pPk8VD&27gi6K zsaohOzPf}8YSx7}^Hv<{RQ*vE$aVM!gKfPD+1Gfb1R}H|vP@cuJm+`Hqr~~$^1|iL zLY93ZptOFlb^qYjxbj7sw+gfCiuef?@mmYgYGHo$hO(xRe z{e6fuPIQKOcYn~kJStazpO0we)Ldy;PSHn)93-2WJBXm@0F?6GqpPH zOu#4w{FnFIPB!2(1$?9c49*2{>tO`Eu7Hjm2$1=x_%SVvW3RY+q9~R^5J{ zvAJ1Mar8fM7~b}}_5XV1l~*F)^>StmCSqJ5@u+RUk0y9>l$=fC;+GT$$o2Y)^=tBq?OA})2=fM)SKm>b8vDr+m^vj}{O{ zj_oLoz0uMXh`p_h$zSzJzJ}QZ`}VaPn8PUA8hgF~!gT?V4%Er@xZ56U&(vjr-2<5Q zzivQo0;D4L&p_Q3K$)uv#tYyig6neu&Q&%Ikb8OTKk&VBz$#*|)jzJ_|Dey;HqNSx zHDQjin*7L=7vY)L%&|wL7mGfb?q2N$eI8#Kd#%N^4wb0n_G9p-ujbqR&&bL_!RqhD z51gpBF3yS<$fzmw=^62glXuo^4ZT;vbW|Rn(?Dct{JgP-dv0H2rlSFPk8fU47(Tj; z`Di_~B?*7>k>=ITNh?x4bLNZYRUS_0=i1^<{ryx@Q{AoSXv8xH%KBb$p3mA;ZQ0t!eeG@P8BL z^81$GzR<`){1kqi_Z;Ru6?P8qSMVF373SytW6$cnz~4*wWBgv^w}M|2Kjrhj_xytA zcY0^c`1AGoqbgzz+^7=UT9G(7c4lPq#x69hp8MzReur@&_RZOeQ#Lk^*k404VA#x7 zwHEG+%j1tU@LC$bWvtom@+6hM1KtTp^fPnkd3_WT5_6M;Ehfd+Z;#6l!4Or52;ImT8CQ2kP~I`5T`T`Raro z_&yF)e_919fe!DNY1%#&(9-zCL6B&ExQHMqhm*2>2rlDFq?%?p--_UG)?v$b$X|LK zlo!nZ=UMTJH@e9Btw(w6pDYb3x$+@x;2CK7cx3#7jqs(;6_~qLKw`1CN@MF0KiufK zkjy_sGUjiu@=;IZBh1N1Hz3Da!N?O?=UI_;)q$Y_6*^e@FAR#12Q^qZuv*GO1z#wY zF&Bp5%83O-^dhd~s2sd4{Eqc+5t*_fFEoO>yxaXCjC(X)r#M@-auD)Jzw+u`#Z2*` zBQYpC&W!KUnjxVNmFXGr{Rh}$cC|FYTwg&z-rcuJ)_rvx`T8bwK?T!WW&F+tiYbei zj16Rqsr_)GVC2+3W$|u$ul~+-KTbOIuKo{5UhRrxSrF=2#t~Oof&^9qGUDnMzPg0k zaic}}6Du$hP#o$|me{|m2&KtuP@!c6l!Q8X>>#|r#CHR-bM?0dfrlj+hvyp3 zklvq4?=Q3Q(~lFA<*`=-u{X;(F&X>bvm5kIRe$DA{^Jj7`kMpWS649>LR~rVY9ieU zkD8c^I9DF1qfzpXsN%m^*#>rV8>|H!UCI$doTnS(K5h-^eTs37uBl?&t7cVXCzNGm z9a|o#8v;9Z>#zz;9R{QV9hQQ3ynk@zI6Y0zuvL606- zI$=~esJwdTF#tQ!j$j^$kK9~Z1LKr~)H)|_0U>CEKOcR;hIfJ5TL z2Q*i=nC>}PZ=#M8=l(Ui@hWeAL8yJ~wa90M;rr){Fou|QOl-bZG0oxX`Ng4*+)&z~ z(TU;^rX_yIAVNA}V^Amta0Nm0OF~7F#dalAbB=~S-FIMQQ*o%fB}(V+L4-y=EOcs4 zUTsSg#+Xjc=L|*B!dSIy*#;+?BH)aw zPKUQKhIJZO?%Y58;Mu{FUCku`(3!Ws(yG6`&eWnKc>*xG_AGY&Tm8i#+Lt-XoRCk< z11uQ3-`Ij1A5B~R^Fhpt7- z(WQw^!r1){dxl#y7ZUP_I;@Hvq>^WxmUB2`KaUi_!oSGE-U9e8;) z_%~_Xf(M|3CA25!5a1`tUBpw)pI%Fs!v!~qMMG7c#FbqF8pG(vK9!cN^wa2iy;sBo zg&c{+>cd#(d^KQwrTpQHY(tHl=wl>x6F9*Qa`aOHvZ|$@Fz>)-cpDJ}&eCFsF*k<@ zLSMxpv_j7$vk47Qx%sRuQqkV$$mjvKMb)ra~aVCs$7M_zIT>fDfXW`T~!R4P720Ogw zEWEI7u)}x3L=aycuiyF$F7^v<|93F|+hF9|wiAwZ7EbQb4$v;8&cf0j`;;%=R9N0& z2U?pR?JGL02qtd(0doy!x|!V*?V8r@xsQi2*o^@D>|Ox&0l;m!PdsU}rGsE%iP~&w z3DtA2c^{jU#1gfh4Y+^+`40G^2N5WTHsG`uYHs(Ke+Hn*slgE1chAI*L&T)!*uEWs^YSX=u@34+v>i%AN3O%X-SPiY-9>-AW@@!h2}IY zwbLGqnODwv)G9wPdD6b6U`vD zVz9|IJk{DJ3j?R-a)W?5ZQ`X-rYF47UiFWb5K9BDXtdODBDvI?5zq3G2E0+7-R)j= z_Ls^1E$jmxER%`{YbUEpHTFkHr{p(bFECdrzZLfYxZDDk?*(wQGP~cx9I+ReGQr#o zjQhsR_PmIZ7y1|(AhK+xR3jmW8M`3w@Y%Y9yu<6EzGGI#&AS0&%@Y2q`a?l7ldHm-VfW3SZNZ!WYPs^765+`N^RUUt66idL2 z#oY}gum3$+xh)$Zj>d?>^=Aq<;-^FvF=cCCV&oO;-vJXiBc!}Lo;Y{7IZuJJ9ebm) zdTuk}*k{S+7md0T)nXfi>mA^Tn9J=q@w?1B_x0%*%oiqlj!|DE!tX+PEwAG#Hgd&vNTjm98{(te3o?ILFplD4QaI~HbR%D0St3@)q>c!REKB`}QvFfL=WeSU5 zqtmW&lPXrNR1A;sL~f`y%@Deg20n{SK*i29CjjEjG%J+BA7;}TBZ2C>7pVDy3IUZ? z!Dn131YRaG&s4AGP;mgyqCZkQmln#?P1&_(yG7R^*j624js=8z+6#p8!p@eKlF3A> ziMO-_CwqGWTzoh29*NP3B5|3tdM{#+yxKF+ELieNq|Et0l?~gQQl--Y3W{=L7T1?o zd9;vjXuY#UFP^F)JtH`^SaJt+-ay{X6Rfd9e9xAZP zoLi}J?STD+4gNhf@~7mKd>NRZI*QOGK3W80WIT7<)Lmfj6MItE7stcz(o0iqG4-Y! zKL__f-G5brCl+0?7c5eOIh9P8lb%yxzfH{ZFwvFjQtklf1?H^;~y02??WnZTQ->SuWj z{q*xFl=R0beFvpqMtWoN7MV*_c5;Nt4F50@rjb~1(N1#!&I@hhZKioc#+_~QW<|yI z?++?7ZO5$-#ur(6W#J$i>%Y#_5eIXlZ^Ni@&O7a1Sl!*bPx#igQLD+)5|X7gsN*FU;H`9ckU4z$#F8f-1HUM=Yi>&G{~a zy5Gi)GyEaqHTv%BZ_{2TQ71@}%1~U3?(7oyakSF&$E==D!pwgZYnYE;M=71EPJJVs-Bt7;Pv;z6OK8O2*H_=N($QsBw; zt-uA5jaqB^kB=PGVMQ1lgxQ9xM(RrFEn2;C#=#zCLCZ(AzM`y$f10Xjm{wq+ea0kz zi6S~(x2UPA<}=fj9JZQKl})G_d%(sS`{zcqqJOXbg7L!b%Qe$*!FKhBEpm8Ty-q%P zf-&n~k-=m7I|CnEdqf@z{6O7{G|Vu;hWkJ`$1L+F;7>(3*Mg}ViHT%V_WlT;*nOVx zzvame5Vo4<AtX@OkydpJW@hA{#u;6Hw0=4Imn^ch z2h_Av;M5GJDpu+2)QD53&unT!GX(2I-qF{vHF z&gED(E&m6CzDM4Gp%wQ+WL%`Q&e}NV%whT9RTKV|D)3%!In-lroTQk)56#^eF>7AX zusxdk?QSi03YDqt2ZWi6ow6-7zy*sRqfb^1}Unz_2diJ_qbD z$+7dIq`0~yz=1kV)$YS&J>VVhNFDZP*HXF!l`iG+g}Qr?gi`5-=6dC*F_hVrJl*He z=Fo}DQ%hR$=T`h?EUDmkCk@8u-SH!gr-AvThrcLBe?P%rti7MPQE!*~&bizhj%x}o zaf(dC&P#Q?zRuRsY=oVvI$AkwJI&$NM`)XNrosJ_G}e|ceICJE4_N~~_o?$yF25|y zjCgz(FXo(cqr0Wd+%gh_PZleW{3B0Vc&{X76Hn=4Mk0PSJw<=P~TNzrbZFh=jrB_c|xuo&;`R`$d zia2;Yy9AohE(C^Fv6*BOsoNxU#i1!>2&Gt=RU1`xr-DYH?p4vlEJ~4_1g!UG_IoZo z-&^N;o~(2~%J)n2(X`epTUF>U2~*u)X6hd`0UY#s!Sr_gftk!^!Rj?K3N*TYCHrBH zfieeKpQFXn_B^3>=8zBAKE5ccP5uL}9{W6mlHK>Jg|Gpw6)NVf_55h*2l2FoI>Ni< z@x*qvK_4|IhoC;b+hB5gx&rGXCg8esz;YXKvDv@`c@jNi6P0loUwO+wtoO6s^Xj}- zq2r|m>S-(4M-_g>HVghJw!00yrz;#jp1Rg8%&IF4)vxPms_WJ&)fMX><(}D9+JimK zh38i-J4I8by%N^e)vT-1{k1J_Y8Ob??&CX6K!0c93rgx&(*36eG(F^GBb@1>w%J%8 z0d`&wv89DSV}o_;9?Ds7rTfP$T%714(s?+`03?lbiACj>G|neloUbxfQ;YVt0q62= zmyw6eG_@+BgOs^CXv*K^07aK&sc#;#bZh#izwKbtH+^}}?VCeh%IcfpQ&K1RTd! z!X{=^H$99N+FBUQucr-iF~9o7EX?1?V6M5}{o~YJ%+YOJZVszOiOtd%`Tn^u;xIGQ zfChi-{TaaE2kxWzD)u<#niAtT_jFW0sPqC0^V91`dVozMcQpXbB?m{tM>Lld7l!*( zPdctGd|_HB(6YL0@FxN1p*3MPzOc7EjZ0!H^>zktv=>5$+5K`4qb641IKganT6~cq z)}G-kI%PafT3^8I?cN0(O!hc7J1d5SnAQ@b&^*m2Ge{~`5(;i##N z{(NoyRb~3nw|eEdQH|ujg+@VrxMVGTpmZ zPE+qX(Fd~wE4;uv38c0g^FkLg4WzpI>v1F~Zcg2Zs}tlXB(9-jDYq2mn5p|L%4f=X z+bND8Dcsd7S-eVEMkIW{VD2O z_grkJOxtGEV_Ej8=Kce3iv9IhOtHqXp6aVToX8zRC1Ywq6`E@1-Fd2TJfgF==6jC5 zBa>vuiu}ecxQmJrDrP>Xng6qTwuCvayF%+2UlmvkBQhyP<^-FZ;x}VX$aQfaxtGmn zC&`vr5u4W!U_3j7&rBUl8g{uowVe~4#9F_4Pyxj0L~oFuA)W^Ak-<;bf`eP=7CL9? z;S}h%xEt3@zr>-A-7AhrXVx!B23w7-@rg(L z&>eW2#o=IL<&7I2exFp-hUz_{PKye)jKKT@01^U3?3#X5(9^0Knq6d<}mp4aC&D1Y2u88 z9I2a2&g>-tAnuUoNmxr|zMCFhL#&8%pdUbo^vjv?{|Rn4|1GQa{!Oml0Fl|R`{b<} zAadGh6Dn8#jG>;jaJkvrFlDH#SZW0D!oBUlS4KlYP$ z@bC%P-C>4F=qM4w-wYw^0F+sqH&zKDHH(>&4bs%_o~N_w#~kO^Z=UM6F5J3){&_9# z5LGqYMQrDpsbM=Avx&O2b2j?_F|(iqV3|6MX>y_x+0uif9x4}o-=7`$xEEMOpthk` zBdl=1V<_VTi?wB|$;{FNk(@(YBUy&|;DTU$d||rX#!@hW!&_Dc2EP}6Q_b-wS}w5c zRf9|DNM9(Y&rh+ihCxmOD8nF+RsTOl``~-aE+ju9xgmfuPQyJNQtRZbBGU7QFYjD< zzUltv8E-+eh2c|evn}mG<stS zeoe1u(T`a2V}r4T{$k}eN~@XB$sl5#sA+hpeU9H9iv#zJ#pT&pyq&>fo3MD`mJG>g zx@a|D`2H=H9+2Gv&rLPmmE8gl6SRjG_-KAs3v9@g-G*wo2WHCl+u!)t^oE>WA#BFj zYd~i+KXS0G-96bEen^Hg_UfkGUYVepWUUTOOIAaNm7UJi&Z|uzw+NUwc}cRIXD97D$`d17f>&2=Dj)nB z!ojq6mBEIvX{-bEzLxiND>*f?oS;rip2%t>)yd;o1E`j{w*i>n?*-;C!Dw3snDAa; zjuFhe2BR{k~6d0>G@ksjV78YU)6fl28_#<0peEH85P*x zC{`BQFKZD0*2bNp)Gyc;?x*)B?EAqiNNg%B>?2#+;+c(MVAm!RgW`Y9YB7W-zs1g? zrtZq|tq37&KJxh?D;n9ea|qmB3@fUjyN2#=hHmxs}uc1#U$E2@px7p^MLfI zVl1yl4w#+|@K&Y~9tFT%`dhCNvX^@-qZ$xwjSbg;*7mmk`f(E2+cnf#Q~{A3U3Fu{ zkSPrl-b;3%6v0WsJxSGZqRn9I)pHLut2q+V^fck_AK0nZGFfxTSi&W%X$5*`TUIX$ ze3iVIlmzdOF1O5+$fUcKqd|Y}G|m#eQT(qA4iz!es=fkUQvr*mOaH=-&vdoRTMO;Q z>8IN+Go$h(-m^w!BO`_OKZ-OG_eYU=eOB|XCYz+rKmgNrH<)XH4%7+z+}Hn{)fxwYok!L03(*c#OP0Rz#U|gxz{h~D->j(K z)WL4hD~d&;!N%MGiqgj4KTfZ2g4JK>+^RRkfQk}Y{G#|>L4~nRoSAQs047e!qGJ)j2|Ad z3*@2E#ACd9lvO!Lm(AffkKckdWeu!c?-x9%$s7&T1~k`InNlQRwlodP=P^NEHBa)e z=|^n6!NyWu7h$s#s6edIa4aD?uCYdTCHv)9Bpx^UBmVXJz06civj&G%17xy&XI|?{ z+H4P0wvUr77PYnwUs8^0_~TcaE0d@*Ffax8;6EzDHm;b3#!oQulC2SnjqlvM&bPX# zUzt`jO)qDeA3tk@u|%aYP4H6ngZq>hakR;4iE`3p-WF1W1bfoxZsWrg8uxlMq99Lr zU0lpNR$BSgj70UPE5qBKSIQ-(Ch?aHHN?KF8?LBbCGr^X=7bxBh29<0=)zQpaF6r{eVo?10^1ZBL!4N?doHnN;FM^CxLIbqEfr#JIGR zaHw9T@s_2D!2+|V8Z`d27Cz-*Zf85D3|YvUM(Ap4`hu239MZe(B+7s8;nuj?@^7U4 zkbxCIA2N_9fs^ z6-(PmNF=N$Ae(|36&1tLN3yN2-m+Nvb z*A=e}lK_mG_tzNKx>G2NbM08(_glDwyHzz#K=I{mNU^H~>af;10rk zLT}M$AB01bT3=JYq^_mRO-&WlF!Pk*Gp*%Q@oU!0NLpqg@!0v5?a^NfizJPd8NTsu zt86!_M^=us<`vn8JS;N8cf7WJdaVc{Vdu2FFULf<#GAPnj{A-7Oq@lkHL!=@2<@ej zu{+_EipEri7q_M;YHbOu05Z)M^oSl58cK%9HcC1tmzGi)WrB47SkYQl59%g z@~hMg_>YCBy7YYv^%^>DfKXE z{fhFjrIA!qLo100g8H=wsnx-oLHn;J^BTdWQdF|Zj3DP+HrrLm0ZbwSrUPrz?;yvE zd(E(YQNmjg5nHK7*n5(Ag4K&?+r_>muKRo9w4|a z(QTEp?~(qe9#Gxxf+XR$f^gprXxv{Ob2RR6Y+N;&&jfE{&r|w@bKW}uMvcSHgsD(4 z&mRDz@E`z9Mr^utak!(Pn;-XL*9`CU#+t!kZK_}P6#dKy_6J}}VC=t|ebNXX`6 zB7Km`=GSNV$EBK4%=B)nl06~SvE8CI8^M`K#AX(j2^6S^Uwo57eiqV8&HbLh*bKyV zfO?2_qk4#+6pn0-<4nLN5nzB!(T4i^cu80f)#1ohgfr9Hfrz}sxP*t$6QXq6LVp08c@o?Ia z_gwux4(}jm31NygIVWkD^&**Zx>mpUx@JGd$42iE{}Qs8YZyOvLrRz8RP-{)#$1}d zxfSp;!YW>uab0FYy1PBA6C%th zfYI|2{W%_{6y!zgT>jS#bB>&?Y9<|)>Q+(d5Wajibe9?I9KK%BKqWAsbz53y_bhf) z<$CZ(3-)#7<;ho2a}r~ps1owT_=$&GpelN8~Bgi8%kX1+PI-QKy>RMDe0v{wOE6rrTU>5;EWzG{Cpfwpy0I)y2Oj|mf`+$?e z*{9+PHBWRxE=om6h!vH>xgB&znqrA+Ob@nk?O;9#5(_&X(a=_8OEq=;u~zNnMtGr2 ze*um)8!Iy<*aEI2Ia7)ZyAy$Z*>hZ{SJ0`%e;M{VIEyVRpNy^{N`-hN)jb4{B;gF> zWohrNJ^-};oW^yJ|ZS*&2XRtEs12tGT3}THk ze3QYN$M%BhDiLs4gY)2Tp10SfSX0sUpa0y}>ZN!@gzYU4 zaH;rX^^L5;S_aAZLC$x5gQoZ%j=4L)kB(iG{H@dIwrx!toq!Hy_U`jO& z<7Vi7b0smYza+_dWeZR3aUkP)2V~^-yel#b8RHuqR0H-n4J*wng{bD8P1wg$@-%5; zsc6uo_w`t(xvUFtcG=o0a>OT5%~jNipoKQhLN%QJHn4%DjinvaK@-WrqaT@bB(}9ctW*y z+~*k2r;-b*|NMyDv2sGg(rbRi>&ne7d$!d5*fFp@%X#D;dQo*xz+nRj#uFJ97kaGj zr4m45AZ}~oA$);=Ce>h%GQ@%8=J=eM(Ev#oDy}?$3Ku@OA~DwCv8kfr#9bh_Km$sn z3Aud2R7b#D02uF&jxB@ncl(e~?~KySF{Oj=&Q)AL@aDhN{xbaEM7Xrv>ONSyT5`YJ z2)&QOpeZj!X>MyFcgZORF4qAwa8b0^jJA~DH1k}6qsZOeiTAvN-*Xuct}TV*YZq_k zyEr6N65NdVGvS;o!;bMaBHb4c2ZQ2M0Z^m?q~6rYwJbT603*HDUzU&-wHJrG&edQ( z85uk3j56*V8HNXzZZR&pZO0&UWMX7v@+rg zk*X7(gVIEIY-2t+U(Jbf2q{n{ZUH{TR^7vhY=~u+HRpUF?xYdRxE-Hn+iV~fv1D7S zWZ|m=;A+-0|AM4yo$_h+Scb8x2QCQD@|YvR5L|8D?15(HdvIpmTHJTN*9 zoGcvd@4&mR0~_~?>Q=bL2wjJ%jfdf>bvy(O9t!uUbnPcNvPPCkhZvF#!h6a~uLh7kFd zDWm3R`PE;U=x{=$G^H%KG)4YYRP}uXB?Q*FV^tQhtKS;&# zgyd-~HTbkzVT4{#R;(NU;%IaSNe_~wGQhNp;Cfnq6dMt8;TYgSOGF+a+eQy@>KwEr zl5L0Tioh}@6*0?6b?j*3iOREP(b8C;mL5|y&!icLe2Y6#dYafvrobn0A_;!cb+bA24W9!-z5GB;=ccigp%N~oaq(OEKiD7AP_kl8;VRKK3k6Wq@TyB z?qocPGOla`^9B|9@~xtQh!o-LH(GYDdyM8Ob{+-n1*|A4sl+G!QF&e3z z080nd&%Rq@Y00nj{+ismf?g_8(rYbO#(myVqz{VWv`0ASn|mC+p7t88191G>{ZRxA z0yx-#d7{NOwRINy{=Uq)>~%{u3h4`iLe=#spop*bTF0itMB-_`Cw$jH43aSj$ALj| zcdm-5WrWtDYR0NE9;!kwGeY0u-HiccEQEh2&UddW9+-?mX=A+n=`D;Ip>OaBE6Ecu zaxkz`ntv(xy`%VM&ui!kB}?sSzkupNJA%NlGv84$BOXJNiqD7S?YtWK!f)kEa4Ej1 zQ!wb~$bwx7u|wJ0N2{>GPXiz&B<1K`>;n-hB@HMTvL_)1$AuxsNO5rI1aL=o6TrdC zG>o*fz}x@~uE=?WxeZ7Gb9y^?E+)*mfJyUCZr|(N4$jjEe-sJD-af2rh{y4jJ^LBD zLLf>h1m@K+U^NWe3_taAT)2A-=b6{S7UAC&_X0BIz1@Hu0LH>vrit`!zHE`(nVY%G zEuV0fid~QY6hC7xD9h5UpyEvHT8}4%a3N!@i#3eQUBVd`@kFi!j7;K3AAsZ(He6&D z0PIW7k_NZuyx%n=HXImR>SuC(C}q!ah;(Bi*NU>hTxHCxtILJ({s~>I8CR?Neduo^ z@q#{_>Tl4V@=+i(@Z|xh>+s6Ru)9Cv+z(e(r!D9b#FWbNhM!j%dM`i*)hQ!%rL*S_ zh5a}8omxuh%vU`pijGE6N}%30G}OC2NCX=Xuzl2IhH+p zh}Y@^8J30Zxrr2J=Vsx*i5)zFwFp|-2NLa1N;Kv94=P?=n3QUVl7yF}H69=dKYEo^ z;|;nZ|5`#)%W_4YAmn-t8F)jT89X#8hI>RSxGBcoqGc~ibPCC4o1&aB3i^k38V6p>$9vvI{_A7d31wzV>E2kIb_&dT-C zPjOSZgWpYP8qMzri_Vmy)e5z)mi=S5B_?rK;l?@GRg%pKM&+9TIpC){dWS|QJz3Bx zEo?K;VT&`IbCCv+stUktVc8o5xDRNIAnk&fdz4e06$tXRK0C0tBd_U|&7DA%Y)1PL zCQdyJH}WRr8F^>t8+jKFHS#VmGI~6I11e+mc<563u^7R_=n)u&AC1Hf#o(3&)U(un zI()mR`{Cj|{O}*Hj>iAUpqMKG33o%Jq_sBTOd8BSlIYS1q)h~d=#u|99vP66J?L1s z)p1w?y1aix>U@r|YG~mW-)I<4G5iWVg?s%!a2id0Pk-?3K#SzM3g7p~i!FDy3paHk z2IIagM18>m>}|JMh-{+INg!JucC7>zDARmDunp%We$Smf!yWi~F9k+w{6veolGJDs zTMj=sQ-Yte*Z6~f(X#K=1D*zwIrtYXBbU|F!}`gcQ;R2bxxM}uNzNe*(>QGN%*tqS zo)myjxLoXg|1J>eEWd@k!uG--m-(SfxyV_MG6de9jb*@W1W6Gt%0tuz#+q|m)s0A2 znz;0%0=yP2+U>QT+lr@nuVlQtz=i@WRgGXjf*Y%*z$gA|f6Qe~$u3;$%Yhops5y+H zUs8{dvb8SDj}t4H6MnXjd?vY7OG^U}9=UL$9X;1K-PKgmHOtR1fUn%GMihr|^$>~= zHJIHTnxxKWf|+x7@P3&4?y1R;8qezJQE0}2Co{YFL@%r5eG~2u3j(!=DzW8Fl(w}Q_9)`rdsAwKeG9HHhH^(8U zE`FI&jOSY&tvk4>=TiRd4B69c1$XTXPu#XVe`TW_qaXX#0K$M~KbF_EmFb7HA=@}xrF zh~0h!2s)G-bqvBZF`7+Z;NpX<0OHZmCSio{POpWzejID#y9lU;qBih2+jKi_ zfa%Who5GJmZfo@ah>Iq7(-&M0y=i-hg>8<9M)&F1%ty_eenj7C>pTX5m)m$ptFCo!w zuHzEmE?!?bm#u>tDX-K#w$!{Sx76e%q=?Qq2}^5ETsd7~1c10X2I9*b?)D`l735Yu zZs$Pvj_^$2d5qt=MG=n~%wLLT@`4&MCN@{IliC#~i^U4Ix%zdy$BzQcpft?C2s1qm zL+=dxJiLntbFTSSdw5&$k2aAeK@Ykopcb-?ASW zfuR4NFf4}=qIbL~FgKzX{6<)WYTj53w``&V#Nt|4Il2s{vx+Z(z?HvIBHxA@NFo== zmbxZI-NM3ge=_bLfJ!gZ$n`NIzC?mJTi6{w8%C71DSZ%D7SQ~r z5p;tk#;RNYL~Z;#tzpH58*zgQRP!(6tDW+I?IlAkkQhF<7lQFuAAQ$%8M!!Q?q-N{ zY}b`Tfk3k$5HbUF_Sv>+u4vJUv^n?H0UNkEV{MmI{BtyV!je zY5-|12f+0Ju&0l5sOruh4$Pi*GTu$h8}teoCx7~(P&heacNI>-5D;Hq+dBg@ouB7X zAWXU2|NUJZ2@cho8?9#nR8hPM6ME}sQ2N%X$KDE`e`+pgFHr2F|Z zun;;^rrTG=Ph7i;hetewY}JnuW>o;9BASY$>JH;F5*Rd#@C`*6DlR2hiMX(WC}*lJ zaWc{rE4h4iNeDu_kR^VI3C4LogE5kDe_=BQ3nq&%Z{dW}T+Nf3b|Ff~UDY0Jw9z2? z9n*4pK=Cp=4BN#1v$zgZYwA{k1J|$0AIJ4y_~T5})*x-f@#UT_4mth{TRY|~0AXqa zg29t@2U(4}+0!w2v}4Z21QL^q0NGM?_GWub8fZjYK<^Rg5Dk>l-(|d|_kX~0Y=OeJ zsE0Rv3;a;F(Dr(JCf%9S)<6KKM?&!yzim-f!XlL!FtYE7y`H5)eEvY(G=59MWri8e!(;ZP4*~Yl{4=qe+yQsJ7^}PkGgZrf!fDn$ci|2hc9n?_KGNU7M`fP3-_&!it?eLfR_c11^&+7?XoO_ouGaa88rZ4F*6r5FZAU z7bLB@g1tUG;<<6%A@BF}z;uSoW}and>bScHDiIO@>JK-gFzl#x@R~PbBKQM0ew8By zmC7DSH3YT`8;izf@8Gzxko&>1Rd*RPg|Wehp4p?9(NTr%2hUlOi@8XFHeIOT;7c4HY1RD#VlDCe= zsyw=HfUd8pA9)M68KDY%niw9C4?^MVaYWKbRh$Rk#bl|5A7VpVYb5?ic*Lzc4$iQ@ zN9h<2q@KIzU)y&g6}(X~O5hgZE@Z@pdt^PAQ+sXO&G{N=xBmgHGd5iTKH3f-mu|6v z3TBRm5g{af!-YDyBDWDHL&2O47%m_W=s@IF>@&6Dc6@t4_Y-I(fVeyG6x_YgBlpj0 z2je3IM$jN^APm^w}Ehf0h|LsDGOM6b_ST5YjbnC-Ker- zsynUJT(K9Z^iJ&@r=nE_!GL}f%9K-|CQ@| z9Y*uD6ZR*>vOuMInwSgOMzqmEhE9VpSy>8~iw#+&=E)d}aKf69%kais-F4sOx;wo^ zfr*=(2$bS2oR{l+OajpT=-igWZ`}NcZIpAV@ZX9aW2sy;??ZgM&X;fJv?heJf+1DWP%b zfk4U)sTYA(DxlwH9DqpyF`974Gu*FF!A_Gu@n#X=QcGCD~(XUR`5AG#PL8ZRQjlYW1?V3EGYryuA%Eh-q#aPiH}` zv`<+mp){&QH^xakG~fbIQ>)(5OO=xd;xuQY5F=QI|FK~3-w6tEgmcUN7!D1m6H@vr+|KwUUf7v<0H;PlD8Z0c zQtxWokm*{3GBbQnq@AFE2}72tPQD8SY&wiJLd z4`5X1jh(5$S8DLqJ%Ia&u|pNigYCe)N|+|4yWFHFfw zFICpJ?x{swEf#V0{t{34f-KyCOK;B>K1Al?vLC5i?#rKZE4aP%at9M+pe%QX7c(#5abpw-vX8r80Y69Jz#749gp{{{WYvH;DhHil zeIv5ka~|u0!JDw}d>&qC;rYv}NejBQefqWP&ZkHC9?ltknWIAsi%*pfa|AS?ScDx9 z$d1*>P69II>7?^WCzCubAag}JBaglFIAmO;GybqdQSloNU?O9~G*wtSqmsmZnDG^6 zJR2D?n$HwB$C;Q=jL#;Qt=U$~7N>IuU-XH^xj z?PPU4egO`EWA~UVevc+Y2Aj}dE%cwmI&V+|>6imxd;(KQ7+eL3dzV+<)EQRaE{Gu^ zomRCXdh{Ly09k}~bBEW+hwzGdY{g7W#S};pU_g@#1jXvYWk~Q^f&`UnF;>j*5+W+B zHx@1g6e3$nW=Sm#kAk;tlwNDcx%a#edz*J~qp|Q}LIn2a8==W~!U6R=&c|>b5+V)8 z!V7V})jfJD*kV*n!ZZ9Uz&sh)vO$I=TcWZNH6^99fPe!iyk?nHXGJ4^s^887+D-P_ zA_!rnhreI+KS@?TyK(p7Hh zzjhcNjHK*I`TlAFSc>x~Q~9I7lz-}(rz$Yc@X7|SP7+uV=@8)+sy>Tnp+1SqCAzvi z*pw^{V*skLeWRv_w;3g?fyWH{{Nq#!yptmNVF*5`YMiFC`5a#*+hID}CHydbc(OG4 zmZ>w*UZX$QqcykaDO3{t!8bcu7I$P+S#O@KC{Z<&mXda`UpZENID+_+17x{OaGIr3 z>|b>Ly{K}s*o~UZZ_{ZtP%?ChQ*{nH=q2e9RAY6CU!*_CfqJ*Kf^y7lEvB5amz|;r zTbTw+@$)H1T9KyWK1bRKI_-{hnmfGW7NWgUH~Qu2PxcpBx3Is^xd3A|%WH)Q>kfz6 zl_42ma|Kx(WcE+60uy%AK6>#rLXaR6{QQPuMZ>39e|&)S=yFlplhP&V#jy&&*b~o6 zbz8eXs6wVKQ`?q&L1sEvA^wksNsA>VimxNgNebq^cJTNCW8Zuf0J{M&*^Wk|RngUkaOMlG4$Gp_X zgYYpo{jsC^012JzHsRn{x7Uqh=dx1a=4u&8N$r;=&%@yuqWItcDs=YY`mzpJ$*vri z>F!kL4n(2Oyk~^O{~$aH#|om_k9JJjF3lLqVwX08F9A!S5p&wJd{DR6`f#iR?he)i zwMbLTCfv+pglO1E9^f?YrF}#l;?xd-;a6p4VXc;*@Cg3}FpRtjhTD(L!tPl3AudE@ zuUy>>6P^#XpvnIHnM?$ulwzaQ%5vzRLm~Xx0liSx=QMWpaqT8a?{y_Q=YGn!^rJcq{ zvybi5_yQ6ZO&wXiiqJBc9MDaKK2t-tU0!-Wx%_)Kg^86j?WD9G91Ss25{S+a7lI~P zE_d*q?a^2CYSs6UQtN82mb${`%N-2bv72d@ISWjWo=>w(LaoO4p$uJ@6Cic$Wru^O zpP|$pCpy&D#SlYqS14akk{nvAHdJTPFzhi)p|Y0bx}vFD(>&pd-9QSJgt4N~RAy*- z@?i-cqM`M=HeU0^Wq1^`_8evr%k>yMp%y92HI{?4T>oM$9H?MA8222CCl){6%0AT$ zJp&{jtD=&VGFEkmip34*N`8jaCFi(ngwXoTZLMK~_~RaoT4BQNifE&5uBie%%8pPh=Njmb!W`&)l9w?9!;2e$CBi8# z@hHnej3P7{w6CLpw0a6M*k=Nxt9(CUj0zW0B&a6$;t^eMEwUe+nZy`g!FRit57CoM z6+MaZfN=iE&hUairtn9a_#IRfYi-Qmq<{yHZpv0c@VKJYTt%(yC}JS7&peS%Rwe=FhyZkUb})PRrHUsDK{1s4 z#crq^W*sWYubv^{Mzob#FM+4_d~H;&)kDDu9Sr>DCQo5_D_is4Y`g|H8=*h37_h<| zyT&HhkT4}?jt%1AD^t;kZ{>A)SfAl-;by!!##3x9-Zi)F(P!Z~Jp^LCfgR#*>)CCK zyF&DgSl2%QqecZ5w=#M}uo}UAza!$E<>#PYglc+++=6*h?l87Lyb3FC`rg9_Yc_Z@ z1?T2Er>qPcA!y$<0#7p&?0@Z)9%Jc@SO}QYG>oiFMIaX=vnx_g82Z)%rsn}LYC;=F zm@`4EqYKWMjxiX{`RXi8uB!j33D$v{GBzff!xFbcckq}95or2zVJx5zE|=*Zv%y$- zx@?c^GZqG!67B`Jw6%$iXRM%vyX`|bMys3UJc(M(F1Ixq?D-z{do<4qN-XTRlnmRH zSV4JrT}DE6q&wj3hxt1n-O)eU5?SOjB?udO91p$Nvp8-o8Mhu&4u{4rSK4R>st5E3 zOk}`EhgV;U>C}M+<$rYK5Z@gT2Dt^JCHKpxwDE139M?gFdh_(uO76@YRDQz@4 z@_)Ee*gmUWq^`(JW?Q0A7irY3Tb+|r%%@-mv{O7UFN^iXbY@>N4rl(42%=e({+QNR z8of#V=LU?YNFVegS44Qaz7O@LY3tP8kocI|$rA(J0saGOE(%o96AqKXyZB#+hH7!m z*P0{MdMAMIvI^wp&9Z(>^v#x?5GFjT60St-Gd06G@BSjdu>&PXQ5v8D<>GR%O8gKY zM*$qc=f@DJ3+N@(eHhPa^^!rbznJ7uFW&?Mw0e0Gdln-Vwi$4$b^WWzAp|<%Qp|t3 zs(Er7;An^b+{8;Q$0pV0yGH1^Cnw5M8N@=v_-nq9>kJEDfut1G>A?6$IZ1yjP5PN6 zy+fLGv{-9;-N`$N7cr1h^CqFcY+r}Dns#Z5BvE!pMUp$!VoiO7#*tXIv$q&4mlKUx zR><*>kC4xD=U0EUWgE25oakWtKxEcz=cShR1b7>3wu}8&`QPX`EG@Ji+yRyC@7#nt zpo}1=djwisN=4?t>#-j4x4s^0n4&U$JyyP|)q&SzJ$h8S2TkhhsE=H__PEDU6>jP3 zs@%b<+;uRklD;lMd*HNekEDH@`>SXf_Ia^O%uH>@(3e65Gjr=Jtn901>HDkH9Xra; z1)Bl!L!9l6D6if#Zfr0D+*YA?G=h!~oQ3sNF+9}dj;H5<2g73vox@7C9cE^6;Zho6 zjG%#noi|V=?B5R)W=z+eAz{aQNy53Qgsm#UrTdR)A?qcVawLWSMQjEH6Gq?VZU^u3 z)7{`f@GgEg0LHWf@EifALG0Sqn8QJT4?e$yXR)whvyN-WjCOLr&fG@;;HwF3m;Wl; zt`_F^VVlHP(&>34O%u1(eq*wKa@S8(XkW4P)35Bc0paV2nxnz_)KGeTfKWR;nScTR zZzQEh$RXmQmA-ggMy8~J+@Vf#-%fY629n!@%7T=2*-+x*sNRG8%Q%l zBH_Ir|C8?YN?#;Z|CFTa!42Q8dW9e2P-}U!(YO71(Fo%K0q)|Ipm?XJRM*qW(b#{4 zb~3)Jk2o0P&Kfaw*(aVYOgo)YWE(WW6kq&fG!KW2h;MJ-k2$h$iN6J#b6#l?fOs>Pk7~G0& z)o(#`qCpKjbhug0i*^$B=0m0GLvT!Bt2O0Y={4-56Azbkgk+IDfwZfPI8L5b;;7uF zWaV6u-e@QLWP|o@dMcuh=#r|AoRC|}6Ua*~C9xTX84(Tql2kxqHG)a${&<3-@|skO z_3t6%U64xXtP)Bzy*iQ%VwzI>mchox@+qkx6Ye0@=rZ9Bz;n70IpN+=?5N?obPZ2p z4NJSH`f$4Aw^cukHq5oC*z$D6kT+ei^VF=LzJ7CDo>XkAR4h6C>=P6iBeoJ@i~Dr) z)Hmm~Is27nB2{yNF)ge1z<5X17%4!{1QN_?cDFXFruwJ8uO{#YgQ8^k3T5X~MY^)g z0`$Sa?FgmP&+-gJFhpM-MT&85rg_ua4_t;?n5=6La zOk@Cc$>`t-JFmNtdmJ`Gbbm?Me<~dT9RTN%3}*-6<%X3m2NS0!r?V3CC)?Mhm1uI> zb25V8r1Tdl`9l&6H-I>>~2zl)AZ0aR>|&4 zs_zd~@H{PH`%u?ZXGWM)upITNEppVSKHUt@fK@T*4H>v#5k$$hax)&lzMiTN$W=2i z8}JlmODffTZ3O9&k)rh3uB6lm{stuNP`gm(c_X+PAmsj0zv)Z3X!>U8Yzk#qaqf5$ z8_LABUvT+T0mZSmZNDQ!L8&#Y_I%-x3aag9obm98x5vV&^f~+4?sI6S5h;x;9*Z~^ zaF&9pP=}dWu!l?=#(3F_YvWg;_BeHjOeg9bm5Cqvt@eZY&aYMJfe<;y5abdmGg z0iXfhKDCqXKTsg`i37Ax{sCEBD9{y&5+^TmON?nY)~74DDQ@J3a`{o9$UzQ7Qoh|uSlx9+}2qoa>bEKyizAVi$rvWO6LASxAy~* zHl?cOHq@UV9`2|x&hUr$2LsPw`?( zCsjRJ6Cs3mO_9oAKXH)yP=XFwy&#AAa4m~fvdn!(h{;B<3~=aqp;3;WcQsm8&xJ>0inC|3f6~+8@^+xQ z14;(Pm;(Tg0Bc>5-`VYsz<;QO3L81gvFE@ReoC`|9G4bm;^oI{z6Zi*S9y5FjcnsWO5e0S>$ybb8xNz5=|9J*;4|+kqKH z{(gsX9b2!Azn>MhM&<$rSA@nK`*i@~{^)SdiUXi18(}Ua)FXuAL8JTIfx3WDw*X2p z&h|qepySf~dl2<%6zM?4ck8j)U$=WB-qmR>tS&aiu=kLbuhbR_umv}xXL94O(HNBT z<0x4A2A9<0@dNd^9QUMk$ja)QTo9ZWE}0*7mAecD??TM=PTvIzWvwc#J`bH z<{O6|x4e2Fo=M&-P@q%fu(D4TI2gAcomUU>04vKa4+;kGm$1>_U5!;Zfy&y& zu00W#oE)G}%6e6qJ9HeZ^8%}72L#?ppvG~z3lxECF^9Wq9z~%TjPtYzOxWkD(RmH- zPv{3B4n+#JNZ4n{jPD;EKT9TOT+D%tS^n!<;_NLrpH(>3DR^dXR$WuHzj2TlDUHd0 zJoxe8NC!U-PKrEgf46}-PAgEW^(o`&Q;)(NxCsBNc4&DUMNkwZpIWK1HRdQ%hPtP} zS^zRrlhh>&P;7612Mbaprj_fRr#a}{n{KyNz+=A!0uC^Fk~Z~^^Sd?S(iZ**)`S@? z-VxSl!Hf(a{j%|NX(qyY9Ps_p)OR<6f3*A_o#19+(FvETpBW$#Z$7@Y6@S281tS~x z{xDxnxI!RWuZQKV>>DsEW|&(f(ng6{Z%;m?3+{%x8>Du`k2}*hz!g1H3d66P_yT_< z)^1g6(TB{rE%{?jxS=&anllfn4b*35^2-6^ z0r=ivFU|D#3oIze@bv^!Px5zVGQEJZpnSH#7idoS`U+%0;Ef=v(baztv-rRpv>n`~ z1A9;M{}P=bbyXl8{NF??2#a#SWPrgOI7EZiTk?rC;72fIvZp5&91rHuf6+Lv|kP z$8ycri`(R(aY!63Tj!yXcq9$rbH=dEbZH+jK=I%zs9G?tQ#?UR{f%$nP|XEOo%(?9 zh}O@q_@`MAE!(Z$1@@F}3R42G!gvh2Q3Er4oq!d^X82Aa#!DZj7)N+BQqqc(jEYJd zafZKRbUas|WWF1G$f)9f-tZc1w__%~x?WBLJOfZ}W`{07b#OAM3ZD4O(;WqBMT?%n zP;BmS&RZV>tx=parwe8+#0A5Z1A9M3exvwAH$9wg9-x}}b5mKY#Y;-Em^lU_3YD_e;;~YM$DH#o}ZhP1AjhRr4 zz>!o}fEGGs2{u7}{~~|7qfV%$|K-@gRwkFn>K%c^G5S2(PlyaXF!4?hgBQ zMC>8lbZH{?=(1WsSX0&mC6>pD$+P&mSUzK6fLWOxn_tAU<{6Og=-7^Yw}fiJz1|=e zk;<4|wWz&H<~jtUYFQ$O1PAdv*uqeN-T3vN32XeNfxSl~5Z>NA{~$*xg!LZ}s2UCx zdrBo*Xb|E}f?x479B_b0Or96-mV%sgvvkP&9!5jDrJp5RRQ!bj=SqC6m~B)Xj*V+! z`0cEtgW)Jso$+jmBK8ARKWOXA_#NGmG7Oz=DR}1ZskkEP$gk0lk+kTzcA?0AcuU1{TCx9(O~)69}`om*cmsW z$7^u{tJ)yG@mnQ4?u`oWS+}kLBJ3)|kAjAU%Xe<6`72Hi!lgaiZHXkr@lNz3_zTgCZaDHFWqG;_BCfP>zfm!Va?uLN0O~Lco(=+EV*XYND-sSgMaQ2{zH7WQYIHt32NbPs{Pw59Z1(3uU+m2LD0(KFuXCQ-u zJ&+yC-I|OdawuwloczEU6Boot`+yYi%Z{Hd(k*nNxG8u0Y)BjAaNf6jrpfV7jZcG= zeYq`I&QtdG?kUo7)^QkM18u?njj+{eSn8gm24?!YM`d`D(||}S<%iEn?n+u{^}Lq{oRL2q|UamLqIwIvHgarnVO z{6kQJDvZgR4{snb5o=~&h5nPm?I`>e7Os5tyY*`cKqbXh#RCrZ*^a`y2&;|Y-+?tc zUTLc1Wf4$K7u^`CB}q`Gd`Z|jih@;xlWY_U$QoA_*T1p+bf#qY^x|~Cud^#K77}#0 z%0D-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

BsTi!<~7 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

~yM~eT=6#u~# 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«^_dx#(Mb-7iVp#qn-(M=Kr7smt{AKe03ON5s`md4q*D2FC zin{qt^8X*o^gqR*!Ef__ptW2yi_1mTS}un3-!AHf9{~R$>3_oSPvGUJq`!~&`>3yA zjcSH#f=XeHQpGj8e!-e(=|Oy7xF%>^xJEBOcull$(HgaU5yI9()?iCsW0oJfCagUS z*u&SD@*~!$rAMsMrAMuaT8~ewKWTW$~3PE z=+GWZFo621aU{3?6}Di=ZfBIsSB zB6X>vtSYFZ=a(O^RP*sFi18Cxx(uEAGKH?C!X`cfOIJc`9ciAZg4Pq!r8g+Gv_VD9 zjilK`di(_zHmeYyfuL1VD&9i=_zjft8R*(ZJ~&&Hw?m8H1^frpPJVZy>+gc!T}m%p zqr&BD(8c>y*y;m*0Nex6IjF*ggG#p!L9ZXY!zwISlx{p3x&tccIs)Di6*P~kuyhk) zdKX+f8w9t$sM6C_ zs3w3U}9A5g*K z-znYvpbFH7l&OE1w*LpdKcb@AKdPYiPf9KQ6J`FWVoyUw0QZ}u#qVN) z-}z+~*1k=-z720b2JfdztDh-T`x)U-D||4*2EX;9M$gjhb8D@BO=Ew=PH_owmtc>$ zR*OGGwD2VC6lL%RbxYz3Z{z)AzpTahR9VR}bg9Wj< z;P23Ni&hJ_=wN;h`^}sVD!1yeavOPyz2&!ve-?C~rNjAWX;W|L2>%DQ^gQx=fezx| z#a{D!nms4-eUT0tzpvFIHX8AZSbVV#yI#UKz7bu208MN*b^If`UJC9Xk^T;C6#ftK zo3yIENk`2$ljmEsnaA&85x^UG~cbGuJ^zvHXeK*)Z$<2u>4oh zzKeYC0`GlVSMY-<{hijOMbaz+`#;*${ttEW_ml(sPvt{8h(8QZAJ(e*VI4K_k7#{N zo6^Uj`w8$qsWrY4$P2*#6+SOkU=M2b zVc$52t>U0D%LmE-hzS>uVw=Fu(>!THY(2VpnkgSUPkG#gO@8qQ2$v@aW9wO*HbHa7 z==wQh7SF-s9C_Ue@3$G#_$?Dvo(T+_PVKoymwt~lzh{C)ewTiayk25V*Z*bjJiwl) z()K^8R5fBlY-7ht6bts)5M4`jEm*&(h}a`G);eOtN)%8Kl~}bfeL$lH2O{wA|6*?PtuQ73O}H_n|=Cwr&W zY470|?~2A#cSjT6-In8&Xsq;L)b6vR{(6la?^gDz>0h&4U$eHn7L8=>z53i6X7i@S zdNUf!z8#HL-nAUxw{}#m4Kr+?%(V8;j5@WM(OBWbXrla4H0pk0_0F<(&59;UCM)(n ze(p=F@5^Yk_NC=$@6WsT{(K=~_uUb@myX2ZuDRH*OVpyVc;41soJ1^|P1rg`!t{w) zq?ojO?M|_1zEdpWb+I)7dr!aI-PR*|#GxmDOVLoV{Jy85ePRiBExZ5j8;f|hK2lge7R~gFIbOe*tr^Cmo~?~I8^z+OjbqWmCYH;lmdmEG zSY=c5%UD^)a>&FY`K`^be=J_p`_ z#bWM`v3OxeTld(}>~@OTXQN_?Le}!k#$vf$&30F-dk?E~56f*YTbI~7X6ucySSn|2 zJJ4bbjwMnRf+i>&^OVzHVpM_SxMEaqJti#VfVvC^nm zqBz>>A7i>P<~zpfzs&N!%<36y`HhW5>{)`St?}48U@TU+I+n;?V`bM`uGhw5#p^7$ z>td1G&9SJh^+YnaTb_5=zPTgjl<$Z|Dz=uBdmt9~pE*cPvAiC#@`p@5ZRJnLqTY0? zV|pxFeJ19(&l*1)i=>{j9Boaf`hxXC#r9Lh`n6)^FIkSZ##4FO>|cpFwO3-%yua3C z&nkFt#BBUo-EYMb`L`_QTUPf6#`e5I=`*wa%-U%Wp%GN0C%>Y|FiKSMICu%Fkqm`9xePrc$!s#8iFX)IzQfr!AGajj|7f+OIJ;c^O zobpDtX0f^XZxN5%dWTcl(tHM3{GHAI;J8yf*w!`{%LuUI>JX$W>ddeflkHu|G z%-ZmT>7R(lYbKp1&F9H@Jo8jMR-G1)rk}PtrpF`hGx1pM8Do1Mq4ccD=PbwfE!X$s z@pLtw$bS%zRX(shXIQ>7EYFY3|6}9Npw`X{3K{)tHbPl-f% z2V0-;pC#Bi5y|eAaPoU4qJ_O}ePv%;d)PN&?;j=N-hL+S8G>@obo-nCfu=jqUYjf* zn20-r5;1R()p<}No;xVvcn2k-_PjwnKiJlA2AkiZw!U$g`5kVrPp~zdVF||_mWUQj zR)-}b#ZxTKDT#RPltiNHS&pYCBIz@%9cNe`XC<7XJ%3O!Sv@OZ*J&2>+(ewuA4F5< zTdeaF(Td5`1(wr=W_M8{o*rp+j!eXhCd(#M_NHFCU~Ms3vS$@i7boo4OGIjyB%--d z38ywH5i5;0IXaOjjIkUpwRo2$Vzsg6H!cy+jk7k5w>H_DlVj^mw&vuNP1a006Ri&> zS)3aak*qzhP`34@%*}~d_BN~M_JmbvZM3ze%sq)j?mpWWw!V~}oJdq`jVXJ7B9ea~ z5idQEu;+jhj`yI|Y0{aRh~=kR+fAk(vNk@Hh!sp$AF{SQY~>GI>~bPfdd%#ev^<`) z`kzX~GSd>aE^Be0PQ=PjTV3|-gEQT9wl-BYS$QUrs6A`@&(^0h&nIHV=Pk|)2`Br4 z<^Ep6$-QTJRTB|!hUGECd~MCj)~y^5Ygdl*q1E@HvB{cA=Og2fj7`=|Iv*Qs(IS zv2_ZYFme%Fr-&qDwMa5j?v#w%GZ(ftnM^qLd_{47Tc4QU>=sDIGpS^>oH9;X`9ijq zW6xLQ7f#xpn{)gSD)jt!Y(lP0Lxz)@_zD{Zi(?jQQJI zR&Cj&Q(Pe#vu7{t+3lp0S=s97Z8_LFR?(ipsM$JJZcSTFl;@` zsjO{weQo`wZ_=LSwzADE_GZaQcFSbcfA*rZb+*I^MvA*92@h?#GK~SPo}8(bAdLuCts(?rh6%gq7R9c+LM@!MWD%bFKdK z9J^<;_FZCfw6%YXE^cf z49Bti_K5e56Rmz@y6-HP@67&Z^ZnUz()JvMW0zJ=!tUj|*nM0VyNB#*_i0`2{?KIB zWZtA_vS_kovTCwsGS$uOy4gLV$(+f8$)d@!$%;wG?&(wAEsn{oNzY`#WT|^3;>~aO zktwTlA@g0>R*%G;HSE5%Pb6OL6N!}j z*?r{(=DUH(4I}>NDB`7!Ouu;~k+RQ8)V8#Gx3YWats{2d7l{@7n~go|QQ67vUF~^~ z!Y+|$&17oVNTOux2^Eu$J@b*--RusqTVH#wqj*pxQas$+bfo2%kHnmzkwkf@l^q{R zWNbYle}c8cp4}*%6tR0fdwq)K?nR>I(<6>EJYx5K<~!VSw{?W-Iab%Xk$BZf0m+XYXzl?BN1CKh}q{VoZRS0#Jx6>uxCCZwOb=j?KZQ!-C~q1zI`^L ze23+EXC#ug&q(C&vGNBaiR#oy#Cg)%^<*UKJY{Wu%3|5)Aa3n;v8@!qjq-?ca&SezM= zNX72|UAzCU+4CZqPt5)kvo)ET6^VNG*$D5`NVI0pk7R6Z!1+89D}7;czl=muwl0vf z^?}ki7WePgfB&%k@NFbk{?_8!GbPSXkwoFAh*Pr9NTh$Z*S|!fsb9^`)(KMfSqaCQ zm5M}T_V|iZj@mtIC%YHzWU_1232)W)I|oJ8M-~pN+GW?Cwe`33hc;2$R{97syMHX; z;$I-E6Crc^LOT0E)=nhv0-4=|9C*+E&r%Pz(zm?=neN$WQ&_x_Q}+B<+bu)RFN@L| zWqvuZKd<;(VH)MR@!&x+N4_ElQ6FUH+rO$!d>f4BCv+JCkL=5Pu~{afz8$L2gf?Tn%J1qa^0-TrIQ zzPX)WGLP~&{|}vC{%Gy{z2}!dTKj(Q`Q?w+zDkSZZ*J$8KU({;E!x-7`9X)&j$rt z`2Hy4e{RS&cLT^OWo;$!+}2pV@_tue`nhDl${JH z@$QG?>`OcE6UGbKx#U4D?9{HKLU#5RYs1!?bYjTvVzyWPmZsfs+6}28KiP5aar)8j zoUk3swM?8LkEET`)eTB6X1V%p0C{wi{O~T2jUU=gq}})IXT?iWKaldCa6FddT_pSZ zC-M_b?6ki;+PxmOWB=9PccI;fv@5FrSl*Q~Px)&&9?QE?GQ87uX^c~i7qz!L?M6`c z2-`7$eT*U43Y5#xuAU$5{Es*I+Ykt6McSp+4%+GcsIj!$AZ*8Snma}EfF}7ZNc|+r z-J8VgL4Aqxm{2?xJMS(VInwa!4ki7ydT?X z@4u4Ya_!`&xvm4vo6Th9cH(7bv+8(3pLXJT9e1D2a)Wl_`Pb6(x^3Q0Ja=A$nP2~Q z;%V-jm$2Kn6VHz`uT9>$NxXSI=2muRKYsoE<~82#P4b)9V`QHu@#ggyNjGWlyv94Q zNq+M>W`;D0=lVNk9=3dwc-}n3@?C~CiC3J*c&9drmzl?SXS5T~AIm?@!?lK=!a2Wl zyz|?M=N}vMn%~90bG*yiiRbr&zq!Hxx%>A`JLgM(?wi;7?}~Qv^Y`z(&M(Dw;`y=W zHQsOSw0GLPHrDd!)y{n7TKT+gH?-4U#hRBn|K>Two0mSkeGc*FWsbgU4)Nw?j-EV+ zcz6;^z1cB2bq?{|j)iEj+F?%jGx53KBah7?zf5-S2ln(i#Pf=CKLTHzL%ecLs~-(r zG)H)K4)N>*GjqMYGpBgvxzBIroZ>liAMdj{#hd%x>wGt-cyqsdo!Ij2U!Mj$V(y#k zbe~hac{qR#GBh8xb_^| zJNNfVySB)0ZfEHATIAPxE<13;7WvKXh}pbFyty4Qo3wL1)OOH$ZJ`6NGcEcr2r(D) zO#cqV^PkP@=yq6({`2F^O}yE~)#J9`+t0MnzuZFq zZVUYwKy$`J`o*MOsQ9q1QdjC7F{q3xJd4Tp0ej`dSNk>z)V^kwSH_43B}_TAb+!L%m&9Q7|#|30P5mF4nn@c)qIUxoBp`(7u1 z`-bHK*uUQN_o$Dqg#9)@rOSJulzktRzx87IN_9QXK1J%+X8C4yJx|HCYQ zt{w;FsVR`}u>2EBjZeLA>-PrVv)iVQjd2l*jVs?AiuXlNt`_CINP7r@pmix{uZ#b>57P^j9{dXB6+=BcvzLn!_&T{|#|Dc>%XIbty&VSZm z*UpY-!r6`G{&NawC&uUgEcZJVAu{&LafY(o--{^6IJk)Aei^Iu&7I3w?msWlw)`5F z`ya!_vkyVHI}ftFoT&P@^?5nnkQot0gn-T%LRO$xB$LSTwXcQ zza*}JKNpvl4fLH>VLnypR}>c(3G^F@E8qd*BI?^kTmtVe&L;!^q2dz!hl>k61N|l9 zBKT^ti~hJ>oLwNWpCejEcSW@ytz1) z3OFZr!N-ZyXy4i59NIHhT!#G};uQMpS#cHq?}^ik1@(O{P9fg>t1({}`nBr}{Z8T% z_U9pDXT>1iY2pm_|Ha}m^0{7|T{^J8SDXV+7w4A=^sk63@c&R;L;XL9)9{b2uJH!@ zMZ_t@TUlIQA&9@8I0OAo;vD*GKXE2>eC5#Iqol85f7bVZ3i>h9yWpwf6zr?wJoK?O zn141@p9lTQ($_-u6`sKAwioB2-$R^1{RfFX z#5-Q>g3lJ$(4V8lY49!LEaE*bE@1z>A$Bpo>hnP!_H}la58CsE>^!J+%M8IwRg`;u`!%i7PnY7R5F6*FAN{{(M^ObPvYQEO83_jo1Y{{WPAy z-Ni-p?~>vi_TTz-Mt|)h&cOdTv4i>Xba4Ugy-1uzz7y&U|GUH)+&@eg=b-;soCp6X z_P`5m!1ffttBZ@^&BP_}9^w?{tE0qa=+6~bz!St(@B?B8^TVs+8uTBDJ?y`q#18v+ zL*`q>cw9+b1J{q=6vp#L(wCthAWq@>ac^-2f1t`Li-1bvl##XY%lurXz7a>KPQS^*k39xWB=VK z&fxrhr#OxJ%Hk~auZnZvkHj_f-;d%v^gT9adpz)};uQABMq(HHV+U~>?LSIf#r`;3 zoWcF$E#gY(ex-`*%jczcFrR-RF2TOjCd@B`{_8Eyf;ScCz`Kj{;3LEZ@CD)`_!@Br z`Ain)!EcH^@ZZG+aDD%}O9k`OqMI_`H2SNq&!d0Vl->mo5U1fkSeyZ$BhG@a5@$m3 zvmwsG{vO$9F~7Ye&O`rqu?Oz98S^h;yssqAV*l(Qu7C%L3-CWnTm)YyE`g_r%iy=f z74XmED!6Bc`P9ID#18s@XK@OAoY)1A7w1C#Q^NSYPkImg<1KLw`X9x4_%F0M^T}d- z*Y|G~{jq9YkK<>1aT(+JAaN0VcAb&$1aS#m7MH3nBJkKUMY_jL)~k1?Ybkd+6V#w`6;Y z(61{lfp-;`!N-Uz;4xwc_1z~M$$JXjEa366E@wX6{px;|uM*P2s z3+VqV#AVpuE_QHyJ}a(3|B1K?j`n9hHLxqrqrQG(2j}PA#3}F)u?s$1oI?FKh||zN zB+g-cza%b#XNetfy}vW?k8Z)K3SYW`!5sc;eV6Z z13w`yfM<#`=C=2u02%ZrOR-Zm0D7>|33JcGWpDeC`Ul&)wHE|jJmD-N^ z6|n!;5|@$xPT~^w=OA$ne4@CBc$bSS@PAO8!~F58xC;H};u`Yn_9y03gMK-&1O4XW z6nIZ@8vQX;oZj4nST+yQk^k= zw-yKQa{cq)@)0LEpY2KgAP0O3*}jf7(2pXIr2Y}|RpgJ!2a^}v0r@;Y?oB?M@%oYv zrG8`bVdTBYgUN@Jk0Sqt{3-c-a+>ikC)?N52Ki4UA4&VW$lFu@2>EmBUn3tv{wui? z?SCd8PJQ&>8}c#aUC76h2a(?#V1lzcY%XYyZYzi1ZiJBRue z$ZwH1AfHPfNIs8zGU9mGx95tS0qm)Zz4VY zcPFny9!h?m_QT1ykSCIFB|k{Mo%{~@Zt@r8$>dJEAit^PmC0rD=HzMQeaTOg|3aQl zzJ&Y?`9`vRk3+D3r;_cb5CVRiJc?W+FV6Ny|BU?3BdoXUQ9rA0_Wiw(pY&+J78*F~+}uJdXNn z$=8zaCy$~1bL5N3Gsu_I{zvk7@`Ae|-z&%~lCL4JO+K0NwkID)K9IaC`9$)2^dCk3 zgj^yIAwNt0n*2WbIr2ZqamJ7Bj(oqQelc=S>enXkM&5$F1UW}On*K+T?Q6_~{y&fW z3iX$hhmr3g-$s6pd^-IPcOlzPMg;jCN}j;_ z&mxbeehj%t{q^J?)Za_Kn)*k{*OT8Q+s{S>_5F=(5AXy$-$3NQ9C-=ydgL|9lNfJD z@{Q!dIagSq5f#{cH|Lc`{|Y-pXbSEQ9pzH5cPj2KTPhvH}d;4?UyHSMP7&e2<^8aUrzl% zvi-zqQ2!z1gUKVv2ho2V`FQf}%*@^|D*$zAtFzKfEVAiLy^$uBVe z&gA#WgUMC$DdZ2x7m;5kPayYW{1W+9>YpI5O8qDB&*?y8IXwL)WS&a7kY6EhO8$o2hrH+@A%3i$nRU~mm+^hPLsbUZ%h7xygzw3;~hsnpZc@OdFn4E z|49AyPgZvx$TkShD@RTws4TxjT70c|P)Wa$$m~Pl-0hHl zp_j1V8zkFLJHvh^{p|Os{Vnw{*eyZ&Rr!APEeX5)4Ct%$vmZ7KOfq*tb~m!M3#Uph z)2|+fFG}=Nc{h7euu9##5vSORd432ktPU{^PAsr^DB~5DcF@ihrYNrIQ0zJ&%xgo zwLgD9laVdr$<&i5 zm(0^{HS;^uAEcqJ%=VSozB1ba*XU4^+9Y zV3%JP>{i$g#$Vm{>#Qi&uZzO2@Hg1`ze(?J>6aVpoAnF!-#lpK zzu91~)62rn`v&nn`dj(va0@=s+%hkSjN_^XET*D?bYV zHoGDym%bqXpwy0=d-3AG>-QvCjnnM=w*R~9S3mx5)$h;S{?@Gi(ksxb|Gn?yL4o@% zo|v_a$7=3hVgM{6(pH-R0vi|j1?)n@0{ zBD*EbPN&C1WM>s$V|M=aitLs&JDt`%+I8Z3C>s z>%aErjccu5e`;5~i(6TEik_KBO=^~%0cr`+nhqqf%g#S!9&DOx4?dwIMpfOGsJo5FBYf3H;O&PyF*+AKO!!JpBGoaABs!h zn%G19=&8)V3jO@z!u&ygy~H)>R~Dy{e_CAb9@uXxt|I<+VsE}cKTzyKf3(;^eZ$2r z;$JLIL4UP41N|N1EchXD75PjT*HGWvVh{G8iVNUh#7>tW-vv+8{)K)yv4i;QiBsSK z;v9HSaT+{CTtins#*55#%ce|%dhCC-3v7rXF( zSe(W2HcebczOReZ7@r@CbKt*=Ylxp5uJ%K}xVQxFEv_Q|dg3z1%O>IqcpGsQ{jpP> zq2EiKhW=1-4e?JEr@98??ILj&{dJ`{4gJmH4EO~NzMZ@^xkTQNd@}h+@*U*U$#;?q zO@&n{m$WzE0lHVY2OP)#I zpL_=SB=TG23(04ZCy~!4KSh3<{1*8^@+|W6I+D-&T?k+A-?QeZkJ;;}{S9hk@AKhp;&nAXn(V*!|4we>pEUN!{%im5 z9I{{kV)i$(jlIvK$P3u(p7wWb8+)H`Ze#D~d^@?Dz4mzu*{{oQ!=q&XKHcYM$$tDL z?e873@9XmiWZ!mC`}?Skzt3B=vF~pD71?jQ&p)>DU)uQBHvT?$z6krxA2hw}Z&9+} zA3iTl_VZiF{?;V>`TN|D?B}4Zf_~uAkh#5J z*K=>k^71I3v@GPb6(NUE4qO9V>JFKi57H$Ux>3IjZVY(ZI7shO$QsL2j8kQt?=PnPSjaTno%;}Z zRhVbyBk+KmVOO~kascJ5o4_L|$4&z0AD}&DiZXpa$_L&DIq4qA+TG-PA***n=2Siz zJoygD0UWovH2N*SIHc2y+y^qd7G!2^$TZ7~Yl8bdhj_Cn%P)|hXFVUI{mweDPxXZ? zs2+~Tl;m&l>&$WBc7c5+0_jE}`^6yNAeYJMILap_D3g!_J3&rk{NmThEB_7i>k55} z<@()O{Z6fZA638KIfB2JTBg+RyXtp9f8%_l^RUjZv6234>^SpN>b$J;=MpSmgK|Ae zoqsnXZ%vt{+>3G$rRHF0rn%S zN1^?feyuUcXEsH>053MBo%Vl79lWpLmu*2i&F|rSoEeSzRPOh$YW|te9rO?TW$EXi zciV38w)Z~5?PzOcub&R(6;jvpf0lMS4(c5ha?tNJx9X1%7*EG>C`>*4CoS>|`*pn( z`%UN7F(Cv0dd1%spq+jf8KtxTul1kvII4v9o6C7z-4C2TX7?Q6CF?+E4Hwod=G+V^k^JGJlWke&9Q;<|h> zqlumB^LV}D-y^o&dK1p4e_LJK*P1W1Kica2*BWomWjL;zjZ5XznRe<=Ti0pW)c*Mt zkLULWqc)HoIOpTveLw^1}dq=isLw=2WrFn$6Lw^1m zMn|?ULw*{st$cq9`T1)G9obTsH@3)M>*&a~e8>-XbFDr5h5W+vMzaXpg!~$h%4S}U zvvbJrXa9jI+nReovv0^x^Ghqg!SqwR7TY8|vo=Q1{yjG2m(>K?XkI7zoe}a&u2MH? z_l5jMhT1phEFA~E_S_g6s^x%zknPc2T$hepY`D;QhMt3QJe{Q4!8V_5)6K^)iru>Y(2U`l;Q!bkJ`a{gls9bLppKkL#dc z=Tp!=)pzn-`l-I*9rRQCbiO}#F8$P>g%0|ueX4KlT>7cL2_5ts!2Yyxc$(igFU+N% z`ty~LpUT6s)qSmw#~xSUxYc#4+NI+y%XKA<1Jxsa7y7HbnOu){THgxWDW6Sfr*-OZ zKGhcaEZ)IU?FTomWPcZ&1ive*Mx#0BsN;v)EKu^L2q zkmCgPcfS(jbTD}t@*(8)$On_RAcw*^UD)tNu0lMm^SR4ny-(|W<>kQX6(Dnzg%!c6 z)gfz?`8B``GyYnk_(kd!Ka+-ifwD|lrS$qjpIryCM44jzokQ`f)GK~zUHY#FnWrpJ zrq)NfM_Hj-7w5pci%Z}k zbw+*1iSuAjTmzpkE_4d|W1QGUeiOxI#J^jdg8o5q1^O4nRm6KoTmpYCE`z@nSHO|0 z)nDN5VvqeNuA;ux#5M3b;sSURv4?ouipz+%r??6pB(8vu6+7@BE>3|9;yn0ru>=2! zVi)?!;u`pIaT@%*IE(&$Q=CD(S>i1CdvOl-U9Qo1N4!PEF6@^Pr@*U-^YGt5oQ3}Y zaS{4m#3k@P;vDSjzi(j2UfXSuHv< z@|om+kk2A_x)%L&HhD$zDdhFY=a9D{pG4lBJeaKSe;PsFmwJ2tDaikD@^JE*(HKK$P1B=BQHljp4^XoE;&m+fjo$O9{FUltt$rYxrl7f zR|R|xc^FyWw{QV@GWC~`r<3h@$-uu#K7;%X`Bd@(*Q0$Wl2;--p=~}cK9* z$nOHF^GTJQ{WHoHrcAC4M7g(Tqu#!MCD?8Z#m^nk7(ag?xHzcMzal;Y;fgz;Yw#m}Asz4|A8D!6nyr1Gnh^XE`cDSe#r zPrd>BOZ{IR(HK8}E;w}_WQMX#nY#ex1xm&DKd0qyw}s++7d6H&ld~gHUZkv2rbnSX zM~SHRektQuLh&mhJK2{P2rSytF-^9lL$zBS3^}lx+I5QS9PgxuXE{=yR zQHJ9$@h`@&UD1Ag`#z&!)BEw-zo{!>ul!wdnlek7qg1|Onc(s7lp!<6vw~Wi!etrHZBypIEYiPBS!)t6W450CX)C>r zJG_V$_<#Q9Um}-T?%xONUf3_syaW4id70(@{h#guefuiQU3=~S`CCx_F5lsoUYZ|_u_lz-5E9GB&;#rOaG&9B#;0sFMQ_W%6NFE7qSdB$G*fBqJf ze}wX!vH$09LHR6{d&d5szxn0$t%ff|Ig8`XDdG!DE)Zw%MJwaP4)i5)7W${fIq>`9 zJoqcI2aZm{@$VGC-NjYJUsRkyek+NKuwP4@g8jzg67<`OUFfso65{P6_P_^~ZZWNc0&t!2P_AiPH;E%*ve4)wLVh8%jO>AEZ+)bQ@eGjn< z{nFwhcqMTT_UnjU@K$06yrVb+-dmhTyhFtG0|PGxar!u#`h&=)l82HnB-{06Fx^~9 zw(H}7Zy_H{eu6xN{37`fa+Pe?$ASMZHLS>)k-VG}*3S174kc6nR6k-5&({ zZODg{_aGljK7ef3&w>4sw-?sTf3V?OfdcK^@c{P`&R1)Kw(_q~o-}{|&)@v`)f&pX*lYjK-~4iy@x%5-miuQ#oEd4)dOKUW z|L1SPe9C(L_rdjEc+f7^yP%c(fBqJfM-~rWhtFFTmiyTvW7rp>uy?K8|MNFLP9cW! z@OdJYKzYV&{6By5?Ngmlp0n5fpT7m=T~Y2C`+xoxl+Tay@c!!Aq}**%j)?X@lMK4E z)2*7{zzd7B;FZO7N4z-I28aKrZ9CfS)WlwPtz@mJQPIk>gZis~=Xfou_4~v>7F^bw zqb#+^qufH@tXlUPv@b{5%&w#5dBwT*zo*|$xE*A3;oU8!fUez;8ipn|#uUg-I+R?mwjOW1GjGN>;UrhYHbm3DgHsM+&hy=2$q z`7f6htR%Z8?_c+(o!*Di`+2HY`zKAi4HU0Qy)<*Y+Z)Hf;;0+F?&t@dlg7>m9>@T< zsoxbaB(;CfXFhJ!4J<~`PW8!7q?JcQ#ZpBL1R zP4Rx#cVN7hxnFb*qPz<9SGn>@ z^Tli7{*pmRZq9o2{6|P#pFeh>osNrhLx#$0i1Kdn{7X4BKGhDzDKCKj)_l@01@6as zKMJ=`j-kB5;~}K3w{Il#ZZ$uQ3iU%cp2ovXwA1mdaiBDdY>$7gZM&&`zlPh_)~LmYJ{SrPM;mU-@p^B40hPrQw)1sq>v$H`1mS>^vY*R=960%?X~wif-T%XE7MNLO(n4&p39+L=_R#0 z!u=q`{;!siLK?^3p}**N~a+m~8&&h5J?+&*<6rSiU& zd1p8uji6rrDZ9IASK~O5osKuzO`%(O|hycqgV`{nU)e@USLl;QcI*?9P#d1seLJ>h&5zSCWp*Q(4XR9$_3Sd?}- zo@bj~kF7?#6tAbl*CB3C-bPQYWEMyTLEP-m-+6bana=d zK=p<9N4TF$P4ab_PdDBlhtjO$Y}eZErk2G1Q+Zgf$#!V%Q)`{FYZX7=BK{UF`nxCdZ+88mc{WYE zek-?s9I3xHp`E^$K<5eRE6lgqcpj*H<)DtB?C9|~+c*lvQTSHv*SH@R>ZfqKJbu4} z&QGe&<%`4EuCQO3{n@NPE@r)9ze+74Ng9f=D`E6gJmn zokRI-!*u}Jho#2ZK3ad^I@ySjq3n*OoyKjre`+oAxwu6>s`hr;wd$Wo6_5R+`9kgY zc)u0yH;u0abib;Ko5_0EXU z{h*pzWIo~JK>fD`{be7PbDK|i{ET2gjU&a&vEDN8r=(Y2SzdRB^VWVnzD3?6s1J{0 zwNH8cUh4-=i|frwi+n$!UgJ;w5zhB3#o_TFJM~+kMIIaTdPH$`Ju8-MwGOHN3$H`U zKP=r9aDLM|ael@2&)Ym$Dckw+sytj+Iw6F)aPHD*$<=rEMBkU-9~#~ zQwfCf8KHc59jwp0HnYEs_QQBR_gstiPNe-<_LqJhrCIzbwC~O9tpejqs2N&E*E(K! zUahdc#;ZL0z9j~Fmi5%%@K6Pm;p>V2sr$7V%uDM5Bbbkl6PMiTKB+hD!q??GUNpa_ zY4=sAUKZCyKfd~bcAA$IPxD-ccE5z;sXhhF^ZF)Su6bYpuWv@EfR5V#ds46WyDp$! z{Up0XX{YN>)gP8c+Ns~QE+;$1n?yUcUv_GT(!D!mr#MbJxu*Ymp?kQFoaq|yvUP^O zk2ni`e{r=-V1Ix(3;PqrIq)UoJop;12fj~S06#7+g5MLDz(0!1;BNOa{|b0HaTUCp zxCY)p>~sq9?=Mb)cM<2%-h;(1^rwr{;LF4r@ZI7p_(gFJ{Fyj~_`itr(5LQWd(z#4 z{FW4Z(61*hfOi!a!AFWq;1S|7_*!uV{GhlBeqCHbeqV`e&_^aSKc{n$UpH|I+*|B| zHxQ@6S#bt@pg0RYP3)rnk>VQ0+x21x`m#6&|ChxD=)VxV=+92~GyfX&D~T)M{^BzD zP;nJ}zBrHiZWDXp=fwr^m*OIL{s&lp3A~254BkOp0Us`|g3lM%z_*C=$nPbwgZ}zT z>_Ojk3hPfnzpA(heSfio{@O#F0uK_q@IOYJ245)7fUgo~!4t(f@Ppz!_zkfK{#;xD zM;~PVMetJMH1gj_oJYRfi%YN{Brb!G5?8>diZk#(S6rVs@!~-H%1-~)Sn97P-$=fl zd_TEJew93k{3ZDya;K?i-(d3cpTLH26qy7JQ;O2R=_+K)f;HBKSJ71N%G0W$2#} zSHQ1}Q?Q>Uu0sEf*o8j&B>SfZeM+2xzL&TJ-eXTZNuZ|586pF(@>d>Qa!WIMkFtlzu0^I5?9y?Z;K1+3qzxAR%R`n`I)J_xuk zKE z;OE3e@Q30Y;(aHsfV)1;d{VIQDR#jtinHK##Ch;G;v9H4aRxj@Tm_#ju7S@NJDr36 zD2hwa-!3kL9}-uxFmKv2l1X1r@?QF%dr1UoQ3{paRvH?p5gv0C4+dYip$`&#TD>o z;wpG&aSgnu*g^ck;wpHU*g-yLiZk#ZC9c7Kyf_Q}?P3@Dhs9~|%i;`prZ@-xZ^e1= ze9yA|9(Z|iXb0N-5%f=A>TP}tcpI|KUjgq+K9YPS`6%)kWSjp2`y$!qhk)-P+x!sl z6J(no0)C5Z^IgCnlWl$s_-FD^@_f&seKubP`en&BUkAJf*~WLkTa#^k2b?3@_zw64 za;STp`(oh|aCt)4;6>^V%5jkGTmQ4PK>L4|;MHW-qwn_*>%&}ToNAMJVSDidE!tE2 zo!YacRp|d|`)(QRuN7W|bbEITROMA5)2l&NC~K7YHBeq#6Ef8Y(xuE$W+^L_P8xP; zN{`Z63+2iy6=IclRJ!!fbui9Y>wo`G+a~Of{(sPZ$#<|_YLDdH_KW<&vNH>|eF@`6 zzb_HCOR?ZjA-jka)c2&^fp*{Xd-cQd#O@}I<3;Q33Y*^)?~7@d&LS5WV0G3L_VYG_ zUqTg8_NLsGej#-o=e0lT0r*1wdqB9~LWb(MK`rcD`VFStfDGC>Tl-nA_YqW``t`^b z?LV1%J?AWcNww?rP`*wMKh%Ad;`0Z*ZxR=we^6ZQ6zrlG#Rc$N;v)ECaS8l`*agq` zGRCiy1}`bjfcuEE;Qrzqco%UVyr0-ZzIky0e5$wvzCc`t{}tjY^mmAB;Ig<3enDIT zzbnpwKNIJ{--$ic7k`EAcfgB?E8rExDezii?NCZPp9lLRL%m&}1iT~Jt_K3%k8IZi z0Uu1Z>yLm>A=~;{z@x|~ktdODy)4i_Ot$-{fL|lq{ZqiR$aen}@NeWHWc~i4T|Wi- z1z$yf3?=s_+x1DH-;|su?@YGqwLpIm+1Bd<9!j?BnSf6x+x=U>qsWJmZz9|EUZ8)F zY}Z=>KS#FfyMR9?+x1+){~+7_X26|Z)BbJTVY&v$?TLA`Mw!~XabC@ZxVCSjzA@^5 zKNa>v{h1tO{(yPQN9X$gU)#Th?J7Iw>YvsB@85I(9yM(FfBn+#j_Ut^{nBo~*u49H z$5A^yyY^&n77?SAExl$QRXR& z;-jIjQ947x&M}ZF%FMCgBBk>Gy=C~iySP2B$D3Vu-_L#v`_<@|WP;Tl5XY`>f=&G% z_Dk&uJKZ0RAh+@>(Js#T*`3<2kLuaP6E|T0>vssl2D(3Zgzc@{=>~)jsz3aET(fu` zy)O&jZ-wLOek*)G8@6*<@EF_C?Ebhn?Vbs@Hyn^${R_u!6TOPnkN?x{R{gE=bZOYC zfBvxT$RvY>#aFoB?ET4rKNMFw1^k`33hw@fuE)X4iBsS;#WnE8VyANuZ(DH+yt_D$ z`VXly{D+AP(4Q+#Lw~6_1HM6=1>Y;qfu9f;*?w^e{H{0${#;yy|My}K-2F}VhX?y! z;sW%mi#4z)?S3rikBzCf`>%j?ziIcM0qcHqi0qF+eTR|<(BJOo0{eZ)2a%T;2z$HV z3iL-&Z})Qn>wfMqvhLsPel5`Je$B2E0zQNOcE1_$NOGuo!MW2v7nCO9cz17vEK$n7 z65`TLjq^kL=0+}sSaE)D>E42RbGJ3t-{E>P$rXLu&)(wr$bo+nyPX4l@@?u%odRA+ zoQHjHu?JpPTm)|+P9xrS;xgjxDlWl(u(%A)i>t6dwa(Cw64$_2)EV~Ii%Y2gUascNXWt zgTx;Ej~3^kKUrLX{@gkve&>^!uLt|9q%Xk!R&i)x+4@N^9v-0Hj<+NeUtqr;In*7&eg0+sMPO>aK$W8`P*y0*3qoJ%0hw6{(z%I# zWOre(M_Hn*QRWt*Unmie<=I8s*UQ{p4EkCx+ART@r}QXmOQPIc8nUnq?OaI3t4o%< zlo`tEvQ6yim^%~t^jVE|xf8*elOYQyHR@Gw`kf}_%b`5C0%T?-$g#Gs{6B4PbHBbv zSz85m)m0&#)ge8~B4uF>lo$IzmMF`VRmx17c9bQ`DrI&p>M501nOvc)ZUno`#*nfL z%PjQ;%3=%qu)n%Sw*_VX{AEY%N7SFs=T`MhR!Y1--c<(t`UPCLCnAHIJs^7rY(<3jBk$h^bjqWoWIukJHd zzsnc9vfi*?E(gDG9;$B`{hE!Zzc3$to+xamd`@m*r~W=IY^R1OAu;9nX7LJEz8UznHnM{unYvh`8+3AVRill>vP@cw8gWJA$IT%T$-uPW}6tY3EF z=4m`MeLq|V4YfN?N7u6s2-SaaD2~D(LA#zjKgv$|YW#%1pDYxvj`O;HSLX4RT}_|t zMaWy2-y_sd3+Z2{{!!{Pt2g@pLj7aZKi)+DIQ0Y8X!KwH1I%MjQ2#~~{gc$6yk?{S zw)B6Bdbdxb{#fd#QC|+}FQ@)#>b-QMf0_E})Nj95qy97MpP_!qwHx&d&OrN~r9RiU zQNJo)2Srv7s39}nrrQa_&hVe2*eOMeCRtFPavf0+JPQXlWvzWyre-)W+s zK>ghtH2Qzc_|LKZV>fKn_n3+Pd7k>78?~>0LH;5A2K28`zrx0i{s&S2BK4(^{sQV> zqCT@pqyJRuU#7ki(tk+(E7a#UZS+rli1xio{gRutuYZmDH$wXL>Hj+QS7aLfrGJC^ zV>fTq5262?)c4z>Q9qLUx2SiwY+wI2^-FHmsGmarcc>qc0=^&u9F5slR2XM*q90zmNJev+e6AQ@_v7?dzvdzs@d=`nMVXLF#+{ zxltec82vw$`h|CG)UQVUL(~u0tx^AH>K~^5*xeiTCsF@C_0#rf)L%<|mHKAK_XpHB zn}23d-)wx%q`ukt^F!*Jou59Uew~4h`A=v5A5&ip>1)(~LVdIOVHWkx=7&$IPw&}S z|DvB@|9wIItdM?V>c6BuzgMIGt<;a>g>h={M*Y&W5dU)O$2QTAr{3MC(SHE_ub{r% zM1LjqxqTb`htmHl>U-|jzJ3Drm5}}l`WLA${#T>F^jA}#&o%0wr2jS2@87=uTImmH z)Ys^Lo$5cZef{;+R|Yledwq)jzk&MP;P&;Sd1G5UxKY0q{STqkdGIK*&P&IUbsjm1 ztnO(5&May?nsQ8$xyU3Ujr*D3drb=@|Vtm`!U zcvf%;{}{{d*G&R`L7W0t#V+_8ab>>1KK@tqzf(oLg~c`SisIY?f&Hf9R4U+|#3kqt z7MH=p#8vPJu?N0XTtK{u;tKTlh^x>)Dy|{_m&6(HOmP?7r`fq9kl;qvDYKW_bzb__Rosb-2?sK#TB$~p)Z)P1OGMa+%>Qt zAWnhzuQTjV6uZ!m7N@~waR&UkINLdhzv!2&KL_q3E+GB@aT@yl#3{7@SaAmWi^Y|0 zLHvp06pu%720T;jf`1j~z^i?w@d*Bt*aHt17r>*$MetqX68L$shyC%BxBy|+4XC+AMsWbd*I#01@P(O zBKRh834Fh}i27a?r_r97;xg>N6}!l1{=YGw3iK5a+;u7N^jkM~PkVMdC8@ zxmjFA{K?`P_+@b(@&79Jz+Jv!ei^i9Rk4HdxQV!e`gRl7z=w;g*xzS}Q}7=ncELA@ z)8ISBIq;L>EasyZ#WnCuaR&C^h_hhl@7n*!Cna{!URRvO_)d#m==T(-!AFZT;1S{! z;!hB};9JEW_WvVd7ybLX*y$9E?~lYD{Qo9SK_CAI+v9>46sN(0{iaYF`p`U9dQl3uQ-F_>v(Y)`JOE>ce;sW?IaS=R9T*LUjQS6}o z_lYy$XT(|XhvEwSe-dZW-flmzJvnesaRK?RA}%6cKXD1XwKxy|f#MSU4;B}}!^AoG zpCzuZDC31aPZ1n{f@+ahP-wzYmFHAmO@a*9utA_u2Q`1iU=$&mnI>K9#&3*`DtS?DhMb=acn3;N@g} zo@*?5FZ!QN9!j?F{|Vyh^Ii7+P63agemwbFvOOOZ=pQ6sOMaeg&kF_mFUePtO1RKRPJJ@OXh>&Uy1PbVKpw&$w?|D(xgkWVAq`%;1aV)AhE zBywoFaNcQB9=2=789ujDdmGQGc<)12DJvg>%YTI|eg>&$a;nq8*=H!9g;agz5NDrj z)Tf?r~z7l!mG%arLwsHdzgO700+rEHdebqUzzmW6ayqCaJhGP4TG-PIw}YtX() zVDA^SvqC8|_g9pse}nWWE0n+Yb7ZByY|pyPw;$yuklJ6R`M~b{kXgz!z6Qw2QvRpz zuVMu4E=D1>zr3{@S>=*{wEg9Aztt%JQ}{P%u>4BqP&~+ ziT|f<1NO(J|DX5EX4WVEpSIoDAN&4`{ZeJW|K8)J#<hee0G;D5XQO0>K~66&cXHYUgnp`{!<=L|#%amOif8V9B4xsqeb6{6t{NlNd zah0EU0qsUY77Dbx7_u|tkL(o6pL)f2FQFd;m&vJ7D9?_8EK*h}mH$UD&@6y1LZGF=r0 zY@2U_`&#=gRi3xF6aOE1Zvto4{Kx-aTYC(JLfjTq!l0D3i=+~UiV#LBrPL6LqG_Xr zjI{`j7LsDf5?Q8fk!6y79YQD>vV`#aob!IZ<~#HL&NZ2D|KI=rc>M3f^t#XcexCRF zoX=W#Z#OyAIYvmIyiIUY3L&2^kDaD6w|ads`o zgT}kLj08y~Y!b(r#=E(Wvr+VojFfZFJGyI!K6mfnmUSj9TlIJb;^W(8p z=AWDw%AZfilzCok&c5Tz%){pFdqbJN(Og_qKOA`BmiLNnSH`R5x359i&lTNDoOdIA zQ$gOGeRJun{WgsKmiL;CGyC=OGURmB7OW){x7R~SG>U(vW`Q4m->xaJ4 z?|Mb^5aodx+lPM>iJW(AyE5M`zkTtGVQl>KKRePlnupEVcPIKLH*??7W#%DzAGW#X zVO*Jc*qnW@DKih7v+pyZZ*(l^c`*z4%mr6lQZ9{sLf`0A zqTXTn@lAb;S5>WVE7vzVCZe1A7JN~)zAehkL)1^FLG>;CvTA+zr?0O2{QPErRkgmE z%!B&+`ORNlwY~?qz5(N#<{{_ns`cHk%sfO5{ru*BQ?6;8aD>{CY-&U<}8|FcM z{rqOHsaoHIUEhH5P4k<%wrYJ3Dl-pJLqET%@2b|f9pf#19!Gb=P2(+2)7Px@{~ki$ z(&N|lEm~Lcc++>Z%Axd428>$jeSpSW_w82c^N{sp z)%x!1=0Wc-G{4F9RqK18n}^NSx2>Cp&DHn3GV@UO{Y8Pc|7V+rqF*i3T|Z=QC_i6) z%FM&&?Ay1@JZ#Rs*=`>6KA`YV+pfaD%5UFrotW(DTKaF{R^_iF&UN#!x%&2Y^RT)4 zo*A~J?E8!Oj{%0qGVFg775?{4<+raB=ex?Tqs|IFqA82?sK5UDp896m|8^==?6#?W z&klOozR@ue-PE_FihX;99-4=!U(M*Ba4YRwvugA3eYkLn=0IQiJhh~@^((AXzHjq1 z$5}j>GXMNorf>AHK2KHO+`3ik`&a0z`HjY`&$-k$v2E4*{_Ohd^-Xyi zZ^m|28}A>L^exD!THoiw1zFko)p=dxO>JMbzR`I)+F!aZ*<8oj`Z9f^soh-1+272s z#=E(WvtL}_&2^mp=KF4@<7{IkeXDw$y~J^*`Q2Q{*$-j7(Q%dxUr}zZH zbxCRmJ3r=<(cDD0aTb++zB4#@I{%ivE>Yj?dgaf*o7#7X>#OS$^-b2VTHgypU(G|b ziMlQ+?Ym>u`u^eeTV~We+)C(|y;J$V!>wHDzk38D8n3>#498t`D{f)^k}b>konYnv z+Ha|S%6rjYtBdxV`fla=<~e^;`|j)dZteOOv?@Q2P3_yL%vi(S#1_8qzE$g+7yA6u zJY?@zwZ1o0(l>wqs`cH6d5F%v(Z1Vqhwx9hWgTGsN=SP&k(dx|Tm`qRgUYY}@Zgkv z9&hFP7CC=Y`yT1~ZtePJw<$l4P3@ZueWUG<<{`Rm;rbRGT(!QfLa(TA^g3U5ehb?E zZ}WRZG{!Q0HNWax)%k7j`f7gFx2p5onC*||A-ZXP)winidn3;a&99$_jCNJqZ#Pxa zH|vn9_5CGmyN-uw9(LgSg_?(gLpQB&v~1a1lK?t?l^h@ujsyRsbj2P7OBTK zHTMjn#v5f97R>2jeG5tT+nPb-A8YkgN6Y-#Er#ENcsGs&*xEuG5vY?A?e+d~q7Ts#- ziDQ`d-*ZDH>Z|MjXw1>=f9+c{T&G5_nflWE&BVzz-b^xHS@q-C-oL4D z#wq2GhfVEU%k|ag8tPkA#lAJl%tN$k`W&XTZ?~$AcW~Ihnu91czeU~Y*Q08EFA9Bi zoJD;#zv`QHYSsDYF^RYJD#(GY@6wSA8>kR;}+)H(otI)VHLHeY3(Kqvx2e zOTy(ue9JrC##v1Aa3YU8mAxJ(vT9X})NktA&&elB>cqT3oHDMxE%mG#alL^!&z9d) zoU9$!TZdY`@e;_ z(73%g*T$Pw%GNJioNxUu66e_R*NF3s?-1u3&leXMFA?Wi{}03k)_;vS*ZeJZVEj2Y zA3KS2jrSI3+VY2pb8LQ26z3YBE6%g!hl>ks`zML>?fA@liS7TpGuRs*57X$1Ap?2jVJv5rFeWZ@Q1?>!H>X&@O*d$JOf@0hwGrY-(T?gu>Sti!*IO@ zHa}zGec|x;isI#47uxtH!yV!9_m$%MVff+iC&k!l!jHmVzzg9Y;PCg1;(m=A+V8ja z0zd5Y(s33&{-1G%=W@JVejdUx5kKzdA*A!I078jneqL^Z2YS|Fb~k@4@5w?(rm#-|Zf6%;PiN<1Kl-MM&ME{vYx9 zJMQt1dHh}X_!kubAHGu5&k6Ul!ULW`o6IAFTJ9EYTk~>{R1AeIUqlwC=@%^> z_0;Xsa3}n&#zcKRpqy^wOOjcn%F0x@(_auW;-kWs`e|LoTK*392N~3Iw^X30Ul#S~ zxiTYs*;(~JW6!_S`V^8SWVvPmQsFDSHkaP=L$5o+SCU6GzKpvV7nx0#F36o!$g=&S z=g8&Z%a1RY<@3p+H2rczzvA$vTlCzzB77xzK;tW^V!!CzacB6-bp0}Bu)Sn9sc|TC z!<}M5$mpDNSNKZtn8ugO^8a>wJB4lSRl)of&@YwGIPbPBGnDvlUiddJoKJM?9D1Eq z!TfD%zX`5im(c6%@a5-kQ~ULI{f-a4&Iw;B2CVtp)P9{@zpkNIbkq4I?3(zNG1KO& zviX}E>}dY-@lT*%(%K~cZNCYwUo&1?QuI?~&$IF6k_Dvd%2c>hAP9L{=ofwI)})a= z^Y$k7xUyhp&5RzYI7>Fst9a=O9&KRjO_3EC|LUP^*Qdy_<|MnJt+#|s?fTE#UreuL>$D6KQ9gf?)oO*jQI*KFjNauB<-hqdtI)J{^ksb#UJLJ#2e(@#+O9 zI<}5;-Z<*Y`oW3z@$t@^gs0pwIMIIV=Db_*lsn<|a^5|7%AN80I`2t5Wdppy&U+V6 z*${7-^S;JYM$d|9J93@35l`^Sqv!DL&TCA) z1sVOEbL7o%UiBKb-UINW&mALgw(}0gI|MI@cc1f4!#fJEaqud-<>7U~YZ9dBx%q(W z*Nu8FvS~%l!ef1@4h(y=3z= z-hoZ+`Su`Qi{M53V~HEzLh6gjmUu5ZuZa3bWb`?1MYjgb%h!0(=fKgtEO-5Wrv4|n zZ*ZdVt#sZt``B@{ExBKCD!T1VUAcddqV>M#`ZdB+W(FsEeiS>eC7$vCyl{ zc*=Ho&7C(7Zy|X|@S@lB1Dv;l`iJD9!HM=;JLmmQeVbNxJRF9Xa$W=K&B()pSJ5q# z`Vq>Cr0`f5>Zg*?&)-*c>rH(K*}ftvJl2NmtJPdzrNU#;ao@>p$BzT-xEe{nqk&(6P-7Z`juoCyc?Z2jrtt&c)aP(dy@JxvMb(f z=Y2~3d-4Rl1H`VQWi!HdoZUpnt& z>R*t(f>Y6L4fP+%vnrCpW4}>PWZL|loyMz9y$%_Dzbm@FU+2cRJ@sA4Y`h1?7Uhv?KpXnzTxw+_&D9gc}3JeAj9W+72dv}zK#r^-&J_qKz+*tZ2jSLy$Wx2 zs4H`V6+Mrdy74u^+lRa;IMMY>E9bSPo+6{~8CP^$&Fgt*yrDsg_S-?e-*B7f9(b1o zCt7bi=UrIKw(~r^==--(zxK`x4{g%zLi&s#qwfVrpVf45{jQ~cGZ}pkG`e2v;=DVk z&nCmq;Z%5=PyG?{iVCen;wkFSlOxi2oBHsp^jSfMpWBJwH=g3Q<8$ik$?)?#@pflA^zgwKQmijN`HFz_e*We(V=O*L?y!)Kj zp8B!mM7)L0JCFJRauVLt&YMX6dUA5`qVvW}&YMsDQS#d0M6WYN&MTt+0eKzXO6UDR zJ<-~>dkWq=&dZ?QfV@6<(fQzg=j}uNa567A(f;_vdEKe^A#cF@+Ib_WPb6=|`_Xyx zs4pUK!rSP)_o;tN-i%l6p7O7Q)!Nv6>_pyzm*Knvs4H&`UhVL;i}TvyDW~G?>AbFZ z%4v9+&g+h+ybbR#=beeCydAHj^ZMc`r{kUMyi4(vcLXmwPJ20T44(2%yuQx64o`Vk z@S@{ou=DQ3Q_jE}?z{zf%6z;r&U+M3d3W%l?YP!?i}92*@osV6Qat6X;6>-tyPWq1 z-uvWiynCFtj`~J&4&DRKdz0(ah6mg6dQb2wx;3M|KY4GEqV0Xm^*e_8Ddb$dXPtLG z^~=cn@Rm7mGWBWXJiHaodw}}mofl?#FwohQF@-Vb=n z2k=Uq_a~n6!Qe%&tLvS&Ra@H+$^yLKomUgD5&2N?qT^+Yd&{4P4yCSq7_X-D+T(R5 z7vgR2yzbPq$w%-SI`2a27m<$!ucF(f)JKz#1!;@$)!6mBf%-J^@!&-JqlxqGr~VMR zC^*sU%%0ABocdGb6TykDhgv%CCF;s2gA>hjrt@CIQ!d79=e(78?~_jjFM1xOoL5X; z`E+oiKgV)V@zu_sL#XHM++qARePg#g}zVmj#Q!c@~$a%ZtDVO4naNa(6 z%IEOLJFgv{^7-IJub0<5uQQ(V1-#pxcLtvFMZ7uA8;GZT39rC;qwti=@D@AoE+15f!X-fHJfZPx&@p7w3J8 zr+f#mhx4i(YWqX^E?&0tcE?k`hd0o9ZSj=v<6Y*w?s&=%@J2iDVm#%Cc-K1b8a(Ak zcvGD>8&CN$-c08$!Bc*Mx4?NH;weAHTjado@s!1Q&pEHbVYWY%pW(gkyo2zRpX0sn zyp!;htMI;X-e5fC7kJ-0?>ao?mw3NBZ!VtlE4*#)EC0NF0Z+LaFT;6X;VHky+tqp1 z4(E6#zrowfd3#b<(4(}}I72+ws z$LsIB5Ac*Fctf4{J)ZIhysMm7^9Y+~<&St1o!10UxgPIk=e5IA{)9Kfc_-j0f5w~V zykWfmQ2v7VsPoRDpYm6{Lgx*`Q*OXp?z{%1fIlz-zjaNgN?%IIP|y1r`ayis^#$>{f` zqU+-QoOca%<(9#V-uE2ryqoZpTj3qyyxZ`U(ceXi`gL&L3_RsFc*i^MUOZ(ryi=U_ z0G_fs-s#SJ6i-%6fPU zo!1jj8U258qIp^DyuoKc!xPJ4^O!#-Z9RbjyI3o z3-5U6EvEhwxi?-n=eM!dvLPm3Ye5c#EC)4W6#cWQe>~;kcpIHJ8c%ry-Zt~gpZ{jyDUZb4)_G6i zDcj@i?7S6t$`oGGd28{MN8z<_-WJF3x=$XBccAm?Q&%1nyy$iHFy}SKQ+B{R#(Ayr zl*i&7@4T*f%8q#5oOcGE@;JORoi_+i*$MAF=Z(QrcE%g%ys3D~E_g$ocORbec)StL zdj?P06>qHbR^Ta5z?t66&ubaSavYFn;nj9t*tAW$ zHKUL69QxIB{SL%aX5;PZyc6-1=i)VWUVl7gZ@hh+HwI669^OIDn}(=jHm36cc$~!;3)^-o#(vY@stA_w9P zb>4o|4<-lUjd0$P)U(J7gBQJ?k9A%j>KBlM@ve2=rPN1|L-1~K-Zj*xlR0>IIqy;G zPm>qn-Rr#N)ZZsB#w&2%chonML-C$)-uB1YJSWLZ@RmC7W_})1c`4p<=k2^~*ZBFX zybSLx=e1#d?a5(yA3LwrbnB;#{=aiuhc$fVye{-nULL&Y`^4Wm?=-xAQ9eM0>!ax~sn50pQTucQ7eIR>w~^AerxxT;Q$#jEYSZK*5A;ce%< zdU$(~flAs^9IiQi{FPm0`HpOMc zV(==uok^cd$VtJAj)OL?-*wcLlY2ko3U6>kQ4ZSbP)J=}SZP*+|Tyy!aOSmzbu zy-7~NJHdJ1QCD7%*TZ>#;wkfj7j5rZ&fBuH9WV9C8}PE7w;%Nsc_ZF=&g)M79P%c- ze$LbWQr;ZAif&iYXCiq^@S@{yfa`ZNb>*$Wi$2dD?7VzD&o%aNuavI)9=Pkoi z-WI%Q|BiLuN<8K5c$1y?37&E~-c8Q?22Xhh-gM{vgr~d{ZFIe1?=?`G=xYIS;R%^X_AOiQ{b^@5kHCd3C5aAm`)l>AYstGsy*b`#JA$>RIFi!HdpUZJpPT z`W57Z!HbToL!FmLeI8kWca-y9qW&@Y5MC$e{Y+i?aPY!^iIbf7JDzf3kfQC#a^7Ef z%12mlH|K5H)%Jt((cnermouDK15f!_@S^8YZ|Cibr+gf5pz|{El#B2#ao$mQ$|vxy zblwSg$|r*tz3yM_ytD9>i}CWDHw;ht6yEL58;hrW8gI7quE$e8gZF^*rs64|#araO zd^}|#-csky!BZ~5d)0Z5;3=2lz2m&+@s!Wu6+7>BJmvFv-#YJeJmm{`KRNG5Jmrgc ze>t!E33fayU&5p*TH!M=%aic??mSf$5Xz6*VB1p@sve)y`47^Pq_kbkn?WBQ@)9J zne(RMDOcj9PK5*W?c*>9QzHr{*c*;-k);X^Op7K+? z4bD3qPg#t&Lesub1=I;wity>*u`0Np_qn*Wl$iZ$~`k zTD&Wq*91@b9o{(SwZ&7e!<*u~4tUD%@uoTNBs^sa-c0B9##8=)H{W@~@svN}J?6YA zc*^y7h0e>zQ~reaiu2~wIv@sxkz)pcH2bdzpp(yuoeeb^a&-kIV0jix@CjQ;<;(fD?7-fh%plhOarIP!LM z-s9Aj(f^+~@)|g=5KkHX|Ar%PSLZFqdzah>Z+GXdqpqxm*VuU*@RZeq7k$3g%z4#L zw&Orq1FyOBcEnTG#B1ferg+L)c$v=2#8cMBYwf&4@RW7%+BvTyp0Y09;m$h~Pq{5# z%6S*yDYwJx;Ji_I$_%_t&YOy-+#av1^B%-g?tqu&yd`+bdU)NP_ZFVAK3-4feTJvp z5wDl?O7N6B;bl8-i&N~lQtph`$9X&8DI4JRcV06*Wkb9{&TEUO+yyVkd0p_7yW(Bq zyk2<9-SCDx?;<>9BfOE$8;_^l9WU2;x8o`Iz#Heh2k?|hya~>G22a@-?^@@*fv0SO zm*>1-+Z9i_7hb;eTHz`8#+&WDBk`2Y@#Z=& z3s2bsZ@%;T;3-?;6*%v5Jmo%kk2r4%p0X9*BIn(Wr`#9sDd#Q3Q|^aX=)C24%Kh=4 zcit*IWhUM-=lzDKJOJ-i=WW;BjsxX^cty@@il;mX?=9!G!Be)zd(U|t@sw@wK5|}9 zJmtZ7#m*aqr)-P&h4V(>Dcj+F?YtZCl!xH0b>192<)L^b&U*|`c^KYL&U*<@c{tt% z=e>`oJOXc{^VZ@ikHkwXEPp-u7oM^`-qz0BzK0zz$`oD==e5979)(xOc}L(WkH*Vz z-pP2%WAN%buOFVW16~8?U52MT7H>D_U4y6Wh?jKUR6ONzc+H$Q4^P<%uetM{!Bcj| zYvsHZc*-t#na=whPkB6EYv=uhr|gQ?&UxFMYR7@{1iZtY*AP#6B3{aQ`{5~1!t3C? zqw$nkc%7VgI-c@myspm6!Bd`sm*u>1c*<^g-JN#}p0Yb$Pv_l>r|f~(%Xy3Nl&9il zJ8uP^@-)0Y&if8e*%Pn7^QxU@`*$bubi6^%YeBs&c?MpN^G>3!JQME{=Vjw5d*Kat z-e5fCS$HFzHxln^@@%|Z=iNnJc@Ew<=RJU@%*LDGyd`+bbMdZq-kW&J-gtS=`vOmS z9^TE)`yEf&2XC75>h!eztL%$+hx2yDQ})BlcU~(z<@tECop&srvOnHj=beS89Dq09 zc{zB>3-Ah@HwI5R5bqJ^-HE3hgty3f^YES|FT{JwdGAtJ4#q2V-Zyv~$RT*oJFm{^ z>^Cwec+uxq%beGUy7D5t*POQxp7LV6H=TC`o^mMOyUy!|r@RF3Bj@$QQ(lVqne&F@ zDKEqO%6XIVW{|^z7kys0#(4{=FHv8-ADp+6`d8%Tc)vPt1NB;G*nYVJ?@#A7rhX7P z0&lBF%3p^aPhB}Oc+uxbHJx`hp7Kh(y3QMdr@RVpd*@BWQ;x#h(Rowxl(~2fop%qO zax`8e=PkxljtO3LJU4dUa=f?5vB8UeUSKcheN0_BE_l(;3+(5-AMrMjNMW&)DI=E310Z9HPP0s_f+cVlM{j${k%Xs=Z#h$aw6W*&YMI1VRBNM@jXlZ zRdR9~?|tfDk=Lg2)>BXPvU#~KjaQfYF65Ln-rm$(lh>#5j-uX$%uC~Squz_WA&u9U z`cU%5G~Q_H*OND;@$RHPo4h%A(dW-y-F|zRy7CshlbrW7p7Per!A+cdm$otHtq33(gd0O##T{Ydim;6>Yek@HTaK7gD~ze}8VDfL|P zj^IVl-;vInMtv4}C*FAHEvEh=c^BRk=Y2x`8*&ETROcPa-@o7DY@5G)ynN>!g;xXb zZoK=Pw;lDJ$eDN#JFgM-X5=iq#m?J@x^i~#qVv%6&N~KAIVX70etW@rS$N8Of*1Zv zEOTCWJmtOgd&POZ@RW0d7agasId3?g^1k3j$HCjq%f(a9!~4W}6Y!Mx8tlm&Ph&U*<@`4C!id>Ak3 zypQpe3-Ove?`u5eBY2t4TaTxF6tA80{=!o}hL>_)&2#MesC*o+lk@81DHq{oId2a< z4o!1gi`6OPp^V;Ak7vuGJUJ6h76kd+=j>l6zjW^tRr{XD}!OL~txp>NF@g_KL z5T3Fyc+vG*p7SolQ!c@~#d*1S%B6U>J8u%6@;SU2&bt{;`8?ii=iP;;d;#x1=gq}a zzKHjL^B%@izJ#~Xc~9Xfm*FjP-ivt3m+_u9Pc5~hoJmtrDjh#0QPx%SnUe23|r~DLeALl)R zr!2*>5nc*<|^&T`&Ny!qs}!HYgG>FvB{sJ}+830`!)+s}Dl zQ2&`+i#Nb|+x512ZbW_;yozqks2@nKOXF=-%laLH_kHl9zpFOLt+y3k7rYX@Vb1G} zcP8Escw?M5i29Y}kHL$s$FFnV6zVg`^?0{9uYmdz@+Z7Io%bg7RpifjbDZ}R^=;0x z`S}HJf%A5vzBlX_1;y(wzC~xO}w?vJBoT2vKHP?&g(|K7g-x`qx1SwA57N4+xqeH*Ac_0 zk0$Hl)p6cr>NCh~gBQJzukXBvsTY#l;WcvJ`_z>gtamTxt;PF|+#YW~=T+}#^Q_z< zc+q+HVCOZ#Q`W;f%6V=1Jws*v;6>Zp)p>pKlsn?}aNg~B%AN4ecHW_kPq}mOqR$D> zcizc($_99Yo!1Xf*)Vv~aeArqhT|!B!MoCVlkk+g;*EFS9eB#!@UC;-19-|tc(*w3 zNj&B5cy~JQWjy5`cypZh9-cCZx4?O;@sy469(CR?c*-Whi;kD4omcIAJ5H5N@m_S^ zPI$^@!HdpoZ#XZBr`$7m(fjzfo!1gixfk9C&TEa=liZv2e(JnY)bA#n<9+G87pWJK zE%4SjubBEzWJ|msoVPXq|L*GjZ65c*`_*|3sVB)+cz-%ClX_cnU%agrl|N4&OI^8N z@G81}zq|cik}UlF=~vVB>rH(qnTfZZ^RA&jojd?W z#8V!McZ&1A#8V!Ice?XxU10N~JRC3Ed2R8ON8p|Bygqo!Bk=}1?>anXd%R1XHxEyl z!W-$lH}I54;f;0PPk73s@g_O1;Xs=gZZJPGeh=e>)k%)(piytR0LlP3o+x_(*jyyS&8e=W#U@cwY# zQPjJV-SD=0qWt;3AN9#(cf8updy@KRWDmT0&f8(IjW3ft6>nGPHECqt>3F9FucF)8 z)Gr`=1~0naXzKcnp+1E?J$O;eR?eGA{VDQ{AVu@Mzw=g5SDs0~w$A$)PuUCaQ0J|~ zQ=Wx)g!4AyDbL1BIj`0bn?L0_c*i(zPdsHdUPtG(!Bd`#*V%bT;VFCLb#>mEc*^te zPIBHQc*;I_r#LScPuUl*hx4Z4Df{8|blyBX<@tDLI`3ILWq-W0o%b%Dasb}B&Rc`0 zya2C{^Q!0A{#6ddJKuTR;wcB=UEsX>c*+a$E_7aFJmp}#9Ot#bQx3r!>b!&TlsR~p zIjtc`@Ed=MBPB4#gYgysPn)m*9=$}58x zeQt55^SUgs_Z0`?UlqKHZf&U_OO6U&^tv$D^*fpRIb<&0L(UsWT{#->N#|XKcP%*v z?>Xm9qka!L7VlN(JxpCW4)1N}y@0op9FO;j^FF2i9eFk0YUlk%U3m>&iSz1QY{x+Z zazgMbx;3MoNlr}T9ZtOyIVp|Tow{;z@S@}8H#ffic*<+>wtlkwbLZna=x>`d{RYc^R~Lg_P;V8?|SFe!&BakH_drX@su<1?sncmc*~f)_pCHaM?0p7H_uZLzrg`E)X#@gJHyy5g4fcID$ zZ#4BA$j5^h{ak%Rx4m>%oh@&$Qfmx8o__2wp|E4Sb(OS(L_`OF!j`;6<+= zMQ*)|@sw`{FS;Ij$9Z)*4=uxA8NBFt{@8iD;C+wx7T%Z6+vy69d-848`nS7sqwVk(-`ko_fdp^Lc=e(ZOl^?R+ zU7gnlZyfm%{hB!MZt6?OkMUYM?-S~!$$AfT-gkJ)Pw@_M-rso2V%D2-UbB%lAIi`0 zIytX1p7QhHMaOBD^UlOmu3~(rI`3jUuk(JOzSEVqJzwDs zcHR-xdy}j2hB-K=i=J<}&YOv+{08qD=PkxlejB{#c{#;-@8PW{*D$_Yomc-V z+fLplm98dXM8t+HE ztw-5$^LrX^C+d5Uf28r6Q$L8@7`*6sUhMX7d+MFYKhyL(nfe*zU-Wy<^}CGvDDrQ- z<<7f}`YbZ~Fee({O6M)5{ua3f-iOZnl==_kmUye2w~>1FT$|^u@YXo59`!xRt?|}7 z?-1(8klWz>;k*;6pF>u|+v@4^ua_57S5^;RbRMtmyped(|Ap&w<32)T19n*N()ccb= zrSUGJK7!mijdwNmDP)5*-c;%{$cAaWxzrbuyQJ}+rTz-JYZ~tz>YtFirSVo%FCiPH z@hUoY|Ch&pXMNj@vEwfp)*HQ#-_t#hGN|uLHpa_z-d@y|P4EtLUI#p7Q@oDO>y4*u zhIg{_2H{;w?isv_ZdXyin%pamH--AmC|VD&C_`EsXsxs2wrr3+RJUnQ#EZr zyolEludnk~QZFX=!5i$n@2LMyw!$0cyy|0Zz4gg`@p7HlnEHN7yot_xpY1pdZ-2ZS zo!5za4>A*Py7PKdA3`30H`{q5sZS&i#9QFJTdB_?55jxQdF$AY0=(9E&pPjE>aUP( z@Rm96UFu(u2ji`9-VfCOBHQA9;Jn)7Y`--m+Xb(p+uqdMkcXu4j-h@sd1xB%9O@U6 zho$jGP@hO1p2nL>eGYj<8gC(W<&nXQ&R474y!1%eyeQiTFS?Fc=e%Kf$`sxY&U=gX zDv!eZ$$4w=){#f!{p!4p)c+=r!Ta5Lb;sLwC_CW&>AW5B_9BlBUiAJg@l5&ax>Kp2 zOLh!ibROEqd4s4ABag$|)_G&7PbNFz?d-gpsozO<#!EWy9_kO0UGQ2sZxQt+R*y4;B|1`I_g_qZTsa!yc3+4LA@Dy65grKJCJ%uG7Ik<=XIyv zpFA0_zw<7mK9M{H?;_{jMtwfn4etu)Jw<&5*&T1J^Hx#cK=#19)_JwAv3c8rJQeR2 z=N&-3BY7I$UC!%CeF)hT?_TGPrG7hkI$nYE9-#gLc?RAS&U>GF33(>oQs-?w!M1mA zvKQWR=e4GO8hIApTh8l4{TlLYypNrCGxf*GbMU@$-t*K~klA?OJMR- z8t)Q3W&bqZRd~t)X}k$|$_vtXH{wkr2L>#@wd#CeiPPYBJA32hKbDY)5ZtBXbf*0+N$DKD9PdO@h(dSZ6I`2WeC&=93Mc-#%;=I?Xe?*QBUUc2L+Yj>r4OdAC!aLtf2#6NTl^&r7Ml zMqU%Vx?y{3J8w1h5^@4w1Lyroz1np)FB9?hbY4B`yOERd4s>1%>IagO@!C7DJ@roH zwRl~f*Ms`mAdlH%4w|kIp;lqr@W1R%biz@r@S5SE$8igy=|{@dhnw2%g4@ZhNrxP z@qOXEj(EyDS?^ls4Z&01MZce&cPpN92L1kY-t&0hkokDkmXtpqWaQcQwjuAv+s=8t zsE;OR;x%yIT)@FrIRD8t*AQ<(xF$i+IX=(s)I9%6rpzAK)qHrt!YOQ{ET6 z=y}xG&C9QN%6WJ#oL4$mdDWseiCQ<<{z()VHx#Fg_ZDXvA1KZ@K2)4-e1bT~xTiSR zxR1Edc!;=kV0NdUZDwKw^}g`cY5Wx1*_FJR>`CU3eaQLbNHU)+BIho(;ev+**?LUJSdHQwRyt7MJmY&}0w@5JNpk@cx3;O=BI@)5Fx97GN$$B}ttl76ko zEV38bpS*-D-7OiV_sZSbtH6GKI%8dJ{7CdS zJENQWz_J6W)WDyPEA%fqu=&M=SACcvn4W z+qH;(e!DVnwC(bzfu1b?mbME{7tb-CBKrAxj-T{l;pKSmZJCT)`SE1jWaIIFPDj&F z?8b9LngMlgRDQeVX?+^cD#p`)PaBV)2d(!9yllp&?bA4Q9Q|3z_T{s@UyrRlkyz`t zuk-+P+qvCMc08qSw)xWbNmIXF@HTM#YWuZaxh${k(DFLYe)Hpz;Ib9#S@vzk&qvMo zA$U5z{dh8N`RDy#jrnz}|1Uh6^^|bj`}xs$PR7e-y?#9Tm5gUcH=aC3qCQ&BIjkph z>tt-m)4aE`DeJk6uFOUF-PCF9xOjc0-z zh_-tg>&fHzk*D>^n}wG#)#gE-=1JZ|uAk~!eHP36^SQPw<;Jb$l+V&%=Q};F)Hq(m zTgLiSS89DL@Y3xMonJn3p3Xy>rzDM64aC=bxPuP+b%zUSu8(T+XbiFzlXDZHQf0@$C>u;F?hPZP(MB2 zG<{w0w13q{^l~e5{c)}Fp29ftTPEXW{W$Wb+x%(#T7kwn z!H*-m+TM|qL*GP>@hEYw@vY*V>al;1IM3=&inEMg73Uj&EG{tqQCw)e#Vx#_%C!FV z#6?!$Tb#7|Vd7$|cM+$o-b-9!^&D}w)hCKIL1cKp6mQ?Ur|kMGyq}8scKj>gIq(Sh zS@?4JefWHM4LlOw=2qL@{%{j`0Ne&11fK|B2%iIwfrr3@;lvUfe=d9_^&xN`oC7}! zUktwt4~0L4FNObrFN3?XzANFnQ*HaMf_H;Q!3V&@;1oO@*8A1b@M+ZD?kdG%>Uut` zf%QDt2}uHU}GMK5MOI!{+9{fh^S^D17?6ngwWy`Bfyo^7%mYU+lHw`Z^p zY#Qd{6_ABw_Kg)U@5hm!#=D61=sMXimzHm;c)b~E9v{kjiZ|2omQ1srL`n7NpT#-0{8o3eJ-No)iA#(di4)fU0CAqx4;AMdA1%(R7LVsdaklZP;vC~X;#}j) z#CgW!#VO-y;(X)##0AEWiwlk45EmK0SIRctFU1+QeSe4xtzP>s=BL2suc^4$>W7I7 zt$uhe?(KuZH#JnT*a6J=q6ZjH%e>hyv#Pt*$t`}lH1rFB>G53YT^+3$S;BdVW^VM*; zK8Sf19Ig*yeg@8k+gxqeJK_2(uD?e;T(8Bv77o{IF;~yG?Hdg@ga^RQ;S1n4@Id$& zI9#8_{Z59%^;yj4z$4+y;c$Hv*RO@c^;pce!{K@?=2>vKzKgj4z6f4$t!;0(UW@BX zsfX*WnBRxP^`c9%_<5$yWt;#NTs?7X59ZjknW%wY(lrmzz4C7Z}g*`4#Ukt@nsoc3foqUGcax z=2g7B_P5rf>tR3cw;0C+`lzn?D|C;muGI4B`hP)x9oJe;{gdnuJ?>M>`^UwFEU)7| zi}_Stc^7x`^Z=>r{%x3N9nbld`1PGXqY}RfzCK4uH;x1F5^E}c{;`@w0o$qfF+~gP zI8go8O2*TH^>pHM@u`*gC*$k9FdhG9t&r4wX5;I)npR2wLHI>H4{!UI{_X$L|JU=M zSG{SpifOa$`Ism)o+~afUL?+_5&JKT^Qy)Cfw;i$Qb#=DBMY<&lb zi>=;OTw;8VIA#9D;)IRwYH`x)w}>;1=Zdq9pAqL6FBj(;e)ylmWZC*# ziu0|0qPW2L9C6b8!QxEDFD^EJy12-AfjDLUVll^yB3!@4`{xzv;rb`$PvCGp7xUpm z?e#ZY&&Aw(ym7dmi}@$~aD5f?miOBBhU>YQo52I%L*a0J6xUCM!}U?j=fUCnDCUdc zaD5c>NH|=d#C!uBu7_g28xGeyF+T=}>z$ZihQsw@%x}ZtdNk(saJc@Axz1eMo^bsc z^Fd2(`@{8R%uT6lUel#spEmXNa`ALqZ;i#}&vU+i?nyh8dr0R;y`HAHzS8S_9^9Oz zw4QQJ%7DL~Qy(ch|Fyo)##{P*ehH-3cQ~G2AFp$s#{KD@HqZLGgvofip3;0COTXln z$=LAYvq!_lRJlP;(qq?r9Mi{R}aQh!gy3yY97wV)4clm z(mY%&kLxD&Q6{-FQeK*$AJKlAjHl}ZKmVGSTh%YkdbR#UR{7&p`%&AOTxk2HIt#R8 zUQ%$UO`L!K{gBf2b4T+(lX0iJPS0ok{&>=O&)CHA_~XI%(|GPSxRUEk{bqIxmo^ZP4FzZ)wVuisz( z_{yY@Kfb)D?b_7yxIYece$X^%`~GjA$Mbkz=scqFwByd~e>tC8Ua5KV+y7ttb&)*} z{XA=47F9A1t#x@9Uw_p{spsPk{QRJvkAC}dp0MrH^GwSpx$`31 zr{z>vuF`qIy>94za;GP)zkHu7>0gI}|CGP7{&Oqozsl_&&5Op7;<`-Rm;F@v@$QIt zgLV*{B>V8Wmd*=1RpS55c#0pk_3T`UzY%{f=R=J@-FRxSKjw1WHms!o9@>A*qrQuo zu77jey~TbyP5q&VAn znK;w>eJ0Ma`p@Db>tF4D)}L?wuHszt4;ClPKdO|?KSi8pes6Js@kQdKEk8z_Wy|M@ zQ^vE!ndUz(&bIms;u5Q`5EmM+5+}|7MO7{Jz8zL?+9xu)_zC)a2%Rem6GF~R;_)&!SZ}I-u&tv4lYsT5@c6h%R*WYIO@cu65 zweU1}*Jn!K@5S}bydMtlk7M3ufz8h?aD6y@9u?PH!NcLx;P8Gst`CN;0o$ID@IG+(d@A;j zg~RhV=3ek9SU*1!-tWhC{k%smte^L|2_DGu;d8av&xJ?Bm-F)>;q!vHK9_p2HtsT{OtVl?}xOU&-_jF{Br5IfPN*LtMA?AwzhmJ@v3G4eRAgf^LQ)mUsAnUxNo;cTdrZ~^~7l^Zs zUlNy?|EW0N>g&WgRMG7#c)UJ;q@%8_khFeRm}b2T=;T$4160r7JdW{ujlddufgNt@8CZ0 z_K(>3!}rr;zcG9@d@vlYAL4pfI9wmZd_EjL|Bd+)_!@XTJOR#!$H7m);d&rmz6dUV zblKk;h~8UlO<_HM-+BC_HvXam>cy4Z11)n7vMeDJt&I!F#KFcHWRgsge*Kkk7RzO| zwZ7S8PJ81bvY5_yVS=oAgJz6T7mo0qZ|K}Y2|7fBw9WVO~x9h}d{~teI z{BHBdi|SQ9UbK9=eBmCOr{Xl9PwMUa(~sNpE}f^(SDtmAj#Jf(Ua|M@{`0=(4Db?` z_rF)6{i@G{8hl^z_sjJ@e+hl&rrE9}>wB&ePvfd=`!ng+`OSZx&vtmdEAdizFSz;S z;nL{Dy;mynvhdz;-ZrJ3>`qVkExb<4ZGSnf6pKzOe;)JuJD25au|&pe)~^5_%X&&1 za%XezNA<64yg7_dpIa8X@!r6A{pUC8?|LppJrC}xWczC_vh#%BF2DUdr1AXr@9sRmJ>u-jw(E`Z z=bdSAk_HRdF7-&^+xX|jqi8HKT^9h^(L_zg<{kw@1HlCK^5?lT-ak267;*{|j;tX5<0&&uK zm^jmToVduAuQAfjhly;fPgOm?T0Fk{#f3KBQa@$eQ_5M6vmNI+&a(bbs(-feN^y?y zT5+!N)=z5wjCT{~+4v3+=iBym6&G23kT}=sSBnd+-yCs~@ltWI@u%Vv>-S43TfO#T z#+PsPCgMC>Uwd)F>gS3xjB~|F;~CuliGr zH^=Hbiwlffl(PBl#JR@DiL-2dXNa?n&lBeuUnR~po+vIhzDJy6+gB(qed61lK3qyJ zrykz_#mDO>aCrY4^S5w#{~PmGPuuqPho3mnj{op}Hm>hPJ-lCyc^^2uUyV5hhxe;7 zp8<#Wt1%CN$HC*_@cuQf=fmOsWy}x4;pZV^UJi%Xk(fV&bKsxgk??lU*!G0?i?P2q zJOXYHhxeOt{Zu#)z5u=xuK$P4NBF!q_NPz}-#?CdHk=PHgvY{5;5*>=;Ctb(;k)6) zvo`)oa058}97(*s=5YA@I_4wb8{zJ7_&htV_lLvxdt)96htHE^z7`IjAHPbq;q&X52RE?whtE4=UO{~Z{1rSK{vFPRGnUx$qv5e^Z}|Kp?zbED z3Gg9s`1~QRp8^ks2gBj>k+^>RWSg(>`9{p+sNVzMdcM`e_ZQ;&bn4;rkC-2XXTs0J zv*2Ple7_*}e}lvKCt|L@)V6Orygz&s+;Ske!;@>oP4Z2t53SjSXAE6e4;#Sxtu5M@q%Y7uFFf8(R=;>W&4Yt zv-N8G#eVzKt^a?0{D0m4y~5EEed%`b^LE@^LF#d3W}o`H`;VEkiQYdpDO1d)U*Trz zTjcs=_AS3%(VRrnlE>p2{j8okzr0swi1FQmO6uM(<^I+;mn?m}ig$|WQ!?P6$6Lkr ziO)Db(tR#cgT`N0;_3bAH+cFv89y$)KV9oQy&qJc!jHB0r>veO&NA*R&M<$JINRzsi*tVd-RYA^#M^({Z}xf-u2*B$^=G)=jQIn;{~xX=V_rwU zaQzo^;zgUUa6K7wZ8%(?#$1i-w{ZO%v##gD^>56bc)bqSzcDw(57#R(w}!*@ZOrqy zehJsdF*jg+Zu1h+-}8)a`B(A07-gBt{ddokeCMY||GVXF6#w}*$1gvo;(mENozgIBc{OIp0M}IRpS-zaez18aZWD)7KL@GRRNtp+iO-#mALN=IWoFe;^dE_Fp zv_(dZR?+<(XL5a#Z#?cLo^RRJO*1uzI1s164$FQxABJe zCowmH!}%rV&Tu&2#oQAP&yASRg)fDN!r}ZH*T=%){2KEua5x{vJOd8r!)~*|jJe^fwteAz8uJlwIG@L?pWg}ZS7JVydU(GX^Z9T% zzsEcZcGF$@{YAY#=d8BZ=jfWd>`nDkUbAui*XugVRV%wtxSt7MmS(wvuWfz$oLh_Q zdSXGEuF5P~ZlxDfi@BVq5Gg(gKPnYL1@A`g%_iFIKK)iI7w>7l{qHwAE){BlGb0@@uTHVW}G_j_<2&lQ}MFCvhzv0@m-2H0WaPDxe70*VKN?yU$4e@ z8(wAS&&sw#``d4a)>GN`Z1|VklPIpXf7E-_8}|B{C^5cHoTwhxZxd(MjQIg^hSgsb z7h3&8ankDR#YI-HTg3XZj9ZFR#>a>=ZTX(!l<^R8mhsi%l#Tx`ah7p`INP{ToMT)h z&NW^w&am-p6z3Rkw}SEK8Sf#^H$FgIVBA5RYurPeG#((%v-OV?XWRBo73UZ~D9$y0 zQJiP|t~lR#t+>E=>o*yHq493wBI85E#l~I5CC2B86E))FVW>F6_*!w&c&0eh_-S#< z_{%FMa=4WZYEsgpL2eQr0uwa$F)2&u<6n_xXy^{z2HgkC2${j z9e*!$6nri9@cu4d{%-hc_z^g~UyJK6z?0!(IJ`fL>wm%F{aMWV{gUwhF6Q0dw)qI} z*J5rD_lJAJ;r&)zKOYY7Cu7#{qlEXTF<(JFy#I<>zdsV*&&522`e=9_JP3Xf9uDjG zNy7Wtc=>mzhxdaq>-S5-`@fjiP!He#jd|;LZ2QK*JHun)7Vr?bEt~^)hDX4s!6V^8 zaQOakyuRUZ`2J_i*TUibdCbFJv(Jmd_v>PwLwy3g5DxE;6< z=6FsS&kz?@i|g~nMaD0Pv&{ckoHSl5&NKc^oG`BY3F|Ade!GjajQ0{}8y_kzHaH+3cAJ;TFJ?dbLRC3ct#-8N^Q-BbZ@faBW&Cj|*Npvd#Tmw1e9iI& z=5H&`Hr`pBW1K8yTfVh8*Z3%LMvZuVCySHD7l`xBA1ltW`ebpgt?!Ofw)*|zJmY2J zLgO#R1;$%`qxmu3Rh%$xEzYy`9WTze@trQtG`>(=X#Oa15#tpX8$TgV+4|lRmsowR zI8i;Guf(@HPHM$mPh4Q@Z!XR-zn!?y>RrW2tM?LT+WN03WvfpUr;Hbhvy5L5XIuZb zOWEpQic?nqMVw*duepZp$uYm7IM=wPIAO~lD$cWd4{^Tn`QifO%f*Gplf*^Fca^gB ze@L7(eo0(n^Ygj5*!UN5wsFn1Y)`Q*-@KGOH{^Qic^<&I0z~Ooz=J(+V@H#lWzQpxf>;4aW-vJ+0(Y-wh9b0UG zin?OM9zYPR2}vkYO#INT z^L-U2zpixWNW#xAoTY5snRy*-Cy zoFI6{e!G6HMb7-4AR}k@Q?kgJzr(Or{4q`P4Ke<(`_q)$;~x5^85gC9fYGnoJq|8u zB;_pwg3Gc$>#G<3rt8dlD^gU3474_ zsFmR0BGa$-2)~PSfn&E%^6kVvK8+uZoatXDexdtU3pppU`@xudwe%bN{i%6*;~&$WkvDXY%@4QO+B5$0)pwXGG3no> zo@vi6)O>@??=~ERuNu^j?-hKzpG-Tmr95D>$CTUYr_=O(Hr_mF;`gTD9_k#)ab)uv zP1xg{EcO}wE#Xa^=Se#?K){&tgXVXephNg?1t;FTZN^Ur`5v+PqQ`g}Ub65d#U>U+UTC6@zoo{3`f{bdwAF{A!O^ zNZK*;&#v7kbIly7|GDU6KOdFiKYc$wXq{oR-ywiT-+2Ai#Ot8@whhntspW5aJi33< z>lUN8p~g>#>Q8;8!VmJju%P-n~HqWFFKA@!vAjio$&U4WwI|9eH=|3I?FU50tWA({%4b$A@U}k#t)Ls z_wN9hzG6tqakY=D9MQ-4Wt;FhQvVp+^OAktW!lXY`^@^=oadYJ#&R*hCTIL@V%4@$K<2g2w)F zHo1fJIKshIOn)}@jh?|n=waGP`dyFDL+RrXId7bHgK_eWKA-$aeJ(NW$lpUX^SH6k z=-o-=97o3XLr$E0qfht{`k3~5Njs+Bn0!NxJ~xV-U)r_DD|`rjl+-u4X1&tlXoty) zNe4^4R?^_GqiUCr2@;iQb<^`ePT!jIff2FC!{i%1Qlx!jzbQ9#>mRZ{lla=@j6ZjY zoca3^b~zKr{UR5Nv+hk1|CxEq=warCnNmOA{q>jwTHob@W4GVvd%DOOJ?!&?(f1OO zGxML_E~D4gA~z$>`$rBj_c!2CQ^SsP)D79Kal^O8#2{=< z$oWpVMa_IuZs?f}bo_3RjJ}7EH}wuh1Ix5O+{G}8{W|M(vHK{jwv_(*(!4L-6~budg|djmQnMe)@N}W7?ZwE`%EYB{tS}n|1Iw zDL4Jc$R&x~q0SWo+iKct`ip5k`BVpAntV%m^IZ9+#KEi!Og%$ei5~N%o>{ls^>sAT zcA5LeL;*1EnsL!ulx^u18@9boH!|EztT1=rlSjUSAC zM~VVH;>a0$jGdVxXZ&UGj9n%^1LNSC`$$V^x6~$Q_iI4>(a<SzBtS@=_9RgP-wjBZVB+eyB!mMyB@|~ zvmUdT+xaiVKSthb6EOY2oVUk&KPV(|F#XuTnEBv2X~*Qpo3FkVIkT^5^fBYc=(E=* zXUa``?lT?SR6KoNvguQ06ccLNsn=BZpJc%^a;7~acZ|rH^@x!(?Hjq4apcT6H*)8Q zTt`_C8b6r08@Wr3e)YAzrd=}+7`b$j3)t*1^MaAfild*ICyZQ~$eDdu)2=Bu^bV0T z{mb|x;_kDw-c2GI`ohFpr1X3>4@?5D7N%BuJ4t5`&{+m8IgL*K z*4S!bH2-sOLypvOH|rszx2bLPze?oH`pU?e@!j`g2Um&LzxqghgKO#=-q6t^XX0w| z4K?~aEOI_+*Wej_LWj`jra1bT`bo(SZZe)d^QHcM(y+UZadao?cm;$SJMGl;Z+rfW zHh&p8;}7GnO*T1GZtPWU91I=L-iwdY{Uloy$Pxe8^*LPLcUgEGZ-q_H;F$Hmu(l496_XZ@rQ|T_z>~ELF&i5KO29fh~F|r5i=jy^|JH+j@tg9P<#2Ic)L9*mpZsgy#9LZ zF}lA_h7{S9)K1HDr8*?ZS7`miLjNp8vgmQB`K-Oj8GqXC^^5-T>}?|T52cs={c?M} zO@F%F;EA6Nt{Fec?Hwj7CLJyHf0G-l*M<|bQjAP1P5V71z4q~Ax5GdgJ?#EB`w{nv zp2tcBpRqfoX)DS)I!X5<{QVH-Pd9v$=C3fkL-W@g-mUqehW9n%`c;PaYkrF1RTD0M z%<%5U%s&<3b@@`m2Q>e>;k_E~J;V3a<=+_I(&c{`-ly@8IacfoYJJZ$yruc84494x}NrvyM`3npm)b?Lv_^{@? z8s4k<0ftZ3{2;?SG=HbzlQciY@IKAYGkjld|1!g;XnocgKA`RS(C{HG|E=M@+P;Jn z#6C;&#~I$I`7;b}X}k^*Uh9)#_>eB|Z}_n0iwqyqcy|~+sQLR0@73~;8$PJ{C5AT> zkkBDYaesY7%7+U7uJHN7e3a^*0M&A^bmte?a)g&9weAgm(x(Tlg!5e_Z%p z!WRmEv+za2R|r2>_=&Sp_*;cvC;VXH&zh&tzlw$5D&-}@?-CyS25j%; zRr+}q&wb4Am-15Kk7%y##kn(=pDp|t;V%__rtrOmzhC&l!p{-@4&lcNUnM-&IgCF; zc$_aWKTr5Oh3|W>)_0QdFG_ip@Y{tSF8sH`-z|J%3vJJM;ZG3$LE+C6zFhcssmD zx7PnCq0NP!A@l;F?S)<=w7bwOp*IU1B=k0+cL*IVbh6NyLLV2pQ0OwDuL*ri=oX=$ z2>nXvPeOke+UPcI&#^*J5qh@JON4e3nkKZD(CdZf3LPx8Qs~`6?-e>l=p#bs30)-g zMWJs9-6(Xs(9eZ_C-hgL3FX?3BZQtP^mL);32i6zDxqD4UMKWMp)R3iLWc_-DRiRH z2ZYWNxJ(1(Q175c2u7lf`9x2}ChXe?6HwvoCOl@QEVR zQFwDM-dlL{JRb#B1Lyud8rRT-Fw0#)*N(&Vb+UcC03ia!e3G{IYr3mrwry%q9KXh4>CMb;hA$j__P;lA{MSrP*2cEz9 zCmN6TLgL}|5S;!(FNwlSLA_XbG(ri_0;LcA82vngGe&4z;1LFWQiR&=?TGw%c=H5j zh0u0_NA1PKt4+TT1m|m^mkJ*Bhj@6k>376FiLcQ1QU0@lNp{=qHTtpB#Bs)d?F6Tb zP_!NKUpzdcUo5;qf^)mjPJ&16#lx#jzlQ|pDWR7O9{DdGUTyllB{=U1y#jco8+{!3 z(0(`dW%|(Apigc6IV?DT2)!~2FC`A1vDZR5edveUr=QdI>-b(M^r|R43+1u&GkCG$ z(Nk~+3QYkX^%45uIwqd+pM`Sz(2vn?jNm*h6wmF9N98H_)TW<>a{ADZ!3zk^R-t&V zj_7AWE*75AFP6Rg1Sjb??MFP9NA!z_SDXJX6`U?Y@m$Y%^`TqJA@rm6=tDoo-dhFd zPNCQrh~Qa}J6wBxg7chEJm*IGGl8W5)83!S-uf`W0;LcA82vU2&KE-QoLr6Ph>zER zZomX0KnAb=?>Y{r34K)TcNPJZt^s@x#L7}q+FA=81^B?uUc>a4u zaJC73JQ^>KeuNj#f4>RNaert(VqYrKU+SV?2f^tn6#ER-cy-XvEjV`weK-)+Us7WC z7hb=_>3>rN=P{v=MB`btV=F^lOly<9d?N1vT&vU%!rm(?{sj zz{AvrCrkXK)ZSk#h|q_Acs>Gk3(i=f3#0L@+VL1ffDGPz!3hX`CK|5}{`*{T_6vQs z2HxTO@3cf6k9I;EM&UW&k3@VDWIayy9cn#(o!}G-Z4!l-5(kggL-C#mCkoCSp-rRk ztV7_%ipM&^`A}$*;8DCBaqwz;{@5cpN7d7QJU$99B@SL~_9hEXhR_qD@T^1N#j>|h zaE1y!QSfMtIO5>dX73cinIp7C6kbXkJX&AHi|-o2*(UU)C_L*Bc(Lr=FE}UG*YP-0 z@Mu0r!H4Gk!CB{&0+u5VUcB|>-GcLg&~pVZ0XQl69Ik#Z3(gjyt)uWP z;5qP#Wp6zF_6yEQ4YdC*h_aWIONoOQZ#|wWI8LD#M&m)bczE&j8!I@E3%w-D-n!_w zPH=VzO^(K^gMLRe)P8Fr^g>m=9s-<7#K*orRNHvFSa7ZpdJ)w|XQ6)Lz~^xBZV;SX zg_BF8=#kaOyYF{#zK0=Qw=-wHBPKg+2p36WR;% z*(f{q)|kH{VYcoH;`MQFw$!akk^tHlMyMI2(j6vf&YCEIif^W#)(D2j)w` zQB8F`o&%oge<>)BrC)9SJ4eJ&jOwUAG?0F`EQ`$3=z5{3Xia2=~tWorU=eF zp-XLevGgOnc>Y@@I3Ejr9(XB`C;t+SrC)9SOFTlyp{3AeQFs>c9QYiL|55}eTj=sA zJi>~lUv2)oO>jmFeZhtoOTXIuH(PLC6xu$Z>RF;!3Mkz_V%ZySJ^r!a{3^6V6rObm zJPsNK4nIQF$w%sVbP#%36kZDCV)?JO_}(Nq!-RH>!n1(qz$ccy@#dFD1!s}aPEmM- z70Z9M#dm|?d@l5I8(u7XYr{)CO8c*c&?{_svFxp_zg#9bJ%pYLJi(@CFEuTWG5&d*k65dt>Q0O>mwS`qcWU{dRfZ!oI$u_|o%REWGW4vs>tV z;2BZcWlKS|!@)b_8127nggz;Fq(fcsN(5)5&;`IFEE;EZ!Fy70-VpjU@GKzJ74JvE zIU-5hy%2ch=epvx7o0vqp8;M9^rP`s7kh^b&IF+=5Kh8kJS3#2J-*cc;yv##5}fry zUq*ErV?564fVW$4l8)8>dqwc-s$VC;=_~YA!J|HH;&M3l4i}sWLIc1f-B>>uU7P<{ zhy_jjlv*S>>xHh2_FoXugl-zXgJ`Qs`LGk8zM3F5XvylW@HDUzOmQ_#Q6axq@?r(0c`s`(GXO z%N3m4gr)+IbYuOH)TW;WIr`8K%Y#l4oCQMDqy1M0yiJ1hmC%f6|J4ESm=kmy&J@}u z+JAMx>n=EjLdyeD=SRS+ZTwpB7k%glqWm*WaFz)5MB^bC4oJnCU*fG#KNXxmgboor zZm$mdop+-4Ul*Z6qw(sX-)(|ZC3GtABKKd>&%PcvO=tDnj59mU{StWE@G@j@e z3ooAkz7m}J&9vRqfk%x|Tn&wd7jHdzk>GR_`am>Z9rU|Ra3%Y1Ul(??K>M(66rkOBI}3ggz9FR|oy>6&#iHYb0_|KneqE-pccA+Dq@Eni>vK z87VXqcw{5{uMYan7o3$svufZSzJ9v|r{2lhkNpLY<4_0vS_@8^(Ccg99lm~rf-_d= zO~9kRLUR(0xD=#^6JNjJY!rHP4ZOqGZ;#*{dy4j7j^Ncbz8wYUI-$8W@D5+UVS+PR z=&isb-|_vZF8&joH9`m1z&m{Xb_q_smfC;Cz@x!YSN&QGPMXk?8hD4VU!mZP6j};A z>T`9C?|i{oDYUEx-k;YGD)7%P!7=oJqNl&Q|1>>S$H7q5zixOdURsnKt%d!25U+=p z=0kGknyBIRl}_z=hvGx8NrYb4G)1Ues8486XmndKuUBfEWT7!-{zT?K8=r%ksAGJT zqb8EI=5)@Ou~yTLSDwavN*7HBbk)?|P1CCGn)!BLuaJYT@Ejq1cj!( zr*W-EG)~Z`X;^5@+W5Pub98x*(0J{bdL{2`eD$2Jm$F#XkWeG1mP)?RNWNV3U8c*! zLIdxf#3g|wJ?_*UdK|{+4?HAqPH1T$dC6E(&GSrtXEo1D{0Y^31FAT)n&%FDBxN#LunfPauAAHSZukP|cq~{Dx}274aWd^JfzOT{TaSdFuCS{%qn;tQWEG65`LV z=FcJi>T3R6;(J%~t%<*>n!kwn!fGC`wkb8Fn&rEod?o8h3C!#{s-ap?4{H%!gJ?A`5(e_ z=KpW(UpDRr~q zQ*?RqJel|UYJRXO&(Zu)!@D(qr{OKlk2Jhb^WzNf*Zlp44`_ad;e(o=WB8EfQ=Slg z!kXVXS9p0s@EiFgo-Wl(hIeTGO~WT^ev{!-G{4pG@`tlOG<=RO|IG06hc9*--qPjY z8D6UwN$vBwB_;bX@TjH(pCj>cADN6)Dc{LFJ*uRZnkJv4DHp~_a%|;O1UE@!8*>Xv zrS#A^j-EB~TAKlG!*=(sDQAj(+w}S|C0*aILf2_JOzvOdw>7`3iKf2oBA=mo?`EOz zh}>wQV>AtK)U?~{y58~+G~G2;Jo8DDH1*!6shX~7;6Y78m+3o2aE|ao549c>H6x^W zwQe^>o`YHoy-o552%jW$h%J9lBi*0wu;qs&-;#W{)L$$4qiy+q$scFSpCS2MCEqBX z)8ItD^fu8nsi~$8p&_B(W;#D4G%R%XY;AY)NxIzKQd6%`6Q7Q2BrcL~+PBkNL@s!m z#<7`dx9?q3Q;(4F z?sYZujX&%(X}p88?CqL;nXaGe_Pk$cyqq1eas85?@@4FD)9w?3XZU#3y}NcCQ?K;| z2VXvobb-l?qJ0N8i{i}w9PTfLI{(cdw0$*%z?gNXSLC*c+&wlyn#SnI$c031gwBqn zW}Rx}z7e@m5ea=^Zf{0zkI0R*$(ePnPxNaT)^;qh$(i++kvmc3p0mlBb+Bo-mB@{@ z$;D&+KWcvlf6~-D(NROx`0oz+yK82=8-Lv+`Nr?tFVps9$lujAe!f@aW(YNYHGj`- zp5z-p`h{O6)cEaX;nxT?e%dJfr$Ws*s9{VDW~a#S6>98jTK`m*K3S--?>ylz7i#Rg zR`{EQ8v9CwzeA|8uS)otLXCZMg?~nDp$RstYu&YN4t3SWO4C)HHO4 zriCJxBK&|^di~n1oh~1Co~HhzG;J;Tt!HbwDxb)=(&b*s4@>?Y;X{Hm{}L@1kaj{B zX@1y+npU;ZG$?xQI$iUY*cTA})fIYuR46nkbnT^DzO~q^i~NNmcbQF|WTWMCF4g#{BG=C*PvhN;dBRU>ujO+^&TW&Yc_3Oo zDDt<9+yt9E%@1a*5x%#B#-Ay2b8Yfw-XK}}aa^Y57mD1O4)a{A%W2$1<0p&!3nKr9 z4WGu78Eb^#7x|#beQuK{nZJJi^1xpn_{#%-dEhS({N;haJn)wX{_?LyRUU(3wPtJ)aZYi zor%lrY-n{E<>}n4RI724yM@)bv2`@j29!KiuQAe>5*xc6{ZjjP?gtEaQvc2{ymLSP z*FP0B9qvf#pPH4~yQ1 z!|k@3I^3Z|SX540P$O2G#yQU>q~4e&-hn2R4X#DRQ|WX?==evu)Dn5pQ1WT?wdNxA zbxrG}WK1=Be3I3WY$SKzm`eW!bhbKD&RIy{+Rpluol5j? z_?HFK_0@oMa(!0UtaJ*T!%C)V$2Yc41OpwRX=Yb}CeWLBA{Mz_vJq)s`lLqf6XQoH}i{ z^JL9(J1QzlGz0@kM>{9!D2K{wHW6lfMsD&x`&}ZX`1Y7lGD5w zpp&@4=rl5BbORW5t)(f`CD28*)<-fh_3xa_u2w73`4}X(bk0n>p>uXxCVI6y3A5;N zso7~+UAZ+A#_I5BR8rXlN^8I)9<9R(>}u^!6G#(;G?WpRNb_~7^>_j%aqB3WTNWme zTB$Ujbi5w(C22b#t8312X#=1j4Lo<_>{MaV$KqskzA4?El-Vu2CheS+COLG~)jce; zH-D@IOr|~DOfveXW@A3ZhyIaUy8qdK7~Br?$wUV@=o5ux zcI1O<#
  1. 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

    !*M`C8+kJMHo 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

    IST!vI8;ar$~A=D}_X!k^9flL-zAh}d7m2eUX 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

    rwt#fHAL@{gDEN%R9MQ*^n}%`(Ujn=n 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%0AEAW*t&q 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 z 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°$~Z{8-G~ibhP5p-(|#IKiCRw!bgpNEk@sy#DW7?Vgzy^@W~ahhi}=Y81d)m zM&y;O9D%LXL4DG_+Tq{g)5n7+WKG?5{D*mL1NNlGWh?D%o?zs1-5m0~!Pqqi^4{f< zUaWhMA0eOB{ff8;gFOqtsk*O>*6sA+de;9bBRFu-7ESr3J)1?b9iD-?$luO4!Tu(+ zl}0`*<|vK+(g{uWgO@txSKG}x=GUn+&>@UoEf{1Q4f~bqD)v80ozH@Y`pvn0lW}1A zEq;CZ8>9Zn6Bv_-KhnrX=Z{=ZpB3|e1-N(PCY;D0`EAm^MISPGR>$}nI>u<~3+Wg^ zU1k2}n~^uRirlbaJJ?M!J0Ho>^lV<9G4i0`1Ayt@x>v-hgLtC+N$S-o9G+ zyUIu|Nk zTkc$nzfy5)idif2KO}$n9-GeHs6F-QPVBKVx>MIbQ*BFS+nBSrg-7`jOAH=wrCi6~ zbWVr+E_qz!f1dANj_)_{J@wat`L9#^=oQg==Ba*ki0JqKQ2jZ+e?;}~>a7;+UCal; z9ecZX7P@(f+ncu*{U&jRWWPQCL%OpEPV^sMlO1wts^`1d%-jn(Wq!;%(~NV6wMlja zF%|iFnYz0fCzUs`MAYHd9^orizYLYpeAS-C<&iQ4LA+ylEnm8-X`B73ZvEZFuyZyu zJkzYn-*|-1S=!Y4+B3Z+Iv+>6QMeC7Ka}eE-XMLLX2aW|m$~@zHhvGEG~aEEYS?G3 zwYf2@-4^-84r%W|`_1T?gRNnQ>9%6LmA@;fe`lqKO0D%3>@eDtET|mCUCR%+am~FZ z9$t@=u3*ZKC~T4*v2F-^=Ybo2ue}TZOX5`T7M+ooH1i`Ht7u?S8SML-0H&>!{UtEj zxs=Tt^&vXnVYJ=bXg7@v5KOLZou|>v86p|@Ub?ektS=XzAMan`J=Zxr(RPYyrNAoZufliFR&_YHrCN3({k zx?^W(e{7-u@XdyHt8?Jwp=*P2pTin~=v;ScPaOm&(s62O&(g%f@!{xVH1HcWxk`(q6s^Jy>`58Jg|irrDwk?Q+=NVe=X*$tNuRkU+tAnpZm@=@sv05O)F+z>&m4;pG%5WXNmvjU-8KY z_c%0H_ zjQg43z#C%WxGDsPJEOwfsSVx*M>LLMLBcD_-Bui2+t?q2>;Ftm(Rr&C$auR}C;zMb z;{D?`-eUb4d(rG+Ehv}HQLuMT0{;s1HUr&u59@^m{Cn86Dd^P$_Lt#BUq+veo`qD* z8A$NFhbovqvNzU^LH2!@_oO-aKri{LYukpRZ;D2B|AFxKc-)>(_&V_*NyaxppBfpv zGZ;JNi}pX@gMIU&LiEPGQ2aqH^p=gk>W{aBm8%ZQ!G|9bA9j72M%}x?$NPa}j*~gy z@FjGnD9@9;7T+uImW`U|6%3zxEPi}!w>Ow?oc(|I%pKF6ykFtE+RW` z`sY>KX<`$!58&g-yj=A$XZ`zzd8f@e!kg7Hw_}RV(b|CzN#{_A4j+LIy;DbA8Rg+B z6T|1#@~Ms~(X^i;FLSlkDj6Ejea=`bbgF)|aMxb6zE*7I!TQKP`-LZhkFLC;6Izka zx!P@^ZZ~I^9ha%wzTRv8>1fuP6eGZ$F|C8hTG7x2|0!CJEo?D&RU?P=o*B9@8N7c` z?_V0W5Lp2aDD=-Z>BAN#gZIgLUqL!_qx94D-bi}zezM+^BNw(99>QK;y-ygqFd4ib zr}rw-p$C<()cZ*z7glf={7=zaa`kuRFz-WC5BE;vu9jKtbG<3x=(HsFl50#08Pj@r zLnCs~WBsNAKYt3pTCRE;kMKT(Z}+ri^p*5c(QygOkhRFVb`w4;~hg0}_Uch;WX)sLdX4VDfb&7SGU$%p^7C$p=!J?1T|djnrv zFETw>x%US79_>#p{h2or|KA|}iSifm5v|1s`tw5-Y0J}>Ww^J3y<>)ETkW^o_?BUB zk@@Bo8Qy<0-|*erZ>QRCi)=pjXchTaE{!+uHhiA5MbOFO8TNe8SCpC}rSFGNDIHof z`9JxjXYzw1^Zu>iUGyQ^QyrV(Q{$;)0(BTz{w(;4{Hp?(=dhkuQFW^Mb_L&{d(qYa z+EJOGd=@^9KKV)n#`~!sc~lpsw`-SsMfxUvVgmnRc&3qGHdHwOhshrvpH0x`PVAcX zr?8e*erWnse$n%KVky2kNdD+}O7Cc+KiXRizd|>*F%H9!Ay+Z?u0jX9iJ$oDrO=dQ z@Emxwa3Q%W8T=0XRyx~W_=ohV68anNM_6_)8U(IM)c*!&mqeb%Wx9%ILMnYeH{I{# zvgHfZX<~A%UoETmy6?GkFsJY8tX=6l+M{>(i})iW_mSw%k*Vi-3lqoQH@1|!MjRZn zZ|7oT?plX!!dS>3Y;`xCC0Xi^{*#H9t$v$+{M7J@(f)SyBKa9p#?PoY8Tr{XX0pMH z{Xeh{kycEt^fLOY@znZ3r5iiG$;OR2yPNj&89V99;WCx@!xdlK%Nk|c@cR<~HFULb zp1A4-kJd*zPh4b&E&d~<%x${QHRp*%MK3t9MQ}nANz)_-m>9byeS+6yHjAJ`~ z6 pX`HVlUn@3oqV1HXJ>U+SKkMT6rawD;{(`ekjCoUL9-jK@u=&@W#Tw?6iPVGB zVV~~#V0~yxm`*lhhiL6-Fq&|EtEK%;+7};i^WM=-uDgUqua@6>rhlFE?*d{pJF)wA z0Kevn9aGlx@u#?crJ*g`Mpid<_u*z?9GKR-MfdXzAtq)hu`!1cBa z>FoK3E)Bfs=f`|99RD)fkHb?6$)k0)CB(L!%iL}p-f>OWVTvzQe2x6!WBfVf5ue|| zU6J~}jC>#G8|&kS_d9>@hxz95?Y{W9y?KESB)d-STt!+EdDKi=3uzm;i|<>9c_VE* z7M6c;?wZG*VPeJ1c@} zyx!Bu8khDGZHD>sSwC(ZJ7#HKq4@3i7y9$;vq_tJAl2%_J0nno}K3{Xu!UB5qoPR zze&u8P1KtUN7Jc0CtQ@t$A?}Q!1WW#M`ej(CncYEAy0O|vv$J6cEQVb=N;z%cOLOl zz$#kPoIS9^$WVAvkzca2zaH-RI`>HS*@o_$bS8Aax)@`8sI~9R2%XVCgt*RpcxWEH z)cSJ-!}2cX6LZeS4zhm6dlLK5`rV8CQuL_I;a;`&(SHrS;JX_Rn0eAcOkoAIthrmx zzv5Ys=D)MV>v@azp5xcTPqE(}qAS)pJ?hojsrq&`x<%)3uV?o2!QCP7aPiasK!@_i z!h4U@+Fh}K4eyyTyqoxkV*hHT^Zo|7{TB7Vi5>ek{v+!LaqEC(MnBOS!Jl$8t1=_Z^!b3(V@E(iu~{3FX%M+75`u2zfHT@c}{FKer9hJ>*Um}Ghp8Y zPR$3C7dVu+?9a4g>L~W_GW{d3WG(kHTwi?J=*JF%_p-}Q1$+l)M~XEHzWgvmMjxfvXa z7gr6EwgP@pkt0nwTmiqh033=|bcbSe?38B$yme%bw7I~um9)u}7v9u2>B`YMly5yW zaFW`gKN^F7J|`Jk?EjsA;z8=}>(j4`{J*pJO?>f5=C|h7Zt|f29Wst)f1r!K0}qi6 zuQ-NY=6omLZ}?lU;RlMpx`XGhGe2cNh@a@&5XonF$<|J*XQtsHM}dEAh@K<#k6%Z= z`c}S+|0sQ>;DmRiiRT@nG2_3}@Q~5|`N(YXkjsEwyeuqptB|Ya{>2f+3pT849IHJ@ z#t+XJ%z{s)sQbPniWdw+9uRLgs(@IC%2?uJ%Xd8gz#GhA_RDCF6Fa?c!noA_F8sd4 zMQ?nQaX5!q;W7Nuz^gqnj{#c;zE9b;n`eqA*x0;w#RapUXiM65abZY7?CzCrJH z-;(ZE{1CL2`$`i(*-BcJFDOm?M0?np#)Z#weEJu47DHUC5CXzAx3){RiqrS2gQJ`wyEOp8saN7?TMV=tG0_c{hDNHo(t2FVwUh zM?Oaz(Yg$d(CM{@>0o(wGmeEh+S7PwpHqQr4?N4ZJy=~^Y45$U)~0J0y|I4JM(cuiQK!^J;-pjp`1)K0) zSex43W%|_OxH+E+dwEnReB0>K%(3|K$Z75qRQWZOm2GD7K!4G*s({=0iguFM>KS&A z&-F3ugLqYa+Y-a(9(*6}{pKDf>j!uz;Mtw%f%*7BJAyMJrT2e|cMifZJR7^HUEjU| zAMb!}k7pdxthLGB-fYIC&_B67d!E>dJX@Qr(68dz`lt&1V|mWdzW8|$I-C0N0zN?M zG%+6;_+`x>pmX-h>iJsq^iKS;dKO>(4!k-Y>zEnmm7aXm_=vgON z9W0t=cob>U!J=uJZ`!{oUK>r5Zm|9&6M5EnZgWKLr14foC=_uHv`hw6-8k zaC5Pqr5!_m()Fl^`m|QNn{qm{VFUIxbPHb$(wUQrDN;NCKqoM11_s6I>7KAc|4h*p zWlZ~|C7>7W+k1of>mLjhXen@&mZ~8iV>i8TgJAM>bd;w+&K9D|P7H>uuEWH~6*IJcb5s zd9nWWZE`Rn59ZtYSWns18iuJWsINYN>0otyWRN-%)RF&z{ywpAzhVI#)3M1e9HfqV z)iEVU9i0}x4X!WXce1TxRJ1R`&Cp3HbDxGubNCJFSnKKlAIC=Oh_2(fbsO>Sf8Kpy z^}V+lzHH7msKJI2EhvWNR~hjf%{}?R@E5T++xlUP{k@bCe{#O*w?4eZ;NIZotkK5i z-Nbs-PI#W;N3rEaH;hsLHPb`+G-B`v`7z!_o=LVW{jv2QCJo;x^V8ThN#vH*!^ZgW zqlm``?ha!^mie48E@l ze6>GAeyfg@@pag<4b;}Nj|r4xBeD%)b=0qoZ??? z{*Y(W53|-2*h=tR`8mW_g|7~yipv><_w#%&I+JWRwH>FN*88kX zftR1+ZFIbPB5~+OPhcHQ>Bo`R>0ElBpm*#$tp&P1tG`Qm7hd$dBzTsblx?8z@>K|@ zxAU&=H|igJsDEltzN*jit(UsP^s#d(^nuPV`Lr-h6Gf$F?C)mmL=)d<%x2FXx^R<; zWhnEnc@Dn?`-80hlcj;*QD179t?v`z`exbsZVl=?5#O(&z2?%UJm50VTWublfnf24 z9J>hkkYOgh)1^Bf^ceq7N{6ORdbdlrcZDiu_F1K4Yp`c(WBEvLA+$7$IERHh_%~%5 zM>i=Z);xEO&cbqqrCsR*4weq;5`CMzM~yM~k*(v>A5l7MgFCUq;^@jI->EjA%kv}h zq_lQ{Zj0^=4IrKJX`7iRHHUFdiXUu=0|HFrrUV2C$+rjwb17A6?`pR2#^T*FK?qU9T=d;1O8nE3@ znM3i%wb<6`?{0pN(63zlaUg8=Oo0aA`T%VtnNy1=^)+z0D`+4HT~Ke&{6 zHJtgBfOjtS;tOwn2%pW5yrvj!%I3PC?@xX{-n@fv!k@lfiLB9lybk)E0*$agscsuQ zJn@M!?0@ij8pOA|PB!`1F0gs`!q3^eWc&$T)K$RV(nO&*vg?6ZTWN_m^4(prpPW0g z>EBaUFit6Tqd7AaF_pzdScKCd(5F*l^Yi-_lq3mZjY4H+OR7-B2@OlP+93Lw*ogd zW;J)u_jJK`evfUC20nOEdjsEoNm)H-fR}vjpM`Ivff;+VJqhj{+|nu2>sljO7c#`|o&9^8S4A z{sixxygwJbKgN3p?|%s1H}l@YyXo6DJFjb?>z&|C>sSzip@m~42jA=cSEA|cCi#H3 zz1MqpqG?FeQ9K`P{7t@*#YWFG&lMAlo@t&>o79xJP_jWfwAONM+`XY!*3HEiMT37g zv{&Sxdk`ATHSaQvr({G8|2of9da2Gh+7jSc{B1qofPcGU)WSH3fdkoJyYUlV2@c@J z_+w<7VPidL=c?e7-evi(+b7ChJby9rq5FkG=QI_|<~`s7{U9Gt{R#a`oq6_hq5RKV|9E`QnG&yhTb%XRZ=%yM&Nh$Mj%=QvAVb*?SG~oIvDLkewhqxliuFRZleojBOBTzYYwJ>;Bx`}&ZZvy`swti%_ncgF5r^QZTd^wn80}XOc&{q>r)qiyle6b+ia-;S))!-L;uE=XPyrXQa(TgfrN8K#h!0!agiofOm zj`Is_fC?{@9Gzv^WX_%>4W9tg?>{ocRPRJWd7jysT^!B&n_h{ z8T?AmwflZHk6lTOm-hXr&*Af?r3Y({PRDQ6fgj*`WZfJ5UXFWHCefEufjKok)pPk% z{p0Dh?q5cXx9V?vXX#IShj|N&i@&vIGG%pt^F_2D#!Za=Y7e0Fz+nBQ52s3t^V^Lc z^n79V-jVNs2PY#0%i$4xyE=C>UfU?Ay!qr2zY-7p^83JJn7_>+zvFKy?h6&K+F|M_ z^e<&>tnaPRpUE?OJB(f^o!jd0;wzShAAp8iSfAMwKj!oOXVJs0$bHdw z*U;5tw}E4=xpx0{AZ{CvY`nNUR<>Y1<+ifkdItSkqw@wBqcOyr<9{OVbd2A9W4u}C zPsK@}0**Gt$E;GF`_MJ3wj@`T$HwlBVYhb0%TF%{jyb_R{8NrL3s{qC%quYMw$ZNk z&PeX&bMB>d5A?L^w@HuD{GrZZP5Ve3X1_D^8rgc*VF2 z7K<;G#Jo}W74mIdYVq!2sl^R^vv*F|nErS1uS(u^z!$!m0}o>Zx}E`D-#47ORJ>+Q zd8}x!>bVlXx9IC!@Dc9E4rtrZH+t#uInoq&K4C(pE;&frdeX*_#$Kv@6^xhV%hK(0 z^MDioYSuUV=8)P~8~LnxN9UJIn}@A&V3gxGgV!zH=Z^1Z=R$__urxNuFgE(Xi+?BM zzsPeMUaz@P3LR?vUCj3^c&~Ip@n6Lh3_-W=h?%wH0dUV_P56aA*b4p2Oj||%w}FGR zh)OgL=#zbTvFnXi=AFbkWs38l#3OXZs>gYQPS&3R3~BC|vM?amp-pcP7`C!*{Ic2_ z=jQ7;|88tP^qd711KPGa!YQof!z(6jr(BdCG#>L{yp#!_LB_o z{Ulk>3d+q3%DMdM-ySH*mA^X3e|jYU$&vhhJ|fzv;P(;ahiD;9KN|SW;@#6bur~0! zLh1CaQMy)+{tf2S(L9zD3bg3-j(QT&{y?Z;MLqc zgZW|P6YKS@jDzNsWQ$->pX*KEi~OH~7webkzn9+KX_3ozdW*4=FGhNa#%UAqwVHP2 z^GW!>ho(BgU00lT;3=jb=&Ft6n@oQ-ZsUOEXX+O?lRmeZGD-P(`ubYv|B`RYo5p`v zL4G}-Vc;+FR~oo;+j}!elied7poR81%eD`Ob*4S}>x652A5jXtT?ub-aIOn*Ex&(X z9(aRn%^mOn{R@Y=Y%`?^PQ~AQ%$L`nI56m0FVfeF$`pM15IWBq+2 z|HJ%hF=uF~OsQYXnBBJr_{}#r$89|Y)RQ7ERQ1eZ{rz(0SqFC}TRf;<8*eJRZl!oc zk4<~=3EJ=Jo%ABGMfqiH}Ghm;fSJNxY8}HCkyI^kMw^ix%QD^YiQ*Yxi{)Y{ei_ZT!wTiT( z3{T!(DxP6*WBrSR$ri;c>Rt`W7Qv_aa|dm{No)-B)y%nb+Oqx|4_Pn8~wsX=JC$W54z*Po4qgnJ*>i#u@Nq z%ZpbP8-2VJUZwBnQJ3cXe?4#q8Uj`h1%C2Y)eZ!|p$u zCkuNg`qyg4p_;tnAE$s9>xarc2M5EsJ8wlem%l#YS^l#PyxTpBi~%qU|D)jx8~MK0 z;Bt&V6`E*)XFaTM0e;Tro5#0V{MMSj75S6+rt;u>gXHTItrjQpYo*CI1w14IzPHZQ z?R*<0R(^u#$>BVvE#(nkw0Sb%^bg@YrfubsKhoxbekVz`3KrouFL-u1d}UL-;FK}-om_o2fV&kzLKfj|4Vz)L%t237BR;3-^{^lz>~Av zJBgtb{k?8*SLn}%4xQcpah{z&@}oR!PlfVc&2yUl4w8x5@AL*SF*Tp>49+Gb0+-zvb$_!Vw6JOjt#4@>dHX9mJ z9xFe@4>H5ONuQvvi6+fSrOC%=?_5!O3Z9_y1< z))HSZ*qF7fPm}#%)gJ+mroZxC_QOfm-zwRw`Zl2N_4SQ%yXc$UFRC#ZYka+L!poo+ z_!Dg#AFgmDf2({kHjlw0G}YH`KRnx*S>}hdxPt&^rUz04E?d9!FVpnRfpw$b?{JFc#c?Zyxbj`8I z8K*nRHn3y=-ja)`cLw!eNIMtM-uc8JOeY2*-t=SUtF3FSe>ruf>AS6~4EP5x*Yi?u z$u?+d%wMi(dl6iR=hrg&-#5RY*=`fhg&rBqu{-&9dgF3^EB6>H{Qr6$XP`2d%QQ2 zuaP-eqkQZ~_!Zw%W$2g6M@-az^Ui%v?TU%-$*XD8`Qkgtr`V@D$yM!vgkE+~r(&q| z{Sv+>gT0YAZKE9%*FDZ($a5P1xcYXS;D+Cuy-vZn)PZl=HR9)+8Mj*Mvw5sd*BOV- zSld`8SXCBSoX;?s$9!i^V_K+;bVTWgN^4<{)H3x+<$yI@uJi5QN#CVC&F@zJmxbyO z4^X=;tYg%=c1{1Yb!$)4@=%#@yV|2!>)ItxxZU)dy_3Eu`lKIeUSs-F>Pyb)J9BJ<_-Gin!mCLGw;iluSlz&`+wTGn zhxbm#UTwQ^bn8dLsih0be6gm@;Tb*(eV_*%R@=4{yr>@H_PyOR_&3KE@owemAfZM+5ARw_U=s(;qHUpWrFVdjZdxF;;&NKT0qLc8+Idei}Ms z%@h2|KGvG`X#W=)d-y>g-bs_+;6C}r_`dUW&3Bt$-@nQC6g)z0h!@lwUS#J$2Hw;$ z+}q%*ulUds(23;(R&Nk}3I?rt8lGxkuvv`ArU3$rAzmfbY^Ud|q*1v%I)9lG!4s7C4ck-VTKkx7ZN({K4?9U`#Ir=48M#EWcJ6yEn$*AO7I_-nA&zw!_GdtR8|t5%?7sUS|9Y zg5x&o#Ge!3y3FAE1AOabj4j`gKOx)KB;PHcfhPxjS*N46L}+m;K<^)&Ou`YW?# z8Yt7kJh8S2XD+}CoIRrU;4jdit?R4sS2LdYi9c%R^{9{Wk8h!8Gdx)N-Ztf}Z`zbM zdX&mbhtGbua#Y_n_oTbqb)6(_CYdj-S`&aq-_Fx~v1LC4J(;;;+7O-Fa#zrY>|81J z-!c5mraiCzF*gRoNs{w;FaFQWDACSJLpw$Oi|gOtTzNloRDJ<>*4Z@ZTJ&mlonn6~ z@6EvF#(5>Uada;p-UaPR4{H?-N>6~+#E&YW4g5iqI+=6w!yMyig_w?;DJMH)?2aqi z!ZyZy`sC(HCYUSnV6J?Ye>W!<=vy#X>Unm4>`(HXL4M1o7d(x?!@TL)4?Kc10sTB; z=7N9GKP_nw35u*w>7S=yIniqwg9oop(~GcnS6^Pknwr-;(e3PWm9_ zclMRHyxvoJc)8`Dqy4UHMZ21tSzh15*%{hLuJJvce}~8Y;7l-A31*(1O#Ce{J04m| z{`>pdluWR&_3>cJ?lfil!|u{O;692vcJJ}Q9xMP}s zx6biLo>L}myFZ5yLp!E=>V5YxKE9}MR!-QUMhPz{!Q+Y`?8Hy=NzH-H<^>* zVEbEJ(b*PH>Q18%>prxl@#4L6xKl;?w>J|1n9{*p0vb!;bKb=F1U^dXkvbnwx|m1& z-p_%P*!1oH%|9{lbx-o&L0;7pqn@q5rXJS!e$02Ri&l`Q@-g@&b~1hISvrh6!-#d! zy(+hGKjE9)Nusz+)9xLd3CDdgPs9sW)p9pj+jaB1$5W?Z&>1*_fpwN@&X#MMnpd_r zg^#9n@vYs0{|4ai#7DL5h%(N+O0}&M90z(gTb>yF7a+>u}**V6Yi=YU>8+xP1{fM6}X zg4j6ek?X(1|1f)xlKLtfIXXB-bb!w0-qqIS)Yk&-)1~T&-8g;k~0kVLl-IR{si?VU7ztsS|5zXufwhQzU!~?8yVWOYZ-lQ@Bx>{_?vRnlMK;%4e+)0^!B6m7S{Si-TY2!|6$94)$E62UKN>nwN`s+&72(V*R~NS#+;PAIFzrl3qFy@8gh6)z*^Sw zbZ>6F?|Z_3fp59^wOzxvd>XrsHHN&tb?C1Gzt&PD&ppFm3jHHZ-wORD{4-uAW@1yN zopX=Aj4Vbk6PA906SL6&b%F#Rg>7t!az_;xP*h4+AWg7e>)@`e5x)aUGiQ+dwd zlb76j>u|5x;cF525|7S1!fU?D*o&q9OzalKtYV)@DeGx02uCr~f)$ z7C)Vgg~`(wH|^G|1G^vG_tg>TM|K@E8-t9@=*wf}sOsoHhAqsWzIp;ZBU(>}`Ey_3 z`zwg>nH|L1RU%8L|1?uKBQz$D9%L*I7FSr04$=jWdz1At?NBMQHd+1F>88P2 zG-I;~7;HZ*4M}H4Hk);1+m?-ixC$7Mk=3%XMWau$$E5?iLGSA~+xe{hoF4EF7SAZZ zUm9KX8{}76J*%!qs7w6d->h>Ae}=Z1LH(9pUm=` zOj$P1veR99);<2a)4Ko4fE1~@f$u7Vz0Sf{byH77);CI01n@8s-C2fuAk^G&v0 zcCE1kf2_%4_?+#V^P{Ov`DPoK1EzlLpIXLq4f997+5UCow=nimcFnO<>otAwjx%c% zDZW`)rAt_z`eR_t;FEQ5YzlDbc(&k>Z`QRZ-^zG=@3v1_Jg2pWW7=~*%yItV!Vmt~ z4sfnC>t8AHn}r|NW?Y-10au^=rDpumKl{=Hn5+#Pq@#a2n3ngAnH`rt`oPB|e}HUj z3mf|GZ@?elUEQ`_`Q@_liPA@1ezSH2uKp94Q~00ye;?=15&q!W_PfJtng21q%QxG< zovbW0;|ouAeXwvi|C3#}QJxm~@_;;%vChDkTl#RUHpcqrsD1cy6s}hFpYQ$Q5-o_{ zEp9#dcK{d>M;Dgt>avDeR=7$9zd`#nO)9f5O zkGa$d|1xzNxgvbHxf$?I_?T$f+&5k6+>=(9Hl){%jiIaq{$ z)ssDE&f-J1c3&Q&*U8?KzcCAM3Vvtu;4^AqjAt18M)_N z4c!ah@X#ZzpN>6>_c2buaxk7_)}r%b+)ENCh9|G>y)9nTZupmM+a1?(M&*@W)2{Je z6MF6TZ;#{*4`5InE`FhnrjLpvC`oM;uhALeY`|`I@pbNwhk@tIz#F;GC57EAURfnu zgZc_Mx1{_7M=c!98PHD*{rZ~n_l{b4LhPKd!Mj*Z=A_VdQ^N!#;-iv5}NP4--pK19zC z!$yAkTH5v4H`&0ssLMD*S^FAy4{@=9{m&bV=9m380e{hpgXHH9s;3wIqzs>sr|&z&!S(W+?f=*!zzrQVc>h_ z5bzwrcP04#+(av5I$8g6Wx-e7UpQ|-_k+A2nyH-(4MH_CK-`gd7 zzkLjOOng+4-^{b_Q&Q}P{9?oz;Wx_eCvY^SanoH!y_DNs;+fcRN0Z8bENTCUyR+nq z{F!PaM?Jb1@~scYi8X`vmvEMAUaYAK-1XvLt%5!i73gz{a}4H0*Koc^=rzD!KN_oo z#>l%-@O3hOpv$Jc7owZwcb^%i*<%BmeFa`1_@GH*WHY05CjVcdhi4|CKlIUMHqO}H zB^jo*Ind@@_VaFKFaCLbbaLo2qOW}RU)sF_;_<~NIGPmi*+N=pK#yv}(c^Bu{}tPB zJTQL*nn(nA@idQ_XKCn8G*!dD_>AUu0$THiG>+A~%iqEt2j%zhK`TGD@hs(?!@qY{ zrcQaiDfZu$QND{BfP3UcixWB@nE9BD*?KjHRVKWSt~)Ig`1r-wJjPT!>`-$c%yXtC zGj-p?@0cFVdLQ$(0)8-;Z*HCah?Smf|LwWb4kIlLi~NYPe~H&$*g~JDPGH|3dx>>M zrg)d=Sn~o}*sggmzUtbU68DNSzyM9ONBLZ?c^vM;c=jK*a9?~n&YnBwo-6Oh%itZn zW&-@Xv2tw-rp|a#t zzf?~BQeEm-Vo2kf8J@f2&XyY%v^AXc1w&Suwl0qGPaPNWe-ZhuFFAosF7Ox3Lmr0O zb$yx>^y&XkeK{-A7Z0AG@t(^5LdlP%p0_bYUmXqTzjsUYKC>Z)t~{u?f8>XBPO$DnOirvhTeKhMUz^}9n^`+tpJE?8XGGaC?SIdi=7r)VRkvh- zbjjDQ;66v~H^;W~ZYl4(XA}5x>_yE7Mq-h_n5ld0L8~tWbIs@iUjW`h$tBW%)t7Gg zvPr+5^t2iC>>P084qSCRDVGN?n$C0TZ?S&#kwR|}-um+b3y;^xc?^B+nYnM;yE1@B z>1+DZv+!Je2zcU@%Y#1(p0Wr$UCi48=30f}HwnXUgj31Y^Z6ZvT^WW|^QslvF5n)g z`J(Y+Vv*oOnzu6yZ;ktve5*xXu4TQ%&6U>WCU&V>^RXV@W9Lj3fBk5HbCi~$|4g`& z`Hn7WX<+cYl6Skw+weZ}u47#0&BC9YBk$A%cgWIbFV=WXbd3J5{a*IHpx^M5|4qLy z%K={$N3P$~-bY^7@3V5`4Ug~CGH)TWVb)a634t%qlAPMbTzKSC&9B0}naF(I!F;V{ ztX6!I^F(sg9UW)h(Lu9g8MOS|jZ@h*rceKEWR3zV`d; z;u^a=XmVas`jyriWKR|OKU#!Oh5Z@{_*`~u`j?Hu=l1i+hb?_@2=KiekL{}gF4s<< z4o@3lJK~jF*z*c~g};f;qHRQR@Y+RQ^VJRqzm5&S!P)=^)6?)4^xa%-IM|{%Ko;Ax zuOA@Z16<62KmA{Eu^BjDej>K7VGvwMpH+L|{{QoV+&Ga=-aR|U-jDuzc{h6!eW&{GT9wbLARW zHqO~GA8YiQTPnSt7Rt$IR<83HIG;CC$Jn5bv8p2$TZt`M;kB!u`%_f9+8^pCmOUQGCp(F3v>hdWq-QnA5vn@}|^b=V%}1F6e3}^KHi&)=rX) zd;0?RTyg&j=R2R~S^9s-*`hUpyqrhhj-!sZ#Ebj)w;!wtU@ec8EYRGh-w#QLbvX0D z8TA```sTNKC+*Zd6~-RrEdIIi=Bub59@MXGV>f_v#oa{HB*!N(7UQ7F({iM%>~wHm zNcsfQBXIW{r#RzeaA9eSV zyh+SN740R?KewqX3|sOT)BYCMK4avA7fSoR)jJp=#h(_Z@IrkF=O zT>6-%QPgMJu9)`!n0xp5sEe!de|DG4CIOV(6Odd`nxOT@T~RhcErPZhQ?;~}4Yay| zS|f-EYL=ij8tcPi6h$imZJT`57AsWOY7Jm*5Ni>Xdg)UFiUy+=P$5AezxSEXXR@1Q zH(>ibzvuhMzGiklGiT16IWu$S%$YM`!M9hIZ$X*V&$w6u&!SwN|}!+BjJCWvJYIq-rOm-YGg;b zaF=rLkY8X2wwzq1XC9mX*z&*7C?&DE#H4Sfs zhQ&p#4U`$>ch{sTUs(RH6&TFn1&L}5Zx4pivu+ubpq4D0(JwRtI%Lz{sl*4XJ4)I( z>k>a*bF>|kdv6nCa8gQ2b>>PHnt8i#X(2c!^jB?O?Co+~YH$6Ki?`+`_zwD^X#iV0 zXq;NEvKHsGW~j94kseho@5pXsKCHtgFUys+=_}@y z+9TV?x?JcSPq*(39l(xG-XD9Jyam`Q9srK~Uy-iHGVVfcl<_W})>?J2eJ#AY#G7_j z$V(lY(eH>{Z0Le~FivQ33$*xrn!85UCNFzKNxM$yQ(W9CydZSeW!(Kc=zL)mou$76 zXf>apL4fZw*r{xA1Nt;ZO71~8-^|8kf1udI|>t@ex(zFnQC#)O_-$i9>B>X)uI z_M2;@EeZTD$n$ja)8LJh?g!8FsYAY3P)Dq?U1c~UpM0ww+N0BlXEcA_J;Zz2tYUnG zyArHP@aH6lKh4-VLFnh?O#{bTXS{q(8=}Wcb_d;#Ca)^1kKlm*)zr}|P8~bD)Zsej zI$T!QxuP#+yUrEsoVg-e{uBAv;PuZ(W4FDu3(veyKAUGcw_RYxvOzQQbhIB_y}n|(M>cS`$2+^Qze@JX@BF(le{zQt&MOY%Pf+{C!ngat;U}n+$>WkP8}3R> zn%sYIa-l16N+D@8FK~xvy;e{?&85OgIo``!PE8%L=~Ojh<{JgoC+G1F>T-uC zyUrgsOQ|tle9I*;zH`g8E^&37a&I@td6n*;lO~1>h?_O! zH+*O9e@3ysYCWk(tu^0(yHv^}PmR>;8aS&9k+-J>OUl7p^26(Ee2kO#Z{S^8@|m(S z=P#wKj0O2FIGzrU|GY}@w%^c>UYi6*nfId83@j;IA+Wl9m;dMiYohbrM7~(C;`!xx zlCeVDHDAcwp02zh-v3CJGxIgbzBShm(LVcgCc45o9u;nMr&TAo`o78g>&)Sqtr;G7 z7-t)yOmtr_yWM;JvKR84Kd$OX-_epc%hmhMT#xA2Q?2!9p|gN)6Og|?WsX%Js-OAu zU5DfO^U1a8rr*tRbToQD#XOhVlf9qugZUM5qWBYRLr#>v%?-4*f&OC8U}exRTtXiC z5IP$pr+C2&nIAuwDva>kkzR#NaT))SEyBx@YsKH^YZnxU8;gs>(_G%!vKPkIm;Mv` z+|Dx6!E1`R!~d%GJIou5$uB_DsXrSMI>b7a0-VOg1kLY_jDhV73Z9p6ql|?-)izfuq4`(bw&zf25D4eO~HmY=s{NBy`lX{ycmZR;rqfv{%w|sOKf}!yDxV1FM$5 z4^9h)`r4kuW>C@!2i}vt5xgsgs&uHG*)2?|VNV=R0$eF(3U84gi<=Za!(VP!N=ed|~Dh{t-5CzlZ zF)$~@fNAoKbztTJ*XWH+xih-Jlsx9!@Hj9f&rrU#Pwb5^jN|Z4aXdaM2BNP><{UAF zbHr565qpOw^+gUkNuM*d)h*6$twgV2>}}-?Fyq!Mw=zes7C9T=X?sM@9{Y%^CM!X$ z_Aw?4hE5E73G0Rgmews!Z_OkjAKbpA$=Zv@D6f+ zCO!ce>usEyFDYIRZa1wC3OsUG-nh zQ1u$8Q*zj|*?Zu1f)DY>SrY=tsyWKr;$kjo<1Nas*oW%;!ASnK=1TnLQ| zUB0#nE^o^^_WOqymeLQG(H|xB%cb8p9ctja(_m{d}~PPAZ=;lCv;h% z@kq0{@7aMj_qx|&A7$r1G$geDaeRRCll=FSe-pfL){osa-Ooc<6T8s30XnhvuJ%Ul zqx|eu1N3n-bs!I|u3--sL=Id^-XQec;ZdRcp|z~BlD?eut@N>j^{Wh8AxRNj$MdCw-j6u-&R zFR|*5mdn@&@9~y-LldyWNO3J%E^?4NH(0Vy-UIF;zeJZqhFL9p`ia!#W4;!em^6`p zCXgOoUgr5|St%Npl=UiPkiKe+%-4bB^T$o{62E|W{`uqR^Dz~ZiJ!^3B=PSOFD5^G z+=>$7CFD;cemU{!IK3kbfZYdBk^;KbiOf;`^Mn=P|wZa3^m_$j$wfk&9S+9%Jpf-4$j{(&<|E zY$n@hkG&*g20|^4v%shsIvXGp}==wjg=tk;kF^q%X;{pmUx*l4k*V zoIa`gf;_i(&hxS4xt%;tUp4L{Pi5yk|CBtHzMZs}Joj|Y z^Sb1@hdfT7SM4FseVy}ckUaO1$Ki#>f01Wt=R7Y+o~7h*c*HAt9_*aw8Oie?c^uxE z^f`H!cg|BMd6tvM;i;<6`i?1QzLx!>{G!JSdW6+;ruPepjsRH*JqL3<<8A80t{Qw% zcG4Gg-}5WW`k}2W3Of6+1J^k^8=24Seb^G&hfM$;^Nht@Ew&J{7vuf1iTa+op8r?% z)9d0ysTUbd)$A(RxB^nIj9&rk98=0;C)@gc3F&}R=B zzRGaAH>0}IZIA!D0U26OHe-GLEbjl&r;?sphWyH$7CjG}cTL(Ct2fOXV09DmDbF2} zm4wWd*e9a9Uu@e3h+h5RH7?|Y?(cca`mjUFIrB^|X9Shk2TOic!Ty#zYcjW@ryI8d z9lN~YDQ`t)k!L>kL7B%ThqxQOWG#C}FY|Ljh3|ehzT|~2Vzb+)R@HFFv79}ayn)=7 zkf%bssmtrK^?~W0D$YF8t!Y1U*JLz|sh;4;nEeUws5M`%28wTbfg^WmC*BY&c>#R< zoc*+wsDXmhF8I6kYu+qnexG5Xd0l;>!7QgWtg^0 zeU;_G67j*?DUJI7M%h?>LsAA6k9`1MkRe;MYgX<)C@auK!~ zgwLI;YJ7xG@NSR@w9EUylLzT z?bwRV_y^dGZ&0DW%k6UBKwXY?UTnR*6$wSWBljbnBci*`6pw1;ZJxo z^T6Y(zG;K3DtW6j-8%bH_JyRKz?vs(n#9E>H3+_P4s|X1p1Q?9?6wcgWA8|N zLbB)Us#81kvp;Jc)L(z#u8E~HcIdLYJ6)6oO(JiNE*{)^Ei{oic0YA(gC?A<>Nh?g z;2d*p44SNG+;pYM=cGl`WVbs)ll=}&sKcR2nzjEDnO!0M z8GnXfgjR1|CHjMJP9q;QYU-<&D0QyZCG@0wHFiR>J{_Pw89P#U{q!TtN_ z{95AUSW{aFC-hb2C!-6gTVGJ^;>=OoIB@3oFmw=ow$S2YY*NN~GG`A>As_I(uFRym zJ}R7ZTSob0(llJ)S;!sCjeAt%$j~CO2dEhls{A&#bSJdyb_i~74d6W`k%I=PQfb=@ zt5hhQof+~5d2hsheEIvo=M7%k2#+Lhq>ak$8zXJ8?`zsVK|bWn^laMZ=g!fKv}r{J zc%<66tw4wSB=Jnoprp~P+jWUHjW*Fnc^jvaZ!@X4(B+*n!IeJy><4(;!Hq6AD-+v$ zd0T#vRYBiLIk#(2(kf^<-;aV~y=x)jdCaC0@-+!RQdt1UF?`;Dw^Y->81w7s<3x^g=v0>VE7e~RJHLx?> zC;2b9c)@?0d(f1c;470`$1qjVqsg71%d2F+fK9hBXNgF5;U z-EXHp90T6cSKE2hPWt7dFWO5*HkE$43Z4|%PU1f#&iO|9e9uGlnY?WsUym>OGE-Je z-H#k&`!2TIdm^;{BeatK`WN3c|J*UEgMaejpSK3`l7~!s6rAESc&FKFZAY*BX4FbF0=27iaa>_6tyOU zpP855Az!1+OT6(e^U@^pG%_#2OKscf=LW{|D~#QZG8bW+QeA-kO`o8a@lQTkmD=Mn zb@r%dYO?Fy-Xxi?hLhgN7?t_yd2MfI`=xx~N_WjvPiA$EJ8jCwd|#p0m6jxXg+|6i z5p_$QU!|xv*>`O^2|J}6?%Cik=WXVjcbRwI8j?A%ae1cR^9_d2zbhUknAWY}!gYP9}bkJ3lfu8fm9VpPf&h#9(+M z_~$XlR5Ipej(rk3$-P>!p-N)CZDhXL%~{eQS3=VJQa&C38~F2eO2i#q=RdT;M&Sh(i@nw=9v88CGV>tcQcP=Z(8U{NRl=t@t?VJ3+G?u z9`@Z6T&}$vz^B6FDxVI2$T#tW6}V=>(hJ$=f5QH{g?B-6dsjT2-+%p6zTOj_F799X z)NIO$->w|jpcX&#XhqU(`;f6qC2wHPZAd@>w^~_4A zOapaYI6E-5epbO)YzRUEXEEP|9xmvyJ)Jq6Hlaf(724JHRimUm$oHkwJee)Ro59bR zgFV@sgx8XYCxScYmrFVG+&h$ZK1sVPq6OG@x9eaf9! zeX%F8T4224N~(Utm9VK68U&%i8x9SsKW<<1B>65PAGQ#i?n(2Fot37>7WP(qg+?R6 zL*@p-(eUkSKa%~6Z;a5$_G53} zl|KotRejZ^GJkmC<(#h+wz#Avbxtcl-r%lJcD5@!N%&upr*ZxGY8SkSUoGGZ>_OJT zE8I0QKBuvsP1>+R-YwL4%a}y23BSO-y+-D?-OL$c6O#GN-Pzgbbefnu>~>^Z*8t-k z@=CrOy=|V)}d9T?&cXreBw*x zN5q?*xn6im(u;t9xug&C6{geIv#|j$k}=Hs2ks-AWR5%&IT8JU;NNwBY2F8u^4NOK zJ~{8T8ic>aFqHqiIP#k3;X3#7)1%f_?T?M{GGUijRxW=5Dg#fT6aKytc+Q-<!a*4TTah^J2#Iu_+zQn}7$jl{YgGUfssy03LQmxDQFLnUvuGT!EWxZ71#uI)> zu@)1`-H-;+>GV>2t69s1PSOu2OMAEruFp=%WBa(vuy(ST?U?ErG^I}K5$rvvtfhjdyf-TC z|1)&4_n6qf5f8Wr&z_Hd_Go)dL%Zjov9$SR_8syl7(ZUI@#k_-8BbzpLiR4mzhy}7i?O>axPIpU&wjA)OD*9`ss(a&W4xSGc^prH#|MH8uYZPE!7d%^7s{+G{>qQ4%%Q!k4 zKC7S~`m^?IclRo!y9ky{ZfLGz^Rle}qnrxwktrJRt9|u{Jz{LkYN}akKb&6aNKvt8! zX=E?;vgWT$y_Y(Z`hxg4U&!}pSna^^!#9i-T~7LN5Pc~7i7DVEW6!R4ko8rmyXGcO zS`xlz!=jHlfL;BsbsgZw7*3-O>Awo#$r%~rtNbR<1KD4CV+B7^1J?<&6*p6HOj z&}Sigtu8#LyX=L`wOPwt>(!zC^ohtGBjM3qz>&DimQS{L2*qCRb>s*ieukutGH)-0 zE+U^bz?(ULah2zy7tHDFE-xc&23{58U<~;L)@9^vcKCM+_vN(Qz_(eFKFl{WgS|&P zG`^RzMy8k{-xwF1qqk`}i~j=aDcXCepDiyXGFGR#GH3h1Arm>QNv|vERt@yA*QIpp z0`iA>`&srKe*FeCcSNE8qvRMPXa2Og4hXYlpX*G_Q-_qzvl{__GOq5?J@N zwU=ffSB<4jU%*4cN7sOl%vl-GImo-1v}Mf>$}bzkf8;&MFYEzYvA~Um36#v2RGOrt%`AX;`aAm)FAUPP8GgCR|9;jj1GPEhz6K}ur z!y_58*Iy>*;FPudKI0h1gDq={Y})nwS8&vF(RpJ-inFXr?D5{XS?h1L?DV?GdC;l> zT8*Oa2bdEcfW}qKsa5$hPua5H08Im%cE>sNFz1uz>{!cw)YAZ*9gghx1oeIJMZ2C0 zgoa(q7~G`)rXwfzo^O2WcF!9vqXiu~@RKW%eT*E~&)4=#+Ea;KSqvTm(?y$S&~LW@ z*T{nJQ^tvx{6orvZ?rrYU5}9k?_}Q;OBQ^YK8r4EpL@8pEEwzDOypZxV?_>}1|KKE zbK>V-`sq1vvFD@|YbN!HEGYR8AcG=+t&y>7-_6dnZlDi@*QFg#Qx3Uq1)2(y&-jJb{09ta zi@+Q~odRzgeOAlQZcm2wYx0=(+(JCpX-`W>d+fGfN_%Ad&(`aa-JS*H7ufT9XiraV z;2S!Q*mUT6t}l9Fk>4+(POoCUO+cn_rOy5nkBS3jXG^QvVJoE2(NgTxh~ClNtFknhhC@3yRTEyHkrpx*L2Eo z_WmNzrdYpWezxbaRBIUY%VXZj8KKI3$U-^H=_~bqA32J$*z=5Bhux>}q1cEo>tpxD zllp8ZL(i-BKGwVmWY^J^zwViOB*W%q?W1GMoxn+9ZkB$Xtmoi}FRT4m6rtC7rB3!B z(vE#spc_NhX#@}2+?D{o^9W_mmG7U(ciHDln`vJY|3}a-!XI7nuwkZH?~+ICjV_{( z{P3Nf-`-oj#kY86Bll*yj|*u}ymDRVXzAMmXwbmEPh^nj`q$|Cr7daJ(;c{Uwsipy zr+uB%_5S#Kf8t!j#k-R#B>nstFp{ZDaC6az4>>T2mpn}TSmwfFcrVsmcq{!HJr~;h zVn+|R!Nr-23;mp%{`8=)>xJH~H@NkwKfKr#l5r*TVN04SHTSgVfRE5aa6O4SWnYu# zoCh~J=fT&L$B*C0y3xFoqIEVY)=x>3y67|)FbDBKCa~{$A#8gZ6WU}Ae=FY5^ePVy~_kx#< ztEtpipYN-e{i<~)dqMPA1%rwfoXnUk@_0M;tRBXY*|RfRX9+E zKJ^T+KJy%BO>kwmc+l-7?oi{7`%Fq z#JDy%xuB7JlQ|5XfcSKsPBq7aUfD)Ztt8p2qIyrps*}?Ca1<`u=^=gkFDV z9+f?wy-)A?u5SB84`ZP(W5LTWD( z3Dc-o*0yEY_WNKyLcynwJPr7SeOY9J3{@(5n&Itc_CQ~>xaynXwF2hRX7-1>g%8;W zyzKVQejXcyX4$htqb$+gYd*@dZlT}Sx-+NjhR^ZIQ7t^#4ByK7fSlg8JHMztpS0bw zUc+b2?1wd-k(aNdtjM$MPukky=TuK>()Ss&+t2|}f7{)el_iv&(oqIJSq1*G9wf2< zl04p`T=D{!aV~p!@i`*xoJBqv(}VR`A8cLC7?*v^eq??bYr>m%krwdy!ZX>+Yu!Ze z%-Kndb=$YE@UG1ZAK*{R&;D%Y2PzZ*Z|wB&`{b>*=^*==ENcvHnGf%J;hhUTzHt{F z=NmV#eZ<^div5M%Kb+0ceofdEs8ID^pi2}wALOj1ptl+&bUq$B z3tclcoinX|(DawkxZrGGI6I+XY60+n#GTGTtb6x+236;{Qd)+xm(2S@aJPL1?}Wax zcH8aA)a~J%vZj{xy1f~_ir2A>gh&j zer!lqhjpBDr-tmvxs&Kr8=XF>*7(@xMUiuj&hk>9E01Js%MXU*;Vtci4@WBCj;3$o z<hWo}0)kvUNUwcC+WQc6Q05&?9uk-$lJ5eKr{WVC zSPsrxzR>pzZT!C^-WBK0@NGY1zeKiTUh8&N^Y<${%cNapZ{dk|sYCEf({o#z^)_~B zSM!sxS;gAp9;n`&b}8N4m%q+xX^#2jrV~-RSBn z#*(xl$l7Q2eMVa7)Cbrju2~Q_Hf$&tqw{um^DTLbzhZBB8 zSU~tO;V{BP@|{Td2LJO3-yzH;tQ)Rsh7bnn4>kC#(EWsS&O9qrq?YJ2r(VmPZ>5p6 z_6JqXo*}B{cvCLmlv@zVv!6T~=0lORy`kt`vEy}pf8_gf!&J@de1D$sHNyWUY$W{aP*w9P;hza#A$*l^J>j1S8wi!y zi#~OdjsIgdJUQ$8wZWqylD3jGR{^x6T-&!)&1%Afguf-+NBES1*Wke07Ad=wvVL@8 z>V^|LX!Hxxb^`A)%Ke@2QNni!mlM8A_z>ZL6Fx|&>D)Tr#xwDp4j8u@JPRUeHEO;@WlGsYqI$No$Ct4K`^X zM$$4!`^dxi2R?TJYK9S_|F1cba5rH-;U|Q-gtER3anc79ruO2EKEm;YnS@z{>4YZ` zrV^e=m`n(5mMHH8q4kpDu@f|H+8$6fC-FUz@AT(p^{MX9C3EK4--WODkVlt&B9hiZ z+TXzA(0IlU;Xy(kF|27N2zBk$5SF2OFH!kzuWX_kJdGA#l&(&&vByAmOFHmj^<<=5zCVY|b z4Z@cQUnl$%;cJA?5;i*NuM)n(|5pee)Q}ie2~P z)cZEy*YI7_)jQ0_*X`=Sce%m$^hnwRq}|aEex{s+PdMQ!C#)s>1?i6wRuVo+xR{W~ z7Hd`!K15hg_#okG!WzQc36~PCC0s)IBH?|68n3{&Y`nf3!C|h!D;P=p8EFeC7o^+` zgtrrx6W&VrbHW9L_Yuw~e1LEs;kATw36~SzNVt;l20~4*T9;k#`bZs@n|i;Dq+Lqd zOv+8C+*O2rLhRaWt|AopKO&q%IF)b#;gy6_2`?wCAS@-ki?D=Hx3|h^Z@RmqAI6$` zCq>dmkhUb9@lUyG!eYXugg(Oi3C|_0AskP5H{n@?8veabKhKK5$~Ewxilhx9?H80g zg>qGd!wLV3uz*nN9Yz=;JdyA&!hAwaw|}^8x()Dj;O{l?FNvgiNV|t}sg%2uFq!aP z!s7|0-T{R75%wcoOqfWh@qf|5zcK=APmNReE0MGo(ypM~Alu%41A#p$^5KrVUtM5*{Gb`L1;G zt+Depl24}x-JyKo6hmhzzn=8RDYu()en{J=^0VwcwR~UNE2NU}SkHVLcxW859dRlpd=NLJ8_s|X3ik{xUbNA-l{|0RT`q_88<(tcE z%hx)7dQ^J9sPyBb;;B*b!BO$tsQ8JIxZ+$bzKC)gDA&Lq zL;kyh*!%FGz8dAn24wa3oV^q}q#xl!%=CXQfjZH1Ixn3;R_~fAT3{uE&?|IrKr-Hm=8CmdPi0$yu|h`@g#7x6icJQpTLs zn7l6b`O&b=yCOobUx1U~&Y4>acj!v1*l%{F>8<36M^i6*<7k>zYn_fw)9ZzXacHv} z{uSEHWiJ=Fz&9?yJ>lR5L2QuO=RtF^)iG_K&i?tUp9w5^A08hxd=Ju>?8lScyyNi! z?Z6(SWEV903w?!rW-0!Q{cEpxi_a20lho0SA3WVp{cXN5^vP8@+oUhef9X@bkEeec zNO$4GUH0)$fJd)SyYJ(tGp0T8u-}0r<-5)c!mkOOZBFRzD!&Ikp6H)7ALA!n_*3@F zg4<2Nl6>{p#wNhOyZJADpGzJIrOyUAeI~ROo_h{j%D2%@-+_QZPrRK3L>8~@9_ zLOavB|HED3o^YJ}AL6(Vy8&sB!SOzgqnrtM-jBz^Z8o??^XsHT)3#3PrPi8p4}ID; zdc32Bk43L9Z7+i^VizQ|Y(kG9b<0};@=bI#(KL=n*FSf`xvT@{h+S(mU#v@GUWb$FvCmTt&&e3=+8^*OHYL1O1@AP&2h#oo;&N8d1W#iR zrfp(6;nW|S8h+>T{=yHyNyb4}n%@N92wfKOO>D{~{u^*wROx%V(%o>*^ggU3i9ycm z?0M@B^6V$R{XSPK_GfKXl&^~#_miNv@a@}-WwA{Ydvn8U({s^%UC+G7H$U^Ztc$vD zn1dGq$4y?*|BRaAt_kKB*UPvM0&Bo`8Sm6ZJN5kH&cbHN84J>%(QWcM<1RW)#-QL| zPP<~!pexPv_y*U0acCAx|J;iIbg_doXGx-iHtja^`d?_fxtp8^y-#uIEjr*wz>RMs z_tP%1Q51abx8l+@zd|p~$7bH((6ltd)AoD9hMseQA^Gm^VczK9g}>{WQ$@co?^7nw zZ?=9vw%vx&{huIw;>;t0udGR*(neWxV(G|Zjqf=F+LsyM2r@5v>0=qkjkH0=skX1y zzNu|r0(Sq|an8UuE5*D_|LVBk_OGVn4Sgc%x!y=Tm=K9KB}U@Devx=BK7$QRbzCIw zKRyy~7#NA?rbObw)JVK3EfV)-MB=rXk+{l^#QlRze6?yA9Esz9+`(tH!UtVPyeT&l z_vJ_8wL>Fuby6hm9~Ox>d@B;qEsVs2!z1yglOu88weDmmlAdNg-p>Z-d`b2Z<2N5(hTZQH@1;4RzB6Mnb8c-QFbMA!A@j?4=-6%a%8ueXF8w7 z2o2)hVGw&Hu?-h{HJLjqXp_hRSwUahyNn4r|G0}Z``k6dDkpAiVQo9F6l{)Cv02Wv zay=8a9nTn+GS@_vnMeFXVBU#;E}>g=x%r$2J~$U0GUdJ^wCU0LEdX<`C{};j?_xyu zJ3i{NZ9>zmi-@%6piZyu+{qzcG^c zH1fuxg?W47SaC^;!X+~bmx09XK25g{!Pn>)t&ij2C4IYjegrq~(QsQF-?x;!+aPO| zk^euSZlRf8=hYo0D}fzkEtmhF^3A4QinWWljcSPzf|sXWLjmn z*!Z3aUo{`Ob*tSSF$D-@voZZwF-Hy|w zF6^tNtVMpCC%XG3Fg~Y_l`rlDmf_K*#0`&D6E}P@kNDB}Vv<8=;n_;^_sFw7@I|x? zBQoZ79XO>}Q;7?%GA9Wgrt{zMLK$(HkAA>h^>L-I?IS&|q|d}wO723+JF}VALGTp$ zLU=r0o(ntLl45-ixJRRPS6Nx?0L&clZOYfVxd#E?NqcT0Y@Fo_yUI_vO!`^ocHdtQ zFT2UzE3}F=q1d17^gs5Ex3MpswB9>7oBa=;xwufy-PJV?uY3JkLvZ0UCws(@Z zj&z+D{8DI>o8Rcg;6^{*|EfDIxW%h`TRyg3PJMQ}gs0Q3X6DBa;EA8Gmno#arq=dR z`SfiBC*}&;&pbLx>^;sS-!Aeg{^#+(^3~$-Dr66X*Aw`)M&~g~?rR8K)~Ge_l0TRC zkcNsk>gu8y+(FoVY~sTTo`VK@Jc|78!dJ@O zl)DN3m$mpJzOxt6wp21E*kdfoL(a;dv8d#&*=9cIJQiZfB(@CcMxL_ef#JZFIY8*g zS$nw`UT^kf48L3Mf3NLs10+668}2G@&8M7yy*oVbDi?R(l0r?p)M?744ts$UfS+^Y z%8qGPf68ioPH|CNU6xuSwp%{@BMINdk~ig^K{YmoD=tvwGqCRotS{C!@QK8Q7LBX$ z^MG$^XkKdQvg+zZCHFxWXgA!XttV{|X?}3_=c+Yx!9O0JRTm&57pXH=ala`ZUM5dv z4|%}-4DP#>u1Hqp7Wb&)!3w-q91ieSyv&aUgnq_wnKSqO>sE9{%#~vIUu6|7NWfpq zEWYKV8<>Q>pv&dnB)oOXcd)A?eI|Lat*cJhJ5BsP3{2RYGqy0pH#%X5^M6Oq*!pz- zzv=vclkf6>o%4Sk-_!X2jPw5)zRUlW&i|EsPvw8e`5)rD{9ok!Uz9WUmyFF7qgDAj z>>lgTHPx5+S~qU-v^EY=ZFS6*!Xu4mo;N?CH@19vs@#ozSWmR6!tPgSGl{T~d1n%K zlX3IIALw7=_N|ncc|X8h)5tykbna!&HCE~ZoL-!S&w4z zuJEeYl{zJdHVzkG195o#HR`;lzZwP4mFIKEG+w@%V#XVNyis_b`=q%t2Iz0Y*wSb zdN%KGA1Qb%S4Oqa#05uU>z%B=F^cWe&7!jQOdd=#- z$DG0Wn%S2wa_)-V0j@%Y8sc$?*uOSvTm|Fk0U;F9j&L8Plu(pZ5$NNMu+kIQn{p;Lr?EBNLFA~s=Aw#^J z$Qw(n4{wmyHFpT|o2|wm7^`-AkPFkTwbb=oA6MJjgV=hbqpBml?ugQOJw{$XI#c@h z9O<7}G>WEw9=c-Dzn}N(MJ0Q8#ixJIJ^&*7IN86IgF{BEuWbynhPEj_?B!l)2$mQBlg;7YdwS6!-+n@mf3eJ>gWTJ2}bL^X_}Qyy6CTLeonOp!(+key+Vry6oo4ji^6xn zt9P(35&GtEj<~{7`VM*(`;N<;KEoGJO;zHe@NU){?ERTHQmh&0+k1#A=80Hz5Z}|W z{7xHPl*mnjcLDw;&7Fzn<5b%_)Fu0g0QU@}9p2-M!i{}oKapm=$v4sUEaGl~{?>0% z*qbNwcS=h$eg>D(F3Go!e74+}W^EC83Z1W8#!;H}I{zD4N4-APS~Xx%c)r`aDP^e0 zvb>MTH}S(7-B#Jh$bGw=Hz4y55S#im>m?^&W%8o1eE*tnBFD?OReZa{^0n2n?#VZM z{~&&#Qmpg1`}5X~tSSA}s2{-Z92l&br_@@x2j=I$>_h6X<$j2EEOYwrKH%|fRFxY# zaDSkx524nb@cxKXmyi8NWba_(dmeLOn7VSg2Q&`YqnQimP@j~q(zuE2EpuFowF&%v z!9g7|^1Q&bap(mO&&;8{UNvfrhToYU zPq41m^IavXQRg}J|D=cd#Sd^T`x{fg+#MVV&m!;JX>M0|0BNU@=4Y?di0;por{1ij zpQSHc=pNyVHC6C_06%>xd1|2OB%yyYcRbs;H?X8I>fS&ZHuv^Ern4@_=wbd$J+;&$ z@ONlEQl`}`?QzD<2&XN&e!gGnWv$V79EA>yp_$mgQTK{Ue3&qf#FxlwU5LjCfaXEE4Iba`6=%X+2Xf9RO2 zy2~|E|9;ud?^{C`$FHp~1hR&h*`vGV#@M`#; zc8YJD#6!frr~Ag$4applhWwo0v8HvWLx43w=6QUSPpRuc_7}L<0GIJJiuW7CIeDXI zUkksj#h1z-&h@h1q*`nbINTukoX)!wK!*`%bfj99x&2 zYFUMxY3TdHwtnI<#+cMQf;=*>z*AfN?DONnjn%H`a|Y3WrgqeqY28PCskHG~es;Su ztv-BjVm+ux^zCDADQ$+e#1`>Ts1LzZF4BNW+6zi6g zSQnvXwCq_V_6pn$`N=;Qm6UuCU-pzWYa4A6+O9)qE4a)1-G0`yJCRF%rS+w@9B$;l z)9%Dp650l7b6|)X=q*1XS;~1`_h&2S^H^;b`ox2mik?pT-=D88ja62cyCg@;rLrF| zc=*A?OSyR8KLRc?|6X;x_zdXY4_#%sXuUEHPM8Z)tw!c8nTtp1eN4Lb8`5nawsp(( ze>uEN=KhsV`aEPy=^N1>X2Y{L?d%&`3>{}cM=j^+c1YjJ`x@yS^9Q&56dhtM{Z~p| z(?6*U&-lEO`NQtt5776C{&gLFqUXK+uJB;moU3`LvuqmJ$C}F8=BG{rM|fllFeJa9 zvfbq3Sa9|O2c6&C%Zu7-zHZlJ(!Z~JSwG*U9;u_D*wG!ts3V>pTh0{4*M;2a6FKxO zXz2a2C|oyCjTD-D_pp`_AH!IaJx*X}Wms|d(%4P>@kC@M)|_a*&vW?xyuOtsH9KuP zodwVW zRp^#|=$Pix_KKbEuz|gaeUEN8ZTqwE25qkR$gO#9E3g&3sK2jI42cf-LEs1v?tpfp zW0?MVakvs)lgY!QAT_F&8dX8xGu~1qUEd3)?9;#xvOZ;!{ts|#U>?}!PTh3ComxE& z+IT0jckrmat-ME*N`9fooh+RtT zvj@Q`Qa;7{Ie7UwpQ&-D;D0Qodg}n+(iH8VDT}cwzSdH#BxrsaIDUfc_B8d>;=fpY z5F2}z`-E0aeM2{j4quNW+ioS+nqtn~jIO$Zve7bL6>_d4xb&JF=ceQz;UEp(fSm(RZb=bzI`529unO*F&}Aa~-LCWF(%bQY zUyK}fjyhvHwn&QhiM>~VzRz)`&E7$p)c+k|A%Bc4gI88Leiy|yp({MGjYwsF>nKkj zOZhRB58_YF@06Fh8c?JpPO`?h1x-<>u$LBDuqY5x{! zL%gt7{8;+%-$WiAujO8-iL0|CasT*8yy2WkJa>YQH^|!$K^2KN+5V7py3f8Nt>d*F zc2P@|>J!QD?;D9Xbl62LQMnzqP{2=$Gfpo6L~}0Cu?8e(Cu3%F~4iQrMobc zt(vzCQmtELFD>|qyx=Cy_D`CHf6@%gb1ios@Es^N5p(!$cW1ZkXAK*!#};}4+F_sH zr&&KEF8V^5Q>PO5A8sER5AMCQW5b=znk6!IE8})7>#@MP7+AI}o@QN6+?I*Cvrb&g zWvVbF>xrpL)>zxVBg49pdSpF`_3d@O*<-QuzCZenXVGuPds_{E6v%Bhjg75<7y4Cj zws!OBRm&ejCd>2`YMJsBa5Z)rS;TERrCa&LZ9f<3R)6ARqp_=#J(1{Gve1d*n}v4m z_?c}BBlDWTsc~mutCB(AWNfN%XSCdW=CbAYAF}1CSb9^V)99&PhHs=zvVI8P1kmvq zzR9AE+3=0%O!hNgj9t$M#BE-{-iNr@M@6^A@YYB0)n?X4+deAA`k1`$z*{xg-mK-f z-JPX*ED2tCUa!$9)<2{k$Hr$Pabst+#i{2mX#FaDuuJP_Y=2CK57tUuj*ZXjUcvALY|jdqFXRpJ_uW~W=Fzrg{Dha6Q@
      z`HM&8KdY+@V}CC7#2fo>@GTx6n7Q?TYV4m1u4e2H zB5ub1iNwv=KaTj(#{LJq!)xq`1;BPv#6OOV-(4=aTF1-`g#tJpDQ zx*l0Bd9EXm;oEt{4d0d#@6NX(dmDK*!`c_cw*sezy~J96bKHZFR|mB$JoAy|ys4}8 ze?9qLmi^%WWV_Fm%W$F%tc;-+mIh?}A6F*wJCP%eP;QU{=s|*}WyS_`@wCf7u zrd`FvkJhf#sCEgQf4f~1#m1%k+rwSw*b&rW@XjS}%PZ+tA#r=|Pqzw)i_O!|nS(!O zziQuKF#FYry;N2d?m3jP*RIZbXLEn3t4=HWjOj?ebH;=&MfUQe&{@cwJ^+}}XH1(o zN0PPmrpjKSN^mO%H`%X>PUv^oDqQYq9kWKxjyS`x(^IW9>`wG~(GdGQ+@Ib3{Km$+ zv(74zT@-FcNAIUDfhYP{H?ZV<4*l0^qyKWD`x5=v6N7>!XZ<6#{wpw~C|q!eI}q1% z2ZD9vpX}NF#0}gLKE)PR z-+xH6e#JLQQ=AWMM+Z~H8OFTnYOlvR2U^DW0J`%8xdXwvn#a3nLPPrwM23|y82N#+ za{h6$+<|~D^8J^T6Fa3!eO8xg)rn1!xd%ae9!8fO?<_)aiTAAvnpI&x@f_!|qq*lG zbzM(ga^4f9Zd)H=+cGuN-qB*~f^E;KT91}y%^R}7vUY?OI_ltF@kf7H4Pfo zVkabi&i7E(N8GmU={$DKJ;W-`!V0)QVcOzz+EV$E@Og@LiL~Qj`^cW?*%jw4)Z3)* zJz!(*z>_>e7fa)vW(_0Vv`NyZv>$QqK-jiZm;3PtMB8Mn%3X-=V_aE%fgxi$?OL(H zOtp^Vf5)8%#sGFrtMkw$7oUs&;b~?L={y!=og*3jpRwKhEU(Ks5_b=rbEGAOD_z}e zg(~h-ZMB>s?V_BYGeP06W{F>qEjH(zo$fyLa2_IU=bc79wgM&GeZbGMzWXr9J}Y9t zrOI80q-^`H!{g}O^cgI6|C5Q&g9cLfMqq3=cR`})QkfSlxfHrUyWxgbt4RCjRW`27 z;cMoCf37}v>wcDF?lY|F;huuYQ|Z_~#X4`2I}f#dUx9tYYuGo+xQUfd&ZT%qd!)>t zyq~1!&oXDO`#m;ua(3P6&I8{%-+4&4{&g029!Q@_-mZ5Zc4u)XA?nVRR|)SZXja%Upy&cn0Pf7m+VE2vcZsf>PV#MWseywl0n z2_BK}Kj3?cwsqnhfOsmlPIIw!x<6l)7jti-C%QFb3n_G~(>9T5)|r%7ocqTu!+CaN z4`+aaPaZIGId=#!hcr8D!Re&QoNeEaNVm?Vjj{St$`2%O1Ng+lA+nC8TZ`zoT=+uH zWMjb-zV~uRK<-UgJ=~j+dcVk}?bx_t?^C|2r@Ip+uC|-u6)Dq7nRdodF5}7%?=W7L z=(&YAp_3UeLB=+1S!4L|`wqUbaFucWA@HP(v?+F;H0!^~BXkt|)gs`{Wi5%9Uub3D zqp8rDm&e!NVkRnTVxm0)~%e$ z=)TeGT=#hbnP!QRX;wOSDSiUoL_Zbl+bhgLN8UB^PIq|sPgj@DyjN!7M@ zX;z4M3buEO^&}QeyRIS8cI9&^D|Y2o$ao^l%yVob?jSv4PnT*HVT&YkVsIz6<)>m> zK3vOWHDMC4H4fKCxqv_%MN|BKGRJ{O_<=Kee;HdKTYg zPKll$}?>{=-O49t%HtY1Y^ku2wB6MI(#j;sXfFGl6))#fytapFQ0zTI^5E)kkQ*6wsV~0K$ z&9u&<9_5V1JDv8(_a?quhs@hNw%z*LAKP~86L_;@1#ObOl^dABPB1g9lYrR-?j3gP z4!j3}m#fd^ZM*fA4!qZa6K%KN$p1lOkIimHO)vctbB^_{`qC2Qbdv zO&$%9uEcizL3KEX_Y=JAjRI%Jx8WB4Ih}d}fA|Kr>%)73mujU0Pus3DUbO8xW69XA zzb$;myqnXm3S}LsfY!0*Z^gG*w(IRfV%V<3Z?Y%oN4>^&{RU_}@6`Bs#;S8WGU+;P z>yc_5pq{#KV7vaA$4($cEU3@pT>pO`bv+X)-&av9AKM!2S)u;gDDwgf~D||P$ z>+1v`v0W!`ELv~_F0Q;%D}JQ>C+Kmf;|;dIB^}Srjid+jbiDgoZ2MbW3J$XV2z`D< zT;@FCN3j*W`CG=>nNe^{yTCR3eDUkiev)Zl?7jK{*7VWX zr5|9v=;?fJF=MH#ZZ6s`M`VLZ;9+!iI7aBu&z(!$=o<@($JQ}sVvmz$oi&tq$s8X) zqsbdfzxeF`f-O!XI-5-TFw3#QNuzGNE$Ci|+x>}cDe>56aT(TP`p}%i^(Eim>Bk!G zQSpWl_BWZ>-(*-P)1Nmx_BV%4pbqC8ZZ~neZ&R#&#C08=>~3t`%`Bx2i>e1Y=3DwJ=gY;rsKgekvvTuwxpYt@2p6AZHF!CW~DmpN15Nw)p@$kU1E1^ z^rX|Ft*p;7?r$O<**m0Ib6;e9V;?Es`p{<{eqv{tfSqO4VSK3-snCQ3x#O{7`CR0t zLToSje};!Xy_@fa&v-)eKC_nn@33tocccVMR`C-Z@iW`Zo~iTvsLPgnLNiwlthafv z^Y?i3r`Z#T9h{7*lWC9ajk1Q4a`ge7*f3(j;Ub%_2(3xxBCvPlTnDdZh^_%rv6fUns;qnr3 zb6!(NT-Jb(x|O)#`r&e`@bbU5-Ds%gJxky}K>1vF|umzBmI|hDXmOZg_MI zal;q+#E-@oUqNhu=TX5`<|N^Z0UbD|SpA91e5C!UEsgIh z?bq-F`qot8@p%5!zUpX8iuLs%)0X(OX05^h=!D3cl56it?KQ|9N#|aOtXW;x6l0VB z26Y*Ecn9%ldHDT58F}&8=JR8bhks8UcHgI2e9+TV6W4Jp3r-jXeCT zD7Z_yz>SuNX8<=A&zQ5T|4DiH4)8F1UfzLUy0w6~k%xauyeE11@fVCtnQq-k-v29k z_)_XNbK|+h?fy)$zC%2oJp3`VHuCU9@*Pbc9xHV?bL2_H%{+aosUwCw{D#!w%#Fjz zceMHH-<5}dmvwY`xHUV%+y5foRUW>JzWm1Wu&=j0uDxoBsGJ@oN$mn#z3AlWn}Qk4OQx**E&av(breU{6(XSd~|yR}1t~Z|>#|g+f=-Ch_6o zJ>%}>+)>*r_vv@@=4~@F+9&MKXRnucZxgJG(|lv^?yW-C&%Ac*UtRqt_fJz}XY^8g z8_=7qIIQ+co)6elWHZOsb1!j15xx=GTg`MQRoA-{HWjW@Z%W!w()t1C7oXj_wBD7( zd%*pxXQ=+0?jfA*N~xZ`PK7?_z0zQxb>qu=uN$8`IQRP6K8wb`LD@2V-L7!;Zz=n_ zz4S}oH~osYL|dqL_Khk$bO3F0xv)D>r4{@SkwGfq`KvJU>+> z-=Z=%&8tKf_qenV$A#q2R;x;SgTEQm6WY~YxszJZe!E$EK#(6R}Ed+;!_z{f8;bZpq56QV0?^*gQ z-B0_IZQt>#-{SEy|GV)KE`C-7&Xd5wKBjy+?Le=$MedAC*gK=Htx4K0 z)Mcf@_bZMh)~~nzGs$snf zn@=t-tQy|Ca0P9=JO8-Cdn);cj~4XZoqV*24$`K9eIC~CvE_;X30$P^Sak*uwU^#> zrn{znaWCG3?#DZ_{drGz0Po5k$NRF!L+gRO+un@v7bTwiZv2LU)trNQUx6hbtzdyD;?u+=@7ua?hem8+xHI;gK z+qi0~YMbCmX<5Ws@PjVijo@rV!{;1X;0x>>XAqyLLcCEtrLezmX*Ry)Cea7YeO22b zcz(rk?&lxg;10FBU3&{sWS&%QKZFlW8=APk=ElFdy&oQIy@c#$-YS3nP1;8v1dBJ0 z_w%NE9ezow{+U=WZD~wZBR}UYW!^wsBjdF_U+tYSM3ruIXX<&>L%hA1`|bF$QJt6^;M%TAkA*OymOplZJ<6)bH-rR<<2=J^u2<%AEYhQXv-sv=?LzF zoH<8)lVw}?f&0VI(#C&~^(gSpX5INA_qe4UGPWN1lL~7Z?rASwRN@Z3K$|50D#FLf zznpp>q0ZZw>ms;iX;}7rDd*UB-(5`Kb?vL*Nvd=Zb;=vvncNvW0PJJnr`5twi-q3Q z{qQPxNW+cIdphrY!Bw|4n>pO}*E)wZ>6?d>-SCDg7rt=09>!KY+uACyX}jFFZ>A3t zT!V&7Ue^B6%{iP!tq+Eq$S<%4>_@&Ot&RSvLf4V&X*j3B9X#hN{@ZzMo2g#pQ$y6q z2JSeDZCVT8=^Kro<}1A(NZ$;$z7@q+qrs&B8db5zNWVxw=y&BAU&YdfC_eLQe@&u) z5gw7fvJEe#1DuNarvr`?Ue zSnPC`xid%0n%TVXwxtQ4e$}7Qmo2>gU5&gl%avF?+2smta@NmW*3KfA@35?&KGsjO zh8D4g3OvqMOLya!?KRfF7T|meoPMr;)dFiaa99(o`>`Hg=kkp+YvM($i-oL<0z=M* zqiK)_4c5UwLWiz2(BEi(19a$01O1KmH$aE3G|=B@e*<(7oP)>@{|*g+b7~nh5ITq) zVQ9el@G;ZiY2<>7X}`z@h6chfgW;D3{Dkg+|NnWqyGD4ViZ>8gyQ|%cRA?~sE^j4N z2PS^*YKf;^YU+FiVN0t?vk403Y#vR_B@8x*MOOg;9Rjir_=rHuF-}(@R)a zzsLIeUDnx)d9VGVde&XNpQr&w^t(qQw_`iDW<0pL@K+!(62ae=4~YEY@#?}iyPqH9A8~CSbt&p9;(mVKhkZh;Ch$&2sjcg-Jr^I( zB4ab}SGgLtRIEypGv=iMEpDkSl&paE@|J; zV*GsK*Dfe^^;T;qik|?!H2`}ZwlAx&f%yq}_H2%=18*FSAA>W{rQ-)?-m5Bn0)3}_ zpy9K52J5`^Z2^8<%IJSNFP8Ji523r@-W6|Cj(bL>bJ>^qoiZZh|D7`P)*E@XbK7FU z+J2@gFGIGgLY|cUM__?Mo+Lh;`0d1zD+8wzM=p$69{a&E_=xgtcXQS}b7?|r09sf5 z-Z$TiujG2#wGrPRoGp~+Q;&+#p1`ZfOzzn5yV7|*W9dWs{=qnOPQb@)AwF(r?n{{8 z?C}m49tbR;4YbX_{yT@tiZ8VH6Y2QTW1X~ZwK~&D>&|NFTl*|$wNkc^4V~^!h@>~z z{x)=auI*z($AkTKp6D@S^l1mvv3v6=bcLMf6W_rY5dJF4#K)kfO=SGUI~VDyN81IQ zOrNi9KD=ObXP=TLx)!O&_@NSCunHfrvPWw?a{JciE@#nODPzk2gSgSX{e^fu-P=!j z`{`(B(JxWn=-yt9g8NJtxY4?|?*Z4QN9^;KXx&>hohM}C+YEk`JwX#c7c$0GJ8fIT z+0J~oCEdV|&>Fr>HgC5{zuSBo`QFocx9N{)e+`Yu@R4)=6ieQOH9E0dh#Q?)Wd}V{ ztm}w()$iFp8|-ucexCLY9oYi%8oEb(He^^&vS&KroEiU&JVr)2&}>e2OxAElYT#9o(p zS3Tl2yuJ8M^oU2h^@Jo zp6_U9y7f45;n}7M>|@SWp?v1eq5M8%e%r(unP;{%f`oM;_kD3;|g6_ z$%QBB|HJEMjTrlAUlpqG3~pJ6&Tb3)K)WBi+w&dzSy8>Q={wdrS$wt>K&!|ckY+9H zXb=8UJKBTa9@8FYu9kaA9_&j@d#<8AW~@is`-rceF?y`?ehDzl9D7|9>?>oywta%9 zYg&B=*mk?)&$H={&5vH&nr#13I_^6@vKH3b{-bodvVBJBxIZ<;^tKd^aO;F&X~*So;p zNf{fqJ+?jq{;9yWY14fjF#6DgjKu@aIuPAAvObHvDeJTJkJM*mpt()pC{+hkoW_&*NtA<6#ffi@i{9 zbc=m>v)dJlwYE1Ws5OzkNwFRP53^2H5;yBq1@TNJIuGmuh-dLmj>PXIZue!1bp!Dx z^j057*<3`g`KCV$xSwXu#}-oN?@r&!UHgne*$|n;)eFQ#7#R-Aa2?@jJT{FJ<)s8z=#YXaQ+UB&6{+#|21s$kh5-fXq`qL zBSW}}8(O!gL~uAn+~CmL;Lrnoza=<0v=unVO4|p&A#IIqYGtyj8PqEnuE2Lz72{LZ z=SF-)G^1aB5MH~PpXfzj1DB3{fo_xVcbfGI@odfCoZAzR*kQ?C(uhwAH*?3MoQK>g8LE+J zOBAKm=Y0r>Hn}w|t=LK@15(9WEkm`_)5io*1F2f9N}^!i@9*q$a!+nP|Y{mm|1bH^Hhx58TJN@?Nwgg>B^UvGNNmtQtPX-dpq+13qU|f!O#wD@hsmsIp zaXcG&KwMy+y|zd3?6p0R=ft-Cx{}xSxwL&OJS$oEx;Gx-x4w9-4O>$8S*KiVRzoJe zU&&m@ec;1}p%-Wl(ph-nSv=puzu6B=i7gxi%=n~XC)qH!inyTY!L!}?$Xm~hR?PTq z*J|piXv^j9dD;p4?0>V5Gv_`JFY3()9uG*zcoEqU;k^0T%zL*o|C;>~jcd+Vo)S@_5yWjP5#<{yK{X<*G#21ldkhvRROE> zd8Z9;Ey`UVhr3q4##olTw;6AW5B}Guw11Tq`!VIp8XwzPw(5!Ziw6Jo{i5|P@3Rh} zUC-_z|3%K`QO9%4Id9D2-W<*xW;#5Q65hXSJ#;92 z=s-8@bacb4*mXXbr+P3al=H*hpv(TYaoNhO}belq5t<#_gw*$Z7XA@KQ(NVT!LU%i*?|tf=zjXQt>@zNRWQN1z)AT%7dvVc1_an3vfEq}5{aam3M7m(f$KKXfZU={0}m6p|gZe^uaneVNgR$9&7XIO~CYy953 zCa3QB=;}ep@WISm?1!glFWkt8J)9Byka7Q^UH?_#Y{d|3)xG?JR`!bgq1J&G;86N< z(w2DX1FZu~92;3yZ2Qo-UVhg3p8jz;ZC%EEacLuMJFvBmHsdl(9@V$SD@Xc2l*Ye} zZ+PJHzU%mB*3^kM%O`2in_qs&v!|Op%Cpfy%-Hbj)Q#igwln{F+JAm#CFQ-jqXxn?u>-jfpzW3~WN8)M!nSk|!(M!;~bzk~6 z#vXBKcK#XPirerjSj|s!?K_N5WD@hfIWO}HbSp{8tDTrKqWz`rvogtfE~=R2(b3LW z75uVo&$8@xi?+NN_kMliV&u@_MVlMEyr;h3mHS+0SMJJBx^lVWBKOaqcIC>>*Zx6Q z?xSyX<^F)*7Jg1UE#?f4^Bg(JY14VGH)n91XU?e$2Isl5IR4yh&fp~O8G7>UDR7WI zM6xC;_8iZKe%$B7bBYz&WONew2yl;ht4FJz`#MLWiD$dfd@nsVQO?{?JGoB#*|CRt z_T)^I=f31j%Ns|RGq+Jb$E|mh;T+-%#(d%9%p+9DKEyCv0SQ+&|63>mJ5d zDSQ#&_gcv4WG}-TW%yt2LpG#yzsy8@7c&M&E7~(_ADw6iSo`q5)~deBu6Z;SUa(xg zLeJbO`uqx>_ULmF{V=?1<~zj{+VGFVtNrIYJzp}N5BTWn0C3_%wa^c(t{ z!jJo1hW(!)=Ukn$Az886l$VaGZ&4pk*M1{~m=RgAD+U-mm(#w+61w}!xe@jlDYtfD zv|=g0<%6OX*T2-YT6_2MjYD_uasIs3nZJA9{S5w`@zhWhkiNdsdbYpz%U2ds_Z<2X zdI#O*>R*Ci8~nlx%b26V*~9@>bqlae44ONQ3c2S)`pKK%Hp_{%pBekDo~`72w7Mfo z_nBm1H&D6F*2Vt0bjLu} z^~|M;|6b zA8e-HIBcI%@6*GK{dz+=zDi5e>MGeMsqZ(SY0j|b3)kHcz3}nRHeZ;sdHDtNaw1LZ zb26G5-tSjurP)n^p;0G2HQQ>EUrxgyFYZv!erhZyyUX-L*Z!e6|C)Cb=Y%JKJ7)m* zs$(N~1HatVp;vvpnR5h^ZHhaxn(xiT!O*v71CKm<8*q8Llx&lCUyM9X$!=E}Z(XMO z_A+F%|6M+bzkxq)r@ZQ_#DC7%J>*-T6I(z%E%3j5B*%fHDhEe1np*nVO_et^U)X{l zy|sDk1ua{aUr^a^I_XxESwH1E{#&2(l^;X-DC>BAmv7hO?Zl@eKA&V@()ob-E%9u( zrpqeH(mcAKCN-ewoxW*6RO7v5&z_3$Q`P8Ymx`HpFN zHgh~Nqu|A?*kW+y_+h#9P6l@+w#Y*#DOQx=5FWA5QSbY#iMu8T;DinNBJIco&jB#K3Gl9^|Py|Gw6X2)qV$;8@SjR=`k7$__+swD);DzTDD~)+lzD?QqHYqQ0yjE2b!{!-cd2KOq zzlJp|`@DSZdd%12t;37T=*PwM=OXN_Q&~eBJL@{HXd%5QS} zZu6Wq!^os$eTsH=&3ph@8`90a;x#|E@VUw^u7ci`jFC#@K@~7s&C4&a(n_1GRJ+L< z+I*okgmI7-;hjDK^E&J!|3RA;Je8~+;)l)Dom`H5Z87KYo#)7z@%2N!Ifw70TjuP2 z;-0}{%nwH1X2#waX1lUBzQ6lFSsyH?ZqE+!0MFj~;0~VqS|4N_XEWcLdsq6hL)=7p z&kk|BuiiNc_4?NbACC0;mV8a<_~`tb;&^-(I6VDnayNWAu^Bvj`qOxxkEB0s2VPHq znnK?HU;5K%+V=FPAv}9_h~Yf56-SY8{*dn2c% z6BzyJTWZ7ApAJ#xe@lN_l5uqX={L0R@%Cn(6ZNM`VErfcC*oS1WzW;_&%C0nP>y3VSjIRz}kLrXQ0~`gF6d1 zyGhV5Y?(A!1$117IlN~8n`zHN(qVhPG*K|+maOP~{LIVFc zX-DVL$+P{5?SZ6u{z{&{_|WqKInvr}&r#N99-cMFUI@&dj49^XlPhQQY;Z?RNS>3+ z81F8Gyx99Q;Sbl|sd|#hng6xByTJFsImh+5!=pbic=F~0#-15htm%19E^qSK_eD=4 z)}84`W~_s}N4vx09rAcG=g&NQGG~w5&ON~P0=)2M580zV`<&PdYRi>9e*XcI;H1d;7H+-)GO~=tlfUlI{D~vhSbk%DzJC@nl~y&tAJD zdG^}n3}|<|gL(G1>&?6Vea*{`!RO8KZE}6y3OQ?2cz>|Y8o*gnY;PrHR+g8xMRrBr z3sQ{^T##DYG-|-4roe!Jqa%yv#s@vJN&oieE$6?C^QhL3B8M%DIEtrm4ux-h>8!J` zzpcS0_kG5Qcp*JCvT4>-yPCKMtcz2L7nKs5c6a2Vnm}~Z1kSqVr=%`8mAo~a1+xmV zp{8UOYwa_6Okh<_fb;2gW=0KXG`27vEysS-lPA5H7_tRwT~OMVxsJCFbCcBR(= z`#7&|?_BID)V)IIm%mzCl5gjKby~`IADyN9msyvwZrpi4``hin^DWMwz4FUjcFiI- z73W%KemgBv^7rfWt{fN`SiCY6DH)m*dGOW4lXjgp|E38y*;Yx@)ET=@oqywmzaO7> z_Kj&)$-vVta^7zYStX~=ubyz@K&#~bfmU5`s8v@!kUNjz9nQhkj-+pSw7WQvzF@!B zhP(qu#Xe*%oz9w#&GmlTZYmrQd+Kn-u2YCN@D) z-7w)M+Wrdd&ZkY<9r`+J?}dT9=@Tix2E67$i-V*I7d4hOzKk_dTaGm$51$?4K9>kj zf@>@`hhW#NUHBkA(?C1Z$R`>3dLSJi&v?EJ@>DiPK3{~>++_Waosen>xG1-}b?_}x!Cxxh)g75jboe3iD|D;yMi7kqvT z`u%|V-=%)%nYx8X;XOuQb*I37@VNqf#%Qa7c4D+aJ40ttZbiT7riFp@=?ffOW^gVy zqgH(%d$9lbeJ(D4!a7p;E5esReEb}^@9S;^&bW<>!h>^IpNnUsqXVlRB0qOxy0-1) zW1s+@xBe?w=Z*I{_~R76{psqE71_iYw{b;$555wrOTPu!cwVq0y>1rtxqcGu{C`OT{}bcQ;r}r0h!;b^G>x;u1HiR- zzYIAdIb+6w9h+#GJomw);=OQLk>Vr_oyb3aahtsSiDPAkZ>%`azOkY{YpgUv+e_!q z?=@CDxb8dD|6JJt+BCQ6t`6`74R?mYVHg~y+g9xvVy&g`{3nMQzIomKvukL zXB3|njFkK?JM!TD$O?_u8T5Anyf$|Jf(buBR!j$`mw`d=)4|nPczilMRye?_v)C7y z#6F2+MUZy#DQjdjcZ#^r>T?n8Ehr4es^I6M`Bf9j_*O+5&NKCE%t}TGe)V|)?VUn< zGia}jw#wjV+8XNBDVvq#y>$xrf~?xQ1Cv+q?751@xth5DqmGfM_ zwtwA3`1W(~Z5Q`I)FNx-H>xpyHoyCik5&*Hp|~IQ=&Z$>l-vdX_}-ck6H|^`P>HQ9 zxZu!)ntmPQL&rxRoWEfHgo%e!sx9nff=#%*uD>-@WoPv_v@W&>q|aKC;@nY>Zd3gf z^q=?=Wf&7-zD?v?J>?c3vZ{Xz?YI4AwBo=FU2L((2i^Wb?3no4Iwv;GGIy@PL&Ji> zj`2Zz#DaG0VeH#gWYCukJ0s(nEk(8J$9DKmxKMj*sY`o;dcXQ$*Ey0S>a+F?RaYmz ztpz+QO?!!p!F#*lO0~YKZ_PX-N6uB=9P%km`;G?_;45_D6Fkb>K`o)&rTnU@8~i|wjJ3YTXo47TXhKz_5T3xdVY`pO3wKP zkqO(Z;CSf2AqdUq)1Tkahhe~M($btX?Hf;xPdmAE50h+3RfB{`@yHume3ae)fw>I0K=aF=#=$N zezZbmFXayLcX?L1n|XeZXO&sW^WS-XB`{(9j^jDZLK_G8zk>fWNITQYsD1U4tSeuc zHn6yf^Q-TDam1DH+JlN;y*qd%dRfV7{m^3qgNsj1M`kg%-jAGEW2Y}@#|GO%KRsEb z|2^PyH#(SffBL!e+tAU!KA44^md`{Ab^x<~Mob^(8t%DS-C}Wf0DObp+@0g%>jB}+ ze@2pdZoBpS41E3AV;(Y~4j+P@d3!$1m2Y)lzOM2+xM>gP27pbr=ez$KKTgiP$X@^S z<@Tz4c!N1{W){3~4)s5C-GDmoNZS5-zX5g65=T7m<#1hRnzgdz?6f-hDmIg^kn`80 zm}9kGUCuuJw>RSh`DCQA<7B(BbF|eMCC>xD?pnR7pEXo%ewTLW~XmaMTPL^|t9s|rLq?K7jBO3`hO$L6kd^px#|(E)X%sQbpL)~dx7R;LsDDUjM! z8A#zr45)zZoQHxhntJen(}y^Zcy(F8ItN^QGR4aB!zwyQfLCxNgO&P|!umdNCBi!C z2(SuH4;JBJR6pU`z&UOzKCZKV!9I-5evIEICKaEO6y{CE5^{V=Hfk;NS>WB)3tskq zz^&kIc5$mb9&TR%Hl=$o2)8+;z2V}v8QeC5+h%av3~rl&*RxefChFOoyCP0I@caE` zI%aKcV9X`$!w1a&X1~N&_hLJjc{9A1ToG!|y#D>R2S?)qW;$g8^WFLB!P z<74NPzIhG2HVM`{&a(t-XUkd9O$ErS?()<>kMfm@$1u>qsrA8P-igT(+eh4j`8Qab z=F`8hjebErq0&gnzVtK32h$kCrB-zqSc?j`jhI$|9&6Qqm3V3Cso#y<*}`2=Ra;6+ zurG}l@BBQ?T7~Q(R&wOQ;7hkW7%YwK$PZZuv=^Az?@93e6vp_MfJJ4WqFf`t%G3g< zt_Gf;@YR){Z5^l~PR%sMzE~UTb$7zz>o@~KJ@fk+KPT+(Gqb?u?QC6ITsOnsU3|kCc6Y)2S zJ;&wHR(g^D+Y)$cDd~GF%)LE{-`4SM>y^y4&GMP=UGEmYr^1gxz8ksQ`(7X6dfdUT zjl!S$FrWwSvSL31W;5pv(Av(CnOlf`{WSBLlfG(DJe@hIiFD7$QnEQH*$j^0tBoE` zTEL0?Erq|tK4}b1p}&85&VxC5J`XQDj*`#A(TfTBf9#@Hy`+`kzo=Up6VV)5aL~*R$EJXUh5bzIE4=d|ln)+O7OPKi`G-h1*>C zQ)jgHLbIZLY%GT-JLj~{OR0G@FSTQQ2kV)7`0j<&_&Cl#-a1goI-!B|&@^O2O2PPs z7tnS4TjRU#;chPOmD{v5vguFUy;DQ1ZpH&~)pChRncE&Hoc3|s>NO+&K%B$|eu;gW zM89+&(#wX=6_2aB1>L+aTZ7h5h48|Cw6i~D#LE+j={Tye{NsJJv4%AEY-XMZ|Adm@ zPi>`g$KVFq3J%p+&USq%G=~g#b%2iXjK3q=E#l>L219#6dCWV#X)z04&=_Kz^=Ug% zT%@3#m%i^#i}i760dUVu#8DvE#LQU=+-pafeJ0snPs$HCdo#)40S~LJ_qxV)rCZf= zp+^Jp4cp++=ayQVN;>Gf&|8MJ4U5xX`nV^53m5}&`u8p; zJT}7njVadnHv&P2UYi5K>5bqB|2^*aDJtF;2xbIWXKg(puuAQ$+bub1cuo8wnbr&q zxVtR*{Vm`>*}Tzqu&c-TQC}wwMb?jxR)~fUO*RhhrpcCbqZOZpCVstAxJRGtQO{az z@50&Ei=!1Qx^WiQRV7EX779WmjsN+9g7KlPr6nP7;OGe0+n$F;A!6b(KliG89e%oF zrgO$AN!=QUe*8ySGYbFOHx5#t3+sltuFfP_)#owg*oKnSXLuwIyXBRIi#^(2O8d)aL@Odm+Rk8q=5NHby>Z(7 z3D2?SY(-9msrP=?L9D~usCYfWwZ$1 zP^|Ks-)Nfiz~ZJz+QgnKjpL zh7Z)9+G#s<^0|w#>#ZeiTOhlAAMNDRjyJEqL0U6>%A~$AajbalEH7eTjdmnMy8>o@ zB}PORvVb{IzK%K%qH_Rw?pn=^!P(>~qrZ#qwW{&QnMvGa_F-}tT!Jp(>`@`_jQ?_8 zY}xVbe<2$+rznoD+PZ@B7Bst@|C)PPOW3(L;9oma^{vqU4Bs?1tNL44bOeIw?CVU| z{9cTm@@&c+41}idPZ>FVe;_@5!6K_-mYuQSl7um-K5BlPavE_>e`)0XILh9!IP%b= z$lVCB8B5sbFmMi!T`M?+TW9|F`mWd=rtkHv=@chQ`%Z1d3rq%|Y{R|l5dMf8=Gqbb z^Xs$ByHQ{X0Mptn<7+1X!*{@u>>hp5fcbkI>p53$_4Wbxd`E=m4sVPda^_=ajO`xF z{MQoKt7Ye6U!}7s#5`+F7$2&NY~qZ{g0=L;$VQ_x7om5fdu}X*Hr|}5HAxiy^Yrgo z*q)}t14Su$=LV`g7`t`uZa(*~MLzh2Hy0<*=jq)0kC3la^PScwmq#mF67o%C-R{J3 zoxmJr-|=*4g4w5+Eb#R7J>VdyIczFAEOuHO94Pi#!S7fzQoiL6Yeob`6RkbK!Dev4 z+*IMMLF&PkhXcR-_4o5<32-Im^ZL0VA)kMao{fKie7K8%RlWlMsx9c|(r#Oj!xN*h ztvnYwvMnJ>Y@em+%@@vIVPVUPUKqWnv}x(LCN<6Z7PhT>?55~Flbe>F)O=x01#4Jr zG_%vOeVq`!um;=3Hpw8y7TmI_68>fFXL#{y_Bm)*Hi!uROiReCd;#*^dYl=LqDd$) zWW3?U`26k1-)v;&Zgh#%&qgaMyYUy#E4oRZ=^U}>rr7JET>&yIv0lcF*3{j+s=BqN zo^lO)#YyT;mVXPpIPcnM#f3@odpu`ZD=H$J>%V#@^KulsqJhJV0sK<9f8fHpcYe+{ z-9u8DTeqKQe;%(M*@4a3gj4I5P|xmAwBi@w&bq*^gLg|jzO3Q=LeM_7F2r8-MD&;z z<}Zzbz3{nb@0QI$cCkY@{~Z5n8~a|*vt(V9hwL!>WAVMQZLH(XxQKK%EF0O8*iI$$ zagM$0(bz(JRlRFxZClKqU)SL3yr*kMXpS*7QM}@8Y;}3DQ@&>7yWcUM^XlXFI6hUf zt(bgXp0}XqTjYzN7s}SK{&w4mXVOA`I~uL{34Eoqb=bj&dH>4yd*EnT_PLIifIAFd zgzZSDbdo~Guy}+%)+Mgl4&D4~$G$LXB(c;drx5p~Ke0Z7;3x!+(y@VN;9EZc-};og z4^#T%ztJy-FW4s866Ghdn{#)HgCakgp700LbLwwU&i!z?q^tY?`vv&T3 zG@Z>W$DWphjc)w!x>jq<<%oCs9WW`;mWQ?%92EWK-+o##ZwX=>?>lyv+N=JNXuA@YXndYknFjBa5hvzi&M%m|gG6`YV>mpp&&=7| zty@yfdTmTv-IjFvz&?+&j=LkRJAF6ldr7}*1bms&_Zd}ZZaY5GIUhM}^t#Mg0rF40 zr1|Z)=v9l;knV}b~x)%_C?zeV|XIgct z>qE}z?%}8YuVucI%-Q#G*J^YaC;sj_>>jfiYXM+gGRN@r%Dso3@g^KS#h&#~J=zTD z@6w=Oo#vfo(7+0^FO594n49%4oLlr!&&g63N z!6d%>8#IRBD|Ybzk0d_@rKSMvBqaTxazRl@}xBek^!XEV_dx3Z>`*7E|%IziRRP z;-64n{l)H?tetUvq)R5xnrqJ5hPfXd8F=7>l!r!$rdu~1UY)EiWS=ANEbJlOGLU@* zJzHnQ(^6Su@4;UsYURIfVRv-Dck16hgZ)V5zrdBF{M#2;=u@2!_4Ab-}i8^e=Brj4{A?IGkAigA1_bBNtek z9&(@tATVQ~;!lAFH5OSil}xUk#cNPThYz#ie$fjvTL z-F2As6+t&WcuTzPu9Ot~g8HLF2GJ!$=#=TKJ6L->A0Q4z8n#R0f1y}+vR}IEjqdm# zTA$@Jrjftns4M(k?zt;?d1_}1xNDtj)%}jMA+5|WN_*mBt*xwQmarBrYza%}Ub+15 zXVob_*E(cY3cnwG5g!fKbi*r4!y~}SBiJ^v)1A4*(dlwxL-F~MPte5v)|r+g4~NIT zJ;z#gRey5^iS@$9e7;HMN(Zjt8@`IpIS`*qe7s4w|`MXAHG=RoviAd~+tg4&EHQg68E! zI0N)y3VrFH>>GWUg6-gR`XK$!U8nXq2aO(pt!X;6FNX)F!3$-qCs<3c_7op|Jy&bg z-f>_yv!2qq1MXK>WdWa)kFf&2R)9v6R!kBi{hZTMtZ@Ts+ZY~9&9 zzxZ-mXC?gU$UJz(f@kO8U-AfX)#~vf(D=x`#tLU&Zih1^$<~;XUf~)7pm4vK!6A2L1D&dN$79d%>a^vb{5%wL+NxvHVA{XCu#M zI^UQ-!~85eG+pn>_D%nRjo~B4y!I>5(>5v|)$yNptyY|j&pPipv5R<@PZswQt_;%8 z2FA8{Pg&mjxcthkD_03Vn`(N6{eva`1SK!K3BiF*kN5ctp0i zcLjNdyz5Q-#)y$5*y14 zob}T>Ks?-nohCLreopOjzO`W2tYR(;vQFEEUDeoNvdkVtnstuDrvps9q*m5fquAq> z-)EsGll9sD1kbHZ_%55#2Xk3F^ONjtdFJryB4le2+1hrck*%Mw zW7wtEh6@t`&)2@ibxf!oIEz%M)`!e*iWJbW)21^=tu|6jWQe{ui+#=ob}TIj`} z+>3uOdVCAIj;F8szn@Wa!rt7MoR`!U~5 zER#4rUOPK6FEOm0e8vyjqs1N6$r$;&WtnsEUYq~NZF9$j#ClAd4<~8!#a{5)F=AYH z`(Ar(-bbBIo00L(9PF1zi^(tkdwK$M4zjTFt2Xv!vp3OinCKJVr$}6{dVX3rQHNx? zhm*DEIC}rMdg}7hJU#!TtDkR}J5crZj1A<6N$ZhosZ-;_8w1w>U$fwwM7&`ijBAJX zgt2Q`fEaWA(LabKvna$`Jy3^Ddu4nN;P{S-U&E$`?}T9H&OPiFW`2^+bUy9Av4yoS z--Q>Y5!2I|o79&8GGIRaBktR{X19MzJ8dAm#TsAd_Y~WuB_+_*GB|o+>+{A|r#zpd zTyuZM@iN(3h-XiqBD~+GdYpXhAt2{QQdblmxCQ%;bhxUa%yD`Lmb$JkCr*&j?+iST zlBTw&qr*nu4kT^+0@`jthP2YQaH{w|<4I%Q9OrNQ&;a&9kk74-EixyzlzazCvq%%% zHt+WmH&d`J;dwdFnqL~0T`xJf(!Xa>fG(JYeBt}BWZ$*!KfGufv?@baL`Pg^;^k6Rq0e`P>oUOV=sB(Og{ z#Lm(=lEk?D$;N6az88^nGfw5ZUqOA(F-Dh=t}*J3%S+%>jf0m--}b^iJGZ^?{RU%S(W8Gk+7IGHjL);DHMWjbSO6lwLE)7^3OV`9FFpOW!?0roZN zBz#Xgjta2tjb>a}eU)dN$=9Nz^fQ z=Zhl~^V+cuN!qETPOqH?x1F)Rw8!1FbNgufu_SFTP11Hj0u|V4O$Bx;zZ8A}ew+ugt)_{E1GsCGGNI_EqPqt+ zZiB~)3j39aSGA@PPxZC#TSt5y?=G=S+PRH8x~p!&PX`_M_NCk_iVxZ!xt}&aC98cO zIl?kr3;so2<@*%+d0v-s9@v zUY*LrrSOiu=OAmOO4@G-WYyYs?#uEKwyFDe%Bx@gJqn%0>8pQP^r_|s>}2Tb(pgpm z^TYJ<5$fhH<=VA@+?Ojd@e>(!QOSM07cEICsR?A)hVGusUfS@pLU*T>$WCqSH1fmB zjtv6FrPOKCO|1M+N$U$Phqe*+9-)Qv95pc@o#$qAuce{Cxy$l@O8++2TFL0I7_(aU zU|Z>&CL82@gG)b;7+5nLSmhIGBh&hd!Ez9Lq0R$%x|w(PqGLP7jv~8;WKM|t`6{uI zRfEU5u&OCK1{H`_{0#>K~gEqgR_^ji%WX6&91c~YR0(M1wi#>c` zGsXsN;FUj8qOHm6m*LHxwj=M`FNPR6euG_7eHrJzm-B8pV=Z~P6Z!Ua<}BGFlEsMB z+QZxP?Wr>y*O7yLeH(sSA^JE!Wytuv3nQH$g3qr0)~1?^@J$T{$KOw1qnXAwBtClJ zMfB=H*0>Jt8Ez4dB=aa|+yxbmYDS+d~+Z5H}(&L z*PPf(*)ES!r{Gb2<_w^T2P?a*@M_i>=>E`5@evdC=tAljojiL&VtmPK=$q=5Jx2St zPQBQ9MgJJQiw|{HDs3mLyOi^0UfDeI-GR*R1tWE--^t3$FIN7teb&!eh{XDm^+S7Y zQE*hoerYp)%X?F-Vh=9$Nj4_Ms8*lS;ptOpvvoB7J(*h1WW_c?55efsq!pbu>>ub-?I~$&E06%HSf;7fteBKaW#MjdG;1N0Ke#f^989GJ% z18=p?K882n^elH0V@))4c@Jq=NjL$MQBamp!h4$MRHE@V$pmzY2MJ7 zPMt~`W3(&~9KW}})wzOm<1NhJ;vLbt7F@BnGp>dB2oc6YvnLBE=jpiKS(uZ+!4&Y6 zj2B9g>+$^Zdx)=dJ7!(vtaXJW_Hc%cq8`DbJ+9qXil4J%X}}@7wcwCVY%g*~J{^Xq zb7HfBTV*rF*WKlEVh2fg%E5=%sBgaV7W`Q+-p+-$DdWL+Cv;GmWc{!mp3Y4Qzvz+H z2j9w0CR)f(Ty#idPBVP#on7n6f8twX(=a@{8ra3Nii6?VIwS}D{BXBf)3CSQlW#m7 zI0ZiN=IOQUtBhhFWI1!{;vaeQwAnkabnejLY%~4w%Ho{v*Z^<7HBs+3YlI*1-NT<} zBfGIzUOVIE`RgqtW~AR3H5dFHO7us8Hj9J>r40A`>$&} zKdiWo&cEi8{Y-UUM_JWh=+v7PdzE?%&~=cvn`-&yrEep>5<5=~=h%w)zmMI17ElS=yed!)-&j6eEEWG;R5-d?*k!<t{HA_;WeQE-c6#s0 z>afs^$LyS>eWqq)- z0iP-6pcML21iWoL2c0|qB)_AZ+K9FC3HjE@$G}-zkBn^|5^#Ki1C)^;^G}~QdkGe{ zI&Xb0o_>Y&Xu36SDd&hx`p8)RR$y`cxp((3Z5+varSqN_%LBgF=WS!Bru-y*!_Ql~ zS~LBOe%Lj>P4gN)+_lV!(5iSO=N0{JZlKL(?08;1^0Np~Pk}E@u#F`x%6u>1YWZ?= zA9C?Qwau7SS;cFgJUFl_$h;A>hfi;H&J+(XmMuJmv)8Aw~X1&uj^EhDCU2=zR&VaWDz+(g9wVwCNeZaYZ4;ddFjE|2QAD!-=$RWmv z{QMKgSPS{ChZfezj`7kR=8i;;k1+F?$0tU27#SPy@`=`e;*-blQ(ScM1rB{%IjgoC zA9S5#W9_TAh0+gPjfTIe)zn9d&L7Pl?4>w-%-yFAkB z6wh{YzTmk)?t)+Zc=d?3O!zm{d|lft#n+InfIFJ0)5;bf>76z2SmK+|US$@1vQYe% z7h6g_?~~S?NgDMlP4xVS;37>tY|^>QfO8WI!R;E({y)GvYsHuEe6S|t?gw?|p=ROT z58k)bs@unXpKW7P8{1NXFSq4eoh8&SJm?Gr_j@g9rkn@gOu;uK-tKO2^E<&eIG!e0 zwhKPis%u7D)vWDirjr(?&NV5v^Pa(b4)6OOpVYYjWbAusi<<%iw>&i_dvViA$8!fd z_Y15&uJEQU$Bnva&vBz~D&YL=D9+E8b9QzuV}SDoo%!~0?Jca)Rlc3G!Ma~Ih_374 z+|H=Ik9d#!^CO+*JX_z494fRUhYOA?IIZBD)}iu3>qj~_+%`JWxu1DWbw%+rHf7T( zn_jyjCH>_L&Ig~ud7oN4qkL?(HG!CO2UJey^gWym1}Ere-Lw!+R;d3P$3FVhiaw-) z*J|0b_dQ;muxSxT4&AIXcQ~I-R z`cG6J>B+`*A#(okqWFD{9kVWBY|micn9jKkGjE(gyM6m9^~1Ji=0cqTl22X-V_oyf z0(77^`ES8zO#Vjkc)8j5kY#Z{uk`Sqb{qK}z0Eo3zU+CLdrjOW;}hk~x!eh-Id{j; zjSobG^;Q*YT#NO>@#r%0_1inza`Y+jz1ED?$eb4TQmXoye3|51hu%=d9<4=rmC-!m z<(Ev6EN*&-`2abua(0^RFuAdJ|IxKNLfiz+CG%-_w43hPV^vnZbn3HZPkdea^a;?2 z`E~o;A)&fvXtP;*0KcvHMPw)WwiKVat=I?UXOUP=X9vcxE|H%_;y34<3+t7cKQQ`( zWPG|K>!mOB#Jy*0>v~>yUZ=qa{gCnfk?}$F3iiMk;fKlIs^q)usUEEzn~v{%T-(W3 z=N;h0;_Rm8vcG;{bc!vU?{aKZtf#Dk)17tWJZR?Z&*LMhygSM3==J!pNT2xCllbK~ zpWVKhb#Tof?Ecg#x_%E@iAH;{+lc2yC*k>%51E@a$76RnjXY`46Wfw=E;EGB*+k+5 zwqk1%e+Hq`2!10;k3!GKX$$*8>}`0($PMia=xp>z&g;2;kNB50BS&P@5xiPAcx}Il zo_8Yrq4nyy3A9*(eRmG}(_VDF15M6-Z57PDJI5x;Cq9@m!o-R6)6=N~KA6XuZ{0I9 zn>rKw|8w=fqwAc+a_cC!o^wWt{G&ScZ5}Zc6ZuEqw(u<#|FNyWj1OG}^IvfbegDo` zl5bhDWq&!mT5=v6)^@)QtJGa@A6`@r?@WV-%HXAo;i-#|E!=7IyxA}AKal-K%34*S zI-CDO#={)Wy;SY!eFvT7i^jg^?sp*}I@CTR?@C$WNlTCCyx`L%XPw5cV7r6>WG)yDwKI1iSY1{Rw!?!oe9 z14|Fs1xqvI0zXtIcAtG_q_dRw0@i!L?d+ko_`jbM|6V}9dX+yl{@p8&eQQ(x?0(gi z=mhyYY8ton@^cOQ6*brkRNri1l)qaMdp6=r+1_qs?ZsTr zc>(-$KWl|0m!qTXM)?XhP%rzIomGx))0~gSo;5BJrrp4_6_`#3CdZ%7Emz}|GjJ48 zPIb1i&I?YZZvKru)zqu8R)g(>IYH+(7qr5os>^|4ng@gIs3yPcR9X}H_YJ|Vw|3h; z*N3xF@X31oz`Mt+`)xDnOZiED{NX8wm*JndFR52wR}y=Ka9{7NZ;_4o@(1aw)Au9N zfU{pN4ax!@4Ty;*8ldMnG`KWQ19-5TpMk;Yo1t4~tm_wtSBtlkk1{Zv3_9W{rkjt2TH z-X~5_=RWH3_@My46@90>JP;Tj>73;9lIZW*n!I+sca2xI?|=8h;mAyAZ?Uf1LR_Hm z8LrPPb?eN2)hPV_!FlNLnwt4%VZWY+pUNn!6a5m{;_a#(KaNY~FUxvy46<=5I8Mx) zg{)q+&WvF%ul9?kzlpI?fewwJkf-}k## zi*Ce18s^}Jm`M@#sw9j0qS1d*=6t>%i7vayW8g4!(cYK8zE)t^0==gI!?q+aNPaz6 zlJZ)&4v|FW{47a1?Mr=yF>)l_R*s5v-Xr>)5b2zqA{%H{-6QAOt2`PD?%gw@6~BYV zab8NUzxu~VgmEB!QoQEJr(~A;k_HYQaAa=W_I)%sKc4{SSCYW#jn~Id@7p)QJEPJU zKc9OPejfP0$j|?QUY?YnqsPY2HhQl3dHpEjGbiDRqw#YQWsb(r`Q$kgKMMx&b1E=o zC4u2s__<$_a>vTgJ2_kA=jYuez4>|MG4Qju*P!_&_)R09qz5&3pWQM0PyVr7iVm&5 zuOGvG-7!xO=p!F=nsOpBC=>GaX!pKjYj?KW?$(pA<0jPShtJ7JyYo&a{%JzKBi#pP zVip@4gVvp%eDLPK`KOsVAc7u~Yz~NsCd_}}?wKRW${Jwu^VW~3S8`|ScZerQy97&n z=8OdS>CJLPU!{*!-4LI5jNakdT(UX0mlJy&c_gXWq{j~3sE(?Wae*a<2wCXdA# zG{!+vytOxaT-4C-rtk;Q9MEH!v!tO+unLiaGxkR(EqaezJ#@j(hA%( zm3fYMF*ftH?yy1kOuBxMEx;=~RDJ)n3!gdJLxT%=)*3I~M`VK5B&nyvuSe*kKQ2Nm zbP-%1a|Sf&Ea>P@>IxB^e!`t8d{z?H@NOuBNnjHb=}>jzf1YAwUJ5PNN53q3zA!kNHs zx!+BbR%GuMY=&dbiB?=<+S%#l>rv;!LyoylTRJQ@qpjz1cKJwke)rhxTmp={`K_OT zJuIQlWIW&EuD>Ls|0$XdC&r|^Hmib$q8a?}tdTzagR!e8TSvbJ&x`jq^MBb9=)a5j z_ZE4Q)zKII-)`tz9`v9QuvbF&{L(?yOZXRWc(nA_U5G7jH@_*w(B5w9?xwk4XLjU< zug*g7l1ZHlo%L*H>_^~3ve?sc-L+#kZ~5E#3GKvXbX>>&x6%$9RbRAwaUk~4KJfl9 zc2?1DiTh0>jX_bApp_R@5t^a0P4Lky^dfUm+Ioeo z=LdbdI*JZi%U#w%oq>NRofz==vGH8^wG2mRzvUCgi6es(`0HqJgpVDLwJsdclq4j+mcu&1H(z%|0#p|67-n73cyn{o>9_{gA z*`Zmx8d$@roOG5TQGvTSu8&M=5ovZGSy2 z_(*xW1@(064}JLu$WKo3LF0D~TCv&GFFB$;x@+E)ypk_3XNjp#d-K}I{dF6%5kHLE zojsM@*cCdP%syWsc2L<|FT=M$Yd1@A%f)Md�S&FWa@n=Bz}eQ!a;khqH&PJF0VI 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%0AGtJ&G>I-fVpv%@=Fo{t3x&VDfx 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

g<`gD%r1uQ43`Asv#ZtA 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%0D`!F+ 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