diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7c81b9b77e..61d7c23859 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,2 +1,2 @@ # All PRs to V1 must be approved by Frooodle -* @Frooodle +* @Frooodle @reecebrowne @Ludy87 @DarioGii diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 0f3580d5a8..2725e5f5a9 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: true contact_links: - name: đŸ’Ŧ Discord Server - url: https://discord.gg/Cn8pWhQRxZ + url: https://discord.gg/HYmhKj45pU about: You can join our Discord server for real time discussion and support diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6bd86d3e22..356b0263f7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -11,7 +11,13 @@ updates: interval: "weekly" open-pull-requests-limit: 10 rebase-strategy: "auto" + - package-ecosystem: "docker" directory: "/" # Location of Dockerfile schedule: interval: "weekly" + + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly diff --git a/.github/labeler-config.yml b/.github/labeler-config.yml index d91bca3612..a3249a94d5 100644 --- a/.github/labeler-config.yml +++ b/.github/labeler-config.yml @@ -30,6 +30,8 @@ Security: - any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/provider/**/*' - any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/AuthenticationType.java' - any-glob-to-any-file: 'scripts/download-security-jar.sh' + - any-glob-to-any-file: '.github/workflows/dependency-review.yml' + - any-glob-to-any-file: '.github/workflows/scorecards.yml' API: - changed-files: @@ -37,6 +39,7 @@ API: - any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/controller/api/**/*' - any-glob-to-any-file: 'scripts/png_to_webp.py' - any-glob-to-any-file: 'split_photos.py' + - any-glob-to-any-file: '.github/workflows/swagger.yml' Documentation: - changed-files: @@ -46,17 +49,25 @@ Documentation: Docker: - changed-files: + - any-glob-to-any-file: '.github/workflows/build.yml' + - any-glob-to-any-file: '.github/workflows/push-docker.yml' - any-glob-to-any-file: 'Dockerfile' - - any-glob-to-any-file: 'Dockerfile-*' + - any-glob-to-any-file: 'Dockerfile.*' - any-glob-to-any-file: 'exampleYmlFiles/*.yml' + - any-glob-to-any-file: 'scripts/download-security-jar.sh' - any-glob-to-any-file: 'scripts/init.sh' - any-glob-to-any-file: 'scripts/init-without-ocr.sh' - any-glob-to-any-file: 'scripts/installFonts.sh' + - any-glob-to-any-file: 'test.sh' + - any-glob-to-any-file: 'test2.sh' Test: - changed-files: - any-glob-to-any-file: 'cucumber/**/*' - any-glob-to-any-file: 'src/test**/*' + - any-glob-to-any-file: '.pre-commit-config' + - any-glob-to-any-file: '.github/workflows/pre_commit.yml' + - any-glob-to-any-file: '.github/workflows/scorecards.yml' Github: - changed-files: diff --git a/.github/release.yml b/.github/release.yml index 90841a8df2..361e7d7087 100644 --- a/.github/release.yml +++ b/.github/release.yml @@ -9,7 +9,7 @@ changelog: - title: Bug Fixes labels: - Bug - + - title: Enhancements labels: - enhancement @@ -26,7 +26,7 @@ changelog: - title: Translation Changes labels: - Translation - + - title: Other Changes labels: - "*" diff --git a/.github/scripts/check_language_properties.py b/.github/scripts/check_language_properties.py index 8cb3320dbd..11d8636d03 100644 --- a/.github/scripts/check_language_properties.py +++ b/.github/scripts/check_language_properties.py @@ -9,7 +9,7 @@ adjusting the format. Usage: - python script_name.py --reference-file --branch [--files ] + python check_language_properties.py --reference-file --branch [--actor ] [--files ] """ import copy @@ -19,6 +19,10 @@ import re +# Maximum size for properties files (e.g., 200 KB) +MAX_FILE_SIZE = 200 * 1024 + + def parse_properties_file(file_path): """Parses a .properties file and returns a list of objects (including comments, empty lines, and line numbers).""" properties_list = [] @@ -96,7 +100,7 @@ def write_json_file(file_path, updated_properties): def update_missing_keys(reference_file, file_list, branch=""): reference_properties = parse_properties_file(reference_file) for file_path in file_list: - basename_current_file = os.path.basename(branch + file_path) + basename_current_file = os.path.basename(os.path.join(branch, file_path)) if ( basename_current_file == os.path.basename(reference_file) or not file_path.endswith(".properties") @@ -104,7 +108,7 @@ def update_missing_keys(reference_file, file_list, branch=""): ): continue - current_properties = parse_properties_file(branch + file_path) + current_properties = parse_properties_file(os.path.join(branch, file_path)) updated_properties = [] for ref_entry in reference_properties: ref_entry_copy = copy.deepcopy(ref_entry) @@ -115,16 +119,18 @@ def update_missing_keys(reference_file, file_list, branch=""): if ref_entry_copy["key"] == current_entry["key"]: ref_entry_copy["value"] = current_entry["value"] updated_properties.append(ref_entry_copy) - write_json_file(branch + file_path, updated_properties) + write_json_file(os.path.join(branch, file_path), updated_properties) def check_for_missing_keys(reference_file, file_list, branch): - update_missing_keys(reference_file, file_list, branch + "/") + update_missing_keys(reference_file, file_list, branch) def read_properties(file_path): - with open(file_path, "r", encoding="utf-8") as file: - return file.read().splitlines() + if os.path.isfile(file_path) and os.path.exists(file_path): + with open(file_path, "r", encoding="utf-8") as file: + return file.read().splitlines() + return [""] def check_for_differences(reference_file, file_list, branch, actor): @@ -132,42 +138,60 @@ def check_for_differences(reference_file, file_list, branch, actor): basename_reference_file = os.path.basename(reference_file) report = [] - report.append( - f"### 📋 Checking with the file `{basename_reference_file}` from the `{reference_branch}` - Checking the `{branch}`" - ) + report.append(f"#### 🔄 Reference Branch: `{reference_branch}`") reference_lines = read_properties(reference_file) has_differences = False only_reference_file = True - for file_path in file_list: - basename_current_file = os.path.basename(branch + "/" + file_path) + file_arr = file_list + + if len(file_list) == 1: + file_arr = file_list[0].split() + base_dir = os.path.abspath(os.path.join(os.getcwd(), "src", "main", "resources")) + + for file_path in file_arr: + absolute_path = os.path.abspath(file_path) + # Verify that file is within the expected directory + if not absolute_path.startswith(base_dir): + raise ValueError(f"Unsafe file found: {file_path}") + # Verify file size before processing + if os.path.getsize(os.path.join(branch, file_path)) > MAX_FILE_SIZE: + raise ValueError( + f"The file {file_path} is too large and could pose a security risk." + ) + + basename_current_file = os.path.basename(os.path.join(branch, file_path)) if ( basename_current_file == basename_reference_file + or not file_path.startswith( + os.path.join("src", "main", "resources", "messages_") + ) or not file_path.endswith(".properties") or not basename_current_file.startswith("messages_") ): continue only_reference_file = False - report.append(f"#### đŸ—‚ī¸ **Checking File:** `{basename_current_file}`...") - current_lines = read_properties(branch + "/" + file_path) + report.append(f"#### 📃 **File Check:** `{basename_current_file}`") + current_lines = read_properties(os.path.join(branch, file_path)) reference_line_count = len(reference_lines) current_line_count = len(current_lines) if reference_line_count != current_line_count: report.append("") - report.append("- **Test 1 Status:** ❌ Failed") + report.append("1. **Test Status:** ❌ **_Failed_**") + report.append(" - **Issue:**") has_differences = True if reference_line_count > current_line_count: report.append( - f" - **Issue:** Missing lines! Comments, empty lines, or translation strings are missing. Details: {reference_line_count} (reference) vs {current_line_count} (current)." + f" - **_Mismatched line count_**: {reference_line_count} (reference) vs {current_line_count} (current). Comments, empty lines, or translation strings are missing." ) elif reference_line_count < current_line_count: report.append( - f" - **Issue:** Too many lines! Check your translation files! Details: {reference_line_count} (reference) vs {current_line_count} (current)." + f" - **_Too many lines_**: {reference_line_count} (reference) vs {current_line_count} (current). Please verify if there is an additional line that needs to be removed." ) else: - report.append("- **Test 1 Status:** ✅ Passed") + report.append("1. **Test Status:** ✅ **_Passed_**") # Check for missing or extra keys current_keys = [] @@ -192,17 +216,27 @@ def check_for_differences(reference_file, file_list, branch, actor): has_differences = True missing_keys_str = "`, `".join(missing_keys_list) extra_keys_str = "`, `".join(extra_keys_list) - report.append("- **Test 2 Status:** ❌ Failed") + report.append("2. **Test Status:** ❌ **_Failed_**") + report.append(" - **Issue:**") if missing_keys_list: + spaces_keys_list = [] + for key in missing_keys_list: + if " " in key: + spaces_keys_list.append(key) + if spaces_keys_list: + spaces_keys_str = "`, `".join(spaces_keys_list) + report.append( + f" - **_Keys containing unnecessary spaces_**: `{spaces_keys_str}`!" + ) report.append( - f" - **Issue:** There are keys in ***{basename_current_file}*** `{missing_keys_str}` that are not present in ***{basename_reference_file}***!" + f" - **_Extra keys in `{basename_current_file}`_**: `{missing_keys_str}` that are not present in **_`{basename_reference_file}`_**." ) if extra_keys_list: report.append( - f" - **Issue:** There are keys in ***{basename_reference_file}*** `{extra_keys_str}` that are not present in ***{basename_current_file}***!" + f" - **_Missing keys in `{basename_reference_file}`_**: `{extra_keys_str}` that are not present in **_`{basename_current_file}`_**." ) else: - report.append("- **Test 2 Status:** ✅ Passed") + report.append("2. **Test Status:** ✅ **_Passed_**") report.append("") report.append("---") report.append("") @@ -249,10 +283,20 @@ def check_for_differences(reference_file, file_list, branch, actor): ) args = parser.parse_args() + # Sanitize --actor input to avoid injection attacks + if args.actor: + args.actor = re.sub(r"[^a-zA-Z0-9_\\-]", "", args.actor) + + # Sanitize --branch input to avoid injection attacks + if args.branch: + args.branch = re.sub(r"[^a-zA-Z0-9\\-]", "", args.branch) + file_list = args.files if file_list is None: file_list = glob.glob( - os.getcwd() + "/src/**/messages_*.properties", recursive=True + os.path.join( + os.getcwd(), "src", "main", "resources", "messages_*.properties" + ) ) update_missing_keys(args.reference_file, file_list) else: diff --git a/.github/workflows/PR-Demo-Comment.yml b/.github/workflows/PR-Demo-Comment.yml index 057f8bd7f8..524c69ea6c 100644 --- a/.github/workflows/PR-Demo-Comment.yml +++ b/.github/workflows/PR-Demo-Comment.yml @@ -4,18 +4,24 @@ on: issue_comment: types: [created] +permissions: + contents: read + jobs: check-comment: runs-on: ubuntu-latest + permissions: + pull-requests: read + issues: read if: | - github.event.issue.pull_request && + github.event.issue.pull_request && ( contains(github.event.comment.body, 'prdeploy') || contains(github.event.comment.body, 'deploypr') ) - && + && ( - github.event.comment.user.login == 'frooodle' || + github.event.comment.user.login == 'frooodle' || github.event.comment.user.login == 'sf298' || github.event.comment.user.login == 'Ludy87' || github.event.comment.user.login == 'LaserKaspar' || @@ -28,9 +34,14 @@ jobs: pr_ref: ${{ steps.get-pr-info.outputs.ref }} steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + - name: Get PR data id: get-pr - uses: actions/github-script@v7 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const prNumber = context.payload.issue.number; @@ -39,41 +50,49 @@ jobs: - name: Get PR repository and ref id: get-pr-info - uses: actions/github-script@v7 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const { owner, repo } = context.repo; const prNumber = context.payload.issue.number; - + const { data: pr } = await github.rest.pulls.get({ owner, repo, pull_number: prNumber, }); - + // For forks, use the full repository name, for internal PRs use the current repo const repository = pr.head.repo.fork ? pr.head.repo.full_name : `${owner}/${repo}`; - + console.log(`PR Repository: ${repository}`); console.log(`PR Branch: ${pr.head.ref}`); - + core.setOutput('repository', repository); core.setOutput('ref', pr.head.ref); deploy-pr: needs: check-comment runs-on: ubuntu-latest - + permissions: + pull-requests: write + issues: write + steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + - name: Checkout PR - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: ${{ needs.check-comment.outputs.pr_repository }} ref: ${{ needs.check-comment.outputs.pr_ref }} token: ${{ secrets.GITHUB_TOKEN }} - + - name: Set up JDK - uses: actions/setup-java@v4 + uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 with: java-version: '17' distribution: 'temurin' @@ -84,20 +103,22 @@ jobs: DOCKER_ENABLE_SECURITY: false - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - name: Get version number id: versionNumber - run: echo "versionNumber=$(./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT + run: | + VERSION=$(grep "^version =" build.gradle | awk -F'"' '{print $2}') + echo "versionNumber=$VERSION" >> $GITHUB_OUTPUT - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_API }} - name: Build and push PR-specific image - uses: docker/build-push-action@v6 + uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 with: context: . file: ./Dockerfile @@ -146,10 +167,10 @@ jobs: ssh -i ../private.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -T ${{ secrets.VPS_USERNAME }}@${{ secrets.VPS_HOST }} << 'ENDSSH' # Create PR-specific directories mkdir -p /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/{data,config,logs} - + # Move docker-compose file to correct location mv /tmp/docker-compose.yml /stirling/PR-${{ needs.check-comment.outputs.pr_number }}/docker-compose.yml - + # Start or restart the container cd /stirling/PR-${{ needs.check-comment.outputs.pr_number }} docker-compose pull @@ -158,7 +179,7 @@ jobs: - name: Post deployment URL to PR if: success() - uses: actions/github-script@v7 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const { GITHUB_REPOSITORY } = process.env; diff --git a/.github/workflows/PR-Demo-cleanup.yml b/.github/workflows/PR-Demo-cleanup.yml index 94f8bd3ff3..57b6750fb8 100644 --- a/.github/workflows/PR-Demo-cleanup.yml +++ b/.github/workflows/PR-Demo-cleanup.yml @@ -5,8 +5,7 @@ on: types: [opened, synchronize, reopened, closed] permissions: - contents: write - pull-requests: write + contents: read env: SERVER_IP: ${{ secrets.VPS_IP }} # Add this to your GitHub secrets @@ -15,9 +14,17 @@ env: jobs: cleanup: runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write if: github.event.action == 'closed' - + steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + - name: Set up SSH run: | mkdir -p ~/.ssh/ @@ -30,20 +37,20 @@ jobs: CLEANUP_STATUS=$(ssh -i ../private.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -T ${{ secrets.VPS_USERNAME }}@${{ secrets.VPS_HOST }} << 'ENDSSH' if [ -d "/stirling/PR-${{ github.event.pull_request.number }}" ]; then echo "Found PR directory, proceeding with cleanup..." - + # Stop and remove containers cd /stirling/PR-${{ github.event.pull_request.number }} docker-compose down || true - + # Go back to root before removal cd / - + # Remove PR-specific directories rm -rf /stirling/PR-${{ github.event.pull_request.number }} - + # Remove the Docker image docker rmi --no-prune ${{ secrets.DOCKER_HUB_USERNAME }}/test:pr-${{ github.event.pull_request.number }} || true - + echo "PERFORMED_CLEANUP" else echo "PR directory not found, nothing to clean up" @@ -51,7 +58,7 @@ jobs: fi ENDSSH ) - + if [[ $CLEANUP_STATUS == *"PERFORMED_CLEANUP"* ]]; then echo "cleanup_performed=true" >> $GITHUB_OUTPUT else @@ -60,7 +67,7 @@ jobs: - name: Post cleanup notice to PR if: steps.cleanup.outputs.cleanup_performed == 'true' - uses: actions/github-script@v7 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const { GITHUB_REPOSITORY } = process.env; diff --git a/.github/workflows/auto-labeler.yml b/.github/workflows/auto-labeler.yml index 30bf857fa1..501d9863ea 100644 --- a/.github/workflows/auto-labeler.yml +++ b/.github/workflows/auto-labeler.yml @@ -3,17 +3,24 @@ on: pull_request_target: types: [opened, synchronize] +permissions: + contents: read + jobs: labeler: + runs-on: ubuntu-latest permissions: - contents: read pull-requests: write - runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Apply Labels - uses: actions/labeler@v5 + uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} configuration-path: .github/labeler-config.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6aff319647..fb29f5ddaf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,13 +6,15 @@ on: pull_request: branches: ["main"] +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest permissions: actions: read - contents: read security-events: write strategy: @@ -21,22 +23,29 @@ jobs: jdk-version: [17, 21] steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up JDK ${{ matrix.jdk-version }} - uses: actions/setup-java@v4 + uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 with: java-version: ${{ matrix.jdk-version }} distribution: "temurin" - - name: Set up Gradle - uses: gradle/actions/setup-gradle@v4 - with: - gradle-version: 8.7 + - name: Build with Gradle and no spring security + run: ./gradlew clean build + env: + DOCKER_ENABLE_SECURITY: false - - name: Build with Gradle - run: ./gradlew build --no-build-cache + - name: Build with Gradle and with spring security + run: ./gradlew clean build + env: + DOCKER_ENABLE_SECURITY: true docker-compose-tests: # if: github.event_name == 'push' && github.ref == 'refs/heads/main' || @@ -56,27 +65,32 @@ jobs: runs-on: ubuntu-latest steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Java 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 with: java-version: "17" distribution: "adopt" - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - name: Install Docker Compose run: | - sudo curl -SL "https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo curl -SL "https://github.com/docker/compose/releases/download/v2.32.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: - python-version: "3.7" + python-version: "3.12" - name: Pip requirements run: | diff --git a/.github/workflows/check_properties.yml b/.github/workflows/check_properties.yml index 334e59be7c..b45da71fb5 100644 --- a/.github/workflows/check_properties.yml +++ b/.github/workflows/check_properties.yml @@ -1,46 +1,55 @@ -name: Check Properties Files +name: Check Properties Files on PR on: pull_request_target: types: [opened, synchronize, reopened] paths: - "src/main/resources/messages_*.properties" - push: - paths: - - "src/main/resources/messages_en_GB.properties" -# Permissions required for the workflow permissions: - contents: write - pull-requests: write + contents: read # Allow read access to repository content jobs: check-files: if: github.event_name == 'pull_request_target' runs-on: ubuntu-latest + permissions: + issues: write # Allow posting comments on issues/PRs + pull-requests: write steps: - - name: Checkout main branch first - uses: actions/checkout@v4 + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 with: - ref: main - path: main-branch - fetch-depth: 0 + egress-policy: audit - - name: Checkout PR branch - uses: actions/checkout@v4 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.ref }} - path: pr-branch - fetch-depth: 0 + - name: Checkout main branch first + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: python-version: "3.x" - - name: Install GitHub CLI - run: sudo apt-get update && sudo apt-get install -y gh + - name: Get PR data + id: get-pr-data + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const prNumber = context.payload.pull_request.number; + const repoOwner = context.payload.repository.owner.login; + const repoName = context.payload.repository.name; + const branch = context.payload.pull_request.head.ref; + + console.log(`PR Number: ${prNumber}`); + console.log(`Repo Owner: ${repoOwner}`); + console.log(`Repo Name: ${repoName}`); + console.log(`Branch: ${branch}`); + + core.setOutput("pr_number", prNumber); + core.setOutput("repo_owner", repoOwner); + core.setOutput("repo_name", repoName); + core.setOutput("branch", branch); + continue-on-error: true - name: Fetch PR changed files id: fetch-pr-changes @@ -48,84 +57,168 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | echo "Fetching PR changed files..." - cd pr-branch - gh repo set-default ${{ github.repository }} - # Store files in a safe way, only allowing valid properties files echo "Getting list of changed files from PR..." - gh pr view ${{ github.event.pull_request.number }} --json files -q ".files[].path" | grep -E '^src/main/resources/messages_[a-zA-Z_]+\.properties$' > ../changed_files.txt - cd .. - echo "Setting branch path..." - BRANCH_PATH="pr-branch" + gh pr view ${{ steps.get-pr-data.outputs.pr_number }} --json files -q ".files[].path" | grep -E '^src/main/resources/messages_[a-zA-Z_]+\.properties$' > changed_files.txt # Filter only matching property files + + - name: Determine reference file test + id: determine-file + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const fs = require("fs"); + const path = require("path"); - echo "BRANCH_PATH=${BRANCH_PATH}" >> $GITHUB_ENV - echo "Processing changed files..." - mapfile -t CHANGED_FILES < changed_files.txt + const prNumber = ${{ steps.get-pr-data.outputs.pr_number }}; + const repoOwner = "${{ steps.get-pr-data.outputs.repo_owner }}"; + const repoName = "${{ steps.get-pr-data.outputs.repo_name }}"; - CHANGED_FILES_STR="${CHANGED_FILES[*]}" - echo "CHANGED_FILES=${CHANGED_FILES_STR}" >> $GITHUB_ENV + const prRepoOwner = "${{ github.event.pull_request.head.repo.owner.login }}"; + const prRepoName = "${{ github.event.pull_request.head.repo.name }}"; + const branch = "${{ steps.get-pr-data.outputs.branch }}"; - echo "Changed files: ${CHANGED_FILES_STR}" - echo "Branch: ${BRANCH_PATH}" + console.log(`Determining reference file for PR #${prNumber}`); - - name: Determine reference file - id: determine-file - run: | - echo "Determining reference file..." - if grep -Fxq "src/main/resources/messages_en_GB.properties" changed_files.txt; then - echo "Using PR branch reference file" - echo "REFERENCE_FILE=pr-branch/src/main/resources/messages_en_GB.properties" >> $GITHUB_ENV - else - echo "Using main branch reference file" - echo "REFERENCE_FILE=main-branch/src/main/resources/messages_en_GB.properties" >> $GITHUB_ENV - fi + // Validate inputs + const validateInput = (input, regex, name) => { + if (!regex.test(input)) { + throw new Error(`Invalid ${name}: ${input}`); + } + }; + + validateInput(repoOwner, /^[a-zA-Z0-9_-]+$/, "repository owner"); + validateInput(repoName, /^[a-zA-Z0-9._-]+$/, "repository name"); + validateInput(branch, /^[a-zA-Z0-9._/-]+$/, "branch name"); + + // Get the list of changed files in the PR + const { data: files } = await github.rest.pulls.listFiles({ + owner: repoOwner, + repo: repoName, + pull_number: prNumber, + }); + + // Filter for relevant files based on the PR changes + const changedFiles = files + .map(file => file.filename) + .filter(file => /^src\/main\/resources\/messages_[a-zA-Z_]+\.properties$/.test(file)); + + console.log("Changed files:", changedFiles); + + // Create a temporary directory for PR files + const tempDir = "pr-branch"; + if (!fs.existsSync(tempDir)) { + fs.mkdirSync(tempDir, { recursive: true }); + } + + // Download and save each changed file + for (const file of changedFiles) { + const { data: fileContent } = await github.rest.repos.getContent({ + owner: prRepoOwner, + repo: prRepoName, + path: file, + ref: branch, + }); + + const content = Buffer.from(fileContent.content, "base64").toString("utf-8"); + const filePath = path.join(tempDir, file); + const dirPath = path.dirname(filePath); + + if (!fs.existsSync(dirPath)) { + fs.mkdirSync(dirPath, { recursive: true }); + } + + fs.writeFileSync(filePath, content); + console.log(`Saved file: ${filePath}`); + } + + // Output the list of changed files for further processing + const fileList = changedFiles.join(" "); + core.exportVariable("FILES_LIST", fileList); + console.log("Files saved and listed in FILES_LIST."); + + // Determine reference file + let referenceFilePath; + if (changedFiles.includes("src/main/resources/messages_en_GB.properties")) { + console.log("Using PR branch reference file."); + const { data: fileContent } = await github.rest.repos.getContent({ + owner: prRepoOwner, + repo: prRepoName, + path: "src/main/resources/messages_en_GB.properties", + ref: branch, + }); + + referenceFilePath = "pr-branch-messages_en_GB.properties"; + const content = Buffer.from(fileContent.content, "base64").toString("utf-8"); + fs.writeFileSync(referenceFilePath, content); + } else { + console.log("Using main branch reference file."); + const { data: fileContent } = await github.rest.repos.getContent({ + owner: repoOwner, + repo: repoName, + path: "src/main/resources/messages_en_GB.properties", + ref: "main", + }); + + referenceFilePath = "main-branch-messages_en_GB.properties"; + const content = Buffer.from(fileContent.content, "base64").toString("utf-8"); + fs.writeFileSync(referenceFilePath, content); + } - - name: Show REFERENCE_FILE - run: echo "Reference file is set to ${REFERENCE_FILE}" + console.log(`Reference file path: ${referenceFilePath}`); + core.exportVariable("REFERENCE_FILE", referenceFilePath); - name: Run Python script to check files id: run-check run: | echo "Running Python script to check files..." - python main-branch/.github/scripts/check_language_properties.py \ + python .github/scripts/check_language_properties.py \ --actor ${{ github.event.pull_request.user.login }} \ --reference-file "${REFERENCE_FILE}" \ - --branch "${BRANCH_PATH}" \ - --files ${CHANGED_FILES} > failure.txt || true + --branch "pr-branch" \ + --files "${FILES_LIST[@]}" > result.txt + continue-on-error: true # Continue the job even if this step fails - name: Capture output id: capture-output run: | - if [ -f failure.txt ] && [ -s failure.txt ]; then - echo "Test failed, capturing output..." - ERROR_OUTPUT=$(cat failure.txt) - echo "ERROR_OUTPUT<> $GITHUB_ENV - echo "$ERROR_OUTPUT" >> $GITHUB_ENV + if [ -f result.txt ] && [ -s result.txt ]; then + echo "Test, capturing output..." + SCRIPT_OUTPUT=$(cat result.txt) + echo "SCRIPT_OUTPUT<> $GITHUB_ENV + echo "$SCRIPT_OUTPUT" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV - echo "${ERROR_OUTPUT}" + echo "${SCRIPT_OUTPUT}" + + # Determine job failure based on script output + if [[ "$SCRIPT_OUTPUT" == *"❌"* ]]; then + echo "FAIL_JOB=true" >> $GITHUB_ENV + else + echo "FAIL_JOB=false" >> $GITHUB_ENV + fi else - echo "No errors found." - echo "ERROR_OUTPUT=" >> $GITHUB_ENV + echo "No update found." + echo "SCRIPT_OUTPUT=" >> $GITHUB_ENV + echo "FAIL_JOB=false" >> $GITHUB_ENV fi - name: Post comment on PR - if: env.ERROR_OUTPUT != '' - uses: actions/github-script@v7 + if: env.SCRIPT_OUTPUT != '' + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | - const { GITHUB_REPOSITORY, ERROR_OUTPUT } = process.env; + const { GITHUB_REPOSITORY, SCRIPT_OUTPUT } = process.env; const [repoOwner, repoName] = GITHUB_REPOSITORY.split('/'); - const prNumber = context.issue.number; + const issueNumber = context.issue.number; // Find existing comment const comments = await github.rest.issues.listComments({ owner: repoOwner, repo: repoName, - issue_number: prNumber + issue_number: issueNumber }); const comment = comments.data.find(c => c.body.includes("## 🚀 Translation Verification Summary")); - // Only allow the action user to update comments + // Only update or create comments by the action user const expectedActor = "github-actions[bot]"; if (comment && comment.user.login === expectedActor) { @@ -134,7 +227,7 @@ jobs: owner: repoOwner, repo: repoName, comment_id: comment.id, - body: `## 🚀 Translation Verification Summary\n\n\n${ERROR_OUTPUT}\n` + body: `## 🚀 Translation Verification Summary\n\n\n${SCRIPT_OUTPUT}\n` }); console.log("Updated existing comment."); } else if (!comment) { @@ -142,79 +235,16 @@ jobs: await github.rest.issues.createComment({ owner: repoOwner, repo: repoName, - issue_number: prNumber, - body: `## 🚀 Translation Verification Summary\n\n\n${ERROR_OUTPUT}\n` + issue_number: issueNumber, + body: `## 🚀 Translation Verification Summary\n\n\n${SCRIPT_OUTPUT}\n` }); console.log("Created new comment."); } else { console.log("Comment update attempt denied. Actor does not match."); } - # - name: Set up git config - # run: | - # git config --global user.name "github-actions[bot]" - # git config --global user.email "github-actions[bot]@users.noreply.github.com" - - # - name: Add translation keys - # run: | - # cd ${{ env.BRANCH_PATH }} - # git add src/main/resources/messages_*.properties - # git diff --staged --quiet || echo "CHANGES_DETECTED=true" >> $GITHUB_ENV - # git commit -m "Update translation files" || echo "No changes to commit" - # - name: Push - # if: env.CHANGES_DETECTED == 'true' - # run: | - # cd pr-branch - # git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.event.pull_request.head.repo.full_name }}.git - # git push origin ${{ github.head_ref }} || echo "Push failed: possibly no changes to push" - - update-translations-main: - if: github.event_name == 'push' - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.x" - - - name: Run Python script to check files - id: run-check - run: | - echo "Running Python script to check files..." - python .github/scripts/check_language_properties.py \ - --reference-file src/main/resources/messages_en_GB.properties \ - --branch main - - - name: Set up git config + - name: Fail job if errors found + if: env.FAIL_JOB == 'true' run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "github-actions[bot]@users.noreply.github.com" - - - name: Add translation keys - run: | - git add src/main/resources/messages_*.properties - git diff --staged --quiet || echo "CHANGES_DETECTED=true" >> $GITHUB_ENV - - - name: Create Pull Request - id: cpr - if: env.CHANGES_DETECTED == 'true' - uses: peter-evans/create-pull-request@v7 - with: - token: ${{ secrets.GITHUB_TOKEN }} - commit-message: "Update translation files" - committer: GitHub Action - author: GitHub Action - signoff: true - branch: update_translation_files - title: "Update translation files" - body: | - Auto-generated by [create-pull-request][1] - - [1]: https://github.com/peter-evans/create-pull-request - labels: Translation - draft: false - delete-branch: true - sign-commits: true + echo "Failing the job because errors were detected." + exit 1 diff --git a/.github/workflows/codeql.yml-disabled b/.github/workflows/codeql.yml-disabled new file mode 100644 index 0000000000..83a77d03f3 --- /dev/null +++ b/.github/workflows/codeql.yml-disabled @@ -0,0 +1,79 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +#disable for now +#on: +# push: +# branches: ["main"] +# pull_request: + # The branches below must be a subset of the branches above +# branches: ["main"] +# schedule: +# - cron: "0 0 * * 1" + +permissions: + contents: read + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: ["java"] + # CodeQL supports [ $supported-codeql-languages ] + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - name: Checkout repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 + + # â„šī¸ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 0000000000..21a469b132 --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,27 @@ +# Dependency Review Action +# +# This Action will scan dependency manifest files that change as part of a Pull Request, +# surfacing known-vulnerable versions of the packages declared or updated in the PR. +# Once installed, if the workflow run is marked as required, +# PRs introducing known-vulnerable packages will be blocked from merging. +# +# Source repository: https://github.com/actions/dependency-review-action +name: 'Dependency Review' +on: [pull_request] + +permissions: + contents: read + +jobs: + dependency-review: + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - name: 'Checkout Repository' + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: 'Dependency Review' + uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0 diff --git a/.github/workflows/licenses-update.yml b/.github/workflows/licenses-update.yml index 52458a1fca..8a7d07c34f 100644 --- a/.github/workflows/licenses-update.yml +++ b/.github/workflows/licenses-update.yml @@ -8,24 +8,30 @@ on: - "build.gradle" permissions: - contents: write - pull-requests: write + contents: read jobs: generate-license-report: runs-on: ubuntu-latest - + permissions: + contents: write + pull-requests: write steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + - name: Check out code - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 with: java-version: "17" distribution: "adopt" - - uses: gradle/actions/setup-gradle@v4 + - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2 - name: Run Gradle Command run: ./gradlew clean generateLicenseReport @@ -47,7 +53,7 @@ jobs: - name: Create Pull Request id: cpr if: env.CHANGES_DETECTED == 'true' - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: "Update 3rd Party Licenses" @@ -60,9 +66,10 @@ jobs: Auto-generated by [create-pull-request][1] [1]: https://github.com/peter-evans/create-pull-request - labels: licenses + labels: licenses,github-actions draft: false delete-branch: true + sign-commits: true - name: Auto approve if: steps.cpr.outputs.pull-request-operation == 'created' @@ -72,7 +79,7 @@ jobs: - name: Enable auto-merge if: steps.cpr.outputs.pull-request-operation == 'created' - uses: peter-evans/enable-pull-request-automerge@v3 + uses: peter-evans/enable-pull-request-automerge@a660677d5469627102a1c1e11409dd063606628d # v3.0.0 with: token: ${{ secrets.GITHUB_TOKEN }} pull-request-number: ${{ steps.cpr.outputs.pull-request-number }} diff --git a/.github/workflows/manage-label.yml b/.github/workflows/manage-label.yml index b1a239cff7..6f765438bf 100644 --- a/.github/workflows/manage-label.yml +++ b/.github/workflows/manage-label.yml @@ -6,19 +6,25 @@ on: permissions: contents: read - issues: write jobs: labeler: name: Labeler runs-on: ubuntu-latest + permissions: + issues: write steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + - name: Check out the repository - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Run Labeler - uses: crazy-max/ghaction-github-labeler@v5 + uses: crazy-max/ghaction-github-labeler@b54af0c25861143e7c8813d7cbbf46d2c341680c # v5.1.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} yaml-file: .github/labels.yml - skip-delete: true \ No newline at end of file + skip-delete: true diff --git a/.github/workflows/multiOSReleases.yml b/.github/workflows/multiOSReleases.yml new file mode 100644 index 0000000000..d2f0f87a9b --- /dev/null +++ b/.github/workflows/multiOSReleases.yml @@ -0,0 +1,105 @@ +name: Test Installers Build + +on: + workflow_dispatch: + release: + types: [created] + +permissions: + contents: read + +jobs: + build-installers: + strategy: + matrix: + include: + - os: windows-latest + platform: win + ext: exe + #- os: macos-latest + # platform: mac + # ext: dmg + #- os: ubuntu-latest + # platform: linux + # ext: deb + runs-on: ${{ matrix.os }} + permissions: + contents: write + packages: write + + steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up JDK 21 + uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 + with: + java-version: "21" + distribution: "temurin" + + - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2 + with: + gradle-version: 8.12 + + # Install Windows dependencies + - name: Install WiX Toolset + if: matrix.os == 'windows-latest' + run: | + curl -L -o wix.exe https://github.com/wixtoolset/wix3/releases/download/wix3141rtm/wix314.exe + .\wix.exe /install /quiet + + # Install Linux dependencies + - name: Install Linux Dependencies + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install -y fakeroot rpm + + # Get version number + - name: Get version number + id: versionNumber + run: echo "versionNumber=$(./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT + shell: bash + + - name: Get version number mac + id: versionNumberMac + run: echo "versionNumberMac=$(./gradlew printMacVersion --quiet | tail -1)" >> $GITHUB_OUTPUT + shell: bash + + # Build installer + - name: Build Installer + run: ./gradlew build jpackage -x test --info + env: + DOCKER_ENABLE_SECURITY: false + STIRLING_PDF_DESKTOP_UI: true + + # Rename and collect artifacts based on OS + - name: Prepare artifacts + id: prepare + shell: bash + run: | + if [ "${{ matrix.os }}" = "windows-latest" ]; then + mv "build/jpackage/Stirling-PDF-${{ steps.versionNumber.outputs.versionNumber }}.exe" "Stirling-PDF-${{ matrix.platform }}-installer.${{ matrix.ext }}" + elif [ "${{ matrix.os }}" = "macos-latest" ]; then + mv "build/jpackage/Stirling-PDF-${{ steps.versionNumberMac.outputs.versionNumberMac }}.dmg" "Stirling-PDF-${{ steps.versionNumber.outputs.versionNumber }}-${{ matrix.platform }}.${{ matrix.ext }}" + else + mv "build/jpackage/stirling-pdf_${{ steps.versionNumber.outputs.versionNumber }}-1_amd64.deb" "Stirling-PDF-${{ steps.versionNumber.outputs.versionNumber }}-${{ matrix.platform }}.${{ matrix.ext }}" + fi + + # Upload installer as artifact for testing + - name: Upload Installer Artifact + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 + with: + name: Stirling-PDF-${{ matrix.platform }}-installer.${{ matrix.ext }} + path: Stirling-PDF-${{ matrix.platform }}-installer.${{ matrix.ext }} + retention-days: 1 + if-no-files-found: error + + - name: Upload binaries to release + uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 # v2.1.0 + with: + files: ./Stirling-PDF-${{ matrix.platform }}-installer.${{ matrix.ext }} diff --git a/.github/workflows/pre_commit.yml b/.github/workflows/pre_commit.yml new file mode 100644 index 0000000000..df4e5a0f83 --- /dev/null +++ b/.github/workflows/pre_commit.yml @@ -0,0 +1,55 @@ +name: Pre-commit + +on: + push: + branches: [main] + +permissions: + contents: read + +jobs: + update: + if: ${{ github.event.pull_request.user.login != 'dependabot[bot]' }} + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 0 + - name: Set up Python + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 + with: + python-version: 3.12 + - name: Run Pre-Commit Hooks + uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 + continue-on-error: true + - name: Set up git config + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + - name: git add + run: | + git add . + git diff --staged --quiet || git commit -m ":file_folder: pre-commit + > Made via .github/workflows/pre_commit.yml" || echo "pre-commit: no changes" + - name: Create Pull Request + uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: "ci: 🤖 format everything with pre-commit" + committer: GitHub Action + author: GitHub Action + signoff: true + branch: pre-commit + title: "🤖 format everything with pre-commit by " + body: | + Auto-generated by [create-pull-request][1] + + [1]: https://github.com/peter-evans/create-pull-request + draft: false + delete-branch: true + labels: github-actions + sign-commits: true diff --git a/.github/workflows/push-docker.yml b/.github/workflows/push-docker.yml index 2ca9a14de9..80f3021c14 100644 --- a/.github/workflows/push-docker.yml +++ b/.github/workflows/push-docker.yml @@ -9,52 +9,65 @@ on: permissions: contents: read - packages: write jobs: push: runs-on: ubuntu-latest + permissions: + packages: write + id-token: write steps: - - uses: actions/checkout@v4 + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 with: java-version: "17" distribution: "temurin" - - uses: gradle/actions/setup-gradle@v4 + - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2 with: - gradle-version: 8.7 + gradle-version: 8.12 - name: Run Gradle Command run: ./gradlew clean build env: DOCKER_ENABLE_SECURITY: false + - name: Install cosign + if: github.ref == 'refs/heads/master' + uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0 + with: + cosign-release: 'v2.4.1' + - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - name: Get version number id: versionNumber run: echo "versionNumber=$(./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_API }} - name: Login to GitHub Container Registry - uses: docker/login-action@v3 + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ github.token }} - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0 - name: Convert repository owner to lowercase id: repoowner @@ -62,7 +75,7 @@ jobs: - name: Generate tags id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1 with: images: | ${{ secrets.DOCKER_HUB_USERNAME }}/s-pdf @@ -75,7 +88,8 @@ jobs: type=raw,value=alpha,enable=${{ github.ref == 'refs/heads/main' }} - name: Build and push main Dockerfile - uses: docker/build-push-action@v6 + id: build-push-regular + uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 with: builder: ${{ steps.buildx.outputs.name }} context: . @@ -87,10 +101,26 @@ jobs: labels: ${{ steps.meta.outputs.labels }} build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }} platforms: linux/amd64,linux/arm64/v8 + provenance: true + sbom: true + + - name: Sign regular images + if: github.ref == 'refs/heads/master' + env: + DIGEST: ${{ steps.build-push-regular.outputs.digest }} + TAGS: ${{ steps.meta.outputs.tags }} + COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} + COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} + run: | + echo "$TAGS" | tr ',' '\n' | while read -r tag; do + cosign sign --yes \ + --key env://COSIGN_PRIVATE_KEY \ + "${tag}@${DIGEST}" + done - name: Generate tags ultra-lite id: meta2 - uses: docker/metadata-action@v5 + uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1 if: github.ref != 'refs/heads/main' with: images: | @@ -103,11 +133,12 @@ jobs: type=raw,value=latest-ultra-lite,enable=${{ github.ref == 'refs/heads/master' }} - name: Build and push Dockerfile-ultra-lite - uses: docker/build-push-action@v6 + id: build-push-lite + uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 if: github.ref != 'refs/heads/main' with: context: . - file: ./Dockerfile-ultra-lite + file: ./Dockerfile.ultra-lite push: true cache-from: type=gha cache-to: type=gha,mode=max @@ -115,10 +146,12 @@ jobs: labels: ${{ steps.meta2.outputs.labels }} build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }} platforms: linux/amd64,linux/arm64/v8 + provenance: true + sbom: true - name: Generate tags fat id: meta3 - uses: docker/metadata-action@v5 + uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1 if: github.ref != 'refs/heads/main' with: images: | @@ -131,12 +164,13 @@ jobs: type=raw,value=latest-fat,enable=${{ github.ref == 'refs/heads/master' }} - name: Build and push main Dockerfile fat - uses: docker/build-push-action@v6 + id: build-push-fat + uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 if: github.ref != 'refs/heads/main' with: builder: ${{ steps.buildx.outputs.name }} context: . - file: ./Dockerfile-fat + file: ./Dockerfile.fat push: true cache-from: type=gha cache-to: type=gha,mode=max @@ -144,3 +178,17 @@ jobs: labels: ${{ steps.meta3.outputs.labels }} build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }} platforms: linux/amd64,linux/arm64/v8 + provenance: true + sbom: true + + - name: Sign fat images + if: github.ref == 'refs/heads/master' + env: + DIGEST: ${{ steps.build-push-fat.outputs.digest }} + TAGS: ${{ steps.meta3.outputs.tags }} + COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} + COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} + run: | + echo "$TAGS" | tr ',' '\n' | while read -r tag; do + cosign sign --key env://COSIGN_PRIVATE_KEY --yes "${tag}@${DIGEST}" + done diff --git a/.github/workflows/releaseArtifacts.yml b/.github/workflows/releaseArtifacts.yml index 8adfa0feed..235cb40588 100644 --- a/.github/workflows/releaseArtifacts.yml +++ b/.github/workflows/releaseArtifacts.yml @@ -4,12 +4,16 @@ on: workflow_dispatch: release: types: [created] + permissions: - contents: write - packages: write + contents: read + jobs: push: runs-on: ubuntu-latest + permissions: + contents: write + packages: write strategy: matrix: enable_security: [true, false] @@ -19,49 +23,55 @@ jobs: - enable_security: false file_suffix: "" steps: - - uses: actions/checkout@v4 + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 with: java-version: "17" distribution: "temurin" - - uses: gradle/actions/setup-gradle@v4 + - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2 with: - gradle-version: 8.7 + gradle-version: 8.12 - name: Generate jar (With Security=${{ matrix.enable_security }}) run: ./gradlew clean createExe env: DOCKER_ENABLE_SECURITY: ${{ matrix.enable_security }} + STIRLING_PDF_DESKTOP_UI: false - name: Get version number id: versionNumber run: echo "versionNumber=$(./gradlew printVersion --quiet | tail -1)" >> $GITHUB_OUTPUT - name: Rename binarie - if: matrix.file_suffix != '' - run: cp ./build/launch4j/Stirling-PDF.exe ./build/launch4j/Stirling-PDF${{ matrix.file_suffix }}.exe + run: cp ./build/launch4j/Stirling-PDF.exe ./build/launch4j/Stirling-PDF-Server${{ matrix.file_suffix }}.exe - name: Upload Assets binarie - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: - path: ./build/launch4j/Stirling-PDF${{ matrix.file_suffix }}.exe - name: Stirling-PDF${{ matrix.file_suffix }}.exe + path: ./build/launch4j/Stirling-PDF-Server${{ matrix.file_suffix }}.exe + name: Stirling-PDF-Server${{ matrix.file_suffix }}.exe overwrite: true retention-days: 1 if-no-files-found: error + - name: Upload binaries to release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 # v2.1.0 with: - files: ./build/launch4j/Stirling-PDF${{ matrix.file_suffix }}.exe + files: ./build/launch4j/Stirling-PDF-Server${{ matrix.file_suffix }}.exe - name: Rename jar binaries run: cp ./build/libs/Stirling-PDF-${{ steps.versionNumber.outputs.versionNumber }}.jar ./build/libs/Stirling-PDF${{ matrix.file_suffix }}.jar - name: Upload Assets jar binaries - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: path: ./build/libs/Stirling-PDF${{ matrix.file_suffix }}.jar name: Stirling-PDF${{ matrix.file_suffix }}.jar @@ -70,6 +80,6 @@ jobs: if-no-files-found: error - name: Upload jar binaries to release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@01570a1f39cb168c169c802c3bceb9e93fb10974 # v2.1.0 with: files: ./build/libs/Stirling-PDF${{ matrix.file_suffix }}.jar diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml new file mode 100644 index 0000000000..7c67832b64 --- /dev/null +++ b/.github/workflows/scorecards.yml @@ -0,0 +1,79 @@ +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: '20 7 * * 2' + push: + branches: ["main"] +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + contents: read + actions: read + # To allow GraphQL ListCommits to work + issues: read + pull-requests: read + # To detect SAST tools + checks: read + + steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - name: "Checkout code" + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecards on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 + with: + sarif_file: results.sarif diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 485eefb3f3..f8631b55b8 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -5,6 +5,9 @@ on: - cron: "30 0 * * *" workflow_dispatch: +permissions: + contents: read + jobs: stale: runs-on: ubuntu-latest @@ -12,8 +15,13 @@ jobs: issues: write pull-requests: write steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + - name: 30 days stale issues - uses: actions/stale@v9 + uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-stale: 30 diff --git a/.github/workflows/swagger.yml b/.github/workflows/swagger.yml index 33aeed440b..6478aeb186 100644 --- a/.github/workflows/swagger.yml +++ b/.github/workflows/swagger.yml @@ -6,19 +6,27 @@ on: branches: - master +permissions: + contents: read + jobs: push: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up JDK 17 - uses: actions/setup-java@v4 + uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 with: java-version: "17" distribution: "temurin" - - uses: gradle/actions/setup-gradle@v4 + - uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2 - name: Generate Swagger documentation run: ./gradlew generateOpenApiDocs diff --git a/.github/workflows/sync_files.yml b/.github/workflows/sync_files.yml index d220f92d4f..e27f1b3950 100644 --- a/.github/workflows/sync_files.yml +++ b/.github/workflows/sync_files.yml @@ -10,16 +10,23 @@ on: - "scripts/ignore_translation.toml" permissions: - contents: write - pull-requests: write + contents: read jobs: sync-readme: runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write steps: - - uses: actions/checkout@v4 + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 with: python-version: "3.x" - name: Install dependencies @@ -36,7 +43,7 @@ jobs: git diff --staged --quiet || git commit -m ":memo: Sync README > Made via sync_files.yml" || echo "no changes" - name: Create Pull Request - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6 with: token: ${{ secrets.GITHUB_TOKEN }} commit-message: Update files @@ -52,3 +59,4 @@ jobs: draft: false delete-branch: true labels: Documentation,Translation,github-actions + sign-commits: true diff --git a/.github/workflows/update-translations.yml b/.github/workflows/update-translations.yml new file mode 100644 index 0000000000..8c1a82d63d --- /dev/null +++ b/.github/workflows/update-translations.yml @@ -0,0 +1,72 @@ +name: Update Translations + +on: + push: + branches: ["main"] + paths: + - "src/main/resources/messages_en_GB.properties" + +permissions: + contents: read + +jobs: + update-translations-main: + if: github.event_name == 'push' + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Harden Runner + uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 + with: + egress-policy: audit + + - name: Checkout repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Set up Python + uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 + with: + python-version: "3.x" + + - name: Run Python script to check files + id: run-check + run: | + echo "Running Python script to check files..." + python .github/scripts/check_language_properties.py \ + --reference-file src/main/resources/messages_en_GB.properties \ + --branch main + + - name: Set up git config + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + - name: Add translation keys + run: | + git add src/main/resources/messages_*.properties + git diff --staged --quiet || echo "CHANGES_DETECTED=true" >> $GITHUB_ENV + + - name: Create Pull Request + id: cpr + if: env.CHANGES_DETECTED == 'true' + uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: "Update translation files" + committer: GitHub Action + author: GitHub Action + signoff: true + branch: update_translation_files + title: "Update translation files" + add-paths: | + src/main/resources/messages_*.properties + body: | + Auto-generated by [create-pull-request][1] + + [1]: https://github.com/peter-evans/create-pull-request + draft: false + delete-branch: true + labels: Translation,github-actions + sign-commits: true diff --git a/.gitignore b/.gitignore index b0bbfb9d33..a241f3346d 100644 --- a/.gitignore +++ b/.gitignore @@ -146,18 +146,37 @@ out/ # cucumber /cucumber/reports/** -# Certs +# Certs and Security Files *.p12 +*.pk8 *.pem *.crt *.cer +*.cert *.der *.key *.csr +*.kdbx +*.jks +*.asc + +# SSH Keys +*.pub +*.priv +id_rsa +id_rsa.pub +id_ecdsa +id_ecdsa.pub +id_ed25519 +id_ed25519.pub +.ssh/ +*ssh # cache +.cache .ruff_cache .mypy_cache .pytest_cache .ipynb_checkpoints +**/jcef-bundle/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 45ce3639e2..b603099d11 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.2.1 + rev: v0.8.4 hooks: - id: ruff args: @@ -12,7 +12,7 @@ repos: files: ^((.github/scripts|scripts)/.+)?[^/]+\.py$ exclude: (split_photos.py) - repo: https://github.com/codespell-project/codespell - rev: v2.2.6 + rev: v2.3.0 hooks: - id: codespell args: @@ -21,6 +21,25 @@ repos: - --quiet-level=2 files: \.(properties|html|css|js|py|md)$ exclude: (.vscode|.devcontainer|src/main/resources|Dockerfile) + - repo: https://github.com/gitleaks/gitleaks + rev: v8.22.0 + hooks: + - id: gitleaks + - repo: https://github.com/jumanjihouse/pre-commit-hooks + rev: 3.0.0 + hooks: + - id: shellcheck + files: ^.*(\.bash|\.sh|\.ksh|\.zsh)$ + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: end-of-file-fixer + files: ^.*(\.js|\.java|\.py|\.yml)$ + exclude: ^(.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js$) + - id: trailing-whitespace + files: ^.*(\.js|\.java|\.py|\.yml)$ + exclude: ^(.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js$) + - repo: local hooks: - id: check-duplicate-properties-keys @@ -28,12 +47,11 @@ repos: entry: python .github/scripts/check_duplicates.py language: python files: ^(src)/.+\.properties$ - - repo: local - hooks: - id: check-html-tabs name: Check HTML for tabs + description: Ensures HTML/CSS/JS files do not contain tab characters # args: ["--replace_with= "] entry: python .github/scripts/check_tabulator.py language: python - exclude: ^(src/main/resources/static/pdfjs|src/main/resources/static/pdfjs-legacy) - files: ^.*(\.html|\.css|\.js)$ + exclude: ^(.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js$) + files: ^.*(\.html|\.css|\.js)$ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index b0d31dae99..c8ef988809 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -49,5 +49,7 @@ "editor.indentSize": "tabSize", "editor.stickyScroll.enabled": false, "editor.minimap.enabled": false, - "editor.formatOnSave": true + "editor.formatOnSave": true, + "java.format.settings.google.mode": "jar-file", + "java.format.settings.google.extra": "--aosp --skip-sorting-imports" } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 47f6215cbd..9fad6ecbda 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,9 +18,9 @@ For a detailed pull request tutorial, see [this guide](https://www.digitalocean. Please make sure your Pull Request adheres to the following guidelines: - Use the PR template provided. -- Keep your Pull Request title succinct, detailed and to the point. +- Keep your Pull Request title succinct, detailed, and to the point. - Keep commits atomic. One commit should contain one change. If you want to make multiple changes, submit multiple Pull Requests. -- Commits should be clear, concise and easy to understand. +- Commits should be clear, concise, and easy to understand. - References to the Issue number in the Pull Request and/or Commit message. ## Translations @@ -29,15 +29,15 @@ If you would like to add or modify a translation, please see [How to add new lan ## Docs -Documentation for Stirling-PDF is handled in a separate repository. Please see [Docs repository](https://github.com/Stirling-Tools/Stirling-Tools.github.io) or use "edit this page"-button at the bottom of each page at [https://docs.stirlingpdf.com/](https://docs.stirlingpdf.com/). +Documentation for Stirling-PDF is handled in a separate repository. Please see [Docs repository](https://github.com/Stirling-Tools/Stirling-Tools.github.io) or use the "edit this page"-button at the bottom of each page at [https://docs.stirlingpdf.com/](https://docs.stirlingpdf.com/). ## Fixing Bugs or Adding a New Feature First, make sure you've read the section [Pull Requests](#pull-requests). -To build from source, please follow this [Guide](LocalRunGuide.md). +If, at any point in time, you have a question, please feel free to ask in the same issue thread or in our [Discord](https://discord.gg/FJUSXUSYec). -If, at any point of time, you have a question, please feel free to ask in the same issue thread or in our [Discord](https://discord.gg/FJUSXUSYec). +Developers should review our [Developer Guide](DeveloperGuide.md) ## License diff --git a/DATABASE.md b/DATABASE.md index e8e0c838e2..c37c598bb1 100644 --- a/DATABASE.md +++ b/DATABASE.md @@ -1,12 +1,5 @@ # New Database Backup and Import Functionality -> [!IMPORTANT] -> **Full activation will take place on approximately January 5th, 2025!** - -Why is the waiting time six months? - -There are users who only install updates sporadically; if they skip the preparation, it can/will lead to data loss in the database. - ## Functionality Overview The newly introduced feature enhances the application with robust database backup and import capabilities. This feature is designed to ensure data integrity and provide a straightforward way to manage database backups. Here's how it works: diff --git a/DeveloperGuide.md b/DeveloperGuide.md index d5705fb710..ac0004ff7f 100644 --- a/DeveloperGuide.md +++ b/DeveloperGuide.md @@ -2,7 +2,7 @@ ## 1. Introduction -Stirling-PDF is a robust, locally hosted web-based PDF manipulation tool. This guide focuses on Docker-based development and testing, which is the recommended approach for working with the full version of Stirling-PDF. +Stirling-PDF is a robust, locally hosted, web-based PDF manipulation tool. This guide focuses on Docker-based development and testing, which is the recommended approach for working with the full version of Stirling-PDF. ## 2. Project Overview @@ -11,7 +11,7 @@ Stirling-PDF is built using: - Spring Boot + Thymeleaf - PDFBox - LibreOffice -- OcrMyPdf +- qpdf - HTML, CSS, JavaScript - Docker - PDF.js @@ -25,7 +25,7 @@ Stirling-PDF is built using: - Docker - Git - Java JDK 17 or later -- Gradle 7.0 or later (Included within repo) +- Gradle 7.0 or later (Included within the repo) ### Setup Steps @@ -38,14 +38,14 @@ Stirling-PDF is built using: 2. Install Docker and JDK17 if not already installed. -3. Install a recommended Java IDE such as Eclipse, IntelliJ or VSCode +3. Install a recommended Java IDE such as Eclipse, IntelliJ, or VSCode 4. Lombok Setup Stirling-PDF uses Lombok to reduce boilerplate code. Some IDEs, like Eclipse, don't support Lombok out of the box. To set up Lombok in your development environment: Visit the [Lombok website](https://projectlombok.org/setup/) for installation instructions specific to your IDE. 5. Add environment variable -For local testing you should generally be testing the full 'Security' version of Stirling-PDF to do this you must add the environment flag DOCKER_ENABLE_SECURITY=true to your system and/or IDE build/run step +For local testing, you should generally be testing the full 'Security' version of Stirling-PDF. To do this, you must add the environment flag DOCKER_ENABLE_SECURITY=true to your system and/or IDE build/run step. ## 4. Project Structure @@ -86,8 +86,8 @@ Stirling-PDF/ │ └── SPDF/ ├── build.gradle # Gradle build configuration ├── Dockerfile # Main Dockerfile -├── Dockerfile-ultra-lite # Dockerfile for ultra-lite version -├── Dockerfile-fat # Dockerfile for fat version +├── Dockerfile.ultra-lite # Dockerfile for ultra-lite version +├── Dockerfile.fat # Dockerfile for fat version ├── docker-compose.yml # Docker Compose configuration └── test.sh # Test script to deploy all docker versions and run cuke tests ``` @@ -102,7 +102,7 @@ Stirling-PDF offers several Docker versions: ### Example Docker Compose Files -Stirling-PDF provides several example Docker Compose files in the `exampleYmlFiles` directory such as : +Stirling-PDF provides several example Docker Compose files in the `exampleYmlFiles` directory, such as: - `docker-compose-latest.yml`: Latest version without security features - `docker-compose-latest-security.yml`: Latest version with security features enabled @@ -179,14 +179,14 @@ Stirling-PDF uses different Docker images for various configurations. The build For the ultra-lite version: ```bash - docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest-ultra-lite -f ./Dockerfile-ultra-lite . + docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest-ultra-lite -f ./Dockerfile.ultra-lite . ``` For the fat version (with security enabled): ```bash export DOCKER_ENABLE_SECURITY=true - docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest-fat -f ./Dockerfile-fat . + docker build --no-cache --pull --build-arg VERSION_TAG=alpha -t stirlingtools/stirling-pdf:latest-fat -f ./Dockerfile.fat . ``` Note: The `--no-cache` and `--pull` flags ensure that the build process uses the latest base images and doesn't use cached layers, which is useful for testing and ensuring reproducible builds. however to improve build times these can often be removed depending on your usecase @@ -205,9 +205,9 @@ To run the test script: This script performs the following actions: -1. Builds all Docker images (full, ultra-lite, fat) -2. Runs each version to ensure it starts correctly -3. Executes Cucumber tests against main version and ensures feature compatibility, in the event these tests fail your PR will not be merged +1. Builds all Docker images (full, ultra-lite, fat). +2. Runs each version to ensure it starts correctly. +3. Executes Cucumber tests against the main version and ensures feature compatibility. In the event these tests fail, your PR will not be merged. Note: The `test.sh` script will run automatically when you raise a PR. However, it's recommended to run it locally first to save resources and catch any issues early. @@ -229,7 +229,7 @@ For quick iterations and development of Java backend, JavaScript, and UI compone To run Stirling-PDF locally: -1. Compile and run the project using built in IDE methods or by running: +1. Compile and run the project using built-in IDE methods or by running: ```bash ./gradlew bootRun @@ -243,7 +243,7 @@ To run Stirling-PDF locally: Important notes: -- Local testing doesn't include features that depend on external tools like OCRmyPDF, LibreOffice, or Python scripts. +- Local testing doesn't include features that depend on external tools like qpdf, LibreOffice, or Python scripts. - There are currently no automated unit tests. All testing is done manually through the UI or API calls. (You are welcome to add JUnits!) - Always verify your changes in the full Docker environment before submitting pull requests, as some integrations and features will only work in the complete setup. @@ -261,7 +261,7 @@ Important notes: 6. Push your changes to your fork. 7. Submit a pull request to the main repository. -8. See additional [contributing guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) +8. See additional [contributing guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md). When you raise a PR: @@ -317,7 +317,7 @@ Remember to test your changes thoroughly to ensure they don't break any existing ### Overview of Thymeleaf -Thymeleaf is a server-side Java HTML template engine. It is used in Stirling-PDF to render dynamic web pages. Thymeleaf integrates heavily with Spring Boot +Thymeleaf is a server-side Java HTML template engine. It is used in Stirling-PDF to render dynamic web pages. Thymeleaf integrates heavily with Spring Boot. ### Thymeleaf overview @@ -327,22 +327,24 @@ Some examples of this are: ```html +``` or +```html ``` -Where it uses the th:block, th: indicating its a special thymeleaf element to be used serverside in generating the html, and block being the actual element type. -In this case we are inserting the ``navbar`` entry within the ``fragments/navbar.html`` fragment into the ``th:block`` element. +Where it uses the `th:block`, `th:` indicating it's a special Thymeleaf element to be used server-side in generating the HTML, and block being the actual element type. +In this case, we are inserting the `navbar` entry within the `fragments/navbar.html` fragment into the `th:block` element. -They can be more complex such as: +They can be more complex, such as: ```html ``` -Which is the same as above but passes the parameters title and header into the fragment common.html to be used in its HTML generation +Which is the same as above but passes the parameters title and header into the fragment `common.html` to be used in its HTML generation. -Thymeleaf can also be used to loop through objects or pass things from java side into html side. +Thymeleaf can also be used to loop through objects or pass things from the Java side into the HTML side. ```java @GetMapping @@ -352,7 +354,7 @@ Thymeleaf can also be used to loop through objects or pass things from java side } ``` -in above example if exampleData is a list of plain java objects of class Person and within it you had id, name, age etc. You can reference it like so +In the above example, if exampleData is a list of plain java objects of class Person and within it, you had id, name, age, etc. You can reference it like so ```html @@ -452,7 +454,7 @@ This would generate n entries of tr for each person in exampleData 1. **Create a New Thymeleaf Template:** - Create a new HTML file in the `src/main/resources/templates` directory. - Use Thymeleaf attributes to dynamically generate content. - - Use `extract-page.html` as a base example for the HTML template, useful to ensure importing of the general layout, navbar and footer. + - Use `extract-page.html` as a base example for the HTML template, which is useful to ensure importing of the general layout, navbar, and footer. ```html diff --git a/Dockerfile b/Dockerfile index 424257e165..900f4a40b5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,18 @@ COPY build/libs/*.jar app.jar ARG VERSION_TAG +LABEL org.opencontainers.image.title="Stirling-PDF" +LABEL org.opencontainers.image.description="A powerful locally hosted web-based PDF manipulation tool supporting 50+ operations including merging, splitting, conversion, OCR, watermarking, and more." +LABEL org.opencontainers.image.source="https://github.com/Stirling-Tools/Stirling-PDF" +LABEL org.opencontainers.image.licenses="MIT" +LABEL org.opencontainers.image.vendor="Stirling-Tools" +LABEL org.opencontainers.image.url="https://www.stirlingpdf.com" +LABEL org.opencontainers.image.documentation="https://docs.stirlingpdf.com" +LABEL maintainer="Stirling-Tools" +LABEL org.opencontainers.image.authors="Stirling-Tools" +LABEL org.opencontainers.image.version="${VERSION_TAG}" +LABEL org.opencontainers.image.keywords="PDF, manipulation, merge, split, convert, OCR, watermark" + # Set Environment Variables ENV DOCKER_ENABLE_SECURITY=false \ VERSION_TAG=$VERSION_TAG \ @@ -19,6 +31,7 @@ ENV DOCKER_ENABLE_SECURITY=false \ PGID=1000 \ UMASK=022 + # JDK for app RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/apk/repositories && \ echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/community" | tee -a /etc/apk/repositories && \ @@ -30,6 +43,7 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et tini \ bash \ curl \ + qpdf \ shadow \ su-exec \ openssl \ @@ -40,7 +54,6 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et # pdftohtml poppler-utils \ # OCR MY PDF (unpaper for descew and other advanced features) - ocrmypdf \ tesseract-ocr-data-eng \ # CV py3-opencv \ @@ -57,8 +70,7 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et # User permissions addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \ chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \ - chown stirlingpdfuser:stirlingpdfgroup /app.jar && \ - tesseract --list-langs + chown stirlingpdfuser:stirlingpdfgroup /app.jar EXPOSE 8080/tcp diff --git a/Dockerfile-fat b/Dockerfile.fat similarity index 94% rename from Dockerfile-fat rename to Dockerfile.fat index f0b7bc6be2..b36677b9bc 100644 --- a/Dockerfile-fat +++ b/Dockerfile.fat @@ -1,5 +1,5 @@ # Build the application -FROM gradle:8.7-jdk17 AS build +FROM gradle:8.12-jdk17 AS build # Set the working directory WORKDIR /app @@ -55,7 +55,7 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et # pdftohtml poppler-utils \ # OCR MY PDF (unpaper for descew and other advanced featues) - ocrmypdf \ + qpdf \ tesseract-ocr-data-eng \ font-terminus font-dejavu font-noto font-noto-cjk font-awesome font-noto-extra \ # CV @@ -73,8 +73,7 @@ RUN echo "@testing https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /et # User permissions addgroup -S stirlingpdfgroup && adduser -S stirlingpdfuser -G stirlingpdfgroup && \ chown -R stirlingpdfuser:stirlingpdfgroup $HOME /scripts /usr/share/fonts/opentype/noto /configs /customFiles /pipeline && \ - chown stirlingpdfuser:stirlingpdfgroup /app.jar && \ - tesseract --list-langs + chown stirlingpdfuser:stirlingpdfgroup /app.jar EXPOSE 8080/tcp diff --git a/Dockerfile-ultra-lite b/Dockerfile.ultra-lite similarity index 94% rename from Dockerfile-ultra-lite rename to Dockerfile.ultra-lite index c1bdd80de6..4953f338a4 100644 --- a/Dockerfile-ultra-lite +++ b/Dockerfile.ultra-lite @@ -1,5 +1,5 @@ # use alpine -FROM alpine:3.20.3 +FROM alpine:3.21.0@sha256:21dc6063fd678b478f57c0e13f47560d0ea4eeba26dfc947b2a4f81f686b9f45 ARG VERSION_TAG diff --git a/Endpoint-groups.md b/Endpoint-groups.md deleted file mode 100644 index 0c31c5daa7..0000000000 --- a/Endpoint-groups.md +++ /dev/null @@ -1,46 +0,0 @@ -| Operation | PageOps | Convert | Security | Other | CLI | Python | OpenCV | LibreOffice | OCRmyPDF | Java | Javascript | Unoconv | Ghostscript | -| ------------------- | ------- | ------- | -------- | ----- | --- | ------ | ------ | ----------- | -------- | ---- | ---------- | ------- | ----------- | -| adjust-contrast | âœ”ī¸ | | | | | | | | | | âœ”ī¸ | | | -| auto-split-pdf | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| crop | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| extract-page | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| merge-pdfs | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| multi-page-layout | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| pdf-organizer | âœ”ī¸ | | | | | | | | | âœ”ī¸ | âœ”ī¸ | | | -| pdf-to-single-page | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| remove-pages | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| rotate-pdf | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| scale-pages | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| split-pdfs | âœ”ī¸ | | | | | | | | | âœ”ī¸ | | | | -| file-to-pdf | | âœ”ī¸ | | | âœ”ī¸ | âœ”ī¸ | | âœ”ī¸ | | | | âœ”ī¸ | | -| img-to-pdf | | âœ”ī¸ | | | | | | | | âœ”ī¸ | | | | -| pdf-to-html | | âœ”ī¸ | | | âœ”ī¸ | | | âœ”ī¸ | | | | | | -| pdf-to-img | | âœ”ī¸ | | | | âœ”ī¸ | | | | âœ”ī¸ | | | | -| pdf-to-pdfa | | âœ”ī¸ | | | âœ”ī¸ | | | | âœ”ī¸ | | | | âœ”ī¸ | -| pdf-to-markdown | | âœ”ī¸ | | | | | | | | âœ”ī¸ | | | | -| pdf-to-presentation | | âœ”ī¸ | | | âœ”ī¸ | | | âœ”ī¸ | | | | | | -| pdf-to-text | | âœ”ī¸ | | | âœ”ī¸ | | | âœ”ī¸ | | | | | | -| pdf-to-word | | âœ”ī¸ | | | âœ”ī¸ | | | âœ”ī¸ | | | | | | -| pdf-to-xml | | âœ”ī¸ | | | âœ”ī¸ | | | âœ”ī¸ | | | | | | -| add-password | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | | -| add-watermark | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | | -| cert-sign | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | | -| remove-cert-sign | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | | -| change-permissions | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | | -| remove-password | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | | -| sanitize-pdf | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | | -| add-image | | | | âœ”ī¸ | | | | | | âœ”ī¸ | | | | -| add-page-numbers | | | | âœ”ī¸ | | | | | | âœ”ī¸ | | | | -| auto-rename | | | | âœ”ī¸ | | | | | | âœ”ī¸ | | | | -| change-metadata | | | | âœ”ī¸ | | | | | | âœ”ī¸ | | | | -| compare | | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | -| compress-pdf | | | | âœ”ī¸ | âœ”ī¸ | | | | âœ”ī¸ | | | | âœ”ī¸ | -| extract-image-scans | | | | âœ”ī¸ | âœ”ī¸ | âœ”ī¸ | âœ”ī¸ | | | | | | | -| extract-images | | | | âœ”ī¸ | | | | | | âœ”ī¸ | | | | -| flatten | | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | -| get-info-on-pdf | | | | âœ”ī¸ | | | | | | âœ”ī¸ | | | | -| ocr-pdf | | | | âœ”ī¸ | âœ”ī¸ | | | | âœ”ī¸ | | | | | -| remove-blanks | | | | âœ”ī¸ | âœ”ī¸ | âœ”ī¸ | âœ”ī¸ | | | | | | | -| repair | | | | âœ”ī¸ | âœ”ī¸ | | | âœ”ī¸ | | | | | âœ”ī¸ | -| show-javascript | | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | -| sign | | | | âœ”ī¸ | | | | | | | âœ”ī¸ | | | diff --git a/FolderScanning.md b/FolderScanning.md deleted file mode 100644 index 66707a1034..0000000000 --- a/FolderScanning.md +++ /dev/null @@ -1,41 +0,0 @@ -## User Guide for Local Directory Scanning and File Processing - -### Setting Up Watched Folders - -- Create a folder where you want your files to be monitored. This is your 'watched folder'. -- The default directory for this is `./pipeline/watchedFolders/`. -- Place any directories you want to be scanned into this folder. This folder should contain multiple folders, each for their own tasks and pipelines. - -### Configuring Processing with JSON Files - -- In each directory you want processed (e.g., `./pipeline/watchedFolders/officePrinter`), include a JSON configuration file. -- This JSON file should specify how you want the files in the directory to be handled (e.g., what operations to perform on them). This can be made, configured, and downloaded from the Stirling-PDF Pipeline interface. - -### Automatic Scanning and Processing - -- The system automatically checks the watched folder every minute for new directories and files to process. -- When a directory with a valid JSON configuration file is found, it begins processing the files inside according to the configuration. - -### Processing Steps - -- Files in each directory are processed according to the instructions in the JSON file. -- This might involve file conversions, data filtering, renaming files, etc. If the output of a step is a zip, this zip will be automatically unzipped as it passes to the next process. - -### Results and Output - -- After processing, the results are saved in a specified output location. This could be a different folder or location as defined in the JSON file or the default location `./pipeline/finishedFolders/`. -- Each processed file is named and organized according to the rules set in the JSON configuration. - -### Completion and Cleanup - -- Once processing is complete, the original files in the watched folder's directory are removed. -- You can find the processed files in the designated output location. - -### Error Handling - -- If there's an error during processing, the system will not delete the original files, allowing you to check and retry if necessary. - -### User Interaction - -- As a user, your main tasks are to set up the watched folders, place directories with files for processing, and create the corresponding JSON configuration files. -- The system handles the rest, including scanning, processing, and outputting results. diff --git a/HowToUseOCR.md b/HowToUseOCR.md index 6f168111d2..f529b72c9c 100644 --- a/HowToUseOCR.md +++ b/HowToUseOCR.md @@ -8,7 +8,7 @@ The paths have changed for the tessdata locations on new Docker images. Please u ## How does the OCR Work -Stirling-PDF uses [OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF), which in turn uses Tesseract for its text recognition. All credit goes to them for this awesome work! +Stirling-PDF uses Tesseract for its text recognition. All credit goes to them for this awesome work! ## Language Packs @@ -52,8 +52,6 @@ Add the following to your existing Docker run command: ### Non-Docker Setup -If you are not using Docker, you need to install the OCR components, including the `ocrmypdf` app. You can see the [OCRmyPDF install guide](https://ocrmypdf.readthedocs.io/en/latest/installation.html). - For Debian-based systems, install languages with this command: ```bash @@ -83,8 +81,7 @@ rpm -qa | grep tesseract-langpack | sed 's/tesseract-langpack-//g' For Windows: -Ensure ocrmypdf in installed with -``pip install ocrmypdf`` +You must ensure tesseract is installed Additional languages must be downloaded manually: Download desired .traineddata files from tessdata or tessdata_fast @@ -95,8 +92,9 @@ Verify installation: ``tesseract --list-langs`` You must then edit your ``/configs/settings.yml`` and change the system.tessdataDir to match the directory containing lang files + ``` system: tessdataDir: C:/Program Files/Tesseract-OCR/tessdata # path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored. ``` - + \ No newline at end of file diff --git a/LocalRunGuide.md b/LocalRunGuide.md deleted file mode 100644 index 027c7b226c..0000000000 --- a/LocalRunGuide.md +++ /dev/null @@ -1,328 +0,0 @@ -To run the application without Docker/Podman, you will need to manually install all dependencies and build the necessary components. - -Note that some dependencies might not be available in the standard repositories of all Linux distributions, and may require additional steps to install. - -The following guide assumes you have a basic understanding of using a command line interface in your operating system. - -It should work on most Linux distributions and MacOS. For Windows, you might need to use Windows Subsystem for Linux (WSL) for certain steps. The amount of dependencies is to actually reduce overall size, i.e., installing LibreOffice subcomponents rather than the full LibreOffice package. - -You could theoretically use a Distrobox/Toolbox if your distribution has old or not all packages. But you might just as well use the Docker container then. - -### Step 1: Prerequisites - -Install the following software, if not already installed: - -- Java 17 or later (21 recommended) -- Gradle 7.0 or later (included within repo so not needed on server) -- Git -- Python 3.8 (with pip) -- Make -- GCC/G++ -- Automake -- Autoconf -- libtool -- pkg-config -- zlib1g-dev -- libleptonica-dev - -For Debian-based systems, you can use the following command: - -```bash -sudo apt-get update -sudo apt-get install -y git automake autoconf libtool libleptonica-dev pkg-config zlib1g-dev make g++ openjdk-21-jdk python3 python3-pip -``` - -For Fedora-based systems use this command: - -```bash -sudo dnf install -y git automake autoconf libtool leptonica-devel pkg-config zlib-devel make gcc-c++ java-21-openjdk python3 python3-pip -``` - -For non-root users with Nix Package Manager, use the following command: - -```bash -nix-channel --update -nix-env -iA nixpkgs.jdk21 nixpkgs.git nixpkgs.python38 nixpkgs.gnumake nixpkgs.libgcc nixpkgs.automake nixpkgs.autoconf nixpkgs.libtool nixpkgs.pkg-config nixpkgs.zlib nixpkgs.leptonica -``` - -### Step 2: Clone and Build jbig2enc (Only required for certain OCR functionality) - -For Debian and Fedora, you can build it from source using the following commands: - -```bash -mkdir ~/.git -cd ~/.git && \ -git clone https://github.com/agl/jbig2enc.git && \ -cd jbig2enc && \ -./autogen.sh && \ -./configure && \ -make && \ -sudo make install -``` - -For Nix, you will face `Leptonica not detected`. Bypass this by installing it directly using the following command: - -```bash -nix-env -iA nixpkgs.jbig2enc -``` - -### Step 3: Install Additional Software - -Next we need to install LibreOffice for conversions, ocrmypdf for OCR, and OpenCV for pattern recognition functionality. - -Install the following software: - -- libreoffice-core -- libreoffice-common -- libreoffice-writer -- libreoffice-calc -- libreoffice-impress -- python3-uno -- unoconv -- pngquant -- unpaper -- ocrmypdf -- opencv-python-headless - -For Debian-based systems, you can use the following command: - -```bash -sudo apt-get install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf -pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint --break-system-packages -``` - -For Fedora: - -```bash -sudo dnf install -y libreoffice-writer libreoffice-calc libreoffice-impress unpaper ocrmypdf -pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint -``` - -For Nix: - -```bash -nix-env -iA nixpkgs.unpaper nixpkgs.libreoffice nixpkgs.ocrmypdf nixpkgs.poppler_utils -pip3 install uno opencv-python-headless unoconv pngquant WeasyPrint -``` - -### Step 4: Clone and Build Stirling-PDF - -```bash -cd ~/.git && \ -git clone https://github.com/Stirling-Tools/Stirling-PDF.git && \ -cd Stirling-PDF && \ -chmod +x ./gradlew && \ -./gradlew build -``` - -### Step 5: Move Jar to Desired Location - -After the build process, a `.jar` file will be generated in the `build/libs` directory. You can move this file to a desired location, for example, `/opt/Stirling-PDF/`. You must also move the Script folder within the Stirling-PDF repo that you have downloaded to this directory. This folder is required for the Python scripts using OpenCV. - -```bash -sudo mkdir /opt/Stirling-PDF && \ -sudo mv ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/ && \ -sudo mv scripts /opt/Stirling-PDF/ && \ -echo "Scripts installed." -``` - -For non-root users, you can just keep the jar in the main directory of Stirling-PDF using the following command: - -```bash -mv ./build/libs/Stirling-PDF-*.jar ./Stirling-PDF-*.jar -``` - -### Step 6: Other Files - -#### OCR - -If you plan to use the OCR (Optical Character Recognition) functionality, you might need to install language packs for Tesseract if running non-English scanning. - -##### Installing Language Packs - -The easiest method is to use the language packs provided by your repositories. Skip the other steps if they are available. - -**Manual:** - -1. Download the desired language pack(s) by selecting the `.traineddata` file(s) for the language(s) you need. -2. Place the `.traineddata` files in the Tesseract tessdata directory: `/usr/share/tessdata` -3. Please view [OCRmyPDF install guide](https://ocrmypdf.readthedocs.io/en/latest/installation.html) for more info. - -**IMPORTANT:** DO NOT REMOVE EXISTING `eng.traineddata`, IT'S REQUIRED. - -**Debian-based systems**, install languages with this command: - -```bash -sudo apt update && \ -# All languages -# sudo apt install -y 'tesseract-ocr-*' - -# Find languages: -apt search tesseract-ocr- - -# View installed languages: -dpkg-query -W tesseract-ocr- | sed 's/tesseract-ocr-//g' -``` - -**Fedora:** - -```bash -# All languages -# sudo dnf install -y tesseract-langpack-* - -# Find languages: -dnf search -C tesseract-langpack- - -# View installed languages: -rpm -qa | grep tesseract-langpack | sed 's/tesseract-langpack-//g' -``` - -**Nix:** - -```bash -nix-env -iA nixpkgs.tesseract -``` - -**Note:** Nix Package Manager pre-installs almost all the language packs when Tesseract is installed. - -### Step 7: Run Stirling-PDF - -Those who have pushed to the root directory, run the following commands: - -```bash -./gradlew bootRun -or -java -jar /opt/Stirling-PDF/Stirling-PDF-*.jar -``` - -Since LibreOffice, soffice, and conversion tools have their dbus_tmp_dir set as `dbus_tmp_dir="/run/user/$(id -u)/libreoffice-dbus"`, you might get the following error when using their endpoints: - -``` -[Thread-7] INFO s.s.SPDF.utils.ProcessExecutor - mkdir: cannot create directory ‘/run/user/1501’: Permission denied -``` - -To resolve this, before starting Stirling-PDF, you have to set the environment variable to a directory you have write access to by using the following commands: - -```bash -mkdir temp -export DBUS_SESSION_BUS_ADDRESS="unix:path=./temp" -./gradlew bootRun -or -java -jar ./Stirling-PDF-*.jar -``` - -### Step 8: Adding a Desktop Icon - -This will add a modified app starter to your app menu. - -```bash -location=$(pwd)/gradlew -image=$(pwd)/docs/stirling-transparent.svg - -cat > ~/.local/share/applications/Stirling-PDF.desktop < To force IPv4 only in the Java starting command - -**Note:** This file is created after the first application launch. To have it before that, you can create the directory and add the file yourself. - -### Optional: Run Stirling-PDF as a Service (requires root) - -First create a `.env` file, where you can store environment variables: - -```bash -touch /opt/Stirling-PDF/.env -``` - -In this file, you can add all variables, one variable per line, as stated in the main readme (for example `SYSTEM_DEFAULTLOCALE="de-DE"`). - -Create a new file where we store our service settings and open it with the nano editor: - -```bash -nano /etc/systemd/system/stirlingpdf.service -``` - -Paste this content, make sure to update the filename of the jar file. Press `Ctrl+S` and `Ctrl+X` to save and exit the nano editor: - -```ini -[Unit] -Description=Stirling-PDF service -After=syslog.target network.target - -[Service] -SuccessExitStatus=143 - -User=root -Group=root - -Type=simple - -EnvironmentFile=/opt/Stirling-PDF/.env -WorkingDirectory=/opt/Stirling-PDF -ExecStart=/usr/bin/java -jar Stirling-PDF-0.17.2.jar -ExecStop=/bin/kill -15 $MAINPID - -[Install] -WantedBy=multi-user.target -``` - -Notify systemd that it has to rebuild its internal service database (you have to run this command every time you make a change in the service file): - -```bash -sudo systemctl daemon-reload -``` - -Enable the service to tell it to start automatically: - -```bash -sudo systemctl enable stirlingpdf.service -``` - -See the status of the service: - -```bash -sudo systemctl status stirlingpdf.service -``` - -Manually start/stop/restart the service: - -```bash -sudo systemctl start stirlingpdf.service -sudo systemctl stop stirlingpdf.service -sudo systemctl restart stirlingpdf.service -``` - ---- - -Remember to set the necessary environment variables before running the project if you want to customize the application. The list can be seen in the main readme. - -You can do this in the terminal by using the `export` command or `-D` argument to the Java `-jar` command: - -```bash -export APP_HOME_NAME="Stirling PDF" -or --DAPP_HOME_NAME="Stirling PDF" diff --git a/PipelineFeature.md b/PipelineFeature.md deleted file mode 100644 index db1daa4f09..0000000000 --- a/PipelineFeature.md +++ /dev/null @@ -1,42 +0,0 @@ -# Pipeline Configuration and Usage Tutorial - -- Configure the pipeline config file and input files to run files against it. -- For reuse, download the config file and re-upload it when needed, or place it in `/pipeline/defaultWebUIConfigs/` to auto-load in the web UI for all users. - -## Steps to Configure and Use Your Pipeline - -1. **Access Configuration** - - Upon entering the screen, click on the **Configure** button. - -2. **Enter Pipeline Name** - - Provide a name for your pipeline in the designated field. - -3. **Select Operations** - - Choose the operations for your pipeline (e.g., **Split Pages**), then click **Add Operation**. - -4. **Configure Operation Settings** - - Input the necessary settings for each added operation. Settings are highlighted in yellow if customization is needed. - -5. **Add More Operations** - - You can add and adjust the order of multiple operations. Ensure each operation's settings are customized. - -6. **Save Settings** - - Click **Save Operation Settings** after customizing settings for each operation. - -7. **Validate Pipeline** - - Use the **Validation** button to check your pipeline. A green indicator signifies correct setup; a pop-out error indicates issues. - -8. **Download Pipeline Configuration** - - To use the configuration for folder scanning (or save it for future use and re-upload it), download a JSON file in this menu. You can also pre-load it for future use by placing it in `/pipeline/defaultWebUIConfigs/`. It will then appear in the dropdown menu for all users to use. - -9. **Submit Files for Processing** - - If your pipeline is correctly set up, close the configure menu, input the files, and hit **Submit**. - -10. **Note on Web UI Limitations** - - The current web UI version does not support operations that require multiple different types of inputs, such as adding a separate image to a PDF. - -### Current Limitations - -- Cannot have more than one of the same operation. -- Cannot input additional files via UI. -- All files and operations run in serial mode. diff --git a/README.md b/README.md index 9add2b6fbc..58189fcd9c 100644 --- a/README.md +++ b/README.md @@ -2,37 +2,40 @@

Stirling-PDF

[![Docker Pulls](https://img.shields.io/docker/pulls/frooodle/s-pdf)](https://hub.docker.com/r/frooodle/s-pdf) -[![Discord](https://img.shields.io/discord/1068636748814483718?label=Discord)](https://discord.gg/Cn8pWhQRxZ) +[![Discord](https://img.shields.io/discord/1068636748814483718?label=Discord)](https://discord.gg/HYmhKj45pU) [![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/frooodle/s-pdf/latest)](https://github.com/Stirling-Tools/Stirling-PDF/) +[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/Stirling-Tools/Stirling-PDF/badge)](https://scorecard.dev/viewer/?uri=github.com/Stirling-Tools/Stirling-PDF) [![GitHub Repo stars](https://img.shields.io/github/stars/stirling-tools/stirling-pdf?style=social)](https://github.com/Stirling-Tools/stirling-pdf) +Stirling PDF - Open source locally hosted web PDF editor | Product Hunt [![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/Stirling-Tools/Stirling-PDF/tree/digitalOcean&refcode=c3210994b1af) [Stirling-PDF](https://www.stirlingpdf.com) is a robust, locally hosted web-based PDF manipulation tool using Docker. It enables you to carry out various operations on PDF files, including splitting, merging, converting, reorganizing, adding images, rotating, compressing, and more. This locally hosted web application has evolved to encompass a comprehensive set of features, addressing all your PDF requirements. -Stirling-PDF does not initiate any outbound calls for record-keeping or tracking purposes. - All files and PDFs exist either exclusively on the client side, reside in server memory only during task execution, or temporarily reside in a file solely for the execution of the task. Any file downloaded by the user will have been deleted from the server by that point. + +All information available at [https://docs.stirlingpdf.com/](https://docs.stirlingpdf.com/) + ![stirling-home](images/stirling-home.jpg) ## Features -- Enterprise features like SSO Check [here](https://docs.stirlingpdf.com/Enterprise%20Edition) +- 50+ PDF Operations +- Parallel file processing and downloads - Dark mode support - Custom download options -- Parallel file processing and downloads -- Custom 'Pipelines' to run multiple features in a queue +- Custom 'Pipelines' to run multiple features in a automated queue - API for integration with external scripts -- Optional Login and Authentication support (see [here](https://github.com/Stirling-Tools/Stirling-PDF/tree/main#login-authentication) for documentation) -- Database Backup and Import (see [here](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DATABASE.md) for documentation) - +- Optional Login and Authentication support (see [here](https://docs.stirlingpdf.com/Advanced%20Configuration/System%20and%20Security) for documentation) +- Database Backup and Import (see [here](https://docs.stirlingpdf.com/Advanced%20Configuration/DATABASE) for documentation) +- Enterprise features like SSO see [here](https://docs.stirlingpdf.com/Enterprise%20Edition) ## PDF Features ### Page Operations -- View and modify PDFs - View multi-page PDFs with custom viewing, sorting, and searching. Plus on-page edit features like annotate, draw, and adding text and images. (Using PDF.js with Joxit and Liberation fonts) +- View and modify PDFs - View multi-page PDFs with custom viewing, sorting, and searching. Plus, on-page edit features like annotating, drawing, and adding text and images. (Using PDF.js with Joxit and Liberation fonts) - Full interactive GUI for merging/splitting/rotating/moving PDFs and their pages - Merge multiple PDFs into a single resultant file - Split PDFs into multiple files at specified page numbers or extract all pages as individual files @@ -43,11 +46,11 @@ All files and PDFs exist either exclusively on the client side, reside in server - Scale page contents size by set percentage - Adjust contrast - Crop PDF -- Auto split PDF (with physically scanned page dividers) +- Auto-split PDF (with physically scanned page dividers) - Extract page(s) - Convert PDF to a single page - Overlay PDFs on top of each other -- PDF to single page +- PDF to a single page - Split PDF by sections ### Conversion Operations @@ -56,7 +59,7 @@ All files and PDFs exist either exclusively on the client side, reside in server - Convert any common file to PDF (using LibreOffice) - Convert PDF to Word/PowerPoint/others (using LibreOffice) - Convert HTML to PDF -- Convert PDF to xml +- Convert PDF to XML - Convert PDF to CSV - URL to PDF - Markdown to PDF @@ -78,348 +81,92 @@ All files and PDFs exist either exclusively on the client side, reside in server - Detect and remove blank pages - Compare two PDFs and show differences in text - Add images to PDFs -- Compress PDFs to decrease their filesize (using OCRMyPDF) +- Compress PDFs to decrease their filesize (using qpdf) - Extract images from PDF - Remove images from PDF - Extract images from scans - Remove annotations - Add page numbers -- Auto rename file by detecting PDF header text -- OCR on PDF (using OCRMyPDF) -- PDF/A conversion (using OCRMyPDF) +- Auto-rename files by detecting PDF header text +- OCR on PDF (using Tesseract OCR) +- PDF/A conversion (using LibreOffice) - Edit metadata - Flatten PDFs - Get all information on a PDF to view or export as JSON - Show/detect embedded JavaScript -For an overview of the tasks and the technology each uses, please view [Endpoint-groups.md](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md). - -A demo of the app is available [here](https://stirlingpdf.io). - -## Technologies Used - -- Spring Boot + Thymeleaf -- [PDFBox](https://github.com/apache/pdfbox/tree/trunk) -- [LibreOffice](https://www.libreoffice.org/discover/libreoffice/) for advanced conversions -- [OcrMyPdf](https://github.com/ocrmypdf/OCRmyPDF) -- HTML, CSS, JavaScript -- Docker -- [PDF.js](https://github.com/mozilla/pdf.js) -- [PDF-LIB.js](https://github.com/Hopding/pdf-lib) - -## How to Use - -### Windows - -For Windows users, download the latest Stirling-PDF.exe from our [release](https://github.com/Stirling-Tools/Stirling-PDF/releases) section or by clicking [here](https://github.com/Stirling-Tools/Stirling-PDF/releases/latest/download/Stirling-PDF.exe). - -### Locally - -Please view the [LocalRunGuide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/LocalRunGuide.md). - -### Docker / Podman - -> [!NOTE] -> - -Stirling-PDF has three different versions: a full version, an ultra-lite version, and a 'fat' version. Depending on the types of features you use, you may want a smaller image to save on space. To see what the different versions offer, please look at our [version mapping](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Version-groups.md). For people that don't mind space optimization, just use the latest tag. - -![Docker Image Size (tag)](https://img.shields.io/docker/image-size/stirlingtools/stirling-pdf/latest?label=Stirling-PDF%20Full) -![Docker Image Size (tag)](https://img.shields.io/docker/image-size/stirlingtools/stirling-pdf/latest-ultra-lite?label=Stirling-PDF%20Ultra-Lite) -![Docker Image Size (tag)](https://img.shields.io/docker/image-size/stirlingtools/stirling-pdf/latest-fat?label=Stirling-PDF%20Fat) -Please note in the examples below, you may need to change the volume paths as needed, e.g., `./extraConfigs:/configs` to `/opt/stirlingpdf/extraConfigs:/configs`. -### Docker Run -```bash -docker run -d \ - -p 8080:8080 \ - -v ./trainingData:/usr/share/tessdata \ - -v ./extraConfigs:/configs \ - -v ./logs:/logs \ -# Optional customization (not required) -# -v /location/of/customFiles:/customFiles \ - -e DOCKER_ENABLE_SECURITY=false \ - -e INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false \ - -e LANGS=en_GB \ - --name stirling-pdf \ - stirlingtools/stirling-pdf:latest -``` +# 📖 Get Started -### Docker Compose +Visit our comprehensive documentation at [docs.stirlingpdf.com](https://docs.stirlingpdf.com) for: -```yaml -version: '3.3' -services: - stirling-pdf: - image: stirlingtools/stirling-pdf:latest - ports: - - '8080:8080' - volumes: - - ./trainingData:/usr/share/tessdata # Required for extra OCR languages - - ./extraConfigs:/configs -# - ./customFiles:/customFiles/ -# - ./logs:/logs/ - environment: - - DOCKER_ENABLE_SECURITY=false - - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false - - LANGS=en_GB -``` +- Installation guides for all platforms +- Configuration options +- Feature documentation +- API reference +- Security setup +- Enterprise features -Note: Podman is CLI-compatible with Docker, so simply replace "docker" with "podman". - -### Kubernetes - -See the kubernetes helm chart [here](https://github.com/Stirling-Tools/Stirling-PDF-chart) - -## Enable OCR/Compression Feature - -Please view the [HowToUseOCR.md](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToUseOCR.md). - -## Reuse Stored Files - -Certain functionality like `Sign` supports pre-saved files stored at `/customFiles/signatures/`. Image files placed within here will be accessible to be used via the web UI. Currently, this supports two folder types: - -- `/customFiles/signatures/ALL_USERS`: Accessible to all users, useful for organizations where many users use the same files or for users not using authentication -- `/customFiles/signatures/{username}`: Such as `/customFiles/signatures/froodle`, accessible only to the `froodle` username, private for all others ## Supported Languages -Stirling-PDF currently supports 36 languages! +Stirling-PDF currently supports 38 languages! | Language | Progress | | -------------------------------------------- | -------------------------------------- | -| Arabic (Ø§Ų„ØšØąØ¨ŲŠØŠ) (ar_AR) | ![97%](https://geps.dev/progress/97) | -| Basque (Euskara) (eu_ES) | ![55%](https://geps.dev/progress/55) | -| Bulgarian (Đ‘ŅŠĐģĐŗĐ°Ņ€ŅĐēи) (bg_BG) | ![96%](https://geps.dev/progress/96) | -| Catalan (Català) (ca_CA) | ![90%](https://geps.dev/progress/90) | -| Croatian (Hrvatski) (hr_HR) | ![98%](https://geps.dev/progress/98) | -| Czech (Česky) (cs_CZ) | ![97%](https://geps.dev/progress/97) | -| Danish (Dansk) (da_DK) | ![96%](https://geps.dev/progress/96) | -| Dutch (Nederlands) (nl_NL) | ![96%](https://geps.dev/progress/96) | +| Arabic (Ø§Ų„ØšØąØ¨ŲŠØŠ) (ar_AR) | ![93%](https://geps.dev/progress/93) | +| Azerbaijani (Azərbaycan Dili) (az_AZ) | ![92%](https://geps.dev/progress/92) | +| Basque (Euskara) (eu_ES) | ![53%](https://geps.dev/progress/53) | +| Bulgarian (Đ‘ŅŠĐģĐŗĐ°Ņ€ŅĐēи) (bg_BG) | ![89%](https://geps.dev/progress/89) | +| Catalan (Català) (ca_CA) | ![84%](https://geps.dev/progress/84) | +| Croatian (Hrvatski) (hr_HR) | ![90%](https://geps.dev/progress/90) | +| Czech (Česky) (cs_CZ) | ![90%](https://geps.dev/progress/90) | +| Danish (Dansk) (da_DK) | ![89%](https://geps.dev/progress/89) | +| Dutch (Nederlands) (nl_NL) | ![89%](https://geps.dev/progress/89) | | English (English) (en_GB) | ![100%](https://geps.dev/progress/100) | | English (US) (en_US) | ![100%](https://geps.dev/progress/100) | -| French (Français) (fr_FR) | ![97%](https://geps.dev/progress/97) | +| French (Français) (fr_FR) | ![96%](https://geps.dev/progress/96) | | German (Deutsch) (de_DE) | ![99%](https://geps.dev/progress/99) | -| Greek (ΕÎģÎģΡÎŊΚÎēÎŦ) (el_GR) | ![97%](https://geps.dev/progress/97) | -| Hindi (ā¤šā¤ŋ⤂ā¤ĻāĨ€) (hi_IN) | ![95%](https://geps.dev/progress/95) | -| Hungarian (Magyar) (hu_HU) | ![98%](https://geps.dev/progress/98) | -| Indonesian (Bahasa Indonesia) (id_ID) | ![97%](https://geps.dev/progress/97) | -| Irish (Gaeilge) (ga_IE) | ![88%](https://geps.dev/progress/88) | +| Greek (ΕÎģÎģΡÎŊΚÎēÎŦ) (el_GR) | ![90%](https://geps.dev/progress/90) | +| Hindi (ā¤šā¤ŋ⤂ā¤ĻāĨ€) (hi_IN) | ![88%](https://geps.dev/progress/88) | +| Hungarian (Magyar) (hu_HU) | ![90%](https://geps.dev/progress/90) | +| Indonesian (Bahasa Indonesia) (id_ID) | ![90%](https://geps.dev/progress/90) | +| Irish (Gaeilge) (ga_IE) | ![82%](https://geps.dev/progress/82) | | Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) | -| Japanese (æ—ĨæœŦčĒž) (ja_JP) | ![85%](https://geps.dev/progress/85) | -| Korean (한ęĩ­ė–´) (ko_KR) | ![95%](https://geps.dev/progress/95) | -| Norwegian (Norsk) (no_NB) | ![87%](https://geps.dev/progress/87) | -| Polish (Polski) (pl_PL) | ![97%](https://geps.dev/progress/97) | -| Portuguese (PortuguÃĒs) (pt_PT) | ![97%](https://geps.dev/progress/97) | +| Japanese (æ—ĨæœŦčĒž) (ja_JP) | ![93%](https://geps.dev/progress/93) | +| Korean (한ęĩ­ė–´) (ko_KR) | ![89%](https://geps.dev/progress/89) | +| Norwegian (Norsk) (no_NB) | ![82%](https://geps.dev/progress/82) | +| Persian (ŲØ§ØąØŗÛŒ) (fa_IR) | ![98%](https://geps.dev/progress/98) | +| Polish (Polski) (pl_PL) | ![89%](https://geps.dev/progress/89) | +| Portuguese (PortuguÃĒs) (pt_PT) | ![90%](https://geps.dev/progress/90) | | Portuguese Brazilian (PortuguÃĒs) (pt_BR) | ![98%](https://geps.dev/progress/98) | -| Romanian (RomÃĸnă) (ro_RO) | ![90%](https://geps.dev/progress/90) | -| Russian (Đ ŅƒŅŅĐēиК) (ru_RU) | ![97%](https://geps.dev/progress/97) | -| Serbian Latin alphabet (Srpski) (sr_LATN_RS) | ![70%](https://geps.dev/progress/70) | -| Simplified Chinese (įŽ€äŊ“中文) (zh_CN) | ![91%](https://geps.dev/progress/91) | -| Slovakian (Slovensky) (sk_SK) | ![82%](https://geps.dev/progress/82) | -| Spanish (EspaÃąol) (es_ES) | ![98%](https://geps.dev/progress/98) | -| Swedish (Svenska) (sv_SE) | ![97%](https://geps.dev/progress/97) | -| Thai (āš„ā¸—ā¸ĸ) (th_TH) | ![96%](https://geps.dev/progress/96) | -| Traditional Chinese (įšéĢ”ä¸­æ–‡) (zh_TW) | ![98%](https://geps.dev/progress/98) | -| Turkish (TÃŧrkçe) (tr_TR) | ![92%](https://geps.dev/progress/92) | -| Ukrainian (ĐŖĐēŅ€Đ°Ņ—ĐŊҁҌĐēа) (uk_UA) | ![80%](https://geps.dev/progress/80) | -| Vietnamese (Tiáēŋng Viáģ‡t) (vi_VN) | ![88%](https://geps.dev/progress/88) | - -## Contributing (Creating Issues, Translations, Fixing Bugs, etc.) - -Please see our [Contributing Guide](CONTRIBUTING.md). - -## Stirling PDF Enterprise +| Romanian (RomÃĸnă) (ro_RO) | ![84%](https://geps.dev/progress/84) | +| Russian (Đ ŅƒŅŅĐēиК) (ru_RU) | ![90%](https://geps.dev/progress/90) | +| Serbian Latin alphabet (Srpski) (sr_LATN_RS) | ![66%](https://geps.dev/progress/66) | +| Simplified Chinese (įŽ€äŊ“中文) (zh_CN) | ![93%](https://geps.dev/progress/93) | +| Slovakian (Slovensky) (sk_SK) | ![77%](https://geps.dev/progress/77) | +| Spanish (EspaÃąol) (es_ES) | ![90%](https://geps.dev/progress/90) | +| Swedish (Svenska) (sv_SE) | ![90%](https://geps.dev/progress/90) | +| Thai (āš„ā¸—ā¸ĸ) (th_TH) | ![90%](https://geps.dev/progress/90) | +| Traditional Chinese (įšéĢ”ä¸­æ–‡) (zh_TW) | ![99%](https://geps.dev/progress/99) | +| Turkish (TÃŧrkçe) (tr_TR) | ![86%](https://geps.dev/progress/86) | +| Ukrainian (ĐŖĐēŅ€Đ°Ņ—ĐŊҁҌĐēа) (uk_UA) | ![75%](https://geps.dev/progress/75) | +| Vietnamese (Tiáēŋng Viáģ‡t) (vi_VN) | ![83%](https://geps.dev/progress/83) | -Stirling PDF offers a Enterprise edition of its software, This is the same great software but with added features and comforts - -### Whats included - -- Prioritised Support tickets via support@stirlingpdf.com to reach directly to Stirling-PDF team for support and 1:1 meetings where applicable (Provided they come from same email domain registered with us) -- Prioritised Enhancements to Stirling-PDF where applicable -- Base SSO support -- Advanced SSO such as automated login handling (Coming very soon) -- SAML SSO (Coming very soon) -- Custom automated metadata handling -- Advanced user configurations (Coming soon) -- Plus other exciting features to come - -Check out of [docs](https://docs.stirlingpdf.com/Enterprise%20Edition) on it or our official [website](https://www.stirlingpdf.com) - -## Customization - -Stirling-PDF allows easy customization of the app, including things like: - -- Custom application name -- Custom slogans, icons, HTML, images, CSS, etc. (via file overrides) - -There are two options for this, either using the generated settings file `settings.yml`, which is located in the `/configs` directory and follows standard YAML formatting, or using environment variables, which would override the settings file. - -For example, in `settings.yml`, you might have: - -```yaml -security: - enableLogin: 'true' -``` - -To have this via an environment variable, you would use `SECURITY_ENABLELOGIN`. - -The current list of settings is: - -```yaml -security: - enableLogin: false # set to 'true' to enable login - csrfDisabled: true # set to 'true' to disable CSRF protection (not recommended for production) - loginAttemptCount: 5 # lock user account after 5 tries; when using e.g. Fail2Ban you can deactivate the function with -1 - loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts - loginMethod: all # 'all' (Login Username/Password and OAuth2[must be enabled and configured]), 'normal'(only Login with Username/Password) or 'oauth2'(only Login with OAuth2) - initialLogin: - username: '' # initial username for the first login - password: '' # initial password for the first login - oauth2: - enabled: false # set to 'true' to enable login (Note: enableLogin must also be 'true' for this to work) - client: - keycloak: - issuer: '' # URL of the Keycloak realm's OpenID Connect Discovery endpoint - clientId: '' # client ID for Keycloak OAuth2 - clientSecret: '' # client secret for Keycloak OAuth2 - scopes: openid, profile, email # scopes for Keycloak OAuth2 - useAsUsername: preferred_username # field to use as the username for Keycloak OAuth2 - google: - clientId: '' # client ID for Google OAuth2 - clientSecret: '' # client secret for Google OAuth2 - scopes: https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/userinfo.profile # scopes for Google OAuth2 - useAsUsername: email # field to use as the username for Google OAuth2 - github: - clientId: '' # client ID for GitHub OAuth2 - clientSecret: '' # client secret for GitHub OAuth2 - scopes: read:user # scope for GitHub OAuth2 - useAsUsername: login # field to use as the username for GitHub OAuth2 - issuer: '' # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) endpoint - clientId: '' # client ID from your provider - clientSecret: '' # client secret from your provider - autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users - blockRegistration: false # set to 'true' to deny login with SSO without prior registration by an admin - useAsUsername: email # default is 'email'; custom fields can be used as the username - scopes: openid, profile, email # specify the scopes for which the application will request permissions - provider: google # set this to your OAuth provider's name, e.g., 'google' or 'keycloak' - saml2: - enabled: false # currently in alpha, not recommended for use yet, enableAlphaFunctionality must be set to true - autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users - blockRegistration: false # set to 'true' to deny login with SSO without prior registration by an admin - registrationId: stirling - idpMetadataUri: https://dev-XXXXXXXX.okta.com/app/externalKey/sso/saml/metadata - idpSingleLogoutUrl: https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/slo/saml - idpSingleLoginUrl: https://dev-XXXXXXXX.okta.com/app/dev-XXXXXXXX_stirlingpdf_1/externalKey/sso/saml - idpIssuer: http://www.okta.com/externalKey - idpCert: classpath:okta.crt - privateKey: classpath:saml-private-key.key - spCert: classpath:saml-public-cert.crt - -enterpriseEdition: - enabled: false # set to 'true' to enable enterprise edition - key: 00000000-0000-0000-0000-000000000000 - CustomMetadata: - autoUpdateMetadata: false # set to 'true' to automatically update metadata with below values - author: username # supports text such as 'John Doe' or types such as username to autopopulate with user's username - creator: Stirling-PDF # supports text such as 'Company-PDF' - producer: Stirling-PDF # supports text such as 'Company-PDF' - -legal: - termsAndConditions: https://www.stirlingpdf.com/terms-and-conditions # URL to the terms and conditions of your application (e.g. https://example.com/terms). Empty string to disable or filename to load from local file in static folder - privacyPolicy: https://www.stirlingpdf.com/privacy-policy # URL to the privacy policy of your application (e.g. https://example.com/privacy). Empty string to disable or filename to load from local file in static folder - accessibilityStatement: '' # URL to the accessibility statement of your application (e.g. https://example.com/accessibility). Empty string to disable or filename to load from local file in static folder - cookiePolicy: '' # URL to the cookie policy of your application (e.g. https://example.com/cookie). Empty string to disable or filename to load from local file in static folder - impressum: '' # URL to the impressum of your application (e.g. https://example.com/impressum). Empty string to disable or filename to load from local file in static folder - -system: - defaultLocale: en-US # set the default language (e.g. 'de-DE', 'fr-FR', etc) - googlevisibility: false # 'true' to allow Google visibility (via robots.txt), 'false' to disallow - enableAlphaFunctionality: false # set to enable functionality which might need more testing before it fully goes live (this feature might make no changes) - showUpdate: false # see when a new update is available - showUpdateOnlyAdmin: false # only admins can see when a new update is available, depending on showUpdate it must be set to 'true' - customHTMLFiles: false # enable to have files placed in /customFiles/templates override the existing template HTML files - tessdataDir: /usr/share/tessdata # path to the directory containing the Tessdata files. This setting is relevant for Windows systems. For Windows users, this path should be adjusted to point to the appropriate directory where the Tessdata files are stored. - enableAnalytics: undefined # set to 'true' to enable analytics, set to 'false' to disable analytics; for enterprise users, this is set to true - -ui: - appName: '' # application's visible name - homeDescription: '' # short description or tagline shown on the homepage - appNameNavbar: '' # name displayed on the navigation bar - -endpoints: - toRemove: [] # list endpoints to disable (e.g. ['img-to-pdf', 'remove-pages']) - groupsToRemove: [] # list groups to disable (e.g. ['LibreOffice']) - -metrics: - enabled: true # 'true' to enable Info APIs (`/api/*`) endpoints, 'false' to disable - -# Automatically Generated Settings (Do Not Edit Directly) -AutomaticallyGenerated: - key: example - UUID: example -``` - -There is an additional config file `/configs/custom_settings.yml` where users familiar with Java and Spring `application.properties` can input their own settings on top of Stirling-PDF's existing ones. - - - -### Extra Notes - -- **Endpoints**: Currently, the `ENDPOINTS_TO_REMOVE` and `GROUPS_TO_REMOVE` endpoints can include comma-separated lists of endpoints and groups to disable. For example, `ENDPOINTS_TO_REMOVE=img-to-pdf,remove-pages` would disable both image-to-pdf and remove pages, while `GROUPS_TO_REMOVE=LibreOffice` would disable all things that use LibreOffice. You can see a list of all endpoints and groups [here](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/Endpoint-groups.md). -- **customStaticFilePath**: Customize static files such as the app logo by placing files in the `/customFiles/static/` directory. An example of customizing the app logo is placing `/customFiles/static/favicon.svg` to override the current SVG. This can be used to change any `images/icons/css/fonts/js`, etc. in Stirling-PDF. - -### Environment-Only Parameters - -- `SYSTEM_ROOTURIPATH` - Set the application's root URI (e.g. `/pdf-app` to set the root URI to `localhost:8080/pdf-app`) -- `SYSTEM_CONNECTIONTIMEOUTMINUTES` - Set custom connection timeout values -- `DOCKER_ENABLE_SECURITY` - Set to `true` to download security jar (required for authentication login) -- `INSTALL_BOOK_AND_ADVANCED_HTML_OPS` - Download Calibre onto Stirling-PDF to enable PDF to/from book and advanced HTML conversion -- `LANGS` - Define custom font libraries to install for document conversions - -## API - -For those wanting to use Stirling-PDF's backend API to link with their own custom scripting to edit PDFs, you can view all existing API documentation [here](https://app.swaggerhub.com/apis-docs/Stirling-Tools/Stirling-PDF/), or navigate to `/swagger-ui/index.html` of your Stirling-PDF instance for your version's documentation (or by following the API button in the settings of Stirling-PDF). - -## Login Authentication - -![stirling-login](images/login-light.png) - -### Prerequisites - -- User must have the folder `./configs` volumed within Docker so that it is retained during updates. -- Docker users must download the security jar version by setting `DOCKER_ENABLE_SECURITY` to `true` in environment variables. -- Then either enable login via the `settings.yml` file or set `SECURITY_ENABLE_LOGIN` to `true`. -- Now the initial user will be generated with username `admin` and password `stirling`. On login, you will be forced to change the password to a new one. You can also use the environment variables `SECURITY_INITIALLOGIN_USERNAME` and `SECURITY_INITIALLOGIN_PASSWORD` to set your own credentials straight away (recommended to remove them after user creation). -Once the above has been done, on restart, a new `stirling-pdf-DB.mv.db` will show if everything worked. - -When you log in to Stirling-PDF, you will be redirected to the `/login` page to log in with those default credentials. After login, everything should function as normal. - -To access your account settings, go to Account Settings in the settings cog menu (top right in the navbar). This Account Settings menu is also where you find your API key. - -To add new users, go to the bottom of Account Settings and hit 'Admin Settings'. Here you can add new users. The different roles mentioned within this are for rate limiting. This is a work in progress and will be expanded on more in the future. - -For API usage, you must provide a header with `X-API-Key` and the associated API key for that user. - -## FAQ - -### Q1: What are your planned features? - -- Progress bar/tracking -- Full custom logic pipelines to combine multiple operations together -- Folder support with auto-scanning to perform operations on -- Redact text (via UI, not just automated) -- Add forms -- Multi-page layout (stitch PDF pages together) support x rows y columns and custom page sizing -- Fill forms manually or automatically +## Stirling PDF Enterprise -### Q2: Why is my application downloading .htm files? Why am i getting HTTP error 413? +Stirling PDF offers an Enterprise edition of its software. This is the same great software but with added features, support and comforts. +Check out our [Enterprise docs](https://docs.stirlingpdf.com/Enterprise%20Edition) -This is an issue commonly caused by your NGINX configuration. The default file upload size for NGINX is 1MB. You need to add the following in your Nginx sites-available file: `client_max_body_size SIZE;` (where "SIZE" is 50M for example for 50MB files). -### Q3: Why is my download timing out? +## 🤝 Looking to contribute? -NGINX has timeout values by default, so if you are running Stirling-PDF behind NGINX, you may need to set a timeout value, such as adding the config `proxy_read_timeout 3600;`. +Join our community: +- [Contribution Guidelines](CONTRIBUTING.md) +- [Translation Guide (How to add custom languages)](HowToAddNewLanguage.md) +- [Issue Tracker](https://github.com/Stirling-Tools/Stirling-PDF/issues) +- [Discord Community](https://discord.gg/HYmhKj45pU) +- [Developer Guide](DeveloperGuide.md) diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..5f532aa7d9 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,63 @@ +# Security Policy + +## Reporting a Vulnerability + +The Stirling-PDF team takes security vulnerabilities seriously. We appreciate your efforts to responsibly disclose your findings. + +### How to Report + +You can report security vulnerabilities through two channels: + +1. **GitHub Security Advisory**: + - Navigate to the [Security tab](https://github.com/Stirling-Tools/Stirling-PDF/security) in our repository + - Click on "Report a vulnerability" + - Provide a detailed description of the vulnerability + +2. **Direct Email**: + - Send your report to security@stirlingpdf.com + - Please include as much information as possible about the vulnerability + +### What to Include + +When reporting a vulnerability, please provide: + +- A clear description of the vulnerability +- Steps to reproduce the issue +- Any potential impact +- If possible, suggestions for addressing the vulnerability +- Your contact information for follow-up questions + +### Response Time + +We aim to acknowledge receipt of your vulnerability report within 48 hours + +### Process + +1. Submit your report through one of the channels above +2. Receive an acknowledgment from our team +3. Our team will investigate and validate the issue +4. We will work on a fix and keep you updated on our progress +5. Once resolved, we will publish the fix and acknowledge your contribution (if desired) + +### Bug Bounty + +At this time, we do not offer a bug bounty program. However, we greatly appreciate your efforts in making Stirling-PDF more secure and will acknowledge your contribution in our release notes (unless you prefer to remain anonymous). + +## Supported Versions + +Only the latest version of Stirling-PDF is supported for security updates. We do not backport security fixes to older versions. + +| Version | Supported | +| ------- | ------------------ | +| Latest | :white_check_mark: | +| Older | :x: | + +**Please note:** Before reporting a security issue, ensure you are using the latest version of Stirling-PDF. Security reports for older versions will not be accepted. + +## Security Best Practices + +When deploying Stirling-PDF: + +1. Always use the latest version +2. Follow our deployment guidelines +3. Regularly check for and apply updates diff --git a/Version-groups.md b/Version-groups.md deleted file mode 100644 index 93c5b4b0e2..0000000000 --- a/Version-groups.md +++ /dev/null @@ -1,68 +0,0 @@ -|All versions in a Docker environment can download Calibre as a optional extra at runtime to support `book-to-pdf` and `pdf-to-book` using parameter ``INSTALL_BOOK_AND_ADVANCED_HTML_OPS``. -The 'Fat' container contains all those found in 'Full' with security jar along with this Calibre install. - -| Technology | Ultra-Lite | Full | -| ---------- | :--------: | :---: | -| Java | âœ”ī¸ | âœ”ī¸ | -| JavaScript | âœ”ī¸ | âœ”ī¸ | -| Libre | | âœ”ī¸ | -| Python | | âœ”ī¸ | -| OpenCV | | âœ”ī¸ | -| OCRmyPDF | | âœ”ī¸ | - -| Operation | Ultra-Lite | Full | -| ---------------------- | ---------- | ---- | -| add-page-numbers | âœ”ī¸ | âœ”ī¸ | -| add-password | âœ”ī¸ | âœ”ī¸ | -| add-image | âœ”ī¸ | âœ”ī¸ | -| add-watermark | âœ”ī¸ | âœ”ī¸ | -| adjust-contrast | âœ”ī¸ | âœ”ī¸ | -| auto-split-pdf | âœ”ī¸ | âœ”ī¸ | -| auto-redact | âœ”ī¸ | âœ”ī¸ | -| auto-rename | âœ”ī¸ | âœ”ī¸ | -| cert-sign | âœ”ī¸ | âœ”ī¸ | -| remove-cert-sign | âœ”ī¸ | âœ”ī¸ | -| crop | âœ”ī¸ | âœ”ī¸ | -| change-metadata | âœ”ī¸ | âœ”ī¸ | -| change-permissions | âœ”ī¸ | âœ”ī¸ | -| compare | âœ”ī¸ | âœ”ī¸ | -| extract-page | âœ”ī¸ | âœ”ī¸ | -| extract-images | âœ”ī¸ | âœ”ī¸ | -| flatten | âœ”ī¸ | âœ”ī¸ | -| get-info-on-pdf | âœ”ī¸ | âœ”ī¸ | -| img-to-pdf | âœ”ī¸ | âœ”ī¸ | -| markdown-to-pdf | âœ”ī¸ | âœ”ī¸ | -| merge-pdfs | âœ”ī¸ | âœ”ī¸ | -| multi-page-layout | âœ”ī¸ | âœ”ī¸ | -| overlay-pdf | âœ”ī¸ | âœ”ī¸ | -| pdf-organizer | âœ”ī¸ | âœ”ī¸ | -| pdf-to-csv | âœ”ī¸ | âœ”ī¸ | -| pdf-to-img | âœ”ī¸ | âœ”ī¸ | -| pdf-to-single-page | âœ”ī¸ | âœ”ī¸ | -| remove-pages | âœ”ī¸ | âœ”ī¸ | -| remove-password | âœ”ī¸ | âœ”ī¸ | -| rotate-pdf | âœ”ī¸ | âœ”ī¸ | -| sanitize-pdf | âœ”ī¸ | âœ”ī¸ | -| scale-pages | âœ”ī¸ | âœ”ī¸ | -| sign | âœ”ī¸ | âœ”ī¸ | -| show-javascript | âœ”ī¸ | âœ”ī¸ | -| split-by-size-or-count | âœ”ī¸ | âœ”ī¸ | -| split-pdf-by-sections | âœ”ī¸ | âœ”ī¸ | -| split-pdfs | âœ”ī¸ | âœ”ī¸ | -| compress-pdf | | âœ”ī¸ | -| extract-image-scans | | âœ”ī¸ | -| ocr-pdf | | âœ”ī¸ | -| pdf-to-pdfa | | âœ”ī¸ | -| remove-blanks | | âœ”ī¸ | -pdf-to-text | âœ”ī¸ | âœ”ī¸ -pdf-to-html | | âœ”ī¸ -pdf-to-word | | âœ”ī¸ -pdf-to-presentation | | âœ”ī¸ -pdf-to-xml | | âœ”ī¸ -remove-annotations | âœ”ī¸ | âœ”ī¸ -remove-cert-sign | âœ”ī¸ | âœ”ī¸ -remove-image-pdf | âœ”ī¸ | âœ”ī¸ -file-to-pdf | | âœ”ī¸ -html-to-pdf | | âœ”ī¸ -url-to-pdf | | âœ”ī¸ -repair | | âœ”ī¸ diff --git a/build.gradle b/build.gradle index 8478e42660..a2b09d4b56 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,14 @@ plugins { id "java" - id "org.springframework.boot" version "3.3.5" - id "io.spring.dependency-management" version "1.1.6" + id "org.springframework.boot" version "3.4.1" + id "io.spring.dependency-management" version "1.1.7" id "org.springdoc.openapi-gradle-plugin" version "1.8.0" id "io.swagger.swaggerhub" version "1.3.2" id "edu.sc.seis.launch4j" version "3.0.6" id "com.diffplug.spotless" version "6.25.0" id "com.github.jk1.dependency-license-report" version "2.9" //id "nebula.lint" version "19.0.3" + id("org.panteleyev.jpackageplugin") version "1.6.0" } @@ -15,16 +16,19 @@ plugins { import com.github.jk1.license.render.* ext { - springBootVersion = "3.3.5" + springBootVersion = "3.4.1" pdfboxVersion = "3.0.3" logbackVersion = "1.5.7" imageioVersion = "3.12.0" lombokVersion = "1.18.36" - bouncycastleVersion = "1.78.1" + bouncycastleVersion = "1.79" + springSecuritySamlVersion = "6.4.2" + openSamlVersion = "4.3.2" } group = "stirling.software" -version = "0.33.1" +version = "0.36.6" + java { // 17 is lowest but we support and recommend 21 @@ -34,10 +38,9 @@ java { repositories { mavenCentral() maven { url "https://jitpack.io" } - maven { url "https://build.shibboleth.net/nexus/content/repositories/releases/" } - maven { - url 'https://build.shibboleth.net/maven/releases' - } + maven { url "https://build.shibboleth.net/maven/releases" } + maven { url "https://maven.pkg.github.com/jcefmaven/jcefmaven" } + } licenseReport { @@ -61,6 +64,12 @@ sourceSets { exclude "stirling/software/SPDF/model/User.java" exclude "stirling/software/SPDF/repository/**" } + + if (System.getenv("STIRLING_PDF_DESKTOP_UI") == "false") { + exclude "stirling/software/SPDF/UI/impl/**" + } + + } } } @@ -71,16 +80,153 @@ openApi { outputFileName = "SwaggerDoc.json" } +//0.11.5 to 2024.11.5 +def getMacVersion(String version) { + def currentYear = java.time.Year.now().getValue() + def versionParts = version.split("\\.", 2) + return "${currentYear}.${versionParts.length > 1 ? versionParts[1] : versionParts[0]}" +} + +jpackage { + input = "build/libs" + + appName = "Stirling-PDF" + appVersion = project.version + vendor = "Stirling-Software" + appDescription = "Stirling PDF - Your Local PDF Editor" + + mainJar = "Stirling-PDF-${project.version}.jar" + mainClass = "org.springframework.boot.loader.launch.JarLauncher" + + icon = "src/main/resources/static/favicon.ico" + + + + // JVM Options + javaOptions = [ + "-DBROWSER_OPEN=true", + "-DSTIRLING_PDF_DESKTOP_UI=true", + "-Djava.awt.headless=false", + "-Dapple.awt.UIElement=true", + "--add-opens", "java.base/java.lang=ALL-UNNAMED", + "--add-opens", "java.desktop/java.awt.event=ALL-UNNAMED", + "--add-opens", "java.desktop/sun.awt=ALL-UNNAMED" + + ] + + + verbose = true + + destination = "${projectDir}/build/jpackage" + + // Windows-specific configuration + windows { + launcherAsService = false + appVersion = project.version + winConsole = false + winDirChooser = true + winMenu = true + winShortcut = true + winPerUserInstall = true + winMenuGroup = "Stirling Software" + winUpgradeUuid = "2a43ed0c-b8c2-40cf-89e1-751129b87641" // Unique identifier for updates + winHelpUrl = "https://github.com/Stirling-Tools/Stirling-PDF" + winUpdateUrl = "https://github.com/Stirling-Tools/Stirling-PDF/releases" + type = "exe" + installDir = "C:/Program Files/Stirling-PDF" + } + + // macOS-specific configuration + mac { + appVersion = getMacVersion(project.version.toString()) + icon = "src/main/resources/static/favicon.icns" + type = "dmg" + macPackageIdentifier = "com.stirling.software.pdf" + macPackageName = "Stirling-PDF" + macAppCategory = "public.app-category.productivity" + macSign = false // Enable signing + macAppStore = false // Not targeting App Store initially + + //installDir = "Applications" + + // Add license and other documentation to DMG + /*macDmgContent = [ + "README.md", + "LICENSE", + "CHANGELOG.md" + ]*/ + + // Enable Mac-specific entitlements + //macEntitlements = "entitlements.plist" // You'll need to create this file + } + + // Linux-specific configuration + linux { + appVersion = project.version + icon = "src/main/resources/static/favicon.png" + type = "deb" // Can also use "rpm" for Red Hat-based systems + + // Debian package configuration + //linuxPackageName = "stirlingpdf" + linuxDebMaintainer = "support@stirlingpdf.com" + linuxMenuGroup = "Office;PDF;Productivity" + linuxAppCategory = "Office" + linuxAppRelease = "1" + linuxPackageDeps = true + + installDir = "/opt/Stirling-PDF" + + // RPM-specific settings + //linuxRpmLicenseType = "MIT" + } + + // Common additional options + //jLinkOptions = [ + // "--strip-debug", + // "--compress=2", + // "--no-header-files", + // "--no-man-pages" + //] + + // Add any additional modules required + /*addModules = [ + "java.base", + "java.desktop", + "java.logging", + "java.sql", + "java.xml", + "jdk.crypto.ec" + ]*/ + + // Add copyright and license information + copyright = "Copyright Š 2024 Stirling Software" + licenseFile = "LICENSE" +} + + launch4j { icon = "${projectDir}/src/main/resources/static/favicon.ico" outfile="Stirling-PDF.exe" - headerType="console" + + if(System.getenv("STIRLING_PDF_DESKTOP_UI") == 'true') { + headerType = "gui" + } else { + headerType = "console" + } jarTask = tasks.bootJar errTitle="Encountered error, Do you have Java 21?" downloadUrl="https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe" - variables=["BROWSER_OPEN=true"] + + if(System.getenv("STIRLING_PDF_DESKTOP_UI") == 'true') { + variables=["BROWSER_OPEN=true", "STIRLING_PDF_DESKTOP_UI=true"] + } else { + variables=["BROWSER_OPEN=true"] + } + + + jreMinVersion="17" mutexName="Stirling-PDF" @@ -97,7 +243,7 @@ spotless { java { target project.fileTree('src/main/java') - googleJavaFormat("1.22.0").aosp().reorderImports(false) + googleJavaFormat("1.25.2").aosp().reorderImports(false) importOrder("java", "javax", "org", "com", "net", "io") toggleOffOn() @@ -111,7 +257,7 @@ spotless { // rules=['unused-dependency'] // } tasks.wrapper { - gradleVersion = "8.7" + gradleVersion = "8.12" } //tasks.withType(JavaCompile) { // options.compilerArgs << "-Xlint:deprecation" @@ -120,10 +266,17 @@ configurations.all { exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat" } dependencies { + + if (System.getenv("STIRLING_PDF_DESKTOP_UI") != "false") { + implementation "me.friwi:jcefmaven:127.3.1" + implementation "org.openjfx:javafx-controls:21" + implementation "org.openjfx:javafx-swing:21" + } + //security updates - implementation "org.springframework:spring-webmvc:6.1.14" + implementation "org.springframework:spring-webmvc:6.2.1" - implementation("io.github.pixee:java-security-toolkit:1.2.0") + implementation("io.github.pixee:java-security-toolkit:1.2.1") // implementation "org.yaml:snakeyaml:2.2" implementation 'com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4' @@ -139,22 +292,22 @@ dependencies { if (System.getenv("DOCKER_ENABLE_SECURITY") != "false") { implementation "org.springframework.boot:spring-boot-starter-security:$springBootVersion" - implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.2.RELEASE" + implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE" implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion" implementation "org.springframework.boot:spring-boot-starter-oauth2-client:$springBootVersion" - implementation 'org.springframework.security:spring-security-saml2-service-provider:6.3.4' + implementation "org.springframework.session:spring-session-core:$springBootVersion" + implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5' - //2.2.x requires rebuild of DB file.. need migration path - runtimeOnly "com.h2database:h2:2.1.214" - // implementation "com.h2database:h2:2.2.224" + // Don't upgrade h2database + runtimeOnly "com.h2database:h2:2.3.232" constraints { - implementation "org.opensaml:opensaml-core" - implementation "org.opensaml:opensaml-saml-api" - implementation "org.opensaml:opensaml-saml-impl" + implementation "org.opensaml:opensaml-core:$openSamlVersion" + implementation "org.opensaml:opensaml-saml-api:$openSamlVersion" + implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion" } - implementation "org.springframework.security:spring-security-saml2-service-provider" - + implementation "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion" +// implementation 'org.springframework.security:spring-security-core:$springSecuritySamlVersion' implementation 'com.coveo:saml-client:5.0.0' @@ -186,7 +339,7 @@ dependencies { // Image metadata extractor implementation "com.drewnoakes:metadata-extractor:2.19.0" - implementation "commons-io:commons-io:2.17.0" + implementation "commons-io:commons-io:2.18.0" implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0" //general PDF @@ -203,12 +356,19 @@ dependencies { exclude group: "commons-logging", module: "commons-logging" } + // https://mvnrepository.com/artifact/technology.tabula/tabula + implementation ('technology.tabula:tabula:1.0.5') { + exclude group: "org.slf4j", module: "slf4j-simple" + exclude group: "org.bouncycastle", module: "bcprov-jdk15on" + exclude group: "com.google.code.gson", module: "gson" + } + implementation 'org.apache.pdfbox:jbig2-imageio:3.0.4' implementation "org.bouncycastle:bcprov-jdk18on:$bouncycastleVersion" implementation "org.bouncycastle:bcpkix-jdk18on:$bouncycastleVersion" implementation "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" - implementation "io.micrometer:micrometer-core:1.13.6" + implementation "io.micrometer:micrometer-core:1.14.2" implementation group: "com.google.zxing", name: "core", version: "3.5.3" // https://mvnrepository.com/artifact/org.commonmark/commonmark implementation "org.commonmark:commonmark:0.24.0" @@ -261,7 +421,14 @@ jar { tasks.named("test") { useJUnitPlatform() } - task printVersion { - println project.version + doLast { + println project.version + } +} + +task printMacVersion { + doLast { + println getMacVersion(project.version.toString()) + } } diff --git a/cucumber/features/external.feature b/cucumber/features/external.feature index 58c0a859c4..d06f3f40a6 100644 --- a/cucumber/features/external.feature +++ b/cucumber/features/external.feature @@ -48,24 +48,6 @@ Feature: API Validation And the response status code should be 200 - - @ocr @negative - Scenario: Process PDF with text and OCR with type normal - Given I generate a PDF file as "fileInput" - And the pdf contains 3 pages with random text - And the request data includes - | parameter | value | - | languages | eng | - | sidecar | false | - | deskew | true | - | clean | true | - | cleanFinal | true | - | ocrType | Normal | - | ocrRenderType | hocr | - | removeImagesAfter| false | - When I send the API request to the endpoint "/api/v1/misc/ocr-pdf" - Then the response status code should be 500 - @ocr @positive Scenario: Process PDF with OCR Given I generate a PDF file as "fileInput" @@ -83,26 +65,6 @@ Feature: API Validation Then the response content type should be "application/pdf" And the response file should have size greater than 0 And the response status code should be 200 - - @ocr @positive - Scenario: Process PDF with OCR with sidecar - Given I generate a PDF file as "fileInput" - And the request data includes - | parameter | value | - | languages | eng | - | sidecar | true | - | deskew | true | - | clean | true | - | cleanFinal | true | - | ocrType | Force | - | ocrRenderType | hocr | - | removeImagesAfter| false | - When I send the API request to the endpoint "/api/v1/misc/ocr-pdf" - Then the response content type should be "application/octet-stream" - And the response file should have extension ".zip" - And the response ZIP should contain 2 files - And the response file should have size greater than 0 - And the response status code should be 200 @libre @positive @@ -145,7 +107,7 @@ Feature: API Validation And the response file should have extension ".pdf" And the response file should have size greater than 100 - @compress @ghostscript @positive + @compress @qpdf @positive Scenario: Compress Given I use an example file at "exampleFiles/ghost3.pdf" as parameter "fileInput" And the request data includes @@ -156,7 +118,7 @@ Feature: API Validation And the response file should have extension ".pdf" And the response file should have size greater than 100 - @compress @ghostscript @positive + @compress @qpdf @positive Scenario: Compress Given I use an example file at "exampleFiles/ghost2.pdf" as parameter "fileInput" And the request data includes @@ -169,7 +131,7 @@ Feature: API Validation And the response file should have size greater than 100 - @compress @ghostscript @positive + @compress @qpdf @positive Scenario: Compress Given I use an example file at "exampleFiles/ghost1.pdf" as parameter "fileInput" And the request data includes diff --git a/cucumber/features/general.feature b/cucumber/features/general.feature index 4255c89e7e..3ac610669a 100644 --- a/cucumber/features/general.feature +++ b/cucumber/features/general.feature @@ -1,7 +1,7 @@ @general Feature: API Validation - + @split-pdf-by-sections @positive Scenario Outline: split-pdf-by-sections with different parameters Given I generate a PDF file as "fileInput" @@ -66,7 +66,7 @@ Feature: API Validation | pageNumbers | file_count | | 1,3,5-9 | 8 | | all | 20 | - | 2n+1 | 11 | + | 2n+1 | 10 | | 3n | 7 | @@ -106,9 +106,9 @@ Feature: API Validation And the response ZIP should contain 2 files And the response file should have size greater than 0 And the response status code should be 200 - + Examples: - | format | - | png | + | format | + | png | | gif | - | jpeg | + | jpeg | diff --git a/cucumber/features/steps/step_definitions.py b/cucumber/features/steps/step_definitions.py index 65a49fda0a..ae8acd2adb 100644 --- a/cucumber/features/steps/step_definitions.py +++ b/cucumber/features/steps/step_definitions.py @@ -15,6 +15,10 @@ import re from PIL import Image, ImageDraw +API_HEADERS = { + 'X-API-KEY': '123456789' +} + ######### # GIVEN # ######### @@ -227,7 +231,7 @@ def save_generated_pdf(context, filename): def step_send_get_request(context, endpoint): base_url = "http://localhost:8080" full_url = f"{base_url}{endpoint}" - response = requests.get(full_url) + response = requests.get(full_url, headers=API_HEADERS) context.response = response @when('I send a GET request to "{endpoint}" with parameters') @@ -235,7 +239,7 @@ def step_send_get_request_with_params(context, endpoint): base_url = "http://localhost:8080" params = {row['parameter']: row['value'] for row in context.table} full_url = f"{base_url}{endpoint}" - response = requests.get(full_url, params=params) + response = requests.get(full_url, params=params, headers=API_HEADERS) context.response = response @when('I send the API request to the endpoint "{endpoint}"') @@ -256,7 +260,7 @@ def step_send_api_request(context, endpoint): print(f"form_data {file.name} with {mime_type}") form_data.append((key, (file.name, file, mime_type))) - response = requests.post(url, files=form_data) + response = requests.post(url, files=form_data, headers=API_HEADERS) context.response = response ######## diff --git a/exampleYmlFiles/test_cicd.yml b/exampleYmlFiles/test_cicd.yml new file mode 100644 index 0000000000..144348a79f --- /dev/null +++ b/exampleYmlFiles/test_cicd.yml @@ -0,0 +1,34 @@ +services: + stirling-pdf: + container_name: Stirling-PDF-Security-Fat + image: stirlingtools/stirling-pdf:latest-fat + deploy: + resources: + limits: + memory: 4G + healthcheck: + test: ["CMD-SHELL", "curl -f -H 'X-API-KEY: 123456789' http://localhost:8080/api/v1/info/status | grep -q 'UP'"] + interval: 5s + timeout: 10s + retries: 16 + ports: + - 8080:8080 + volumes: + - /stirling/latest/data:/usr/share/tessdata:rw + - /stirling/latest/config:/configs:rw + - /stirling/latest/logs:/logs:rw + environment: + DOCKER_ENABLE_SECURITY: "true" + SECURITY_ENABLELOGIN: "true" + PUID: 1002 + PGID: 1002 + UMASK: "022" + SYSTEM_DEFAULTLOCALE: en-US + UI_APPNAME: Stirling-PDF + UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest-fat with Security + UI_APPNAMENAVBAR: Stirling-PDF Latest-fat + SYSTEM_MAXFILESIZE: "100" + METRICS_ENABLED: "true" + SYSTEM_GOOGLEVISIBILITY: "true" + SECURITY_CUSTOMGLOBALAPIKEY: "123456789" + restart: on-failure:5 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 48c0a02ca4..d6e308a637 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/scripts/ignore_translation.toml b/scripts/ignore_translation.toml index 410a84b4f6..281cf8638a 100644 --- a/scripts/ignore_translation.toml +++ b/scripts/ignore_translation.toml @@ -3,6 +3,11 @@ ignore = [ 'language.direction', ] +[az_AZ] +ignore = [ + 'language.direction', +] + [bg_BG] ignore = [ 'language.direction', @@ -37,14 +42,19 @@ ignore = [ 'addPageNumbers.selectText.3', 'alphabet', 'certSign.name', + 'fileChooser.dragAndDrop', 'home.pipeline.title', 'language.direction', + 'legal.impressum', 'licenses.version', 'pipeline.title', 'pipelineOptions.pipelineHeader', 'pro', 'sponsor', 'text', + 'validateSignature.cert.bits', + 'validateSignature.cert.version', + 'validateSignature.status', 'watermark.type.1', ] @@ -56,7 +66,6 @@ ignore = [ [es_ES] ignore = [ 'adminUserSettings.roles', - 'color', 'error', 'language.direction', 'no', @@ -68,6 +77,11 @@ ignore = [ 'language.direction', ] +[fa_IR] +ignore = [ + 'language.direction', +] + [fr_FR] ignore = [ 'AddStampRequest.alphabet', diff --git a/scripts/init.sh b/scripts/init.sh index b0e2a095dc..f839da2bdd 100644 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -16,10 +16,10 @@ fi # Check if TESSERACT_LANGS environment variable is set and is not empty if [[ -n "$TESSERACT_LANGS" ]]; then # Convert comma-separated values to a space-separated list - LANGS=$(echo $TESSERACT_LANGS | tr ',' ' ') + SPACE_SEPARATED_LANGS=$(echo $TESSERACT_LANGS | tr ',' ' ') pattern='^[a-zA-Z]{2,4}(_[a-zA-Z]{2,4})?$' # Install each language pack - for LANG in $LANGS; do + for LANG in $SPACE_SEPARATED_LANGS; do if [[ $LANG =~ $pattern ]]; then apk add --no-cache "tesseract-ocr-data-$LANG" else diff --git a/scripts/replace_translation_line.sh b/scripts/replace_translation_line.sh index d5161d36ae..75f217a875 100644 --- a/scripts/replace_translation_line.sh +++ b/scripts/replace_translation_line.sh @@ -1,8 +1,8 @@ #!/bin/bash translation_key="pdfToPDFA.credit" -old_value="OCRmyPDF" -new_value="ghostscript" +old_value="qpdf" +new_value="liibreoffice" for file in ../src/main/resources/messages_*.properties; do sed -i "/^$translation_key=/s/$old_value/$new_value/" "$file" diff --git a/src/main/java/org/apache/pdfbox/examples/signature/CreateSignatureBase.java b/src/main/java/org/apache/pdfbox/examples/signature/CreateSignatureBase.java index 646561f0dc..aba11d9b06 100644 --- a/src/main/java/org/apache/pdfbox/examples/signature/CreateSignatureBase.java +++ b/src/main/java/org/apache/pdfbox/examples/signature/CreateSignatureBase.java @@ -97,14 +97,14 @@ public final void setPrivateKey(PrivateKey privateKey) { this.privateKey = privateKey; } - public final void setCertificateChain(final Certificate[] certificateChain) { - this.certificateChain = certificateChain; - } - public Certificate[] getCertificateChain() { return certificateChain; } + public final void setCertificateChain(final Certificate[] certificateChain) { + this.certificateChain = certificateChain; + } + public void setTsaUrl(String tsaUrl) { this.tsaUrl = tsaUrl; } @@ -152,6 +152,10 @@ public byte[] sign(InputStream content) throws IOException { } } + public boolean isExternalSigning() { + return externalSigning; + } + /** * Set if external signing scenario should be used. If {@code false}, SignatureInterface would * be used for signing. @@ -163,8 +167,4 @@ public byte[] sign(InputStream content) throws IOException { public void setExternalSigning(boolean externalSigning) { this.externalSigning = externalSigning; } - - public boolean isExternalSigning() { - return externalSigning; - } } diff --git a/src/main/java/org/apache/pdfbox/examples/signature/TSAClient.java b/src/main/java/org/apache/pdfbox/examples/signature/TSAClient.java index a215fe5259..6f57e205a2 100644 --- a/src/main/java/org/apache/pdfbox/examples/signature/TSAClient.java +++ b/src/main/java/org/apache/pdfbox/examples/signature/TSAClient.java @@ -51,15 +51,13 @@ public class TSAClient { private static final DigestAlgorithmIdentifierFinder ALGORITHM_OID_FINDER = new DefaultDigestAlgorithmIdentifierFinder(); - + // SecureRandom.getInstanceStrong() would be better, but sometimes blocks on Linux + private static final Random RANDOM = new SecureRandom(); private final URL url; private final String username; private final String password; private final MessageDigest digest; - // SecureRandom.getInstanceStrong() would be better, but sometimes blocks on Linux - private static final Random RANDOM = new SecureRandom(); - /** * @param url the URL of the TSA service * @param username user name of TSA diff --git a/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java b/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java index 8c3c4fd0ef..1d73cd93e5 100644 --- a/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java +++ b/src/main/java/stirling/software/SPDF/EE/EEAppConfig.java @@ -1,20 +1,27 @@ package stirling.software.SPDF.EE; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Lazy; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.ApplicationProperties; @Configuration -@Lazy +@Order(Ordered.HIGHEST_PRECEDENCE) @Slf4j public class EEAppConfig { - @Autowired ApplicationProperties applicationProperties; - @Autowired private LicenseKeyChecker licenseKeyChecker; + private final ApplicationProperties applicationProperties; + + private final LicenseKeyChecker licenseKeyChecker; + + public EEAppConfig( + ApplicationProperties applicationProperties, LicenseKeyChecker licenseKeyChecker) { + this.applicationProperties = applicationProperties; + this.licenseKeyChecker = licenseKeyChecker; + } @Bean(name = "runningEE") public boolean runningEnterpriseEdition() { diff --git a/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java b/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java index 3da7da05d9..108ee30204 100644 --- a/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java +++ b/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java @@ -25,9 +25,10 @@ public LicenseKeyChecker( KeygenLicenseVerifier licenseService, ApplicationProperties applicationProperties) { this.licenseService = licenseService; this.applicationProperties = applicationProperties; + this.checkLicense(); } - @Scheduled(fixedRate = 604800000, initialDelay = 1000) // 7 days in milliseconds + @Scheduled(initialDelay = 604800000, fixedRate = 604800000) // 7 days in milliseconds public void checkLicensePeriodically() { checkLicense(); } diff --git a/src/main/java/stirling/software/SPDF/LibreOfficeListener.java b/src/main/java/stirling/software/SPDF/LibreOfficeListener.java index 549a009268..5b00700e80 100644 --- a/src/main/java/stirling/software/SPDF/LibreOfficeListener.java +++ b/src/main/java/stirling/software/SPDF/LibreOfficeListener.java @@ -6,9 +6,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import io.github.pixee.security.SystemCommand; import lombok.extern.slf4j.Slf4j; @@ -16,23 +13,20 @@ @Slf4j public class LibreOfficeListener { - private static final Logger logger = LoggerFactory.getLogger(LibreOfficeListener.class); private static final long ACTIVITY_TIMEOUT = 20L * 60 * 1000; // 20 minutes private static final LibreOfficeListener INSTANCE = new LibreOfficeListener(); private static final int LISTENER_PORT = 2002; - - public static LibreOfficeListener getInstance() { - return INSTANCE; - } - private ExecutorService executorService; private long lastActivityTime; - private Process process; private LibreOfficeListener() {} + public static LibreOfficeListener getInstance() { + return INSTANCE; + } + private boolean isListenerRunning() { log.info("waiting for listener to start"); try (Socket socket = new Socket()) { @@ -87,7 +81,7 @@ public void start() throws IOException { Thread.sleep(1000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); - logger.error("exception", e); + log.error("exception", e); } // Check every 1 second } } diff --git a/src/main/java/stirling/software/SPDF/SPdfApplication.java b/src/main/java/stirling/software/SPDF/SPdfApplication.java index eddf7306c0..10eecaaa97 100644 --- a/src/main/java/stirling/software/SPDF/SPdfApplication.java +++ b/src/main/java/stirling/software/SPDF/SPdfApplication.java @@ -8,9 +8,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Properties; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; @@ -21,33 +20,33 @@ import io.github.pixee.security.SystemCommand; import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; +import lombok.extern.slf4j.Slf4j; +import stirling.software.SPDF.UI.WebBrowser; import stirling.software.SPDF.config.ConfigInitializer; import stirling.software.SPDF.model.ApplicationProperties; @SpringBootApplication @EnableScheduling +@Slf4j public class SPdfApplication { - private static final Logger logger = LoggerFactory.getLogger(SPdfApplication.class); - - @Autowired private Environment env; - @Autowired ApplicationProperties applicationProperties; - private static String baseUrlStatic; private static String serverPortStatic; + private final Environment env; + private final ApplicationProperties applicationProperties; + private final WebBrowser webBrowser; @Value("${baseUrl:http://localhost}") private String baseUrl; - @Value("${server.port:8080}") - public void setServerPortStatic(String port) { - if ("auto".equalsIgnoreCase(port)) { - // Use Spring Boot's automatic port assignment (server.port=0) - SPdfApplication.serverPortStatic = - "0"; // This will let Spring Boot assign an available port - } else { - SPdfApplication.serverPortStatic = port; - } + public SPdfApplication( + Environment env, + ApplicationProperties applicationProperties, + @Autowired(required = false) WebBrowser webBrowser) { + this.env = env; + this.applicationProperties = applicationProperties; + this.webBrowser = webBrowser; } // Optionally keep this method if you want to provide a manual port-incrementation fallback. @@ -67,47 +66,24 @@ private static boolean isPortAvailable(int port) { } } - @PostConstruct - public void init() { - baseUrlStatic = this.baseUrl; - // Check if the BROWSER_OPEN environment variable is set to true - String browserOpenEnv = env.getProperty("BROWSER_OPEN"); - boolean browserOpen = browserOpenEnv != null && "true".equalsIgnoreCase(browserOpenEnv); - if (browserOpen) { - try { - String url = baseUrl + ":" + getStaticPort(); - - String os = System.getProperty("os.name").toLowerCase(); - Runtime rt = Runtime.getRuntime(); - if (os.contains("win")) { - // For Windows - SystemCommand.runCommand(rt, "rundll32 url.dll,FileProtocolHandler " + url); - } else if (os.contains("mac")) { - SystemCommand.runCommand(rt, "open " + url); - } else if (os.contains("nix") || os.contains("nux")) { - SystemCommand.runCommand(rt, "xdg-open " + url); - } - } catch (Exception e) { - logger.error("Error opening browser: {}", e.getMessage()); - } - } - logger.info("Running configs {}", applicationProperties.toString()); - } - public static void main(String[] args) throws IOException, InterruptedException { - SpringApplication app = new SpringApplication(SPdfApplication.class); + Properties props = new Properties(); + if (Boolean.parseBoolean(System.getProperty("STIRLING_PDF_DESKTOP_UI", "false"))) { + System.setProperty("java.awt.headless", "false"); + app.setHeadless(false); + props.put("java.awt.headless", "false"); + props.put("spring.main.web-application-type", "servlet"); + } app.setAdditionalProfiles("default"); app.addInitializers(new ConfigInitializer()); Map propertyFiles = new HashMap<>(); - // External config files if (Files.exists(Paths.get("configs/settings.yml"))) { propertyFiles.put("spring.config.additional-location", "file:configs/settings.yml"); } else { - logger.warn("External configuration file 'configs/settings.yml' does not exist."); + log.warn("External configuration file 'configs/settings.yml' does not exist."); } - if (Files.exists(Paths.get("configs/custom_settings.yml"))) { String existingLocation = propertyFiles.getOrDefault("spring.config.additional-location", ""); @@ -118,47 +94,96 @@ public static void main(String[] args) throws IOException, InterruptedException "spring.config.additional-location", existingLocation + "file:configs/custom_settings.yml"); } else { - logger.warn("Custom configuration file 'configs/custom_settings.yml' does not exist."); + log.warn("Custom configuration file 'configs/custom_settings.yml' does not exist."); } - + Properties finalProps = new Properties(); if (!propertyFiles.isEmpty()) { - app.setDefaultProperties( + finalProps.putAll( Collections.singletonMap( "spring.config.additional-location", propertyFiles.get("spring.config.additional-location"))); } - + if (!props.isEmpty()) { + finalProps.putAll(props); + } + app.setDefaultProperties(finalProps); app.run(args); - // Ensure directories are created try { Files.createDirectories(Path.of("customFiles/static/")); Files.createDirectories(Path.of("customFiles/templates/")); } catch (Exception e) { - logger.error("Error creating directories: {}", e.getMessage()); + log.error("Error creating directories: {}", e.getMessage()); } - printStartupLogs(); } private static void printStartupLogs() { - logger.info("Stirling-PDF Started."); + log.info("Stirling-PDF Started."); String url = baseUrlStatic + ":" + getStaticPort(); - logger.info("Navigate to {}", url); + log.info("Navigate to {}", url); } public static String getStaticBaseUrl() { return baseUrlStatic; } - public String getNonStaticBaseUrl() { - return baseUrlStatic; - } - public static String getStaticPort() { return serverPortStatic; } + @Value("${server.port:8080}") + public void setServerPortStatic(String port) { + if ("auto".equalsIgnoreCase(port)) { + // Use Spring Boot's automatic port assignment (server.port=0) + SPdfApplication.serverPortStatic = // This will let Spring Boot assign an available port + "0"; + } else { + SPdfApplication.serverPortStatic = port; + } + } + + @PostConstruct + public void init() { + baseUrlStatic = this.baseUrl; + String url = baseUrl + ":" + getStaticPort(); + if (webBrowser != null + && Boolean.parseBoolean(System.getProperty("STIRLING_PDF_DESKTOP_UI", "false"))) { + webBrowser.initWebUI(url); + } else { + String browserOpenEnv = env.getProperty("BROWSER_OPEN"); + boolean browserOpen = browserOpenEnv != null && "true".equalsIgnoreCase(browserOpenEnv); + if (browserOpen) { + try { + String os = System.getProperty("os.name").toLowerCase(); + Runtime rt = Runtime.getRuntime(); + if (os.contains("win")) { + // For Windows + SystemCommand.runCommand(rt, "rundll32 url.dll,FileProtocolHandler " + url); + } else if (os.contains("mac")) { + SystemCommand.runCommand(rt, "open " + url); + } else if (os.contains("nix") || os.contains("nux")) { + SystemCommand.runCommand(rt, "xdg-open " + url); + } + } catch (Exception e) { + log.error("Error opening browser: {}", e.getMessage()); + } + } + } + log.info("Running configs {}", applicationProperties.toString()); + } + + @PreDestroy + public void cleanup() { + if (webBrowser != null) { + webBrowser.cleanup(); + } + } + + public String getNonStaticBaseUrl() { + return baseUrlStatic; + } + public String getNonStaticPort() { return serverPortStatic; } diff --git a/src/main/java/stirling/software/SPDF/UI/WebBrowser.java b/src/main/java/stirling/software/SPDF/UI/WebBrowser.java new file mode 100644 index 0000000000..b884888fe1 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/UI/WebBrowser.java @@ -0,0 +1,7 @@ +package stirling.software.SPDF.UI; + +public interface WebBrowser { + void initWebUI(String url); + + void cleanup(); +} diff --git a/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java b/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java new file mode 100644 index 0000000000..a5509e1b70 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java @@ -0,0 +1,354 @@ +package stirling.software.SPDF.UI.impl; + +import java.awt.AWTException; +import java.awt.BorderLayout; +import java.awt.Frame; +import java.awt.Image; +import java.awt.MenuItem; +import java.awt.PopupMenu; +import java.awt.SystemTray; +import java.awt.TrayIcon; +import java.awt.event.WindowEvent; +import java.awt.event.WindowStateListener; +import java.io.File; +import java.io.InputStream; +import java.util.Objects; +import java.util.concurrent.CompletableFuture; + +import javax.imageio.ImageIO; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.Timer; + +import org.cef.CefApp; +import org.cef.CefClient; +import org.cef.CefSettings; +import org.cef.browser.CefBrowser; +import org.cef.callback.CefBeforeDownloadCallback; +import org.cef.callback.CefDownloadItem; +import org.cef.callback.CefDownloadItemCallback; +import org.cef.handler.CefDownloadHandlerAdapter; +import org.cef.handler.CefLoadHandlerAdapter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; + +import jakarta.annotation.PreDestroy; +import lombok.extern.slf4j.Slf4j; +import me.friwi.jcefmaven.CefAppBuilder; +import me.friwi.jcefmaven.EnumProgress; +import me.friwi.jcefmaven.MavenCefAppHandlerAdapter; +import me.friwi.jcefmaven.impl.progress.ConsoleProgressHandler; +import stirling.software.SPDF.UI.WebBrowser; + +@Component +@Slf4j +@ConditionalOnProperty( + name = "STIRLING_PDF_DESKTOP_UI", + havingValue = "true", + matchIfMissing = false) +public class DesktopBrowser implements WebBrowser { + private static CefApp cefApp; + private static CefClient client; + private static CefBrowser browser; + private static JFrame frame; + private static LoadingWindow loadingWindow; + private static volatile boolean browserInitialized = false; + private static TrayIcon trayIcon; + private static SystemTray systemTray; + + public DesktopBrowser() { + SwingUtilities.invokeLater( + () -> { + loadingWindow = new LoadingWindow(null, "Initializing..."); + loadingWindow.setVisible(true); + }); + } + + public void initWebUI(String url) { + CompletableFuture.runAsync( + () -> { + try { + CefAppBuilder builder = new CefAppBuilder(); + configureCefSettings(builder); + builder.setProgressHandler(createProgressHandler()); + + // Build and initialize CEF + cefApp = builder.build(); + client = cefApp.createClient(); + + // Set up download handler + setupDownloadHandler(); + + // Create browser and frame on EDT + SwingUtilities.invokeAndWait( + () -> { + browser = client.createBrowser(url, false, false); + setupMainFrame(); + setupLoadHandler(); + + // Show the frame immediately but transparent + frame.setVisible(true); + }); + } catch (Exception e) { + log.error("Error initializing JCEF browser: ", e); + cleanup(); + } + }); + } + + private void configureCefSettings(CefAppBuilder builder) { + CefSettings settings = builder.getCefSettings(); + settings.cache_path = new File("jcef-bundle").getAbsolutePath(); + settings.root_cache_path = new File("jcef-bundle").getAbsolutePath(); + settings.persist_session_cookies = true; + settings.windowless_rendering_enabled = false; + settings.log_severity = CefSettings.LogSeverity.LOGSEVERITY_INFO; + + builder.setAppHandler( + new MavenCefAppHandlerAdapter() { + @Override + public void stateHasChanged(org.cef.CefApp.CefAppState state) { + log.info("CEF state changed: " + state); + if (state == CefApp.CefAppState.TERMINATED) { + System.exit(0); + } + } + }); + } + + private void setupDownloadHandler() { + client.addDownloadHandler( + new CefDownloadHandlerAdapter() { + @Override + public boolean onBeforeDownload( + CefBrowser browser, + CefDownloadItem downloadItem, + String suggestedName, + CefBeforeDownloadCallback callback) { + callback.Continue("", true); + return true; + } + + @Override + public void onDownloadUpdated( + CefBrowser browser, + CefDownloadItem downloadItem, + CefDownloadItemCallback callback) { + if (downloadItem.isComplete()) { + log.info("Download completed: " + downloadItem.getFullPath()); + } else if (downloadItem.isCanceled()) { + log.info("Download canceled: " + downloadItem.getFullPath()); + } + } + }); + } + + private ConsoleProgressHandler createProgressHandler() { + return new ConsoleProgressHandler() { + @Override + public void handleProgress(EnumProgress state, float percent) { + Objects.requireNonNull(state, "state cannot be null"); + SwingUtilities.invokeLater( + () -> { + if (loadingWindow != null) { + switch (state) { + case LOCATING: + loadingWindow.setStatus("Locating Files..."); + loadingWindow.setProgress(0); + break; + case DOWNLOADING: + if (percent >= 0) { + loadingWindow.setStatus( + String.format( + "Downloading additional files: %.0f%%", + percent)); + loadingWindow.setProgress((int) percent); + } + break; + case EXTRACTING: + loadingWindow.setStatus("Extracting files..."); + loadingWindow.setProgress(60); + break; + case INITIALIZING: + loadingWindow.setStatus("Initializing UI..."); + loadingWindow.setProgress(80); + break; + case INITIALIZED: + loadingWindow.setStatus("Finalising startup..."); + loadingWindow.setProgress(90); + break; + } + } + }); + } + }; + } + + private void setupMainFrame() { + frame = new JFrame("Stirling-PDF"); + frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + frame.setUndecorated(true); + frame.setOpacity(0.0f); + + JPanel contentPane = new JPanel(new BorderLayout()); + contentPane.setDoubleBuffered(true); + contentPane.add(browser.getUIComponent(), BorderLayout.CENTER); + frame.setContentPane(contentPane); + + frame.addWindowListener( + new java.awt.event.WindowAdapter() { + @Override + public void windowClosing(java.awt.event.WindowEvent windowEvent) { + cleanup(); + System.exit(0); + } + }); + + frame.setSize(1280, 768); + frame.setLocationRelativeTo(null); + + loadIcon(); + } + + private void setupLoadHandler() { + client.addLoadHandler( + new CefLoadHandlerAdapter() { + @Override + public void onLoadingStateChange( + CefBrowser browser, + boolean isLoading, + boolean canGoBack, + boolean canGoForward) { + if (!isLoading && !browserInitialized) { + browserInitialized = true; + SwingUtilities.invokeLater( + () -> { + if (loadingWindow != null) { + Timer timer = + new Timer( + 500, + e -> { + loadingWindow.dispose(); + loadingWindow = null; + + frame.dispose(); + frame.setOpacity(1.0f); + frame.setUndecorated(false); + frame.pack(); + frame.setSize(1280, 800); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + frame.requestFocus(); + frame.toFront(); + browser.getUIComponent() + .requestFocus(); + }); + timer.setRepeats(false); + timer.start(); + } + }); + } + } + }); + } + + private void setupTrayIcon(Image icon) { + if (!SystemTray.isSupported()) { + log.warn("System tray is not supported"); + return; + } + + try { + systemTray = SystemTray.getSystemTray(); + + // Create popup menu + PopupMenu popup = new PopupMenu(); + + // Create menu items + MenuItem showItem = new MenuItem("Show"); + showItem.addActionListener( + e -> { + frame.setVisible(true); + frame.setState(Frame.NORMAL); + }); + + MenuItem exitItem = new MenuItem("Exit"); + exitItem.addActionListener( + e -> { + cleanup(); + System.exit(0); + }); + + // Add menu items to popup menu + popup.add(showItem); + popup.addSeparator(); + popup.add(exitItem); + + // Create tray icon + trayIcon = new TrayIcon(icon, "Stirling-PDF", popup); + trayIcon.setImageAutoSize(true); + + // Add double-click behavior + trayIcon.addActionListener( + e -> { + frame.setVisible(true); + frame.setState(Frame.NORMAL); + }); + + // Add tray icon to system tray + systemTray.add(trayIcon); + + // Modify frame behavior to minimize to tray + frame.addWindowStateListener( + new WindowStateListener() { + public void windowStateChanged(WindowEvent e) { + if (e.getNewState() == Frame.ICONIFIED) { + frame.setVisible(false); + } + } + }); + + } catch (AWTException e) { + log.error("Error setting up system tray icon", e); + } + } + + private void loadIcon() { + try { + Image icon = null; + String[] iconPaths = {"/static/favicon.ico"}; + + for (String path : iconPaths) { + if (icon != null) break; + try { + try (InputStream is = getClass().getResourceAsStream(path)) { + if (is != null) { + icon = ImageIO.read(is); + break; + } + } + } catch (Exception e) { + log.debug("Could not load icon from " + path, e); + } + } + + if (icon != null) { + frame.setIconImage(icon); + setupTrayIcon(icon); + } else { + log.warn("Could not load icon from any source"); + } + } catch (Exception e) { + log.error("Error loading icon", e); + } + } + + @PreDestroy + public void cleanup() { + if (browser != null) browser.close(true); + if (client != null) client.dispose(); + if (cefApp != null) cefApp.dispose(); + if (loadingWindow != null) loadingWindow.dispose(); + } +} diff --git a/src/main/java/stirling/software/SPDF/UI/impl/LoadingWindow.java b/src/main/java/stirling/software/SPDF/UI/impl/LoadingWindow.java new file mode 100644 index 0000000000..ad827dc5dc --- /dev/null +++ b/src/main/java/stirling/software/SPDF/UI/impl/LoadingWindow.java @@ -0,0 +1,114 @@ +package stirling.software.SPDF.UI.impl; + +import java.awt.*; +import java.io.InputStream; + +import javax.imageio.ImageIO; +import javax.swing.*; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class LoadingWindow extends JDialog { + private final JProgressBar progressBar; + private final JLabel statusLabel; + private final JPanel mainPanel; + private final JLabel brandLabel; + + public LoadingWindow(Frame parent, String initialUrl) { + super(parent, "Initializing Stirling-PDF", true); + + // Initialize components + mainPanel = new JPanel(); + mainPanel.setBackground(Color.WHITE); + mainPanel.setBorder(BorderFactory.createEmptyBorder(20, 30, 20, 30)); + mainPanel.setLayout(new GridBagLayout()); + GridBagConstraints gbc = new GridBagConstraints(); + + // Configure GridBagConstraints + gbc.gridwidth = GridBagConstraints.REMAINDER; + gbc.fill = GridBagConstraints.HORIZONTAL; + gbc.insets = new Insets(5, 5, 5, 5); + gbc.weightx = 1.0; // Add horizontal weight + gbc.weighty = 0.0; // Add vertical weight + + // Add icon + try { + try (InputStream is = getClass().getResourceAsStream("/static/favicon.ico")) { + if (is != null) { + Image img = ImageIO.read(is); + if (img != null) { + Image scaledImg = img.getScaledInstance(48, 48, Image.SCALE_SMOOTH); + JLabel iconLabel = new JLabel(new ImageIcon(scaledImg)); + iconLabel.setHorizontalAlignment(SwingConstants.CENTER); + gbc.gridy = 0; + mainPanel.add(iconLabel, gbc); + } + } + } + } catch (Exception e) { + log.error("Failed to load icon", e); + } + // URL Label with explicit size + brandLabel = new JLabel(initialUrl); + brandLabel.setHorizontalAlignment(SwingConstants.CENTER); + brandLabel.setPreferredSize(new Dimension(300, 25)); + brandLabel.setText("Stirling-PDF"); + gbc.gridy = 1; + mainPanel.add(brandLabel, gbc); + + // Status label with explicit size + statusLabel = new JLabel("Initializing..."); + statusLabel.setHorizontalAlignment(SwingConstants.CENTER); + statusLabel.setPreferredSize(new Dimension(300, 25)); + gbc.gridy = 2; + mainPanel.add(statusLabel, gbc); + // Progress bar with explicit size + progressBar = new JProgressBar(0, 100); + progressBar.setStringPainted(true); + progressBar.setPreferredSize(new Dimension(300, 25)); + gbc.gridy = 3; + mainPanel.add(progressBar, gbc); + + // Set dialog properties + setContentPane(mainPanel); + setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); + setResizable(false); + setUndecorated(false); + + // Set size and position + setSize(400, 200); + setLocationRelativeTo(parent); + setAlwaysOnTop(true); + setProgress(0); + setStatus("Starting..."); + } + + public void setProgress(final int progress) { + SwingUtilities.invokeLater( + () -> { + try { + progressBar.setValue(Math.min(Math.max(progress, 0), 100)); + progressBar.setString(progress + "%"); + mainPanel.revalidate(); + mainPanel.repaint(); + } catch (Exception e) { + log.error("Error updating progress", e); + } + }); + } + + public void setStatus(final String status) { + log.info(status); + SwingUtilities.invokeLater( + () -> { + try { + statusLabel.setText(status != null ? status : ""); + mainPanel.revalidate(); + mainPanel.repaint(); + } catch (Exception e) { + log.error("Error updating status", e); + } + }); + } +} diff --git a/src/main/java/stirling/software/SPDF/config/AppConfig.java b/src/main/java/stirling/software/SPDF/config/AppConfig.java index 75497dba10..19a4b768f3 100644 --- a/src/main/java/stirling/software/SPDF/config/AppConfig.java +++ b/src/main/java/stirling/software/SPDF/config/AppConfig.java @@ -7,9 +7,6 @@ import java.util.Properties; import java.util.function.Predicate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; @@ -21,15 +18,19 @@ import org.springframework.core.io.ResourceLoader; import org.thymeleaf.spring6.SpringTemplateEngine; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.ApplicationProperties; @Configuration @Lazy +@Slf4j public class AppConfig { - private static final Logger logger = LoggerFactory.getLogger(AppConfig.class); + private final ApplicationProperties applicationProperties; - @Autowired ApplicationProperties applicationProperties; + public AppConfig(ApplicationProperties applicationProperties) { + this.applicationProperties = applicationProperties; + } @Bean @ConditionalOnProperty( @@ -61,7 +62,7 @@ public String appVersion() { props.load(resource.getInputStream()); return props.getProperty("version"); } catch (IOException e) { - logger.error("exception", e); + log.error("exception", e); } return "0.0.0"; } @@ -101,6 +102,25 @@ public boolean runningInDocker() { return Files.exists(Paths.get("/.dockerenv")); } + @Bean(name = "configDirMounted") + public boolean isRunningInDockerWithConfig() { + Path dockerEnv = Paths.get("/.dockerenv"); + // default to true if not docker + if (!Files.exists(dockerEnv)) { + return true; + } + Path mountInfo = Paths.get("/proc/1/mountinfo"); + // this should always exist, if not some unknown usecase + if (!Files.exists(mountInfo)) { + return true; + } + try { + return Files.lines(mountInfo).anyMatch(line -> line.contains(" /configs ")); + } catch (IOException e) { + return false; + } + } + @Bean(name = "bookAndHtmlFormatsInstalled") public boolean bookAndHtmlFormatsInstalled() { String installOps = System.getProperty("INSTALL_BOOK_AND_ADVANCED_HTML_OPS"); diff --git a/src/main/java/stirling/software/SPDF/config/AppUpdateService.java b/src/main/java/stirling/software/SPDF/config/AppUpdateService.java index 3eb204887c..faeab2c390 100644 --- a/src/main/java/stirling/software/SPDF/config/AppUpdateService.java +++ b/src/main/java/stirling/software/SPDF/config/AppUpdateService.java @@ -11,10 +11,16 @@ @Service class AppUpdateService { - @Autowired private ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; - @Autowired(required = false) - ShowAdminInterface showAdmin; + private final ShowAdminInterface showAdmin; + + public AppUpdateService( + ApplicationProperties applicationProperties, + @Autowired(required = false) ShowAdminInterface showAdmin) { + this.applicationProperties = applicationProperties; + this.showAdmin = showAdmin; + } @Bean(name = "shouldShow") @Scope("request") diff --git a/src/main/java/stirling/software/SPDF/config/ConfigInitializer.java b/src/main/java/stirling/software/SPDF/config/ConfigInitializer.java index c6853782e5..42dbf74752 100644 --- a/src/main/java/stirling/software/SPDF/config/ConfigInitializer.java +++ b/src/main/java/stirling/software/SPDF/config/ConfigInitializer.java @@ -16,16 +16,15 @@ import org.simpleyaml.configuration.file.YamlFile; import org.simpleyaml.configuration.implementation.SimpleYamlImplementation; import org.simpleyaml.configuration.implementation.snakeyaml.lib.DumperOptions; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; +import lombok.extern.slf4j.Slf4j; + +@Slf4j public class ConfigInitializer implements ApplicationContextInitializer { - private static final Logger logger = LoggerFactory.getLogger(ConfigInitializer.class); - @Override public void initialize(ConfigurableApplicationContext applicationContext) { try { @@ -149,7 +148,7 @@ private void changeConfigItemFromCommentToKeyValue( .commentSide(settingsTemplateFile.getComment(path, CommentType.SIDE)); } else { // Log if the key is not found in both YAML files - logger.info("Key not found in both YAML files: " + path); + log.info("Key not found in both YAML files: " + path); } } } diff --git a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java index 64f56045b9..07ebadb1a9 100644 --- a/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java @@ -7,24 +7,23 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.DependsOn; import org.springframework.stereotype.Service; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.ApplicationProperties; @Service +@Slf4j @DependsOn({"bookAndHtmlFormatsInstalled"}) public class EndpointConfiguration { - private static final Logger logger = LoggerFactory.getLogger(EndpointConfiguration.class); - private Map endpointStatuses = new ConcurrentHashMap<>(); - private Map> endpointGroups = new ConcurrentHashMap<>(); + private static final String REMOVE_BLANKS = "remove-blanks"; private final ApplicationProperties applicationProperties; - + private Map endpointStatuses = new ConcurrentHashMap<>(); + private Map> endpointGroups = new ConcurrentHashMap<>(); private boolean bookAndHtmlFormatsInstalled; @Autowired @@ -43,7 +42,7 @@ public void enableEndpoint(String endpoint) { public void disableEndpoint(String endpoint) { if (!endpointStatuses.containsKey(endpoint) || endpointStatuses.get(endpoint) != false) { - logger.debug("Disabling {}", endpoint); + log.debug("Disabling {}", endpoint); endpointStatuses.put(endpoint, false); } } @@ -87,7 +86,7 @@ public void logDisabledEndpointsSummary() { .collect(Collectors.toList()); if (!disabledList.isEmpty()) { - logger.info( + log.info( "Total disabled endpoints: {}. Disabled endpoints: {}", disabledList.size(), String.join(", ", disabledList)); @@ -136,6 +135,7 @@ public void init() { addEndpointToGroup("Security", "remove-cert-sign"); addEndpointToGroup("Security", "sanitize-pdf"); addEndpointToGroup("Security", "auto-redact"); + addEndpointToGroup("Security", "redact"); // Adding endpoints to "Other" group addEndpointToGroup("Other", "ocr-pdf"); @@ -188,7 +188,7 @@ public void init() { addEndpointToGroup("OpenCV", "extract-image-scans"); // LibreOffice - addEndpointToGroup("LibreOffice", "repair"); + addEndpointToGroup("qpdf", "repair"); addEndpointToGroup("LibreOffice", "file-to-pdf"); addEndpointToGroup("LibreOffice", "pdf-to-word"); addEndpointToGroup("LibreOffice", "pdf-to-presentation"); @@ -199,10 +199,11 @@ public void init() { // Unoconv addEndpointToGroup("Unoconv", "file-to-pdf"); - // OCRmyPDF - addEndpointToGroup("OCRmyPDF", "compress-pdf"); - addEndpointToGroup("OCRmyPDF", "pdf-to-pdfa"); - addEndpointToGroup("OCRmyPDF", "ocr-pdf"); + // qpdf + addEndpointToGroup("qpdf", "compress-pdf"); + addEndpointToGroup("qpdf", "pdf-to-pdfa"); + + addEndpointToGroup("tesseract", "ocr-pdf"); // Java addEndpointToGroup("Java", "merge-pdfs"); @@ -234,6 +235,7 @@ public void init() { addEndpointToGroup("Java", "markdown-to-pdf"); addEndpointToGroup("Java", "show-javascript"); addEndpointToGroup("Java", "auto-redact"); + addEndpointToGroup("Java", "redact"); addEndpointToGroup("Java", "pdf-to-csv"); addEndpointToGroup("Java", "split-by-size-or-count"); addEndpointToGroup("Java", "overlay-pdf"); @@ -248,10 +250,10 @@ public void init() { addEndpointToGroup("Javascript", "compare"); addEndpointToGroup("Javascript", "adjust-contrast"); - // Ghostscript dependent endpoints - addEndpointToGroup("Ghostscript", "compress-pdf"); - addEndpointToGroup("Ghostscript", "pdf-to-pdfa"); - addEndpointToGroup("Ghostscript", "repair"); + // qpdf dependent endpoints + addEndpointToGroup("qpdf", "compress-pdf"); + addEndpointToGroup("qpdf", "pdf-to-pdfa"); + addEndpointToGroup("qpdf", "repair"); // Weasyprint dependent endpoints addEndpointToGroup("Weasyprint", "html-to-pdf"); @@ -259,6 +261,9 @@ public void init() { // Pdftohtml dependent endpoints addEndpointToGroup("Pdftohtml", "pdf-to-html"); + + // disabled for now while we resolve issues + disableEndpoint("pdf-to-pdfa"); } private void processEnvironmentConfigs() { @@ -283,6 +288,4 @@ private void processEnvironmentConfigs() { public Set getEndpointsForGroup(String group) { return endpointGroups.getOrDefault(group, new HashSet<>()); } - - private static final String REMOVE_BLANKS = "remove-blanks"; } diff --git a/src/main/java/stirling/software/SPDF/config/EndpointInterceptor.java b/src/main/java/stirling/software/SPDF/config/EndpointInterceptor.java index 81b50b8407..8c60ca90df 100644 --- a/src/main/java/stirling/software/SPDF/config/EndpointInterceptor.java +++ b/src/main/java/stirling/software/SPDF/config/EndpointInterceptor.java @@ -1,6 +1,5 @@ package stirling.software.SPDF.config; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; @@ -10,7 +9,11 @@ @Component public class EndpointInterceptor implements HandlerInterceptor { - @Autowired private EndpointConfiguration endpointConfiguration; + private final EndpointConfiguration endpointConfiguration; + + public EndpointInterceptor(EndpointConfiguration endpointConfiguration) { + this.endpointConfiguration = endpointConfiguration; + } @Override public boolean preHandle( diff --git a/src/main/java/stirling/software/SPDF/config/ExternalAppDepConfig.java b/src/main/java/stirling/software/SPDF/config/ExternalAppDepConfig.java index f8ab43ad55..9d1ac1fccf 100644 --- a/src/main/java/stirling/software/SPDF/config/ExternalAppDepConfig.java +++ b/src/main/java/stirling/software/SPDF/config/ExternalAppDepConfig.java @@ -6,7 +6,6 @@ import java.util.Map; import java.util.stream.Collectors; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import jakarta.annotation.PostConstruct; @@ -15,7 +14,24 @@ @Configuration @Slf4j public class ExternalAppDepConfig { - @Autowired private EndpointConfiguration endpointConfiguration; + + private final EndpointConfiguration endpointConfiguration; + private final Map> commandToGroupMapping = + new HashMap<>() { + + { + put("soffice", List.of("LibreOffice")); + put("weasyprint", List.of("Weasyprint")); + put("pdftohtml", List.of("Pdftohtml")); + put("unoconv", List.of("Unoconv")); + put("qpdf", List.of("qpdf")); + put("tesseract", List.of("tesseract")); + } + }; + + public ExternalAppDepConfig(EndpointConfiguration endpointConfiguration) { + this.endpointConfiguration = endpointConfiguration; + } private boolean isCommandAvailable(String command) { try { @@ -34,18 +50,6 @@ private boolean isCommandAvailable(String command) { } } - private final Map> commandToGroupMapping = - new HashMap<>() { - { - put("gs", List.of("Ghostscript")); - put("soffice", List.of("LibreOffice")); - put("ocrmypdf", List.of("OCRmyPDF")); - put("weasyprint", List.of("Weasyprint")); - put("pdftohtml", List.of("Pdftohtml")); - put("unoconv", List.of("Unoconv")); - } - }; - private List getAffectedFeatures(String group) { return endpointConfiguration.getEndpointsForGroup(group).stream() .map(endpoint -> formatEndpointAsFeature(endpoint)) @@ -55,7 +59,6 @@ private List getAffectedFeatures(String group) { private String formatEndpointAsFeature(String endpoint) { // First replace common terms String feature = endpoint.replace("-", " ").replace("pdf", "PDF").replace("img", "image"); - // Split into words and capitalize each word return Arrays.stream(feature.split("\\s+")) .map(word -> capitalizeWord(word)) @@ -76,7 +79,6 @@ private void checkDependencyAndDisableGroup(String command) { boolean isAvailable = isCommandAvailable(command); if (!isAvailable) { List affectedGroups = commandToGroupMapping.get(command); - if (affectedGroups != null) { for (String group : affectedGroups) { List affectedFeatures = getAffectedFeatures(group); @@ -95,21 +97,18 @@ private void checkDependencyAndDisableGroup(String command) { @PostConstruct public void checkDependencies() { - // Check core dependencies - checkDependencyAndDisableGroup("gs"); + checkDependencyAndDisableGroup("tesseract"); checkDependencyAndDisableGroup("soffice"); - checkDependencyAndDisableGroup("ocrmypdf"); + checkDependencyAndDisableGroup("qpdf"); checkDependencyAndDisableGroup("weasyprint"); checkDependencyAndDisableGroup("pdftohtml"); checkDependencyAndDisableGroup("unoconv"); - // Special handling for Python/OpenCV dependencies boolean pythonAvailable = isCommandAvailable("python3") || isCommandAvailable("python"); if (!pythonAvailable) { List pythonFeatures = getAffectedFeatures("Python"); List openCVFeatures = getAffectedFeatures("OpenCV"); - endpointConfiguration.disableGroup("Python"); endpointConfiguration.disableGroup("OpenCV"); log.warn( diff --git a/src/main/java/stirling/software/SPDF/config/InitialSetup.java b/src/main/java/stirling/software/SPDF/config/InitialSetup.java index 0e0ad2be03..c8053b6fa3 100644 --- a/src/main/java/stirling/software/SPDF/config/InitialSetup.java +++ b/src/main/java/stirling/software/SPDF/config/InitialSetup.java @@ -1,11 +1,13 @@ package stirling.software.SPDF.config; import java.io.IOException; +import java.util.Properties; import java.util.UUID; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; import org.springframework.stereotype.Component; import io.micrometer.common.util.StringUtils; @@ -20,44 +22,80 @@ @Order(Ordered.HIGHEST_PRECEDENCE + 1) public class InitialSetup { - @Autowired private ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; + + public InitialSetup(ApplicationProperties applicationProperties) { + this.applicationProperties = applicationProperties; + } @PostConstruct + public void init() throws IOException { + initUUIDKey(); + initSecretKey(); + initEnableCSRFSecurity(); + initLegalUrls(); + initSetAppVersion(); + } + public void initUUIDKey() throws IOException { String uuid = applicationProperties.getAutomaticallyGenerated().getUUID(); if (!GeneralUtils.isValidUUID(uuid)) { - uuid = UUID.randomUUID().toString(); // Generating a random UUID as the secret key + // Generating a random UUID as the secret key + uuid = UUID.randomUUID().toString(); GeneralUtils.saveKeyToConfig("AutomaticallyGenerated.UUID", uuid); applicationProperties.getAutomaticallyGenerated().setUUID(uuid); } } - @PostConstruct public void initSecretKey() throws IOException { String secretKey = applicationProperties.getAutomaticallyGenerated().getKey(); if (!GeneralUtils.isValidUUID(secretKey)) { - secretKey = UUID.randomUUID().toString(); // Generating a random UUID as the secret key + // Generating a random UUID as the secret key + secretKey = UUID.randomUUID().toString(); GeneralUtils.saveKeyToConfig("AutomaticallyGenerated.key", secretKey); applicationProperties.getAutomaticallyGenerated().setKey(secretKey); } } - @PostConstruct + public void initEnableCSRFSecurity() throws IOException { + if (GeneralUtils.isVersionHigher( + "0.36.0", applicationProperties.getAutomaticallyGenerated().getAppVersion())) { + Boolean csrf = applicationProperties.getSecurity().getCsrfDisabled(); + if (!csrf) { + GeneralUtils.saveKeyToConfig("security.csrfDisabled", false, false); + GeneralUtils.saveKeyToConfig("system.enableAnalytics", "true", false); + applicationProperties.getSecurity().setCsrfDisabled(false); + } + } + } + public void initLegalUrls() throws IOException { // Initialize Terms and Conditions String termsUrl = applicationProperties.getLegal().getTermsAndConditions(); if (StringUtils.isEmpty(termsUrl)) { String defaultTermsUrl = "https://www.stirlingpdf.com/terms-and-conditions"; - GeneralUtils.saveKeyToConfig("legal.termsAndConditions", defaultTermsUrl); + GeneralUtils.saveKeyToConfig("legal.termsAndConditions", defaultTermsUrl, false); applicationProperties.getLegal().setTermsAndConditions(defaultTermsUrl); } - // Initialize Privacy Policy String privacyUrl = applicationProperties.getLegal().getPrivacyPolicy(); if (StringUtils.isEmpty(privacyUrl)) { String defaultPrivacyUrl = "https://www.stirlingpdf.com/privacy-policy"; - GeneralUtils.saveKeyToConfig("legal.privacyPolicy", defaultPrivacyUrl); + GeneralUtils.saveKeyToConfig("legal.privacyPolicy", defaultPrivacyUrl, false); applicationProperties.getLegal().setPrivacyPolicy(defaultPrivacyUrl); } } + + public void initSetAppVersion() throws IOException { + String appVersion = "0.0.0"; + Resource resource = new ClassPathResource("version.properties"); + Properties props = new Properties(); + try { + props.load(resource.getInputStream()); + appVersion = props.getProperty("version"); + } catch (Exception e) { + } + applicationProperties.getAutomaticallyGenerated().setAppVersion(appVersion); + GeneralUtils.saveKeyToConfig("AutomaticallyGenerated.appVersion", appVersion, false); + } } diff --git a/src/main/java/stirling/software/SPDF/config/LocaleConfiguration.java b/src/main/java/stirling/software/SPDF/config/LocaleConfiguration.java index a15d6c165b..94c3392f92 100644 --- a/src/main/java/stirling/software/SPDF/config/LocaleConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/LocaleConfiguration.java @@ -2,7 +2,6 @@ import java.util.Locale; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.LocaleResolver; @@ -16,7 +15,11 @@ @Configuration public class LocaleConfiguration implements WebMvcConfigurer { - @Autowired ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; + + public LocaleConfiguration(ApplicationProperties applicationProperties) { + this.applicationProperties = applicationProperties; + } @Override public void addInterceptors(InterceptorRegistry registry) { @@ -34,21 +37,17 @@ public LocaleChangeInterceptor localeChangeInterceptor() { @Bean public LocaleResolver localeResolver() { SessionLocaleResolver slr = new SessionLocaleResolver(); - String appLocaleEnv = applicationProperties.getSystem().getDefaultLocale(); - Locale defaultLocale = - Locale.UK; // Fallback to UK locale if environment variable is not set - + Locale defaultLocale = // Fallback to UK locale if environment variable is not set + Locale.UK; if (appLocaleEnv != null && !appLocaleEnv.isEmpty()) { Locale tempLocale = Locale.forLanguageTag(appLocaleEnv); String tempLanguageTag = tempLocale.toLanguageTag(); - if (appLocaleEnv.equalsIgnoreCase(tempLanguageTag)) { defaultLocale = tempLocale; } else { tempLocale = Locale.forLanguageTag(appLocaleEnv.replace("_", "-")); tempLanguageTag = tempLocale.toLanguageTag(); - if (appLocaleEnv.equalsIgnoreCase(tempLanguageTag)) { defaultLocale = tempLocale; } else { @@ -57,7 +56,6 @@ public LocaleResolver localeResolver() { } } } - slr.setDefaultLocale(defaultLocale); return slr; } diff --git a/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java b/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java index 7194f4a2c5..0734b2317a 100644 --- a/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java +++ b/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java @@ -1,6 +1,5 @@ package stirling.software.SPDF.config; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -15,15 +14,19 @@ @Configuration public class OpenApiConfig { - @Autowired ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; + + public OpenApiConfig(ApplicationProperties applicationProperties) { + this.applicationProperties = applicationProperties; + } @Bean public OpenAPI customOpenAPI() { String version = getClass().getPackage().getImplementationVersion(); if (version == null) { - version = "1.0.0"; // default version if all else fails + // default version if all else fails + version = "1.0.0"; } - SecurityScheme apiKeyScheme = new SecurityScheme() .type(SecurityScheme.Type.APIKEY) diff --git a/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java b/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java index eaadd251f9..5cbae1f0f9 100644 --- a/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java +++ b/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java @@ -1,6 +1,5 @@ package stirling.software.SPDF.config; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; @@ -9,7 +8,11 @@ @Configuration public class WebMvcConfig implements WebMvcConfigurer { - @Autowired private EndpointInterceptor endpointInterceptor; + private final EndpointInterceptor endpointInterceptor; + + public WebMvcConfig(EndpointInterceptor endpointInterceptor) { + this.endpointInterceptor = endpointInterceptor; + } @Override public void addInterceptors(InterceptorRegistry registry) { diff --git a/src/main/java/stirling/software/SPDF/config/interfaces/DatabaseBackupInterface.java b/src/main/java/stirling/software/SPDF/config/interfaces/DatabaseBackupInterface.java index 3ad11f2a6c..9d0e094ac4 100644 --- a/src/main/java/stirling/software/SPDF/config/interfaces/DatabaseBackupInterface.java +++ b/src/main/java/stirling/software/SPDF/config/interfaces/DatabaseBackupInterface.java @@ -6,6 +6,7 @@ import stirling.software.SPDF.utils.FileInfo; public interface DatabaseBackupInterface { + void exportDatabase() throws IOException; boolean importDatabase(); diff --git a/src/main/java/stirling/software/SPDF/config/security/AppUpdateAuthService.java b/src/main/java/stirling/software/SPDF/config/security/AppUpdateAuthService.java index 57ce7b7d6c..c8a133223e 100644 --- a/src/main/java/stirling/software/SPDF/config/security/AppUpdateAuthService.java +++ b/src/main/java/stirling/software/SPDF/config/security/AppUpdateAuthService.java @@ -2,7 +2,6 @@ import java.util.Optional; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Service; @@ -15,8 +14,15 @@ @Service class AppUpdateAuthService implements ShowAdminInterface { - @Autowired private UserRepository userRepository; - @Autowired private ApplicationProperties applicationProperties; + private final UserRepository userRepository; + + private final ApplicationProperties applicationProperties; + + public AppUpdateAuthService( + UserRepository userRepository, ApplicationProperties applicationProperties) { + this.userRepository = userRepository; + this.applicationProperties = applicationProperties; + } @Override public boolean getShowUpdateOnlyAdmins() { @@ -24,24 +30,18 @@ public boolean getShowUpdateOnlyAdmins() { if (!showUpdate) { return showUpdate; } - boolean showUpdateOnlyAdmin = applicationProperties.getSystem().getShowUpdateOnlyAdmin(); - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - if (authentication == null || !authentication.isAuthenticated()) { return !showUpdateOnlyAdmin; } - if (authentication.getName().equalsIgnoreCase("anonymousUser")) { return !showUpdateOnlyAdmin; } - Optional user = userRepository.findByUsername(authentication.getName()); if (user.isPresent() && showUpdateOnlyAdmin) { return "ROLE_ADMIN".equals(user.get().getRolesAsString()); } - return showUpdate; } } diff --git a/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java index 8d5aa76d01..2d0228648c 100644 --- a/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java @@ -219,9 +219,9 @@ private void getRedirect_oauth2( // "https://accounts.google.com/Logout?continue=https://appengine.google.com/_ah/logout?continue=" // + response.encodeRedirectURL(redirect_url); log.info("Google does not have a specific logout URL"); - // log.info("Redirecting to Google logout URL: " + googleLogoutUrl); - // response.sendRedirect(googleLogoutUrl); - // break; + // log.info("Redirecting to Google logout URL: " + googleLogoutUrl); + // response.sendRedirect(googleLogoutUrl); + // break; default: String defaultRedirectUrl = request.getContextPath() + "/login?" + param; log.info("Redirecting to default logout URL: " + defaultRedirectUrl); diff --git a/src/main/java/stirling/software/SPDF/config/security/CustomUserDetailsService.java b/src/main/java/stirling/software/SPDF/config/security/CustomUserDetailsService.java index 3571819667..69b06ec11e 100644 --- a/src/main/java/stirling/software/SPDF/config/security/CustomUserDetailsService.java +++ b/src/main/java/stirling/software/SPDF/config/security/CustomUserDetailsService.java @@ -4,7 +4,6 @@ import java.util.Set; import java.util.stream.Collectors; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.LockedException; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; @@ -20,9 +19,15 @@ @Service public class CustomUserDetailsService implements UserDetailsService { - @Autowired private UserRepository userRepository; + private final UserRepository userRepository; - @Autowired private LoginAttemptService loginAttemptService; + private final LoginAttemptService loginAttemptService; + + public CustomUserDetailsService( + UserRepository userRepository, LoginAttemptService loginAttemptService) { + this.userRepository = userRepository; + this.loginAttemptService = loginAttemptService; + } @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { @@ -33,16 +38,13 @@ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundEx () -> new UsernameNotFoundException( "No user found with username: " + username)); - if (loginAttemptService.isBlocked(username)) { throw new LockedException( "Your account has been locked due to too many failed login attempts."); } - if (!user.hasPassword()) { throw new IllegalArgumentException("Password must not be null"); } - return new org.springframework.security.core.userdetails.User( user.getUsername(), user.getPassword(), diff --git a/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java b/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java index babba64d28..ee1a5f489d 100644 --- a/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java +++ b/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.Optional; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; @@ -25,7 +24,11 @@ @Component public class FirstLoginFilter extends OncePerRequestFilter { - @Autowired @Lazy private UserService userService; + @Lazy private final UserService userService; + + public FirstLoginFilter(@Lazy UserService userService) { + this.userService = userService; + } @Override protected void doFilterInternal( @@ -34,16 +37,13 @@ protected void doFilterInternal( String method = request.getMethod(); String requestURI = request.getRequestURI(); String contextPath = request.getContextPath(); - // Check if the request is for static resources boolean isStaticResource = RequestUriUtils.isStaticResource(contextPath, requestURI); - // If it's a static resource, just continue the filter chain and skip the logic below if (isStaticResource) { filterChain.doFilter(request, response); return; } - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null && authentication.isAuthenticated()) { Optional user = userService.findByUsernameIgnoreCase(authentication.getName()); @@ -55,12 +55,10 @@ protected void doFilterInternal( return; } } - if (log.isDebugEnabled()) { HttpSession session = request.getSession(true); SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); String creationTime = timeFormat.format(new Date(session.getCreationTime())); - log.debug( "Request Info - New: {}, creationTimeSession {}, ID: {}, IP: {}, User-Agent: {}, Referer: {}, Request URL: {}", session.isNew(), diff --git a/src/main/java/stirling/software/SPDF/config/security/IPRateLimitingFilter.java b/src/main/java/stirling/software/SPDF/config/security/IPRateLimitingFilter.java index b47ba534a4..02ac582ab0 100644 --- a/src/main/java/stirling/software/SPDF/config/security/IPRateLimitingFilter.java +++ b/src/main/java/stirling/software/SPDF/config/security/IPRateLimitingFilter.java @@ -4,11 +4,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; -import jakarta.servlet.Filter; -import jakarta.servlet.FilterChain; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletResponse; +import jakarta.servlet.*; import jakarta.servlet.http.HttpServletRequest; import stirling.software.SPDF.utils.RequestUriUtils; diff --git a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java index f43baf0a39..54f291a6bc 100644 --- a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java +++ b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java @@ -3,7 +3,6 @@ import java.io.IOException; import java.util.UUID; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import jakarta.annotation.PostConstruct; @@ -16,11 +15,20 @@ @Slf4j public class InitialSecuritySetup { - @Autowired private UserService userService; + private final UserService userService; - @Autowired private ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; - @Autowired private DatabaseBackupInterface databaseBackupHelper; + private final DatabaseBackupInterface databaseBackupHelper; + + public InitialSecuritySetup( + UserService userService, + ApplicationProperties applicationProperties, + DatabaseBackupInterface databaseBackupHelper) { + this.userService = userService; + this.applicationProperties = applicationProperties; + this.databaseBackupHelper = databaseBackupHelper; + } @PostConstruct public void init() throws IllegalArgumentException, IOException { @@ -30,6 +38,7 @@ public void init() throws IllegalArgumentException, IOException { initializeAdminUser(); } else { databaseBackupHelper.exportDatabase(); + userService.migrateOauth2ToSSO(); } initializeInternalApiUser(); } @@ -74,5 +83,6 @@ private void initializeInternalApiUser() throws IllegalArgumentException, IOExce userService.addApiKeyToUser(Role.INTERNAL_API_USER.getRoleId()); log.info("Internal API user created: " + Role.INTERNAL_API_USER.getRoleId()); } + userService.syncCustomApiUser(applicationProperties.getSecurity().getCustomGlobalAPIKey()); } } diff --git a/src/main/java/stirling/software/SPDF/config/security/LoginAttemptService.java b/src/main/java/stirling/software/SPDF/config/security/LoginAttemptService.java index 42886289ef..088800d54e 100644 --- a/src/main/java/stirling/software/SPDF/config/security/LoginAttemptService.java +++ b/src/main/java/stirling/software/SPDF/config/security/LoginAttemptService.java @@ -3,7 +3,6 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import jakarta.annotation.PostConstruct; @@ -15,13 +14,20 @@ @Slf4j public class LoginAttemptService { - @Autowired private ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; private int MAX_ATTEMPT; + private long ATTEMPT_INCREMENT_TIME; + private ConcurrentHashMap attemptsCache; + private boolean isBlockedEnabled = true; + public LoginAttemptService(ApplicationProperties applicationProperties) { + this.applicationProperties = applicationProperties; + } + @PostConstruct public void init() { MAX_ATTEMPT = applicationProperties.getSecurity().getLoginAttemptCount(); @@ -46,7 +52,6 @@ public void loginFailed(String key) { if (!isBlockedEnabled || key == null || key.trim().isEmpty()) { return; } - AttemptCounter attemptCounter = attemptsCache.get(key.toLowerCase()); if (attemptCounter == null) { attemptCounter = new AttemptCounter(); @@ -67,20 +72,18 @@ public boolean isBlocked(String key) { if (attemptCounter == null) { return false; } - return attemptCounter.getAttemptCount() >= MAX_ATTEMPT; } public int getRemainingAttempts(String key) { if (!isBlockedEnabled || key == null || key.trim().isEmpty()) { - return Integer.MAX_VALUE; // Arbitrarily high number if tracking is disabled + // Arbitrarily high number if tracking is disabled + return Integer.MAX_VALUE; } - AttemptCounter attemptCounter = attemptsCache.get(key.toLowerCase()); if (attemptCounter == null) { return MAX_ATTEMPT; } - return MAX_ATTEMPT - attemptCounter.getAttemptCount(); } } diff --git a/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java b/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java index 1b7d37d613..94422283c1 100644 --- a/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java @@ -3,14 +3,15 @@ import java.security.cert.X509Certificate; import java.util.*; -import org.springframework.beans.factory.annotation.Autowired; +import org.opensaml.saml.saml2.core.AuthnRequest; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.Lazy; import org.springframework.core.io.Resource; -import org.springframework.security.authentication.AuthenticationProvider; +import org.springframework.security.authentication.ProviderManager; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; @@ -32,7 +33,8 @@ import org.springframework.security.saml2.provider.service.registration.InMemoryRelyingPartyRegistrationRepository; import org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistration; import org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistrationRepository; -import org.springframework.security.saml2.provider.service.web.authentication.Saml2WebSsoAuthenticationFilter; +import org.springframework.security.saml2.provider.service.registration.Saml2MessageBinding; +import org.springframework.security.saml2.provider.service.web.authentication.OpenSaml4AuthenticationRequestResolver; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository; @@ -41,6 +43,7 @@ import org.springframework.security.web.savedrequest.NullRequestCache; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.security.oauth2.CustomOAuth2AuthenticationFailureHandler; import stirling.software.SPDF.config.security.oauth2.CustomOAuth2AuthenticationSuccessHandler; @@ -59,44 +62,77 @@ import stirling.software.SPDF.model.provider.GoogleProvider; import stirling.software.SPDF.model.provider.KeycloakProvider; import stirling.software.SPDF.repository.JPATokenRepositoryImpl; +import stirling.software.SPDF.repository.PersistentLoginRepository; @Configuration @EnableWebSecurity @EnableMethodSecurity @Slf4j +@DependsOn("runningEE") public class SecurityConfiguration { - @Autowired private CustomUserDetailsService userDetailsService; + private final CustomUserDetailsService userDetailsService; + @Lazy private final UserService userService; - @Bean - public PasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - } - - @Autowired @Lazy private UserService userService; - - @Autowired @Qualifier("loginEnabled") - public boolean loginEnabledValue; + private final boolean loginEnabledValue; - @Autowired ApplicationProperties applicationProperties; + @Qualifier("runningEE") + private final boolean runningEE; - @Autowired private UserAuthenticationFilter userAuthenticationFilter; + private final ApplicationProperties applicationProperties; + private final UserAuthenticationFilter userAuthenticationFilter; + private final LoginAttemptService loginAttemptService; + private final FirstLoginFilter firstLoginFilter; + private final SessionPersistentRegistry sessionRegistry; + private final PersistentLoginRepository persistentLoginRepository; - @Autowired private LoginAttemptService loginAttemptService; + // // Only Dev test + // @Bean + // public WebSecurityCustomizer webSecurityCustomizer() { + // return (web) -> + // web.ignoring() + // .requestMatchers( + // "/css/**", "/images/**", "/js/**", "/**.svg", + // "/pdfjs-legacy/**"); + // } + public SecurityConfiguration( + PersistentLoginRepository persistentLoginRepository, + CustomUserDetailsService userDetailsService, + @Lazy UserService userService, + @Qualifier("loginEnabled") boolean loginEnabledValue, + @Qualifier("runningEE") boolean runningEE, + ApplicationProperties applicationProperties, + UserAuthenticationFilter userAuthenticationFilter, + LoginAttemptService loginAttemptService, + FirstLoginFilter firstLoginFilter, + SessionPersistentRegistry sessionRegistry) { + this.userDetailsService = userDetailsService; + this.userService = userService; + this.loginEnabledValue = loginEnabledValue; + this.runningEE = runningEE; + this.applicationProperties = applicationProperties; + this.userAuthenticationFilter = userAuthenticationFilter; + this.loginAttemptService = loginAttemptService; + this.firstLoginFilter = firstLoginFilter; + this.sessionRegistry = sessionRegistry; + this.persistentLoginRepository = persistentLoginRepository; + } - @Autowired private FirstLoginFilter firstLoginFilter; - @Autowired private SessionPersistentRegistry sessionRegistry; + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { - + if (applicationProperties.getSecurity().getCsrfDisabled() || !loginEnabledValue) { + http.csrf(csrf -> csrf.disable()); + } if (loginEnabledValue) { http.addFilterBefore( userAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); - if (applicationProperties.getSecurity().getCsrfDisabled()) { - http.csrf(csrf -> csrf.disable()); - } else { + if (!applicationProperties.getSecurity().getCsrfDisabled()) { CookieCsrfTokenRepository cookieRepo = CookieCsrfTokenRepository.withHttpOnlyFalse(); CsrfTokenRequestAttributeHandler requestHandler = @@ -106,14 +142,12 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { csrf -> csrf.ignoringRequestMatchers( request -> { - String apiKey = request.getHeader("X-API-Key"); - + String apiKey = request.getHeader("X-API-KEY"); // If there's no API key, don't ignore CSRF // (return false) if (apiKey == null || apiKey.trim().isEmpty()) { return false; } - // Validate API key using existing UserService try { Optional user = @@ -142,7 +176,6 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .maxSessionsPreventsLogin(false) .sessionRegistry(sessionRegistry) .expiredUrl("/login?logout=true")); - http.authenticationProvider(daoAuthenticationProvider()); http.requestCache(requestCache -> requestCache.requestCache(new NullRequestCache())); http.logout( @@ -151,18 +184,23 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .logoutSuccessHandler( new CustomLogoutSuccessHandler(applicationProperties)) .clearAuthentication(true) - .invalidateHttpSession(true) // Invalidate session + .invalidateHttpSession( // Invalidate session + true) .deleteCookies("JSESSIONID", "remember-me")); http.rememberMe( - rememberMeConfigurer -> - rememberMeConfigurer // Use the configurator directly + rememberMeConfigurer -> // Use the configurator directly + rememberMeConfigurer .tokenRepository(persistentTokenRepository()) - .tokenValiditySeconds(14 * 24 * 60 * 60) // 14 days - .userDetailsService( - userDetailsService) // Your existing UserDetailsService - .useSecureCookie(true) // Enable secure cookie - .rememberMeParameter("remember-me") // Form parameter name - .rememberMeCookieName("remember-me") // Cookie name + .tokenValiditySeconds( // 14 days + 14 * 24 * 60 * 60) + .userDetailsService( // Your existing UserDetailsService + userDetailsService) + .useSecureCookie( // Enable secure cookie + true) + .rememberMeParameter( // Form parameter name + "remember-me") + .rememberMeCookieName( // Cookie name + "remember-me") .alwaysRemember(false)); http.authorizeHttpRequests( authz -> @@ -170,14 +208,12 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { req -> { String uri = req.getRequestURI(); String contextPath = req.getContextPath(); - // Remove the context path from the URI String trimmedUri = uri.startsWith(contextPath) ? uri.substring( contextPath.length()) : uri; - return trimmedUri.startsWith("/login") || trimmedUri.startsWith("/oauth") || trimmedUri.startsWith("/saml2") @@ -195,7 +231,6 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .permitAll() .anyRequest() .authenticated()); - // Handle User/Password Logins if (applicationProperties.getSecurity().isUserPass()) { http.formLogin( @@ -211,27 +246,26 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .defaultSuccessUrl("/") .permitAll()); } - // Handle OAUTH2 Logins if (applicationProperties.getSecurity().isOauth2Activ()) { - http.oauth2Login( oauth2 -> oauth2.loginPage("/oauth2") + . /* This Custom handler is used to check if the OAUTH2 user trying to log in, already exists in the database. If user exists, login proceeds as usual. If user does not exist, then it is autocreated but only if 'OAUTH2AutoCreateUser' is set as true, else login fails with an error message advising the same. */ - .successHandler( + successHandler( new CustomOAuth2AuthenticationSuccessHandler( loginAttemptService, applicationProperties, userService)) .failureHandler( new CustomOAuth2AuthenticationFailureHandler()) - // Add existing Authorities from the database - .userInfoEndpoint( + . // Add existing Authorities from the database + userInfoEndpoint( userInfoEndpoint -> userInfoEndpoint .oidcUserService( @@ -243,14 +277,23 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { userAuthoritiesMapper())) .permitAll()); } - // Handle SAML - if (applicationProperties.getSecurity().isSaml2Activ() - && applicationProperties.getSystem().getEnableAlphaFunctionality()) { - http.authenticationProvider(samlAuthenticationProvider()); - http.saml2Login( - saml2 -> + if (applicationProperties.getSecurity().isSaml2Activ()) { + // && runningEE + // Configure the authentication provider + OpenSaml4AuthenticationProvider authenticationProvider = + new OpenSaml4AuthenticationProvider(); + authenticationProvider.setResponseAuthenticationConverter( + new CustomSaml2ResponseAuthenticationConverter(userService)); + http.authenticationProvider(authenticationProvider) + .saml2Login( + saml2 -> { + try { saml2.loginPage("/saml2") + .relyingPartyRegistrationRepository( + relyingPartyRegistrations()) + .authenticationManager( + new ProviderManager(authenticationProvider)) .successHandler( new CustomSaml2AuthenticationSuccessHandler( loginAttemptService, @@ -258,44 +301,32 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { userService)) .failureHandler( new CustomSaml2AuthenticationFailureHandler()) - .permitAll()) - .addFilterBefore( - userAuthenticationFilter, Saml2WebSsoAuthenticationFilter.class); + .authenticationRequestResolver( + authenticationRequestResolver( + relyingPartyRegistrations())); + } catch (Exception e) { + log.error("Error configuring SAML2 login", e); + throw new RuntimeException(e); + } + }); } } else { - if (applicationProperties.getSecurity().getCsrfDisabled()) { - http.csrf(csrf -> csrf.disable()); - } else { - CookieCsrfTokenRepository cookieRepo = - CookieCsrfTokenRepository.withHttpOnlyFalse(); - CsrfTokenRequestAttributeHandler requestHandler = - new CsrfTokenRequestAttributeHandler(); - requestHandler.setCsrfRequestAttributeName(null); - http.csrf( - csrf -> - csrf.csrfTokenRepository(cookieRepo) - .csrfTokenRequestHandler(requestHandler)); - } + // if (!applicationProperties.getSecurity().getCsrfDisabled()) { + // CookieCsrfTokenRepository cookieRepo = + // CookieCsrfTokenRepository.withHttpOnlyFalse(); + // CsrfTokenRequestAttributeHandler requestHandler = + // new CsrfTokenRequestAttributeHandler(); + // requestHandler.setCsrfRequestAttributeName(null); + // http.csrf( + // csrf -> + // csrf.csrfTokenRepository(cookieRepo) + // .csrfTokenRequestHandler(requestHandler)); + // } http.authorizeHttpRequests(authz -> authz.anyRequest().permitAll()); } - return http.build(); } - @Bean - @ConditionalOnProperty( - name = "security.saml2.enabled", - havingValue = "true", - matchIfMissing = false) - public AuthenticationProvider samlAuthenticationProvider() { - OpenSaml4AuthenticationProvider authenticationProvider = - new OpenSaml4AuthenticationProvider(); - authenticationProvider.setResponseAuthenticationConverter( - new CustomSaml2ResponseAuthenticationConverter(userService)); - return authenticationProvider; - } - - // Client Registration Repository for OAUTH2 OIDC Login @Bean @ConditionalOnProperty( value = "security.oauth2.enabled", @@ -303,17 +334,14 @@ public AuthenticationProvider samlAuthenticationProvider() { matchIfMissing = false) public ClientRegistrationRepository clientRegistrationRepository() { List registrations = new ArrayList<>(); - githubClientRegistration().ifPresent(registrations::add); oidcClientRegistration().ifPresent(registrations::add); googleClientRegistration().ifPresent(registrations::add); keycloakClientRegistration().ifPresent(registrations::add); - if (registrations.isEmpty()) { log.error("At least one OAuth2 provider must be configured"); System.exit(1); } - return new InMemoryClientRegistrationRepository(registrations); } @@ -356,7 +384,6 @@ private Optional keycloakClientRegistration() { return Optional.empty(); } KeycloakProvider keycloak = client.getKeycloak(); - return keycloak != null && keycloak.isSettingsValid() ? Optional.of( ClientRegistrations.fromIssuerLocation(keycloak.getIssuer()) @@ -371,7 +398,6 @@ private Optional keycloakClientRegistration() { } private Optional githubClientRegistration() { - OAUTH2 oauth = applicationProperties.getSecurity().getOauth2(); if (oauth == null || !oauth.getEnabled()) { return Optional.empty(); @@ -432,39 +458,97 @@ private Optional oidcClientRegistration() { havingValue = "true", matchIfMissing = false) public RelyingPartyRegistrationRepository relyingPartyRegistrations() throws Exception { - SAML2 samlConf = applicationProperties.getSecurity().getSaml2(); - + X509Certificate idpCert = CertificateUtils.readCertificate(samlConf.getidpCert()); + Saml2X509Credential verificationCredential = Saml2X509Credential.verification(idpCert); Resource privateKeyResource = samlConf.getPrivateKey(); - Resource certificateResource = samlConf.getSpCert(); - Saml2X509Credential signingCredential = new Saml2X509Credential( CertificateUtils.readPrivateKey(privateKeyResource), CertificateUtils.readCertificate(certificateResource), Saml2X509CredentialType.SIGNING); - - X509Certificate idpCert = CertificateUtils.readCertificate(samlConf.getidpCert()); - - Saml2X509Credential verificationCredential = Saml2X509Credential.verification(idpCert); - RelyingPartyRegistration rp = RelyingPartyRegistration.withRegistrationId(samlConf.getRegistrationId()) - .signingX509Credentials((c) -> c.add(signingCredential)) - .assertingPartyDetails( - (details) -> - details.entityId(samlConf.getIdpIssuer()) + .signingX509Credentials(c -> c.add(signingCredential)) + .assertingPartyMetadata( + metadata -> + metadata.entityId(samlConf.getIdpIssuer()) .singleSignOnServiceLocation( samlConf.getIdpSingleLoginUrl()) .verificationX509Credentials( - (c) -> c.add(verificationCredential)) + c -> c.add(verificationCredential)) + .singleSignOnServiceBinding( + Saml2MessageBinding.POST) .wantAuthnRequestsSigned(true)) .build(); return new InMemoryRelyingPartyRegistrationRepository(rp); } @Bean + @ConditionalOnProperty( + name = "security.saml2.enabled", + havingValue = "true", + matchIfMissing = false) + public OpenSaml4AuthenticationRequestResolver authenticationRequestResolver( + RelyingPartyRegistrationRepository relyingPartyRegistrationRepository) { + OpenSaml4AuthenticationRequestResolver resolver = + new OpenSaml4AuthenticationRequestResolver(relyingPartyRegistrationRepository); + resolver.setAuthnRequestCustomizer( + customizer -> { + log.debug("Customizing SAML Authentication request"); + AuthnRequest authnRequest = customizer.getAuthnRequest(); + log.debug("AuthnRequest ID: {}", authnRequest.getID()); + if (authnRequest.getID() == null) { + authnRequest.setID("ARQ" + UUID.randomUUID().toString()); + } + log.debug("AuthnRequest new ID after set: {}", authnRequest.getID()); + log.debug("AuthnRequest IssueInstant: {}", authnRequest.getIssueInstant()); + log.debug( + "AuthnRequest Issuer: {}", + authnRequest.getIssuer() != null + ? authnRequest.getIssuer().getValue() + : "null"); + HttpServletRequest request = customizer.getRequest(); + // Log HTTP request details + log.debug("HTTP Request Method: {}", request.getMethod()); + log.debug("Request URI: {}", request.getRequestURI()); + log.debug("Request URL: {}", request.getRequestURL().toString()); + log.debug("Query String: {}", request.getQueryString()); + log.debug("Remote Address: {}", request.getRemoteAddr()); + // Log headers + Collections.list(request.getHeaderNames()) + .forEach( + headerName -> { + log.debug( + "Header - {}: {}", + headerName, + request.getHeader(headerName)); + }); + // Log SAML specific parameters + log.debug("SAML Request Parameters:"); + log.debug("SAMLRequest: {}", request.getParameter("SAMLRequest")); + log.debug("RelayState: {}", request.getParameter("RelayState")); + // Log session debugrmation if exists + if (request.getSession(false) != null) { + log.debug("Session ID: {}", request.getSession().getId()); + } + // Log any assertions consumer service details if present + if (authnRequest.getAssertionConsumerServiceURL() != null) { + log.debug( + "AssertionConsumerServiceURL: {}", + authnRequest.getAssertionConsumerServiceURL()); + } + // Log NameID policy if present + if (authnRequest.getNameIDPolicy() != null) { + log.debug( + "NameIDPolicy Format: {}", + authnRequest.getNameIDPolicy().getFormat()); + } + }); + return resolver; + } + public DaoAuthenticationProvider daoAuthenticationProvider() { DaoAuthenticationProvider provider = new DaoAuthenticationProvider(); provider.setUserDetailsService(userDetailsService); @@ -484,12 +568,10 @@ public DaoAuthenticationProvider daoAuthenticationProvider() { GrantedAuthoritiesMapper userAuthoritiesMapper() { return (authorities) -> { Set mappedAuthorities = new HashSet<>(); - authorities.forEach( authority -> { // Add existing OAUTH2 Authorities mappedAuthorities.add(new SimpleGrantedAuthority(authority.getAuthority())); - // Add Authorities from database for existing user, if user is present. if (authority instanceof OAuth2UserAuthority oauth2Auth) { String useAsUsername = @@ -516,27 +598,18 @@ GrantedAuthoritiesMapper userAuthoritiesMapper() { @Bean public IPRateLimitingFilter rateLimitingFilter() { - int maxRequestsPerIp = 1000000; // Example limit TODO add config level + // Example limit TODO add config level + int maxRequestsPerIp = 1000000; return new IPRateLimitingFilter(maxRequestsPerIp, maxRequestsPerIp); } @Bean public PersistentTokenRepository persistentTokenRepository() { - return new JPATokenRepositoryImpl(); + return new JPATokenRepositoryImpl(persistentLoginRepository); } @Bean public boolean activSecurity() { return true; } - - // // Only Dev test - // @Bean - // public WebSecurityCustomizer webSecurityCustomizer() { - // return (web) -> - // web.ignoring() - // .requestMatchers( - // "/css/**", "/images/**", "/js/**", "/**.svg", - // "/pdfjs-legacy/**"); - // } } diff --git a/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java b/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java index 4b62f6d299..be425590e8 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserAuthenticationFilter.java @@ -22,22 +22,31 @@ import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.security.saml2.CustomSaml2AuthenticatedPrincipal; import stirling.software.SPDF.config.security.session.SessionPersistentRegistry; import stirling.software.SPDF.model.ApiKeyAuthenticationToken; +import stirling.software.SPDF.model.ApplicationProperties; +import stirling.software.SPDF.model.ApplicationProperties.Security; +import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2; +import stirling.software.SPDF.model.ApplicationProperties.Security.SAML2; import stirling.software.SPDF.model.User; +@Slf4j @Component public class UserAuthenticationFilter extends OncePerRequestFilter { + private final ApplicationProperties applicationProperties; private final UserService userService; private final SessionPersistentRegistry sessionPersistentRegistry; private final boolean loginEnabledValue; public UserAuthenticationFilter( + @Lazy ApplicationProperties applicationProperties, @Lazy UserService userService, SessionPersistentRegistry sessionPersistentRegistry, @Qualifier("loginEnabled") boolean loginEnabledValue) { + this.applicationProperties = applicationProperties; this.userService = userService; this.sessionPersistentRegistry = sessionPersistentRegistry; this.loginEnabledValue = loginEnabledValue; @@ -71,7 +80,7 @@ protected void doFilterInternal( // Check for API key in the request headers if no authentication exists if (authentication == null || !authentication.isAuthenticated()) { - String apiKey = request.getHeader("X-API-Key"); + String apiKey = request.getHeader("X-API-KEY"); if (apiKey != null && !apiKey.trim().isEmpty()) { try { // Use API key to authenticate. This requires you to have an authentication @@ -121,33 +130,67 @@ protected void doFilterInternal( // Check if the authenticated user is disabled and invalidate their session if so if (authentication != null && authentication.isAuthenticated()) { + + Security securityProp = applicationProperties.getSecurity(); + LoginMethod loginMethod = LoginMethod.UNKNOWN; + + boolean blockRegistration = false; + + // Extract username and determine the login method Object principal = authentication.getPrincipal(); String username = null; if (principal instanceof UserDetails) { username = ((UserDetails) principal).getUsername(); + loginMethod = LoginMethod.USERDETAILS; } else if (principal instanceof OAuth2User) { username = ((OAuth2User) principal).getName(); + loginMethod = LoginMethod.OAUTH2USER; + OAUTH2 oAuth = securityProp.getOauth2(); + blockRegistration = oAuth != null && oAuth.getBlockRegistration(); } else if (principal instanceof CustomSaml2AuthenticatedPrincipal) { username = ((CustomSaml2AuthenticatedPrincipal) principal).getName(); + loginMethod = LoginMethod.SAML2USER; + SAML2 saml2 = securityProp.getSaml2(); + blockRegistration = saml2 != null && saml2.getBlockRegistration(); } else if (principal instanceof String) { username = (String) principal; + loginMethod = LoginMethod.STRINGUSER; } + // Retrieve all active sessions for the user List sessionsInformations = sessionPersistentRegistry.getAllSessions(principal, false); + // Check if the user exists, is disabled, or needs session invalidation if (username != null) { + log.debug("Validating user: {}", username); boolean isUserExists = userService.usernameExistsIgnoreCase(username); boolean isUserDisabled = userService.isUserDisabled(username); + boolean notSsoLogin = + !loginMethod.equals(LoginMethod.OAUTH2USER) + && !loginMethod.equals(LoginMethod.SAML2USER); + + // Block user registration if not allowed by configuration + if (blockRegistration && !isUserExists) { + log.warn("Blocked registration for OAuth2/SAML user: {}", username); + response.sendRedirect( + request.getContextPath() + "/logout?oauth2_admin_blocked_user=true"); + return; + } + + // Expire sessions and logout if the user does not exist or is disabled if (!isUserExists || isUserDisabled) { + log.info( + "Invalidating session for disabled or non-existent user: {}", username); for (SessionInformation sessionsInformation : sessionsInformations) { sessionsInformation.expireNow(); sessionPersistentRegistry.expireSession(sessionsInformation.getSessionId()); } } - if (!isUserExists) { + // Redirect to logout if credentials are invalid + if (!isUserExists && notSsoLogin) { response.sendRedirect(request.getContextPath() + "/logout?badcredentials=true"); return; } @@ -161,6 +204,25 @@ protected void doFilterInternal( filterChain.doFilter(request, response); } + private enum LoginMethod { + USERDETAILS("UserDetails"), + OAUTH2USER("OAuth2User"), + STRINGUSER("StringUser"), + UNKNOWN("Unknown"), + SAML2USER("Saml2User"); + + private String method; + + LoginMethod(String method) { + this.method = method; + } + + @Override + public String toString() { + return method; + } + } + @Override protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException { String uri = request.getRequestURI(); diff --git a/src/main/java/stirling/software/SPDF/config/security/UserBasedRateLimitingFilter.java b/src/main/java/stirling/software/SPDF/config/security/UserBasedRateLimitingFilter.java index bd7e39725d..13573349fe 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserBasedRateLimitingFilter.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserBasedRateLimitingFilter.java @@ -5,14 +5,12 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; @@ -31,13 +29,15 @@ public class UserBasedRateLimitingFilter extends OncePerRequestFilter { private final Map apiBuckets = new ConcurrentHashMap<>(); - private final Map webBuckets = new ConcurrentHashMap<>(); - @Autowired private UserDetailsService userDetailsService; + private final Map webBuckets = new ConcurrentHashMap<>(); - @Autowired @Qualifier("rateLimit") - public boolean rateLimit; + private final boolean rateLimit; + + public UserBasedRateLimitingFilter(@Qualifier("rateLimit") boolean rateLimit) { + this.rateLimit = rateLimit; + } @Override protected void doFilterInternal( @@ -48,21 +48,18 @@ protected void doFilterInternal( filterChain.doFilter(request, response); return; } - String method = request.getMethod(); if (!"POST".equalsIgnoreCase(method)) { // If the request is not a POST, just pass it through without rate limiting filterChain.doFilter(request, response); return; } - String identifier = null; - // Check for API key in the request headers - String apiKey = request.getHeader("X-API-Key"); + String apiKey = request.getHeader("X-API-KEY"); if (apiKey != null && !apiKey.trim().isEmpty()) { - identifier = - "API_KEY_" + apiKey; // Prefix to distinguish between API keys and usernames + identifier = // Prefix to distinguish between API keys and usernames + "API_KEY_" + apiKey; } else { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null && authentication.isAuthenticated()) { @@ -70,16 +67,13 @@ protected void doFilterInternal( identifier = userDetails.getUsername(); } } - // If neither API key nor an authenticated user is present, use IP address if (identifier == null) { identifier = request.getRemoteAddr(); } - Role userRole = getRoleFromAuthentication(SecurityContextHolder.getContext().getAuthentication()); - - if (request.getHeader("X-API-Key") != null) { + if (request.getHeader("X-API-KEY") != null) { // It's an API call processRequest( userRole.getApiCallsPerDay(), @@ -123,7 +117,6 @@ private void processRequest( throws IOException, ServletException { Bucket userBucket = buckets.computeIfAbsent(identifier, k -> createUserBucket(limitPerDay)); ConsumptionProbe probe = userBucket.tryConsumeAndReturnRemaining(1); - if (probe.isConsumed()) { response.setHeader( "X-Rate-Limit-Remaining", diff --git a/src/main/java/stirling/software/SPDF/config/security/UserService.java b/src/main/java/stirling/software/SPDF/config/security/UserService.java index 6b1457dc38..5942f5fc4d 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserService.java @@ -4,7 +4,6 @@ import java.util.*; import java.util.stream.Collectors; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -18,17 +17,14 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.interfaces.DatabaseBackupInterface; import stirling.software.SPDF.config.security.saml2.CustomSaml2AuthenticatedPrincipal; import stirling.software.SPDF.config.security.session.SessionPersistentRegistry; import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface; -import stirling.software.SPDF.model.ApplicationProperties; -import stirling.software.SPDF.model.AuthenticationType; -import stirling.software.SPDF.model.Authority; -import stirling.software.SPDF.model.Role; -import stirling.software.SPDF.model.User; +import stirling.software.SPDF.model.*; import stirling.software.SPDF.repository.AuthorityRepository; import stirling.software.SPDF.repository.UserRepository; @@ -36,22 +32,50 @@ @Slf4j public class UserService implements UserServiceInterface { - @Autowired private UserRepository userRepository; + private final UserRepository userRepository; - @Autowired private AuthorityRepository authorityRepository; + private final AuthorityRepository authorityRepository; - @Autowired private PasswordEncoder passwordEncoder; + private final PasswordEncoder passwordEncoder; - @Autowired private MessageSource messageSource; + private final MessageSource messageSource; - @Autowired private SessionPersistentRegistry sessionRegistry; + private final SessionPersistentRegistry sessionRegistry; - @Autowired DatabaseBackupInterface databaseBackupHelper; + private final DatabaseBackupInterface databaseBackupHelper; - @Autowired ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; + + public UserService( + UserRepository userRepository, + AuthorityRepository authorityRepository, + PasswordEncoder passwordEncoder, + MessageSource messageSource, + SessionPersistentRegistry sessionRegistry, + DatabaseBackupInterface databaseBackupHelper, + ApplicationProperties applicationProperties) { + this.userRepository = userRepository; + this.authorityRepository = authorityRepository; + this.passwordEncoder = passwordEncoder; + this.messageSource = messageSource; + this.sessionRegistry = sessionRegistry; + this.databaseBackupHelper = databaseBackupHelper; + this.applicationProperties = applicationProperties; + } + + @Transactional + public void migrateOauth2ToSSO() { + userRepository + .findByAuthenticationTypeIgnoreCase("OAUTH2") + .forEach( + user -> { + user.setAuthenticationType(AuthenticationType.SSO); + userRepository.save(user); + }); + } // Handle OAUTH2 login and user auto creation. - public boolean processOAuth2PostLogin(String username, boolean autoCreateUser) + public boolean processSSOPostLogin(String username, boolean autoCreateUser) throws IllegalArgumentException, IOException { if (!isUsernameValid(username)) { return false; @@ -61,7 +85,7 @@ public boolean processOAuth2PostLogin(String username, boolean autoCreateUser) return true; } if (autoCreateUser) { - saveUser(username, AuthenticationType.OAUTH2); + saveUser(username, AuthenticationType.SSO); return true; } return false; @@ -72,13 +96,11 @@ public Authentication getAuthentication(String apiKey) { if (!user.isPresent()) { throw new UsernameNotFoundException("API key is not valid"); } - // Convert the user into an Authentication object - return new UsernamePasswordAuthenticationToken( - user, // principal (typically the user) - null, // credentials (we don't expose the password or API key here) - getAuthorities(user.get()) // user's authorities (roles/permissions) - ); + return new UsernamePasswordAuthenticationToken( // principal (typically the user) + user, // credentials (we don't expose the password or API key here) + null, // user's authorities (roles/permissions) + getAuthorities(user.get())); } private Collection getAuthorities(User user) { @@ -92,7 +114,8 @@ private String generateApiKey() { String apiKey; do { apiKey = UUID.randomUUID().toString(); - } while (userRepository.findByApiKey(apiKey).isPresent()); // Ensure uniqueness + } while ( // Ensure uniqueness + userRepository.findByApiKey(apiKey).isPresent()); return apiKey; } @@ -106,7 +129,8 @@ public User addApiKeyToUser(String username) { } public User refreshApiKeyForUser(String username) { - return addApiKeyToUser(username); // reuse the add API key method for refreshing + // reuse the add API key method for refreshing + return addApiKeyToUser(username); } public String getApiKeyForUser(String username) { @@ -126,11 +150,11 @@ public Optional getUserByApiKey(String apiKey) { public Optional loadUserByApiKey(String apiKey) { Optional user = userRepository.findByApiKey(apiKey); - if (user.isPresent()) { return user; } - return null; // or throw an exception + // or throw an exception + return null; } public boolean validateApiKeyForUser(String username, String apiKey) { @@ -228,14 +252,12 @@ public void updateUserSettings(String username, Map updates) if (userOpt.isPresent()) { User user = userOpt.get(); Map settingsMap = user.getSettings(); - if (settingsMap == null) { settingsMap = new HashMap<>(); } settingsMap.clear(); settingsMap.putAll(updates); user.setSettings(settingsMap); - userRepository.save(user); databaseBackupHelper.exportDatabase(); } @@ -304,12 +326,9 @@ public boolean isUsernameValid(String username) { boolean isValidEmail = username.matches( "^(?=.{1,64}@)[A-Za-z0-9]+(\\.[A-Za-z0-9_+.-]+)*@[^-][A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})$"); - List notAllowedUserList = new ArrayList<>(); notAllowedUserList.add("ALL_USERS".toLowerCase()); - boolean notAllowedUser = notAllowedUserList.contains(username.toLowerCase()); - return (isValidSimpleUsername || isValidEmail) && !notAllowedUser; } @@ -362,7 +381,6 @@ public void invalidateUserSessions(String username) { public String getCurrentUsername() { Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); - if (principal instanceof UserDetails) { return ((UserDetails) principal).getUsername(); } else if (principal instanceof OAuth2User) { @@ -378,6 +396,36 @@ public String getCurrentUsername() { } } + @Transactional + public void syncCustomApiUser(String customApiKey) throws IOException { + if (customApiKey == null || customApiKey.trim().length() == 0) { + return; + } + String username = "CUSTOM_API_USER"; + Optional existingUser = findByUsernameIgnoreCase(username); + if (!existingUser.isPresent()) { + // Create new user with API role + User user = new User(); + user.setUsername(username); + user.setPassword(UUID.randomUUID().toString()); + user.setEnabled(true); + user.setFirstLogin(false); + user.setAuthenticationType(AuthenticationType.WEB); + user.setApiKey(customApiKey); + user.addAuthority(new Authority(Role.INTERNAL_API_USER.getRoleId(), user)); + userRepository.save(user); + databaseBackupHelper.exportDatabase(); + } else { + // Update API key if it has changed + User user = existingUser.get(); + if (!customApiKey.equals(user.getApiKey())) { + user.setApiKey(customApiKey); + userRepository.save(user); + databaseBackupHelper.exportDatabase(); + } + } + } + @Override public long getTotalUsersCount() { return userRepository.count(); diff --git a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseBackupHelper.java b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseBackupHelper.java index 85cef66f47..5db05bed71 100644 --- a/src/main/java/stirling/software/SPDF/config/security/database/DatabaseBackupHelper.java +++ b/src/main/java/stirling/software/SPDF/config/security/database/DatabaseBackupHelper.java @@ -6,12 +6,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.BasicFileAttributes; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; +import java.sql.*; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; diff --git a/src/main/java/stirling/software/SPDF/config/security/database/ScheduledTasks.java b/src/main/java/stirling/software/SPDF/config/security/database/ScheduledTasks.java index 2ddc47e12a..ad96573fc4 100644 --- a/src/main/java/stirling/software/SPDF/config/security/database/ScheduledTasks.java +++ b/src/main/java/stirling/software/SPDF/config/security/database/ScheduledTasks.java @@ -2,14 +2,17 @@ import java.io.IOException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class ScheduledTasks { - @Autowired private DatabaseBackupHelper databaseBackupService; + private final DatabaseBackupHelper databaseBackupService; + + public ScheduledTasks(DatabaseBackupHelper databaseBackupService) { + this.databaseBackupService = databaseBackupService; + } @Scheduled(cron = "0 0 0 * * ?") public void performBackup() throws IOException { diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java index 36c4cfb366..9f3f6e3598 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java @@ -82,8 +82,7 @@ public void onAuthenticationSuccess( } if (userService.usernameExistsIgnoreCase(username) && userService.hasPassword(username) - && !userService.isAuthenticationTypeByUsername( - username, AuthenticationType.OAUTH2) + && !userService.isAuthenticationTypeByUsername(username, AuthenticationType.SSO) && oAuth.getAutoCreateUser()) { response.sendRedirect(contextPath + "/logout?oauth2AuthenticationErrorWeb=true"); return; @@ -95,7 +94,7 @@ public void onAuthenticationSuccess( return; } if (principal instanceof OAuth2User) { - userService.processOAuth2PostLogin(username, oAuth.getAutoCreateUser()); + userService.processSSOPostLogin(username, oAuth.getAutoCreateUser()); } response.sendRedirect(contextPath + "/"); return; diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java index ebe734b580..5b2fb99427 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java @@ -2,8 +2,6 @@ import java.util.Optional; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.security.authentication.LockedException; import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest; import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService; @@ -13,6 +11,7 @@ import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser; import org.springframework.security.oauth2.core.oidc.user.OidcUser; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.security.LoginAttemptService; import stirling.software.SPDF.config.security.UserService; import stirling.software.SPDF.model.ApplicationProperties; @@ -20,6 +19,7 @@ import stirling.software.SPDF.model.ApplicationProperties.Security.OAUTH2.Client; import stirling.software.SPDF.model.User; +@Slf4j public class CustomOAuth2UserService implements OAuth2UserService { private final OidcUserService delegate = new OidcUserService(); @@ -30,8 +30,6 @@ public class CustomOAuth2UserService implements OAuth2UserService> extractAttributes(Assertion assertion) { + Map> attributes = new HashMap<>(); + + for (AttributeStatement attributeStatement : assertion.getAttributeStatements()) { + for (Attribute attribute : attributeStatement.getAttributes()) { + String attributeName = attribute.getName(); + List values = new ArrayList<>(); + + for (XMLObject xmlObject : attribute.getAttributeValues()) { + // Get the text content directly + String value = xmlObject.getDOM().getTextContent(); + if (value != null && !value.trim().isEmpty()) { + values.add(value); + } + } + + if (!values.isEmpty()) { + // Store with both full URI and last part of the URI + attributes.put(attributeName, values); + String shortName = attributeName.substring(attributeName.lastIndexOf('/') + 1); + attributes.put(shortName, values); + } + } + } + + return attributes; + } + @Override public Saml2Authentication convert(ResponseToken responseToken) { - // Extract the assertion from the response Assertion assertion = responseToken.getResponse().getAssertions().get(0); + Map> attributes = extractAttributes(assertion); + + // Debug log with actual values + log.debug("Extracted SAML Attributes: " + attributes); - // Extract the NameID - String nameId = assertion.getSubject().getNameID().getValue(); + // Try to get username/identifier in order of preference + String userIdentifier = null; + if (hasAttribute(attributes, "username")) { + userIdentifier = getFirstAttributeValue(attributes, "username"); + } else if (hasAttribute(attributes, "emailaddress")) { + userIdentifier = getFirstAttributeValue(attributes, "emailaddress"); + } else if (hasAttribute(attributes, "name")) { + userIdentifier = getFirstAttributeValue(attributes, "name"); + } else if (hasAttribute(attributes, "upn")) { + userIdentifier = getFirstAttributeValue(attributes, "upn"); + } else if (hasAttribute(attributes, "uid")) { + userIdentifier = getFirstAttributeValue(attributes, "uid"); + } else { + userIdentifier = assertion.getSubject().getNameID().getValue(); + } - Optional userOpt = userService.findByUsernameIgnoreCase(nameId); + // Rest of your existing code... + Optional userOpt = userService.findByUsernameIgnoreCase(userIdentifier); SimpleGrantedAuthority simpleGrantedAuthority = new SimpleGrantedAuthority("ROLE_USER"); if (userOpt.isPresent()) { User user = userOpt.get(); @@ -48,39 +91,27 @@ public Saml2Authentication convert(ResponseToken responseToken) { } } - // Extract the SessionIndexes List sessionIndexes = new ArrayList<>(); for (AuthnStatement authnStatement : assertion.getAuthnStatements()) { sessionIndexes.add(authnStatement.getSessionIndex()); } - // Extract the Attributes - Map> attributes = extractAttributes(assertion); - - // Create the custom principal CustomSaml2AuthenticatedPrincipal principal = - new CustomSaml2AuthenticatedPrincipal(nameId, attributes, nameId, sessionIndexes); + new CustomSaml2AuthenticatedPrincipal( + userIdentifier, attributes, userIdentifier, sessionIndexes); - // Create the Saml2Authentication return new Saml2Authentication( principal, responseToken.getToken().getSaml2Response(), Collections.singletonList(simpleGrantedAuthority)); } - private Map> extractAttributes(Assertion assertion) { - Map> attributes = new HashMap<>(); - for (AttributeStatement attributeStatement : assertion.getAttributeStatements()) { - for (Attribute attribute : attributeStatement.getAttributes()) { - String attributeName = attribute.getName(); - List values = new ArrayList<>(); - for (XMLObject xmlObject : attribute.getAttributeValues()) { - log.info("BOOL: " + ((XSBoolean) xmlObject).getValue()); - values.add(((XSString) xmlObject).getValue()); - } - attributes.put(attributeName, values); - } - } - return attributes; + private boolean hasAttribute(Map> attributes, String name) { + return attributes.containsKey(name) && !attributes.get(name).isEmpty(); + } + + private String getFirstAttributeValue(Map> attributes, String name) { + List values = attributes.get(name); + return values != null && !values.isEmpty() ? values.get(0).toString() : null; } } diff --git a/src/main/java/stirling/software/SPDF/config/security/session/SessionPersistentRegistry.java b/src/main/java/stirling/software/SPDF/config/security/session/SessionPersistentRegistry.java index 045b6375f8..4c931e0148 100644 --- a/src/main/java/stirling/software/SPDF/config/security/session/SessionPersistentRegistry.java +++ b/src/main/java/stirling/software/SPDF/config/security/session/SessionPersistentRegistry.java @@ -1,12 +1,7 @@ package stirling.software.SPDF.config.security.session; import java.time.Duration; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.List; -import java.util.Optional; +import java.util.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.session.SessionInformation; diff --git a/src/main/java/stirling/software/SPDF/config/security/session/SessionScheduled.java b/src/main/java/stirling/software/SPDF/config/security/session/SessionScheduled.java index aa920f84af..9710316e3c 100644 --- a/src/main/java/stirling/software/SPDF/config/security/session/SessionScheduled.java +++ b/src/main/java/stirling/software/SPDF/config/security/session/SessionScheduled.java @@ -5,19 +5,22 @@ import java.util.Date; import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.security.core.session.SessionInformation; import org.springframework.stereotype.Component; @Component public class SessionScheduled { - @Autowired private SessionPersistentRegistry sessionPersistentRegistry; + + private final SessionPersistentRegistry sessionPersistentRegistry; + + public SessionScheduled(SessionPersistentRegistry sessionPersistentRegistry) { + this.sessionPersistentRegistry = sessionPersistentRegistry; + } @Scheduled(cron = "0 0/5 * * * ?") public void expireSessions() { Instant now = Instant.now(); - for (Object principal : sessionPersistentRegistry.getAllPrincipals()) { List sessionInformations = sessionPersistentRegistry.getAllSessions(principal, false); diff --git a/src/main/java/stirling/software/SPDF/controller/api/AdditionalLanguageJsController.java b/src/main/java/stirling/software/SPDF/controller/api/AdditionalLanguageJsController.java index 959e9ac45f..41e173c781 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/AdditionalLanguageJsController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/AdditionalLanguageJsController.java @@ -4,7 +4,6 @@ import java.io.PrintWriter; import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -18,35 +17,35 @@ @RequestMapping("/js") public class AdditionalLanguageJsController { - @Autowired private LanguageService languageService; + private final LanguageService languageService; + + public AdditionalLanguageJsController(LanguageService languageService) { + this.languageService = languageService; + } @Hidden @GetMapping(value = "/additionalLanguageCode.js", produces = "application/javascript") public void generateAdditionalLanguageJs(HttpServletResponse response) throws IOException { List supportedLanguages = languageService.getSupportedLanguages(); - response.setContentType("application/javascript"); PrintWriter writer = response.getWriter(); - // Erstelle das JavaScript dynamisch writer.println("const supportedLanguages = " + toJsonArray(supportedLanguages) + ";"); - // Generiere die `getDetailedLanguageCode`-Funktion writer.println( """ - function getDetailedLanguageCode() { - const userLanguages = navigator.languages ? navigator.languages : [navigator.language]; - for (let lang of userLanguages) { - let matchedLang = supportedLanguages.find(supportedLang => supportedLang.startsWith(lang.replace('-', '_'))); - if (matchedLang) { - return matchedLang; + function getDetailedLanguageCode() { + const userLanguages = navigator.languages ? navigator.languages : [navigator.language]; + for (let lang of userLanguages) { + let matchedLang = supportedLanguages.find(supportedLang => supportedLang.startsWith(lang.replace('-', '_'))); + if (matchedLang) { + return matchedLang; + } + } + // Fallback + return "en_GB"; } - } - // Fallback - return "en_GB"; - } - """); - + """); writer.flush(); } diff --git a/src/main/java/stirling/software/SPDF/controller/api/CropController.java b/src/main/java/stirling/software/SPDF/controller/api/CropController.java index d386d1ce57..776c85b06f 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/CropController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/CropController.java @@ -11,8 +11,6 @@ import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -33,8 +31,6 @@ @Tag(name = "General", description = "General APIs") public class CropController { - private static final Logger logger = LoggerFactory.getLogger(CropController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; private final PostHogService postHogService; diff --git a/src/main/java/stirling/software/SPDF/controller/api/DatabaseController.java b/src/main/java/stirling/software/SPDF/controller/api/DatabaseController.java index 2f7e207bcf..35e2bb6032 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/DatabaseController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/DatabaseController.java @@ -8,23 +8,19 @@ import java.nio.file.StandardCopyOption; import org.eclipse.jetty.http.HttpStatus; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; @@ -34,19 +30,25 @@ @Controller @RequestMapping("/api/v1/database") @PreAuthorize("hasRole('ROLE_ADMIN')") -@Tag(name = "Database", description = "Database APIs") +@Tag(name = "Database", description = "Database APIs for backup, import, and management") public class DatabaseController { - @Autowired DatabaseBackupHelper databaseBackupHelper; + private final DatabaseBackupHelper databaseBackupHelper; + + public DatabaseController(DatabaseBackupHelper databaseBackupHelper) { + this.databaseBackupHelper = databaseBackupHelper; + } - @Hidden - @PostMapping(consumes = "multipart/form-data", value = "import-database") @Operation( - summary = "Import database backup", - description = "This endpoint imports a database backup from a SQL file.") + summary = "Import a database backup file", + description = "Uploads and imports a database backup SQL file.") + @PostMapping(consumes = "multipart/form-data", value = "import-database") public String importDatabase( - @RequestParam("fileInput") MultipartFile file, RedirectAttributes redirectAttributes) - throws IllegalArgumentException, IOException { + @Parameter(description = "SQL file to import", required = true) + @RequestParam("fileInput") + MultipartFile file, + RedirectAttributes redirectAttributes) + throws IOException { if (file == null || file.isEmpty()) { redirectAttributes.addAttribute("error", "fileNullOrEmpty"); return "redirect:/database"; @@ -69,13 +71,17 @@ public String importDatabase( } @Hidden + @Operation( + summary = "Import database backup by filename", + description = "Imports a database backup file from the server using its file name.") @GetMapping("/import-database-file/{fileName}") - public String importDatabaseFromBackupUI(@PathVariable String fileName) - throws IllegalArgumentException, IOException { + public String importDatabaseFromBackupUI( + @Parameter(description = "Name of the file to import", required = true) @PathVariable + String fileName) + throws IOException { if (fileName == null || fileName.isEmpty()) { return "redirect:/database?error=fileNullOrEmpty"; } - // Check if the file exists in the backup list boolean fileExists = databaseBackupHelper.getBackupList().stream() @@ -93,12 +99,13 @@ public String importDatabaseFromBackupUI(@PathVariable String fileName) } @Hidden - @GetMapping("/delete/{fileName}") @Operation( summary = "Delete a database backup file", - description = - "This endpoint deletes a database backup file with the specified file name.") - public String deleteFile(@PathVariable String fileName) { + description = "Deletes a specified database backup file from the server.") + @GetMapping("/delete/{fileName}") + public String deleteFile( + @Parameter(description = "Name of the file to delete", required = true) @PathVariable + String fileName) { if (fileName == null || fileName.isEmpty()) { throw new IllegalArgumentException("File must not be null or empty"); } @@ -117,12 +124,13 @@ public String deleteFile(@PathVariable String fileName) { } @Hidden - @GetMapping("/download/{fileName}") @Operation( summary = "Download a database backup file", - description = - "This endpoint downloads a database backup file with the specified file name.") - public ResponseEntity downloadFile(@PathVariable String fileName) { + description = "Downloads the specified database backup file from the server.") + @GetMapping("/download/{fileName}") + public ResponseEntity downloadFile( + @Parameter(description = "Name of the file to download", required = true) @PathVariable + String fileName) { if (fileName == null || fileName.isEmpty()) { throw new IllegalArgumentException("File must not be null or empty"); } @@ -141,4 +149,22 @@ public ResponseEntity downloadFile(@PathVariable String fileName) { .build(); } } + + @Operation( + summary = "Create a database backup", + description = + "This endpoint triggers the creation of a database backup and redirects to the" + + " database management page.") + @GetMapping("/createDatabaseBackup") + public String createDatabaseBackup() { + try { + log.info("Starting database backup creation..."); + databaseBackupHelper.exportDatabase(); + log.info("Database backup successfully created."); + } catch (IOException e) { + log.error("Error creating database backup: {}", e.getMessage(), e); + return "redirect:/database?error=" + e.getMessage(); + } + return "redirect:/database?infoMessage=backupCreated"; + } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/MergeController.java b/src/main/java/stirling/software/SPDF/controller/api/MergeController.java index 9a60fcf6e9..b5d2cdc62f 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/MergeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/MergeController.java @@ -20,8 +20,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDField; import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -33,18 +31,18 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.general.MergePdfsRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.GeneralUtils; import stirling.software.SPDF.utils.WebResponseUtils; @RestController +@Slf4j @RequestMapping("/api/v1/general") @Tag(name = "General", description = "General APIs") public class MergeController { - private static final Logger logger = LoggerFactory.getLogger(MergeController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -184,7 +182,7 @@ public ResponseEntity mergePdfs(@ModelAttribute MergePdfsRequest form) baos.toByteArray(), mergedFileName); // Return the modified PDF } catch (Exception ex) { - logger.error("Error in merge pdf process", ex); + log.error("Error in merge pdf process", ex); throw ex; } finally { for (File file : filesToDelete) { diff --git a/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java b/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java index fbfec73131..1fb4d5d4df 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java @@ -1,6 +1,6 @@ package stirling.software.SPDF.controller.api; -import java.awt.Color; +import java.awt.*; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -12,8 +12,6 @@ import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.apache.pdfbox.util.Matrix; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -35,8 +33,6 @@ @Tag(name = "General", description = "General APIs") public class MultiPageLayoutController { - private static final Logger logger = LoggerFactory.getLogger(MultiPageLayoutController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired diff --git a/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java b/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java index 92bd3bace8..fdcb55a240 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java @@ -6,7 +6,10 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java b/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java index 8eb08dbf2a..77601b5d09 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java @@ -8,8 +8,6 @@ import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -22,6 +20,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.SortTypes; import stirling.software.SPDF.model.api.PDFWithPageNums; import stirling.software.SPDF.model.api.general.RearrangePagesRequest; @@ -31,11 +30,10 @@ @RestController @RequestMapping("/api/v1/general") +@Slf4j @Tag(name = "General", description = "General APIs") public class RearrangePagesPDFController { - private static final Logger logger = LoggerFactory.getLogger(RearrangePagesPDFController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -202,7 +200,7 @@ private List processSortTypes(String sortTypes, int totalPages) { throw new IllegalArgumentException("Unsupported custom mode"); } } catch (IllegalArgumentException e) { - logger.error("Unsupported custom mode", e); + log.error("Unsupported custom mode", e); return null; } } @@ -230,8 +228,8 @@ public ResponseEntity rearrangePages(@ModelAttribute RearrangePagesReque } else { newPageOrder = GeneralUtils.parsePageList(pageOrderArr, totalPages, false); } - logger.info("newPageOrder = " + newPageOrder); - logger.info("totalPages = " + totalPages); + log.info("newPageOrder = " + newPageOrder); + log.info("totalPages = " + totalPages); // Create a new list to hold the pages in the new order List newPages = new ArrayList<>(); for (int i = 0; i < newPageOrder.size(); i++) { @@ -254,7 +252,7 @@ public ResponseEntity rearrangePages(@ModelAttribute RearrangePagesReque .replaceFirst("[.][^.]+$", "") + "_rearranged.pdf"); } catch (IOException e) { - logger.error("Failed rearranging documents", e); + log.error("Failed rearranging documents", e); return null; } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/RotationController.java b/src/main/java/stirling/software/SPDF/controller/api/RotationController.java index 1c416a071e..9ffc61b656 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/RotationController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/RotationController.java @@ -5,8 +5,6 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageTree; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -28,8 +26,6 @@ @Tag(name = "General", description = "General APIs") public class RotationController { - private static final Logger logger = LoggerFactory.getLogger(RotationController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired diff --git a/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java b/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java index 19e135021b..c098a00598 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java @@ -13,8 +13,6 @@ import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.apache.pdfbox.util.Matrix; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -36,8 +34,6 @@ @Tag(name = "General", description = "General APIs") public class ScalePagesController { - private static final Logger logger = LoggerFactory.getLogger(ScalePagesController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired diff --git a/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java b/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java index 034c6e23fe..ce97c0bc05 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java @@ -2,11 +2,12 @@ import java.io.IOException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.tags.Tag; @@ -20,7 +21,11 @@ @Hidden public class SettingsController { - @Autowired ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; + + public SettingsController(ApplicationProperties applicationProperties) { + this.applicationProperties = applicationProperties; + } @PostMapping("/update-enable-analytics") @Hidden @@ -32,7 +37,6 @@ public ResponseEntity updateApiKey(@RequestBody Boolean enabled) throws } GeneralUtils.saveKeyToConfig("system.enableAnalytics", String.valueOf(enabled), false); applicationProperties.getSystem().setEnableAnalytics(String.valueOf(enabled)); - return ResponseEntity.ok("Updated"); } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java index e27df10337..ef6dc9a324 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java @@ -13,8 +13,6 @@ import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -28,16 +26,17 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.PDFWithPageNums; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.WebResponseUtils; @RestController @RequestMapping("/api/v1/general") +@Slf4j @Tag(name = "General", description = "General APIs") public class SplitPDFController { - private static final Logger logger = LoggerFactory.getLogger(SplitPDFController.class); private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -52,84 +51,114 @@ public SplitPDFController(CustomPDDocumentFactory pdfDocumentFactory) { "This endpoint splits a given PDF file into separate documents based on the specified page numbers or ranges. Users can specify pages using individual numbers, ranges, or 'all' for every page. Input:PDF Output:PDF Type:SIMO") public ResponseEntity splitPdf(@ModelAttribute PDFWithPageNums request) throws IOException { - MultipartFile file = request.getFileInput(); - String pages = request.getPageNumbers(); - // open the pdf document - - PDDocument document = Loader.loadPDF(file.getBytes()); - // PdfMetadata metadata = PdfMetadataService.extractMetadataFromPdf(document); - int totalPages = document.getNumberOfPages(); - List pageNumbers = request.getPageNumbersList(document, false); - if (!pageNumbers.contains(totalPages - 1)) { - // Create a mutable ArrayList so we can add to it - pageNumbers = new ArrayList<>(pageNumbers); - pageNumbers.add(totalPages - 1); - } - - logger.info( - "Splitting PDF into pages: {}", - pageNumbers.stream().map(String::valueOf).collect(Collectors.joining(","))); - // split the document + PDDocument document = null; + Path zipFile = null; List splitDocumentsBoas = new ArrayList<>(); - int previousPageNumber = 0; - for (int splitPoint : pageNumbers) { - try (PDDocument splitDocument = - pdfDocumentFactory.createNewDocumentBasedOnOldDocument(document)) { - for (int i = previousPageNumber; i <= splitPoint; i++) { - PDPage page = document.getPage(i); - splitDocument.addPage(page); - logger.info("Adding page {} to split document", i); + + try { + + MultipartFile file = request.getFileInput(); + String pages = request.getPageNumbers(); + // open the pdf document + + document = Loader.loadPDF(file.getBytes()); + // PdfMetadata metadata = PdfMetadataService.extractMetadataFromPdf(document); + int totalPages = document.getNumberOfPages(); + List pageNumbers = request.getPageNumbersList(document, false); + if (!pageNumbers.contains(totalPages - 1)) { + // Create a mutable ArrayList so we can add to it + pageNumbers = new ArrayList<>(pageNumbers); + pageNumbers.add(totalPages - 1); + } + + log.info( + "Splitting PDF into pages: {}", + pageNumbers.stream().map(String::valueOf).collect(Collectors.joining(","))); + + // split the document + splitDocumentsBoas = new ArrayList<>(); + int previousPageNumber = 0; + for (int splitPoint : pageNumbers) { + try (PDDocument splitDocument = + pdfDocumentFactory.createNewDocumentBasedOnOldDocument(document)) { + for (int i = previousPageNumber; i <= splitPoint; i++) { + PDPage page = document.getPage(i); + splitDocument.addPage(page); + log.info("Adding page {} to split document", i); + } + previousPageNumber = splitPoint + 1; + + // Transfer metadata to split pdf + // PdfMetadataService.setMetadataToPdf(splitDocument, metadata); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + splitDocument.save(baos); + + splitDocumentsBoas.add(baos); + } catch (Exception e) { + log.error("Failed splitting documents and saving them", e); + throw e; } - previousPageNumber = splitPoint + 1; + } + + // closing the original document + document.close(); - // Transfer metadata to split pdf - // PdfMetadataService.setMetadataToPdf(splitDocument, metadata); + zipFile = Files.createTempFile("split_documents", ".zip"); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - splitDocument.save(baos); + String filename = + Filenames.toSimpleFileName(file.getOriginalFilename()) + .replaceFirst("[.][^.]+$", ""); + try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) { + // loop through the split documents and write them to the zip file + for (int i = 0; i < splitDocumentsBoas.size(); i++) { + String fileName = filename + "_" + (i + 1) + ".pdf"; + ByteArrayOutputStream baos = splitDocumentsBoas.get(i); + byte[] pdf = baos.toByteArray(); - splitDocumentsBoas.add(baos); + // Add PDF file to the zip + ZipEntry pdfEntry = new ZipEntry(fileName); + zipOut.putNextEntry(pdfEntry); + zipOut.write(pdf); + zipOut.closeEntry(); + + log.info("Wrote split document {} to zip file", fileName); + } } catch (Exception e) { - logger.error("Failed splitting documents and saving them", e); + log.error("Failed writing to zip", e); throw e; } - } - // closing the original document - document.close(); + log.info("Successfully created zip file with split documents: {}", zipFile.toString()); + byte[] data = Files.readAllBytes(zipFile); + Files.deleteIfExists(zipFile); - Path zipFile = Files.createTempFile("split_documents", ".zip"); + // return the Resource in the response + return WebResponseUtils.bytesToWebResponse( + data, filename + ".zip", MediaType.APPLICATION_OCTET_STREAM); - String filename = - Filenames.toSimpleFileName(file.getOriginalFilename()) - .replaceFirst("[.][^.]+$", ""); - try (ZipOutputStream zipOut = new ZipOutputStream(Files.newOutputStream(zipFile))) { - // loop through the split documents and write them to the zip file - for (int i = 0; i < splitDocumentsBoas.size(); i++) { - String fileName = filename + "_" + (i + 1) + ".pdf"; - ByteArrayOutputStream baos = splitDocumentsBoas.get(i); - byte[] pdf = baos.toByteArray(); + } finally { + try { + // Close the main document + if (document != null) { + document.close(); + } - // Add PDF file to the zip - ZipEntry pdfEntry = new ZipEntry(fileName); - zipOut.putNextEntry(pdfEntry); - zipOut.write(pdf); - zipOut.closeEntry(); + // Close all ByteArrayOutputStreams + for (ByteArrayOutputStream baos : splitDocumentsBoas) { + if (baos != null) { + baos.close(); + } + } - logger.info("Wrote split document {} to zip file", fileName); + // Delete temporary zip file + if (zipFile != null) { + Files.deleteIfExists(zipFile); + } + } catch (Exception e) { + log.error("Error while cleaning up resources", e); } - } catch (Exception e) { - logger.error("Failed writing to zip", e); - throw e; } - - logger.info("Successfully created zip file with split documents: {}", zipFile.toString()); - byte[] data = Files.readAllBytes(zipFile); - Files.deleteIfExists(zipFile); - - // return the Resource in the response - return WebResponseUtils.bytesToWebResponse( - data, filename + ".zip", MediaType.APPLICATION_OCTET_STREAM); } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java index f344c2763e..e3bb9d35d4 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java @@ -13,8 +13,6 @@ import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline; import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -32,6 +30,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.PdfMetadata; import stirling.software.SPDF.model.api.SplitPdfByChaptersRequest; import stirling.software.SPDF.service.PdfMetadataService; @@ -39,12 +38,10 @@ @RestController @RequestMapping("/api/v1/general") +@Slf4j @Tag(name = "General", description = "General APIs") public class SplitPdfByChaptersController { - private static final Logger logger = - LoggerFactory.getLogger(SplitPdfByChaptersController.class); - private final PdfMetadataService pdfMetadataService; @Autowired @@ -52,104 +49,6 @@ public SplitPdfByChaptersController(PdfMetadataService pdfMetadataService) { this.pdfMetadataService = pdfMetadataService; } - @PostMapping(value = "/split-pdf-by-chapters", consumes = "multipart/form-data") - @Operation( - summary = "Split PDFs by Chapters", - description = "Splits a PDF into chapters and returns a ZIP file.") - public ResponseEntity splitPdf(@ModelAttribute SplitPdfByChaptersRequest request) - throws Exception { - MultipartFile file = request.getFileInput(); - boolean includeMetadata = request.getIncludeMetadata(); - Integer bookmarkLevel = - request.getBookmarkLevel(); // levels start from 0 (top most bookmarks) - if (bookmarkLevel < 0) { - return ResponseEntity.badRequest().body("Invalid bookmark level".getBytes()); - } - PDDocument sourceDocument = Loader.loadPDF(file.getBytes()); - - PDDocumentOutline outline = sourceDocument.getDocumentCatalog().getDocumentOutline(); - - if (outline == null) { - logger.warn("No outline found for {}", file.getOriginalFilename()); - return ResponseEntity.badRequest().body("No outline found".getBytes()); - } - List bookmarks = new ArrayList<>(); - try { - bookmarks = - extractOutlineItems( - sourceDocument, - outline.getFirstChild(), - bookmarks, - outline.getFirstChild().getNextSibling(), - 0, - bookmarkLevel); - // to handle last page edge case - bookmarks.get(bookmarks.size() - 1).setEndPage(sourceDocument.getNumberOfPages()); - Bookmark lastBookmark = bookmarks.get(bookmarks.size() - 1); - - } catch (Exception e) { - logger.error("Unable to extract outline items", e); - return ResponseEntity.internalServerError() - .body("Unable to extract outline items".getBytes()); - } - - boolean allowDuplicates = request.getAllowDuplicates(); - if (!allowDuplicates) { - /* - duplicates are generated when multiple bookmarks correspond to the same page, - if the user doesn't want duplicates mergeBookmarksThatCorrespondToSamePage() method will merge the titles of all - the bookmarks that correspond to the same page, and treat them as a single bookmark - */ - bookmarks = mergeBookmarksThatCorrespondToSamePage(bookmarks); - } - for (Bookmark bookmark : bookmarks) { - logger.info( - "{}::::{} to {}", - bookmark.getTitle(), - bookmark.getStartPage(), - bookmark.getEndPage()); - } - List splitDocumentsBoas = - getSplitDocumentsBoas(sourceDocument, bookmarks, includeMetadata); - - Path zipFile = createZipFile(bookmarks, splitDocumentsBoas); - - byte[] data = Files.readAllBytes(zipFile); - Files.deleteIfExists(zipFile); - - String filename = - Filenames.toSimpleFileName(file.getOriginalFilename()) - .replaceFirst("[.][^.]+$", ""); - sourceDocument.close(); - return WebResponseUtils.bytesToWebResponse( - data, filename + ".zip", MediaType.APPLICATION_OCTET_STREAM); - } - - private List mergeBookmarksThatCorrespondToSamePage(List bookmarks) { - String mergedTitle = ""; - List chaptersToBeRemoved = new ArrayList<>(); - for (Bookmark bookmark : bookmarks) { - if (bookmark.getStartPage() == bookmark.getEndPage()) { - mergedTitle = mergedTitle.concat(bookmark.getTitle().concat(" ")); - chaptersToBeRemoved.add(bookmark); - } else { - if (!mergedTitle.isEmpty()) { - if (mergedTitle.length() > 255) { - mergedTitle = mergedTitle.substring(0, 253) + "..."; - } - - bookmarks.set( - bookmarks.indexOf(bookmark), - new Bookmark( - mergedTitle, bookmark.getStartPage(), bookmark.getEndPage())); - } - mergedTitle = ""; - } - } - bookmarks.removeAll(chaptersToBeRemoved); - return bookmarks; - } - private static List extractOutlineItems( PDDocument sourceDocument, PDOutlineItem current, @@ -218,6 +117,120 @@ private static List extractOutlineItems( return bookmarks; } + @PostMapping(value = "/split-pdf-by-chapters", consumes = "multipart/form-data") + @Operation( + summary = "Split PDFs by Chapters", + description = "Splits a PDF into chapters and returns a ZIP file.") + public ResponseEntity splitPdf(@ModelAttribute SplitPdfByChaptersRequest request) + throws Exception { + MultipartFile file = request.getFileInput(); + PDDocument sourceDocument = null; + Path zipFile = null; + + try { + boolean includeMetadata = request.getIncludeMetadata(); + Integer bookmarkLevel = + request.getBookmarkLevel(); // levels start from 0 (top most bookmarks) + if (bookmarkLevel < 0) { + return ResponseEntity.badRequest().body("Invalid bookmark level".getBytes()); + } + sourceDocument = Loader.loadPDF(file.getBytes()); + + PDDocumentOutline outline = sourceDocument.getDocumentCatalog().getDocumentOutline(); + + if (outline == null) { + log.warn("No outline found for {}", file.getOriginalFilename()); + return ResponseEntity.badRequest().body("No outline found".getBytes()); + } + List bookmarks = new ArrayList<>(); + try { + bookmarks = + extractOutlineItems( + sourceDocument, + outline.getFirstChild(), + bookmarks, + outline.getFirstChild().getNextSibling(), + 0, + bookmarkLevel); + // to handle last page edge case + bookmarks.get(bookmarks.size() - 1).setEndPage(sourceDocument.getNumberOfPages()); + Bookmark lastBookmark = bookmarks.get(bookmarks.size() - 1); + + } catch (Exception e) { + log.error("Unable to extract outline items", e); + return ResponseEntity.internalServerError() + .body("Unable to extract outline items".getBytes()); + } + + boolean allowDuplicates = request.getAllowDuplicates(); + if (!allowDuplicates) { + /* + duplicates are generated when multiple bookmarks correspond to the same page, + if the user doesn't want duplicates mergeBookmarksThatCorrespondToSamePage() method will merge the titles of all + the bookmarks that correspond to the same page, and treat them as a single bookmark + */ + bookmarks = mergeBookmarksThatCorrespondToSamePage(bookmarks); + } + for (Bookmark bookmark : bookmarks) { + log.info( + "{}::::{} to {}", + bookmark.getTitle(), + bookmark.getStartPage(), + bookmark.getEndPage()); + } + List splitDocumentsBoas = + getSplitDocumentsBoas(sourceDocument, bookmarks, includeMetadata); + + zipFile = createZipFile(bookmarks, splitDocumentsBoas); + + byte[] data = Files.readAllBytes(zipFile); + Files.deleteIfExists(zipFile); + + String filename = + Filenames.toSimpleFileName(file.getOriginalFilename()) + .replaceFirst("[.][^.]+$", ""); + sourceDocument.close(); + return WebResponseUtils.bytesToWebResponse( + data, filename + ".zip", MediaType.APPLICATION_OCTET_STREAM); + } finally { + try { + if (sourceDocument != null) { + sourceDocument.close(); + } + if (zipFile != null) { + Files.deleteIfExists(zipFile); + } + } catch (Exception e) { + log.error("Error while cleaning up resources", e); + } + } + } + + private List mergeBookmarksThatCorrespondToSamePage(List bookmarks) { + String mergedTitle = ""; + List chaptersToBeRemoved = new ArrayList<>(); + for (Bookmark bookmark : bookmarks) { + if (bookmark.getStartPage() == bookmark.getEndPage()) { + mergedTitle = mergedTitle.concat(bookmark.getTitle().concat(" ")); + chaptersToBeRemoved.add(bookmark); + } else { + if (!mergedTitle.isEmpty()) { + if (mergedTitle.length() > 255) { + mergedTitle = mergedTitle.substring(0, 253) + "..."; + } + + bookmarks.set( + bookmarks.indexOf(bookmark), + new Bookmark( + mergedTitle, bookmark.getStartPage(), bookmark.getEndPage())); + } + mergedTitle = ""; + } + } + bookmarks.removeAll(chaptersToBeRemoved); + return bookmarks; + } + private Path createZipFile( List bookmarks, List splitDocumentsBoas) throws Exception { @@ -240,14 +253,14 @@ private Path createZipFile( zipOut.write(pdf); zipOut.closeEntry(); - logger.info("Wrote split document {} to zip file", fileName); + log.info("Wrote split document {} to zip file", fileName); } } catch (Exception e) { - logger.error("Failed writing to zip", e); + log.error("Failed writing to zip", e); throw e; } - logger.info("Successfully created zip file with split documents: {}", zipFile); + log.info("Successfully created zip file with split documents: {}", zipFile); return zipFile; } @@ -268,7 +281,7 @@ public List getSplitDocumentsBoas( i++) { PDPage page = sourceDocument.getPage(i); splitDocument.addPage(page); - logger.info("Adding page {} to split document", i); + log.info("Adding page {} to split document", i); } ByteArrayOutputStream baos = new ByteArrayOutputStream(); if (includeMetadata) { @@ -279,7 +292,7 @@ public List getSplitDocumentsBoas( splitDocumentsBoas.add(baos); } catch (Exception e) { - logger.error("Failed splitting documents and saving them", e); + log.error("Failed splitting documents and saving them", e); throw e; } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java index 2b4f131338..29040a602d 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java @@ -18,8 +18,6 @@ import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.apache.pdfbox.util.Matrix; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -42,9 +40,6 @@ @Tag(name = "General", description = "General APIs") public class SplitPdfBySectionsController { - private static final Logger logger = - LoggerFactory.getLogger(SplitPdfBySectionsController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -105,15 +100,13 @@ public ResponseEntity splitPdf(@ModelAttribute SplitPdfBySectionsRequest if (sectionNum == horiz * verti) pageNum++; } - } catch (Exception e) { - logger.error("exception", e); - } finally { data = Files.readAllBytes(zipFile); + return WebResponseUtils.bytesToWebResponse( + data, filename + "_split.zip", MediaType.APPLICATION_OCTET_STREAM); + + } finally { Files.deleteIfExists(zipFile); } - - return WebResponseUtils.bytesToWebResponse( - data, filename + "_split.zip", MediaType.APPLICATION_OCTET_STREAM); } public List splitPdfPages( diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java index 6016e532b7..97e42dca91 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java @@ -10,8 +10,6 @@ import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -25,6 +23,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.general.SplitPdfBySizeOrCountRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.GeneralUtils; @@ -32,10 +31,10 @@ @RestController @RequestMapping("/api/v1/general") +@Slf4j @Tag(name = "General", description = "General APIs") public class SplitPdfBySizeController { - private static final Logger logger = LoggerFactory.getLogger(SplitPdfBySizeController.class); private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -78,7 +77,7 @@ public ResponseEntity autoSplitPdf(@ModelAttribute SplitPdfBySizeOrCount } } catch (Exception e) { - logger.error("exception", e); + log.error("exception", e); } finally { data = Files.readAllBytes(zipFile); Files.deleteIfExists(zipFile); diff --git a/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java b/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java index 9401f3a627..07b2f4d472 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java @@ -11,8 +11,6 @@ import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -32,8 +30,6 @@ @Tag(name = "General", description = "General APIs") public class ToSinglePageController { - private static final Logger logger = LoggerFactory.getLogger(ToSinglePageController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired diff --git a/src/main/java/stirling/software/SPDF/controller/api/UserController.java b/src/main/java/stirling/software/SPDF/controller/api/UserController.java index d27534875b..9a22025169 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/UserController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/UserController.java @@ -7,7 +7,6 @@ import java.util.Map; import java.util.Optional; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; @@ -18,11 +17,7 @@ import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.view.RedirectView; @@ -45,9 +40,14 @@ @Slf4j public class UserController { - @Autowired private UserService userService; + private static final String LOGIN_MESSAGETYPE_CREDSUPDATED = "/login?messageType=credsUpdated"; + private final UserService userService; + private final SessionPersistentRegistry sessionRegistry; - @Autowired SessionPersistentRegistry sessionRegistry; + public UserController(UserService userService, SessionPersistentRegistry sessionRegistry) { + this.userService = userService; + this.sessionRegistry = sessionRegistry; + } @PreAuthorize("!hasAuthority('ROLE_DEMO_USER')") @PostMapping("/register") @@ -75,36 +75,27 @@ public RedirectView changeUsername( HttpServletResponse response, RedirectAttributes redirectAttributes) throws IOException { - if (!userService.isUsernameValid(newUsername)) { return new RedirectView("/account?messageType=invalidUsername", true); } - if (principal == null) { return new RedirectView("/account?messageType=notAuthenticated", true); } - // The username MUST be unique when renaming Optional userOpt = userService.findByUsername(principal.getName()); - if (userOpt == null || userOpt.isEmpty()) { return new RedirectView("/account?messageType=userNotFound", true); } - User user = userOpt.get(); - if (user.getUsername().equals(newUsername)) { return new RedirectView("/account?messageType=usernameExists", true); } - if (!userService.isPasswordCorrect(user, currentPassword)) { return new RedirectView("/account?messageType=incorrectPassword", true); } - if (!user.getUsername().equals(newUsername) && userService.usernameExists(newUsername)) { return new RedirectView("/account?messageType=usernameExists", true); } - if (newUsername != null && newUsername.length() > 0) { try { userService.changeUsername(user, newUsername); @@ -112,10 +103,8 @@ public RedirectView changeUsername( return new RedirectView("/account?messageType=invalidUsername", true); } } - // Logout using Spring's utility new SecurityContextLogoutHandler().logout(request, response, null); - return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED, true); } @@ -132,24 +121,18 @@ public RedirectView changePasswordOnLogin( if (principal == null) { return new RedirectView("/change-creds?messageType=notAuthenticated", true); } - Optional userOpt = userService.findByUsernameIgnoreCase(principal.getName()); - if (userOpt == null || userOpt.isEmpty()) { return new RedirectView("/change-creds?messageType=userNotFound", true); } - User user = userOpt.get(); - if (!userService.isPasswordCorrect(user, currentPassword)) { return new RedirectView("/change-creds?messageType=incorrectPassword", true); } - userService.changePassword(user, newPassword); userService.changeFirstUse(user, false); // Logout using Spring's utility new SecurityContextLogoutHandler().logout(request, response, null); - return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED, true); } @@ -166,24 +149,17 @@ public RedirectView changePassword( if (principal == null) { return new RedirectView("/account?messageType=notAuthenticated", true); } - Optional userOpt = userService.findByUsernameIgnoreCase(principal.getName()); - if (userOpt == null || userOpt.isEmpty()) { return new RedirectView("/account?messageType=userNotFound", true); } - User user = userOpt.get(); - if (!userService.isPasswordCorrect(user, currentPassword)) { return new RedirectView("/account?messageType=incorrectPassword", true); } - userService.changePassword(user, newPassword); - // Logout using Spring's utility new SecurityContextLogoutHandler().logout(request, response, null); - return new RedirectView(LOGIN_MESSAGETYPE_CREDSUPDATED, true); } @@ -193,17 +169,14 @@ public String updateUserSettings(HttpServletRequest request, Principal principal throws IOException { Map paramMap = request.getParameterMap(); Map updates = new HashMap<>(); - for (Map.Entry entry : paramMap.entrySet()) { updates.put(entry.getKey(), entry.getValue()[0]); } - log.debug("Processed updates: " + updates); - // Assuming you have a method in userService to update the settings for a user userService.updateUserSettings(principal.getName(), updates); - - return "redirect:/account"; // Redirect to a page of your choice after updating + // Redirect to a page of your choice after updating + return "redirect:/account"; } @PreAuthorize("hasRole('ROLE_ADMIN')") @@ -216,13 +189,10 @@ public RedirectView saveUser( @RequestParam(name = "forceChange", required = false, defaultValue = "false") boolean forceChange) throws IllegalArgumentException, IOException { - if (!userService.isUsernameValid(username)) { return new RedirectView("/addUsers?messageType=invalidUsername", true); } - Optional userOpt = userService.findByUsernameIgnoreCase(username); - if (userOpt.isPresent()) { User user = userOpt.get(); if (user != null && user.getUsername().equalsIgnoreCase(username)) { @@ -243,18 +213,17 @@ public RedirectView saveUser( // If the role ID is not valid, redirect with an error message return new RedirectView("/addUsers?messageType=invalidRole", true); } - - if (authType.equalsIgnoreCase(AuthenticationType.OAUTH2.toString())) { - userService.saveUser(username, AuthenticationType.OAUTH2, role); + if (authType.equalsIgnoreCase(AuthenticationType.SSO.toString())) { + userService.saveUser(username, AuthenticationType.SSO, role); } else { if (password.isBlank()) { return new RedirectView("/addUsers?messageType=invalidPassword", true); } userService.saveUser(username, password, role, forceChange); } - return new RedirectView( - "/addUsers", true); // Redirect to account page after adding the user + "/addUsers", // Redirect to account page after adding the user + true); } @PreAuthorize("hasRole('ROLE_ADMIN')") @@ -264,9 +233,7 @@ public RedirectView changeRole( @RequestParam(name = "role") String role, Authentication authentication) throws IOException { - Optional userOpt = userService.findByUsernameIgnoreCase(username); - if (!userOpt.isPresent()) { return new RedirectView("/addUsers?messageType=userNotFound", true); } @@ -275,7 +242,6 @@ public RedirectView changeRole( } // Get the currently authenticated username String currentUsername = authentication.getName(); - // Check if the provided username matches the current session's username if (currentUsername.equalsIgnoreCase(username)) { return new RedirectView("/addUsers?messageType=downgradeCurrentUser", true); @@ -292,11 +258,10 @@ public RedirectView changeRole( return new RedirectView("/addUsers?messageType=invalidRole", true); } User user = userOpt.get(); - userService.changeRole(user, role); - return new RedirectView( - "/addUsers", true); // Redirect to account page after adding the user + "/addUsers", // Redirect to account page after adding the user + true); } @PreAuthorize("hasRole('ROLE_ADMIN')") @@ -306,9 +271,7 @@ public RedirectView changeUserEnabled( @RequestParam("enabled") boolean enabled, Authentication authentication) throws IOException { - Optional userOpt = userService.findByUsernameIgnoreCase(username); - if (!userOpt.isPresent()) { return new RedirectView("/addUsers?messageType=userNotFound", true); } @@ -317,15 +280,12 @@ public RedirectView changeUserEnabled( } // Get the currently authenticated username String currentUsername = authentication.getName(); - // Check if the provided username matches the current session's username if (currentUsername.equalsIgnoreCase(username)) { return new RedirectView("/addUsers?messageType=disabledCurrentUser", true); } User user = userOpt.get(); - userService.changeUserEnabled(user, enabled); - if (!enabled) { // Invalidate all sessions if the user is being disabled List principals = sessionRegistry.getAllPrincipals(); @@ -349,28 +309,24 @@ public RedirectView changeUserEnabled( } } } - return new RedirectView( - "/addUsers", true); // Redirect to account page after adding the user + "/addUsers", // Redirect to account page after adding the user + true); } @PreAuthorize("hasRole('ROLE_ADMIN')") @PostMapping("/admin/deleteUser/{username}") public RedirectView deleteUser( @PathVariable("username") String username, Authentication authentication) { - if (!userService.usernameExistsIgnoreCase(username)) { return new RedirectView("/addUsers?messageType=deleteUsernameExists", true); } - // Get the currently authenticated username String currentUsername = authentication.getName(); - // Check if the provided username matches the current session's username if (currentUsername.equalsIgnoreCase(username)) { return new RedirectView("/addUsers?messageType=deleteCurrentUser", true); } - // Invalidate all sessions before deleting the user List sessionsInformations = sessionRegistry.getAllSessions(authentication.getPrincipal(), false); @@ -410,6 +366,4 @@ public ResponseEntity updateApiKey(Principal principal) { } return ResponseEntity.ok(apiKey); } - - private static final String LOGIN_MESSAGETYPE_CREDSUPDATED = "/login?messageType=credsUpdated"; } diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java index be955dbd38..7bdf7534fb 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java @@ -13,9 +13,10 @@ import java.util.zip.ZipOutputStream; import org.apache.commons.io.FileUtils; +import org.apache.pdfbox.Loader; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.rendering.ImageType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -29,22 +30,19 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.converters.ConvertToImageRequest; import stirling.software.SPDF.model.api.converters.ConvertToPdfRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; -import stirling.software.SPDF.utils.CheckProgramInstall; -import stirling.software.SPDF.utils.PdfUtils; -import stirling.software.SPDF.utils.ProcessExecutor; +import stirling.software.SPDF.utils.*; import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult; -import stirling.software.SPDF.utils.WebResponseUtils; @RestController @RequestMapping("/api/v1/convert") +@Slf4j @Tag(name = "Convert", description = "Convert APIs") public class ConvertImgPDFController { - private static final Logger logger = LoggerFactory.getLogger(ConvertImgPDFController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -64,113 +62,144 @@ public ResponseEntity convertToImage(@ModelAttribute ConvertToImageReque String singleOrMultiple = request.getSingleOrMultiple(); String colorType = request.getColorType(); String dpi = request.getDpi(); - - byte[] pdfBytes = file.getBytes(); - ImageType colorTypeResult = ImageType.RGB; - if ("greyscale".equals(colorType)) { - colorTypeResult = ImageType.GRAY; - } else if ("blackwhite".equals(colorType)) { - colorTypeResult = ImageType.BINARY; - } - // returns bytes for image - boolean singleImage = "single".equals(singleOrMultiple); + String pageNumbers = request.getPageNumbers(); + Path tempFile = null; + Path tempOutputDir = null; + Path tempPdfPath = null; byte[] result = null; - String filename = - Filenames.toSimpleFileName(file.getOriginalFilename()) - .replaceFirst("[.][^.]+$", ""); - - result = - PdfUtils.convertFromPdf( - pdfBytes, - "webp".equalsIgnoreCase(imageFormat) ? "png" : imageFormat.toUpperCase(), - colorTypeResult, - singleImage, - Integer.valueOf(dpi), - filename); - if (result == null || result.length == 0) { - logger.error("resultant bytes for {} is null, error converting ", filename); - } - if ("webp".equalsIgnoreCase(imageFormat) && !CheckProgramInstall.isPythonAvailable()) { - throw new IOException("Python is not installed. Required for WebP conversion."); - } else if ("webp".equalsIgnoreCase(imageFormat) - && CheckProgramInstall.isPythonAvailable()) { - // Write the output stream to a temp file - Path tempFile = Files.createTempFile("temp_png", ".png"); - try (FileOutputStream fos = new FileOutputStream(tempFile.toFile())) { - fos.write(result); - fos.flush(); + String[] pageOrderArr = + (pageNumbers != null && !pageNumbers.trim().isEmpty()) + ? pageNumbers.split(",") + : new String[] {"all"}; + ; + try { + // Load the input PDF + byte[] newPdfBytes = rearrangePdfPages(file.getBytes(), pageOrderArr); + + ImageType colorTypeResult = ImageType.RGB; + if ("greyscale".equals(colorType)) { + colorTypeResult = ImageType.GRAY; + } else if ("blackwhite".equals(colorType)) { + colorTypeResult = ImageType.BINARY; } + // returns bytes for image + boolean singleImage = "single".equals(singleOrMultiple); + String filename = + Filenames.toSimpleFileName(file.getOriginalFilename()) + .replaceFirst("[.][^.]+$", ""); - String pythonVersion = CheckProgramInstall.getAvailablePythonCommand(); + result = + PdfUtils.convertFromPdf( + newPdfBytes, + "webp".equalsIgnoreCase(imageFormat) + ? "png" + : imageFormat.toUpperCase(), + colorTypeResult, + singleImage, + Integer.valueOf(dpi), + filename); + if (result == null || result.length == 0) { + log.error("resultant bytes for {} is null, error converting ", filename); + } + if ("webp".equalsIgnoreCase(imageFormat) && !CheckProgramInstall.isPythonAvailable()) { + throw new IOException("Python is not installed. Required for WebP conversion."); + } else if ("webp".equalsIgnoreCase(imageFormat) + && CheckProgramInstall.isPythonAvailable()) { + // Write the output stream to a temp file + tempFile = Files.createTempFile("temp_png", ".png"); + try (FileOutputStream fos = new FileOutputStream(tempFile.toFile())) { + fos.write(result); + fos.flush(); + } - List command = new ArrayList<>(); - command.add(pythonVersion); - command.add("./scripts/png_to_webp.py"); // Python script to handle the conversion + String pythonVersion = CheckProgramInstall.getAvailablePythonCommand(); - // Create a temporary directory for the output WebP files - Path tempOutputDir = Files.createTempDirectory("webp_output"); - if (singleImage) { - // Run the Python script to convert PNG to WebP - command.add(tempFile.toString()); - command.add(tempOutputDir.toString()); - command.add("--single"); - } else { - // Save the uploaded PDF to a temporary file - Path tempPdfPath = Files.createTempFile("temp_pdf", ".pdf"); - file.transferTo(tempPdfPath.toFile()); - // Run the Python script to convert PDF to WebP - command.add(tempPdfPath.toString()); - command.add(tempOutputDir.toString()); - } - command.add("--dpi"); - command.add(dpi); - ProcessExecutorResult resultProcess = - ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV) - .runCommandWithOutputHandling(command); - - // Find all WebP files in the output directory - List webpFiles = - Files.walk(tempOutputDir) - .filter(path -> path.toString().endsWith(".webp")) - .collect(Collectors.toList()); - - if (webpFiles.isEmpty()) { - logger.error("No WebP files were created in: {}", tempOutputDir.toString()); - throw new IOException("No WebP files were created. " + resultProcess.getMessages()); - } + List command = new ArrayList<>(); + command.add(pythonVersion); + command.add("./scripts/png_to_webp.py"); // Python script to handle the conversion - byte[] bodyBytes = new byte[0]; + // Create a temporary directory for the output WebP files + tempOutputDir = Files.createTempDirectory("webp_output"); + if (singleImage) { + // Run the Python script to convert PNG to WebP + command.add(tempFile.toString()); + command.add(tempOutputDir.toString()); + command.add("--single"); + } else { + // Save the uploaded PDF to a temporary file + tempPdfPath = Files.createTempFile("temp_pdf", ".pdf"); + file.transferTo(tempPdfPath.toFile()); + // Run the Python script to convert PDF to WebP + command.add(tempPdfPath.toString()); + command.add(tempOutputDir.toString()); + } + command.add("--dpi"); + command.add(dpi); + ProcessExecutorResult resultProcess = + ProcessExecutor.getInstance(ProcessExecutor.Processes.PYTHON_OPENCV) + .runCommandWithOutputHandling(command); - if (webpFiles.size() == 1) { - // Return the single WebP file directly - Path webpFilePath = webpFiles.get(0); - bodyBytes = Files.readAllBytes(webpFilePath); - } else { - // Create a ZIP file containing all WebP images - ByteArrayOutputStream zipOutputStream = new ByteArrayOutputStream(); - try (ZipOutputStream zos = new ZipOutputStream(zipOutputStream)) { - for (Path webpFile : webpFiles) { - zos.putNextEntry(new ZipEntry(webpFile.getFileName().toString())); - Files.copy(webpFile, zos); - zos.closeEntry(); + // Find all WebP files in the output directory + List webpFiles = + Files.walk(tempOutputDir) + .filter(path -> path.toString().endsWith(".webp")) + .collect(Collectors.toList()); + + if (webpFiles.isEmpty()) { + log.error("No WebP files were created in: {}", tempOutputDir.toString()); + throw new IOException( + "No WebP files were created. " + resultProcess.getMessages()); + } + + byte[] bodyBytes = new byte[0]; + + if (webpFiles.size() == 1) { + // Return the single WebP file directly + Path webpFilePath = webpFiles.get(0); + bodyBytes = Files.readAllBytes(webpFilePath); + } else { + // Create a ZIP file containing all WebP images + ByteArrayOutputStream zipOutputStream = new ByteArrayOutputStream(); + try (ZipOutputStream zos = new ZipOutputStream(zipOutputStream)) { + for (Path webpFile : webpFiles) { + zos.putNextEntry(new ZipEntry(webpFile.getFileName().toString())); + Files.copy(webpFile, zos); + zos.closeEntry(); + } } + bodyBytes = zipOutputStream.toByteArray(); } - bodyBytes = zipOutputStream.toByteArray(); + // Clean up the temporary files + Files.deleteIfExists(tempFile); + if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile()); + result = bodyBytes; + } + + if (singleImage) { + String docName = filename + "." + imageFormat; + MediaType mediaType = MediaType.parseMediaType(getMediaType(imageFormat)); + return WebResponseUtils.bytesToWebResponse(result, docName, mediaType); + } else { + String zipFilename = filename + "_convertedToImages.zip"; + return WebResponseUtils.bytesToWebResponse( + result, zipFilename, MediaType.APPLICATION_OCTET_STREAM); } - // Clean up the temporary files - Files.deleteIfExists(tempFile); - if (tempOutputDir != null) FileUtils.deleteDirectory(tempOutputDir.toFile()); - result = bodyBytes; - } - if (singleImage) { - String docName = filename + "." + imageFormat; - MediaType mediaType = MediaType.parseMediaType(getMediaType(imageFormat)); - return WebResponseUtils.bytesToWebResponse(result, docName, mediaType); - } else { - String zipFilename = filename + "_convertedToImages.zip"; - return WebResponseUtils.bytesToWebResponse( - result, zipFilename, MediaType.APPLICATION_OCTET_STREAM); + } finally { + try { + // Clean up temporary files + if (tempFile != null) { + Files.deleteIfExists(tempFile); + } + if (tempPdfPath != null) { + Files.deleteIfExists(tempPdfPath); + } + if (tempOutputDir != null) { + FileUtils.deleteDirectory(tempOutputDir.toFile()); + } + } catch (Exception e) { + log.error("Error cleaning up temporary files", e); + } } } @@ -185,7 +214,13 @@ public ResponseEntity convertToPdf(@ModelAttribute ConvertToPdfRequest r String fitOption = request.getFitOption(); String colorType = request.getColorType(); boolean autoRotate = request.isAutoRotate(); - + // Handle Null entries for formdata + if (colorType == null || colorType.isBlank()) { + colorType = "color"; + } + if (fitOption == null || fitOption.isEmpty()) { + fitOption = "fillPage"; + } // Convert the file to PDF and get the resulting bytes byte[] bytes = PdfUtils.imageToPdf(file, fitOption, autoRotate, colorType, pdfDocumentFactory); @@ -198,4 +233,46 @@ private String getMediaType(String imageFormat) { String mimeType = URLConnection.guessContentTypeFromName("." + imageFormat); return "null".equals(mimeType) ? "application/octet-stream" : mimeType; } + + /** + * Rearranges the pages of the given PDF document based on the specified page order. + * + * @param pdfBytes The byte array of the original PDF file. + * @param pageOrderArr An array of page numbers indicating the new order. + * @return A byte array of the rearranged PDF. + * @throws IOException If an error occurs while processing the PDF. + */ + private byte[] rearrangePdfPages(byte[] pdfBytes, String[] pageOrderArr) throws IOException { + // Load the input PDF + PDDocument document = Loader.loadPDF(pdfBytes); + int totalPages = document.getNumberOfPages(); + List newPageOrder = GeneralUtils.parsePageList(pageOrderArr, totalPages, false); + + // Create a new list to hold the pages in the new order + List newPages = new ArrayList<>(); + for (int pageIndex : newPageOrder) { + newPages.add(document.getPage(pageIndex)); + } + + // Remove all the pages from the original document + for (int i = document.getNumberOfPages() - 1; i >= 0; i--) { + document.removePage(i); + } + + // Add the pages in the new order + for (PDPage page : newPages) { + document.addPage(page); + } + + // Convert PDDocument to byte array + byte[] newPdfBytes; + try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { + document.save(baos); + newPdfBytes = baos.toByteArray(); + } finally { + document.close(); + } + + return newPdfBytes; + } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java index 36e29f2750..50a251e4ea 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java @@ -33,6 +33,13 @@ @RequestMapping("/api/v1/convert") public class ConvertOfficeController { + private final CustomPDDocumentFactory pdfDocumentFactory; + + @Autowired + public ConvertOfficeController(CustomPDDocumentFactory pdfDocumentFactory) { + this.pdfDocumentFactory = pdfDocumentFactory; + } + public File convertToPdf(MultipartFile inputFile) throws IOException, InterruptedException { // Check for valid file extension String originalFilename = Filenames.toSimpleFileName(inputFile.getOriginalFilename()); @@ -78,13 +85,6 @@ private boolean isValidFileExtension(String fileExtension) { return fileExtension.matches(extensionPattern); } - private final CustomPDDocumentFactory pdfDocumentFactory; - - @Autowired - public ConvertOfficeController(CustomPDDocumentFactory pdfDocumentFactory) { - this.pdfDocumentFactory = pdfDocumentFactory; - } - @PostMapping(consumes = "multipart/form-data", value = "/file/pdf") @Operation( summary = "Convert a file to a PDF using LibreOffice", diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToBookController.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToBookController.java index f1c672e12b..1816697243 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToBookController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToBookController.java @@ -6,7 +6,6 @@ import java.util.Arrays; import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -26,9 +25,13 @@ // @RequestMapping("/api/v1/convert") public class ConvertPDFToBookController { - @Autowired @Qualifier("bookAndHtmlFormatsInstalled") - private boolean bookAndHtmlFormatsInstalled; + private final boolean bookAndHtmlFormatsInstalled; + + public ConvertPDFToBookController( + @Qualifier("bookAndHtmlFormatsInstalled") boolean bookAndHtmlFormatsInstalled) { + this.bookAndHtmlFormatsInstalled = bookAndHtmlFormatsInstalled; + } @PostMapping(consumes = "multipart/form-data", value = "/pdf/book") @Operation( @@ -39,16 +42,13 @@ public class ConvertPDFToBookController { public ResponseEntity HtmlToPdf(@ModelAttribute PdfToBookRequest request) throws Exception { MultipartFile fileInput = request.getFileInput(); - if (!bookAndHtmlFormatsInstalled) { throw new IllegalArgumentException( "bookAndHtmlFormatsInstalled flag is False, this functionality is not available"); } - if (fileInput == null) { throw new IllegalArgumentException("Please provide a file for conversion."); } - // Validate the output format String outputFormat = request.getOutputFormat().toLowerCase(); List allowedFormats = @@ -58,28 +58,24 @@ public ResponseEntity HtmlToPdf(@ModelAttribute PdfToBookRequest request if (!allowedFormats.contains(outputFormat)) { throw new IllegalArgumentException("Invalid output format: " + outputFormat); } - byte[] outputFileBytes; List command = new ArrayList<>(); Path tempOutputFile = Files.createTempFile( - "output_", - "." + outputFormat); // Use the output format for the file extension + "output_", // Use the output format for the file extension + "." + outputFormat); Path tempInputFile = null; - try { // Create temp input file from the provided PDF - tempInputFile = Files.createTempFile("input_", ".pdf"); // Assuming input is always PDF + // Assuming input is always PDF + tempInputFile = Files.createTempFile("input_", ".pdf"); Files.write(tempInputFile, fileInput.getBytes()); - command.add("ebook-convert"); command.add(tempInputFile.toString()); command.add(tempOutputFile.toString()); - ProcessExecutorResult returnCode = ProcessExecutor.getInstance(ProcessExecutor.Processes.CALIBRE) .runCommandWithOutputHandling(command); - outputFileBytes = Files.readAllBytes(tempOutputFile); } finally { // Clean up temporary files @@ -88,13 +84,12 @@ public ResponseEntity HtmlToPdf(@ModelAttribute PdfToBookRequest request } Files.deleteIfExists(tempOutputFile); } - String outputFilename = Filenames.toSimpleFileName(fileInput.getOriginalFilename()) .replaceFirst("[.][^.]+$", "") + "." - + outputFormat; // Remove file extension and append .pdf - + + // Remove file extension and append .pdf + outputFormat; return WebResponseUtils.bytesToWebResponse(outputFileBytes, outputFilename); } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java index c437c4cb0a..5caee0f962 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java @@ -1,14 +1,13 @@ package stirling.software.SPDF.controller.api.converters; -import java.io.FileOutputStream; -import java.io.OutputStream; +import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.commons.io.FileUtils; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -21,6 +20,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.converters.PdfToPdfARequest; import stirling.software.SPDF.utils.ProcessExecutor; import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult; @@ -28,68 +28,98 @@ @RestController @RequestMapping("/api/v1/convert") +@Slf4j @Tag(name = "Convert", description = "Convert APIs") public class ConvertPDFToPDFA { - private static final Logger logger = LoggerFactory.getLogger(ConvertPDFToPDFA.class); - @PostMapping(consumes = "multipart/form-data", value = "/pdf/pdfa") @Operation( summary = "Convert a PDF to a PDF/A", description = - "This endpoint converts a PDF file to a PDF/A file. PDF/A is a format designed for long-term archiving of digital documents. Input:PDF Output:PDF Type:SISO") + "This endpoint converts a PDF file to a PDF/A file using LibreOffice. PDF/A is a format designed for long-term archiving of digital documents. Input:PDF Output:PDF Type:SISO") public ResponseEntity pdfToPdfA(@ModelAttribute PdfToPdfARequest request) throws Exception { MultipartFile inputFile = request.getFileInput(); String outputFormat = request.getOutputFormat(); - // Convert MultipartFile to byte[] - byte[] pdfBytes = inputFile.getBytes(); - - // Save the uploaded file to a temporary location - Path tempInputFile = Files.createTempFile("input_", ".pdf"); - try (OutputStream outputStream = new FileOutputStream(tempInputFile.toFile())) { - outputStream.write(pdfBytes); + // Validate input file type + if (!"application/pdf".equals(inputFile.getContentType())) { + log.error("Invalid input file type: {}", inputFile.getContentType()); + throw new IllegalArgumentException("Input file must be a PDF"); } - // Prepare the output file path - Path tempOutputFile = Files.createTempFile("output_", ".pdf"); - - // Prepare the ghostscript command - List command = new ArrayList<>(); - command.add("gs"); - command.add("-dPDFA=" + ("pdfa".equals(outputFormat) ? "2" : "1")); - command.add("-dNOPAUSE"); - command.add("-dBATCH"); - command.add("-sColorConversionStrategy=sRGB"); - command.add("-sDEVICE=pdfwrite"); - command.add("-dPDFACompatibilityPolicy=2"); - command.add("-o"); - command.add(tempOutputFile.toString()); - command.add(tempInputFile.toString()); - - ProcessExecutorResult returnCode = - ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT) - .runCommandWithOutputHandling(command); - - if (returnCode.getRc() != 0) { - logger.info( - outputFormat + " conversion failed with return code: " + returnCode.getRc()); + // Get the original filename without extension + String originalFileName = Filenames.toSimpleFileName(inputFile.getOriginalFilename()); + if (originalFileName == null || originalFileName.trim().isEmpty()) { + originalFileName = "output.pdf"; } + String baseFileName = + originalFileName.contains(".") + ? originalFileName.substring(0, originalFileName.lastIndexOf('.')) + : originalFileName; + + Path tempInputFile = null; + Path tempOutputDir = null; + byte[] fileBytes; try { - byte[] pdfBytesOutput = Files.readAllBytes(tempOutputFile); - // Return the optimized PDF as a response - String outputFilename = - Filenames.toSimpleFileName(inputFile.getOriginalFilename()) - .replaceFirst("[.][^.]+$", "") - + "_PDFA.pdf"; + // Save uploaded file to temp location + tempInputFile = Files.createTempFile("input_", ".pdf"); + inputFile.transferTo(tempInputFile); + + // Create temp output directory + tempOutputDir = Files.createTempDirectory("output_"); + + // Determine PDF/A filter based on requested format + String pdfFilter = + "pdfa".equals(outputFormat) + ? "writer_pdf_Export:{'SelectPdfVersion':{'Value':'2'}}:writer_pdf_Export" + : "writer_pdf_Export:{'SelectPdfVersion':{'Value':'1'}}:writer_pdf_Export"; + + // Prepare LibreOffice command + List command = + new ArrayList<>( + Arrays.asList( + "soffice", + "--headless", + "--nologo", + "--convert-to", + "pdf:" + pdfFilter, + "--outdir", + tempOutputDir.toString(), + tempInputFile.toString())); + + ProcessExecutorResult returnCode = + ProcessExecutor.getInstance(ProcessExecutor.Processes.LIBRE_OFFICE) + .runCommandWithOutputHandling(command); + + if (returnCode.getRc() != 0) { + log.error("PDF/A conversion failed with return code: {}", returnCode.getRc()); + throw new RuntimeException("PDF/A conversion failed"); + } + + // Get the output file + File[] outputFiles = tempOutputDir.toFile().listFiles(); + if (outputFiles == null || outputFiles.length != 1) { + throw new RuntimeException( + "Expected exactly one output file but found " + + (outputFiles == null ? "none" : outputFiles.length)); + } + + fileBytes = FileUtils.readFileToByteArray(outputFiles[0]); + String outputFilename = baseFileName + "_PDFA.pdf"; + return WebResponseUtils.bytesToWebResponse( - pdfBytesOutput, outputFilename, MediaType.APPLICATION_PDF); + fileBytes, outputFilename, MediaType.APPLICATION_PDF); + } finally { - // Clean up the temporary files - Files.deleteIfExists(tempInputFile); - Files.deleteIfExists(tempOutputFile); + // Clean up temporary files + if (tempInputFile != null) { + Files.deleteIfExists(tempInputFile); + } + if (tempOutputDir != null) { + FileUtils.deleteDirectory(tempOutputDir.toFile()); + } } } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java index 6119bfcfb0..d6ae1a4789 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java @@ -7,8 +7,6 @@ import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -19,6 +17,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.converters.UrlToPdfRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.GeneralUtils; @@ -28,11 +27,10 @@ @RestController @Tag(name = "Convert", description = "Convert APIs") +@Slf4j @RequestMapping("/api/v1/convert") public class ConvertWebsiteToPDF { - private static final Logger logger = LoggerFactory.getLogger(ConvertWebsiteToPDF.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -88,7 +86,7 @@ public ResponseEntity urlToPdf(@ModelAttribute UrlToPdfRequest request) try { Files.deleteIfExists(tempOutputFile); } catch (IOException e) { - logger.error("Error deleting temporary output file", e); + log.error("Error deleting temporary output file", e); } } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ExtractCSVController.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ExtractCSVController.java index 8cf8aa4fdb..f0a4c267f1 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ExtractCSVController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ExtractCSVController.java @@ -1,14 +1,12 @@ package stirling.software.SPDF.controller.api.converters; import java.io.StringWriter; -import java.util.ArrayList; import java.util.List; +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.QuoteMode; import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDPage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.ContentDisposition; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -18,79 +16,38 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.opencsv.CSVWriter; - import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import stirling.software.SPDF.controller.api.CropController; -import stirling.software.SPDF.controller.api.strippers.PDFTableStripper; import stirling.software.SPDF.model.api.extract.PDFFilePage; +import stirling.software.SPDF.pdf.FlexibleCSVWriter; +import technology.tabula.ObjectExtractor; +import technology.tabula.Page; +import technology.tabula.Table; +import technology.tabula.extractors.SpreadsheetExtractionAlgorithm; +import technology.tabula.writers.Writer; @RestController @RequestMapping("/api/v1/convert") @Tag(name = "Convert", description = "Convert APIs") public class ExtractCSVController { - private static final Logger logger = LoggerFactory.getLogger(CropController.class); - @PostMapping(value = "/pdf/csv", consumes = "multipart/form-data") @Operation( summary = "Extracts a CSV document from a PDF", description = "This operation takes an input PDF file and returns CSV file of whole page. Input:PDF Output:CSV Type:SISO") public ResponseEntity PdfToCsv(@ModelAttribute PDFFilePage form) throws Exception { - - ArrayList tableData = new ArrayList<>(); - int columnsCount = 0; - - try (PDDocument document = Loader.loadPDF(form.getFileInput().getBytes())) { - final double res = 72; // PDF units are at 72 DPI - PDFTableStripper stripper = new PDFTableStripper(); - PDPage pdPage = document.getPage(form.getPageId() - 1); - stripper.extractTable(pdPage); - columnsCount = stripper.getColumns(); - for (int c = 0; c < columnsCount; ++c) { - for (int r = 0; r < stripper.getRows(); ++r) { - tableData.add(stripper.getText(r, c)); - } - } - } - - ArrayList notEmptyColumns = new ArrayList<>(); - - for (String item : tableData) { - if (!item.trim().isEmpty()) { - notEmptyColumns.add(item); - } else { - columnsCount--; - } - } - - List fullTable = - notEmptyColumns.stream() - .map( - (entity) -> - entity.replace('\n', ' ') - .replace('\r', ' ') - .trim() - .replaceAll("\\s{2,}", "|")) - .toList(); - - int rowsCount = fullTable.get(0).split("\\|").length; - - ArrayList headersList = getTableHeaders(columnsCount, fullTable); - ArrayList recordList = getRecordsList(rowsCount, fullTable); - - if (headersList.size() == 0 && recordList.size() == 0) { - throw new Exception("No table detected, no headers or records found"); - } - StringWriter writer = new StringWriter(); - try (CSVWriter csvWriter = new CSVWriter(writer)) { - csvWriter.writeNext(headersList.toArray(new String[0])); - for (String record : recordList) { - csvWriter.writeNext(record.split("\\|")); + try (PDDocument document = Loader.loadPDF(form.getFileInput().getBytes())) { + CSVFormat format = + CSVFormat.EXCEL.builder().setEscape('"').setQuoteMode(QuoteMode.ALL).build(); + Writer csvWriter = new FlexibleCSVWriter(format); + SpreadsheetExtractionAlgorithm sea = new SpreadsheetExtractionAlgorithm(); + try (ObjectExtractor extractor = new ObjectExtractor(document)) { + Page page = extractor.extract(form.getPageId()); + List tables = sea.extract(page); + csvWriter.write(writer, tables); } } @@ -107,33 +64,4 @@ public ResponseEntity PdfToCsv(@ModelAttribute PDFFilePage form) throws return ResponseEntity.ok().headers(headers).body(writer.toString()); } - - private ArrayList getRecordsList(int rowsCounts, List items) { - ArrayList recordsList = new ArrayList<>(); - - for (int b = 1; b < rowsCounts; b++) { - StringBuilder strbldr = new StringBuilder(); - - for (int i = 0; i < items.size(); i++) { - String[] parts = items.get(i).split("\\|"); - strbldr.append(parts[b]); - if (i != items.size() - 1) { - strbldr.append("|"); - } - } - recordsList.add(strbldr.toString()); - } - - return recordsList; - } - - private ArrayList getTableHeaders(int columnsCount, List items) { - ArrayList resultList = new ArrayList<>(); - for (int i = 0; i < columnsCount; i++) { - String[] parts = items.get(i).split("\\|"); - resultList.add(parts[0]); - } - - return resultList; - } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/AutoRenameController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/AutoRenameController.java index 8bacad6da2..6625c6f5d0 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/AutoRenameController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/AutoRenameController.java @@ -9,8 +9,6 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; import org.apache.pdfbox.text.TextPosition; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; @@ -22,16 +20,16 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.ExtractHeaderRequest; import stirling.software.SPDF.utils.WebResponseUtils; @RestController @RequestMapping("/api/v1/misc") +@Slf4j @Tag(name = "Misc", description = "Miscellaneous APIs") public class AutoRenameController { - private static final Logger logger = LoggerFactory.getLogger(AutoRenameController.class); - private static final float TITLE_FONT_SIZE_THRESHOLD = 20.0f; private static final int LINE_LIMIT = 200; @@ -48,16 +46,6 @@ public ResponseEntity extractHeader(@ModelAttribute ExtractHeaderRequest PDDocument document = Loader.loadPDF(file.getBytes()); PDFTextStripper reader = new PDFTextStripper() { - class LineInfo { - String text; - float fontSize; - - LineInfo(String text, float fontSize) { - this.text = text; - this.fontSize = fontSize; - } - } - List lineInfos = new ArrayList<>(); StringBuilder lineBuilder = new StringBuilder(); float lastY = -1; @@ -124,6 +112,16 @@ public String getText(PDDocument doc) throws IOException { .text) : null); } + + class LineInfo { + String text; + float fontSize; + + LineInfo(String text, float fontSize) { + this.text = text; + this.fontSize = fontSize; + } + } }; String header = reader.getText(document); @@ -133,7 +131,7 @@ public String getText(PDDocument doc) throws IOException { header = header.replaceAll("[/\\\\?%*:|\"<>]", "").trim(); return WebResponseUtils.pdfDocToWebResponse(document, header + ".pdf"); } else { - logger.info("File has no good title to be found"); + log.info("File has no good title to be found"); return WebResponseUtils.pdfDocToWebResponse( document, Filenames.toSimpleFileName(file.getOriginalFilename())); } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java index 88d113ec6f..9c6cbf9bf3 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java @@ -14,8 +14,6 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.PDFRenderer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -25,28 +23,24 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import com.google.zxing.BinaryBitmap; -import com.google.zxing.LuminanceSource; -import com.google.zxing.MultiFormatReader; -import com.google.zxing.NotFoundException; -import com.google.zxing.PlanarYUVLuminanceSource; -import com.google.zxing.Result; +import com.google.zxing.*; import com.google.zxing.common.HybridBinarizer; import io.github.pixee.security.Filenames; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.AutoSplitPdfRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.WebResponseUtils; @RestController @RequestMapping("/api/v1/misc") +@Slf4j @Tag(name = "Misc", description = "Miscellaneous APIs") public class AutoSplitPdfController { - private static final Logger logger = LoggerFactory.getLogger(AutoSplitPdfController.class); private static final String QR_CONTENT = "https://github.com/Stirling-Tools/Stirling-PDF"; private static final String QR_CONTENT_OLD = "https://github.com/Frooodle/Stirling-PDF"; @@ -57,6 +51,52 @@ public AutoSplitPdfController(CustomPDDocumentFactory pdfDocumentFactory) { this.pdfDocumentFactory = pdfDocumentFactory; } + private static String decodeQRCode(BufferedImage bufferedImage) { + LuminanceSource source; + + if (bufferedImage.getRaster().getDataBuffer() instanceof DataBufferByte) { + byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData(); + source = + new PlanarYUVLuminanceSource( + pixels, + bufferedImage.getWidth(), + bufferedImage.getHeight(), + 0, + 0, + bufferedImage.getWidth(), + bufferedImage.getHeight(), + false); + } else if (bufferedImage.getRaster().getDataBuffer() instanceof DataBufferInt) { + int[] pixels = ((DataBufferInt) bufferedImage.getRaster().getDataBuffer()).getData(); + byte[] newPixels = new byte[pixels.length]; + for (int i = 0; i < pixels.length; i++) { + newPixels[i] = (byte) (pixels[i] & 0xff); + } + source = + new PlanarYUVLuminanceSource( + newPixels, + bufferedImage.getWidth(), + bufferedImage.getHeight(), + 0, + 0, + bufferedImage.getWidth(), + bufferedImage.getHeight(), + false); + } else { + throw new IllegalArgumentException( + "BufferedImage must have 8-bit gray scale, 24-bit RGB, 32-bit ARGB (packed int), byte gray, or 3-byte/4-byte RGB image data"); + } + + BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); + + try { + Result result = new MultiFormatReader().decode(bitmap); + return result.getText(); + } catch (NotFoundException e) { + return null; // there is no QR code in the image + } + } + @PostMapping(value = "/auto-split-pdf", consumes = "multipart/form-data") @Operation( summary = "Auto split PDF pages into separate documents", @@ -134,7 +174,7 @@ public ResponseEntity autoSplitPdf(@ModelAttribute AutoSplitPdfRequest r try { document.close(); } catch (IOException e) { - logger.error("Error closing main PDDocument", e); + log.error("Error closing main PDDocument", e); } } @@ -142,7 +182,7 @@ public ResponseEntity autoSplitPdf(@ModelAttribute AutoSplitPdfRequest r try { splitDoc.close(); } catch (IOException e) { - logger.error("Error closing split PDDocument", e); + log.error("Error closing split PDDocument", e); } } @@ -150,55 +190,9 @@ public ResponseEntity autoSplitPdf(@ModelAttribute AutoSplitPdfRequest r try { Files.deleteIfExists(zipFile); } catch (IOException e) { - logger.error("Error deleting temporary zip file", e); + log.error("Error deleting temporary zip file", e); } } } } - - private static String decodeQRCode(BufferedImage bufferedImage) { - LuminanceSource source; - - if (bufferedImage.getRaster().getDataBuffer() instanceof DataBufferByte) { - byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData(); - source = - new PlanarYUVLuminanceSource( - pixels, - bufferedImage.getWidth(), - bufferedImage.getHeight(), - 0, - 0, - bufferedImage.getWidth(), - bufferedImage.getHeight(), - false); - } else if (bufferedImage.getRaster().getDataBuffer() instanceof DataBufferInt) { - int[] pixels = ((DataBufferInt) bufferedImage.getRaster().getDataBuffer()).getData(); - byte[] newPixels = new byte[pixels.length]; - for (int i = 0; i < pixels.length; i++) { - newPixels[i] = (byte) (pixels[i] & 0xff); - } - source = - new PlanarYUVLuminanceSource( - newPixels, - bufferedImage.getWidth(), - bufferedImage.getHeight(), - 0, - 0, - bufferedImage.getWidth(), - bufferedImage.getHeight(), - false); - } else { - throw new IllegalArgumentException( - "BufferedImage must have 8-bit gray scale, 24-bit RGB, 32-bit ARGB (packed int), byte gray, or 3-byte/4-byte RGB image data"); - } - - BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); - - try { - Result result = new MultiFormatReader().decode(bitmap); - return result.getText(); - } catch (NotFoundException e) { - return null; // there is no QR code in the image - } - } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java index bf046d656a..1f3407d335 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java @@ -14,8 +14,6 @@ import org.apache.pdfbox.pdmodel.PDPageTree; import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.pdfbox.text.PDFTextStripper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -30,6 +28,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.RemoveBlankPagesRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.PdfUtils; @@ -37,11 +36,10 @@ @RestController @RequestMapping("/api/v1/misc") +@Slf4j @Tag(name = "Misc", description = "Miscellaneous APIs") public class BlankPageController { - private static final Logger logger = LoggerFactory.getLogger(BlankPageController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -49,6 +47,32 @@ public BlankPageController(CustomPDDocumentFactory pdfDocumentFactory) { this.pdfDocumentFactory = pdfDocumentFactory; } + public static boolean isBlankImage( + BufferedImage image, int threshold, double whitePercent, int blurSize) { + if (image == null) { + log.info("Error: Image is null"); + return false; + } + + // Convert to binary image based on the threshold + int whitePixels = 0; + int totalPixels = image.getWidth() * image.getHeight(); + + for (int i = 0; i < image.getHeight(); i++) { + for (int j = 0; j < image.getWidth(); j++) { + int color = image.getRGB(j, i) & 0xFF; + if (color >= 255 - threshold) { + whitePixels++; + } + } + } + + double whitePixelPercentage = (whitePixels / (double) totalPixels) * 100; + log.info(String.format("Page has white pixel percent of %.2f%%", whitePixelPercentage)); + + return whitePixelPercentage >= whitePercent; + } + @PostMapping(consumes = "multipart/form-data", value = "/remove-blanks") @Operation( summary = "Remove blank pages from a PDF file", @@ -71,7 +95,7 @@ public ResponseEntity removeBlankPages(@ModelAttribute RemoveBlankPagesR PDFRenderer pdfRenderer = new PDFRenderer(document); pdfRenderer.setSubsamplingAllowed(true); for (PDPage page : pages) { - logger.info("checking page {}", pageIndex); + log.info("checking page {}", pageIndex); textStripper.setStartPage(pageIndex + 1); textStripper.setEndPage(pageIndex + 1); String pageText = textStripper.getText(document); @@ -79,12 +103,12 @@ public ResponseEntity removeBlankPages(@ModelAttribute RemoveBlankPagesR boolean blank = true; if (hasText) { - logger.info("page {} has text, not blank", pageIndex); + log.info("page {} has text, not blank", pageIndex); blank = false; } else { boolean hasImages = PdfUtils.hasImagesOnPage(page); if (hasImages) { - logger.info("page {} has image, running blank detection", pageIndex); + log.info("page {} has image, running blank detection", pageIndex); // Render image and save as temp file BufferedImage image = pdfRenderer.renderImageWithDPI(pageIndex, 30); blank = isBlankImage(image, threshold, whitePercent, threshold); @@ -92,10 +116,10 @@ public ResponseEntity removeBlankPages(@ModelAttribute RemoveBlankPagesR } if (blank) { - logger.info("Skipping, Image was blank for page #{}", pageIndex); + log.info("Skipping, Image was blank for page #{}", pageIndex); blankPages.add(page); } else { - logger.info("page {} has image which is not blank", pageIndex); + log.info("page {} has image which is not blank", pageIndex); nonBlankPages.add(page); } @@ -121,12 +145,12 @@ public ResponseEntity removeBlankPages(@ModelAttribute RemoveBlankPagesR zos.close(); - logger.info("Returning ZIP file: {}", filename + "_processed.zip"); + log.info("Returning ZIP file: {}", filename + "_processed.zip"); return WebResponseUtils.boasToWebResponse( baos, filename + "_processed.zip", MediaType.APPLICATION_OCTET_STREAM); } catch (IOException e) { - logger.error("exception", e); + log.error("exception", e); return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } } @@ -145,30 +169,4 @@ public void createZipEntry(ZipOutputStream zos, List pages, String entry zos.closeEntry(); } } - - public static boolean isBlankImage( - BufferedImage image, int threshold, double whitePercent, int blurSize) { - if (image == null) { - logger.info("Error: Image is null"); - return false; - } - - // Convert to binary image based on the threshold - int whitePixels = 0; - int totalPixels = image.getWidth() * image.getHeight(); - - for (int i = 0; i < image.getHeight(); i++) { - for (int j = 0; j < image.getWidth(); j++) { - int color = image.getRGB(j, i) & 0xFF; - if (color >= 255 - threshold) { - whitePixels++; - } - } - } - - double whitePixelPercentage = (whitePixels / (double) totalPixels) * 100; - logger.info(String.format("Page has white pixel percent of %.2f%%", whitePixelPercentage)); - - return whitePixelPercentage >= whitePercent; - } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java index 3f55a4f510..a012716a3f 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java @@ -1,6 +1,6 @@ package stirling.software.SPDF.controller.api.misc; -import java.awt.Image; +import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.nio.file.Files; @@ -10,7 +10,6 @@ import javax.imageio.ImageIO; -import org.apache.commons.io.FileUtils; import org.apache.pdfbox.Loader; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.PDDocument; @@ -18,8 +17,6 @@ import org.apache.pdfbox.pdmodel.PDResources; import org.apache.pdfbox.pdmodel.graphics.PDXObject; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -32,6 +29,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.OptimizePdfRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.GeneralUtils; @@ -41,11 +39,10 @@ @RestController @RequestMapping("/api/v1/misc") +@Slf4j @Tag(name = "Misc", description = "Miscellaneous APIs") public class CompressController { - private static final Logger logger = LoggerFactory.getLogger(CompressController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -53,6 +50,54 @@ public CompressController(CustomPDDocumentFactory pdfDocumentFactory) { this.pdfDocumentFactory = pdfDocumentFactory; } + private void compressImagesInPDF(Path pdfFile, double initialScaleFactor) throws Exception { + byte[] fileBytes = Files.readAllBytes(pdfFile); + try (PDDocument doc = Loader.loadPDF(fileBytes)) { + double scaleFactor = initialScaleFactor; + + for (PDPage page : doc.getPages()) { + PDResources res = page.getResources(); + if (res != null && res.getXObjectNames() != null) { + for (COSName name : res.getXObjectNames()) { + PDXObject xobj = res.getXObject(name); + if (xobj instanceof PDImageXObject) { + PDImageXObject image = (PDImageXObject) xobj; + BufferedImage bufferedImage = image.getImage(); + + int newWidth = (int) (bufferedImage.getWidth() * scaleFactor); + int newHeight = (int) (bufferedImage.getHeight() * scaleFactor); + + if (newWidth == 0 || newHeight == 0) { + continue; + } + + Image scaledImage = + bufferedImage.getScaledInstance( + newWidth, newHeight, Image.SCALE_SMOOTH); + + BufferedImage scaledBufferedImage = + new BufferedImage( + newWidth, newHeight, BufferedImage.TYPE_INT_RGB); + scaledBufferedImage.getGraphics().drawImage(scaledImage, 0, 0, null); + + ByteArrayOutputStream compressedImageStream = + new ByteArrayOutputStream(); + ImageIO.write(scaledBufferedImage, "jpeg", compressedImageStream); + byte[] imageBytes = compressedImageStream.toByteArray(); + compressedImageStream.close(); + + PDImageXObject compressedImage = + PDImageXObject.createFromByteArray( + doc, imageBytes, image.getCOSObject().toString()); + res.put(name, compressedImage); + } + } + } + } + doc.save(pdfFile.toString()); + } + } + @PostMapping(consumes = "multipart/form-data", value = "/compress-pdf") @Operation( summary = "Optimize PDF file", @@ -75,209 +120,92 @@ public ResponseEntity optimizePdf(@ModelAttribute OptimizePdfRequest req autoMode = true; } - // Save the uploaded file to a temporary location Path tempInputFile = Files.createTempFile("input_", ".pdf"); inputFile.transferTo(tempInputFile.toFile()); long inputFileSize = Files.size(tempInputFile); - // Prepare the output file path - Path tempOutputFile = null; byte[] pdfBytes; try { tempOutputFile = Files.createTempFile("output_", ".pdf"); - // Determine initial optimization level based on expected size reduction, only if in - // autoMode + if (autoMode) { double sizeReductionRatio = expectedOutputSize / (double) inputFileSize; - if (sizeReductionRatio > 0.7) { - optimizeLevel = 1; - } else if (sizeReductionRatio > 0.5) { - optimizeLevel = 2; - } else if (sizeReductionRatio > 0.35) { - optimizeLevel = 3; - } else { - optimizeLevel = 3; - } + optimizeLevel = determineOptimizeLevel(sizeReductionRatio); } boolean sizeMet = false; - while (!sizeMet && optimizeLevel <= 4) { - // Prepare the Ghostscript command - List command = new ArrayList<>(); - command.add("gs"); - command.add("-sDEVICE=pdfwrite"); - command.add("-dCompatibilityLevel=1.5"); - - switch (optimizeLevel) { - case 1: - command.add("-dPDFSETTINGS=/prepress"); - break; - case 2: - command.add("-dPDFSETTINGS=/printer"); - break; - case 3: - command.add("-dPDFSETTINGS=/ebook"); - break; - case 4: - command.add("-dPDFSETTINGS=/screen"); - break; - default: - command.add("-dPDFSETTINGS=/default"); + while (!sizeMet && optimizeLevel <= 9) { + + // Apply additional image compression for levels 6-9 + if (optimizeLevel >= 6) { + // Calculate scale factor based on optimization level + double scaleFactor = + switch (optimizeLevel) { + case 6 -> 0.9; // 90% of original size + case 7 -> 0.8; // 80% of original size + case 8 -> 0.65; // 70% of original size + case 9 -> 0.5; // 60% of original size + default -> 1.0; + }; + compressImagesInPDF(tempInputFile, scaleFactor); } - command.add("-dNOPAUSE"); - command.add("-dQUIET"); - command.add("-dBATCH"); - command.add("-sOutputFile=" + tempOutputFile.toString()); + // Run QPDF optimization + List command = new ArrayList<>(); + command.add("qpdf"); + if (request.getNormalize()) { + command.add("--normalize-content=y"); + } + if (request.getLinearize()) { + command.add("--linearize"); + } + command.add("--optimize-images"); + command.add("--recompress-flate"); + command.add("--compression-level=" + optimizeLevel); + command.add("--compress-streams=y"); + command.add("--object-streams=generate"); command.add(tempInputFile.toString()); + command.add(tempOutputFile.toString()); + + ProcessExecutorResult returnCode = null; + try { + returnCode = + ProcessExecutor.getInstance(ProcessExecutor.Processes.QPDF) + .runCommandWithOutputHandling(command); + } catch (Exception e) { + if (returnCode != null && returnCode.getRc() != 3) { + throw e; + } + } - ProcessExecutorResult returnCode = - ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT) - .runCommandWithOutputHandling(command); - - // Check if file size is within expected size or not auto mode so instantly finish + // Check if file size is within expected size or not auto mode long outputFileSize = Files.size(tempOutputFile); if (outputFileSize <= expectedOutputSize || !autoMode) { sizeMet = true; } else { - // Increase optimization level for next iteration - optimizeLevel++; - if (autoMode && optimizeLevel > 4) { - logger.info("Skipping level 5 due to bad results in auto mode"); + optimizeLevel = + incrementOptimizeLevel( + optimizeLevel, outputFileSize, expectedOutputSize); + if (autoMode && optimizeLevel > 9) { + log.info("Maximum compression level reached in auto mode"); sizeMet = true; - } else { - logger.info( - "Increasing ghostscript optimisation level to " + optimizeLevel); } } } - if (expectedOutputSize != null && autoMode) { - long outputFileSize = Files.size(tempOutputFile); - byte[] fileBytes = Files.readAllBytes(tempOutputFile); - if (outputFileSize > expectedOutputSize) { - try (PDDocument doc = Loader.loadPDF(fileBytes)) { - long previousFileSize = 0; - double scaleFactorConst = 0.9f; - double scaleFactor = 0.9f; - while (true) { - for (PDPage page : doc.getPages()) { - PDResources res = page.getResources(); - if (res != null && res.getXObjectNames() != null) { - for (COSName name : res.getXObjectNames()) { - PDXObject xobj = res.getXObject(name); - if (xobj != null && xobj instanceof PDImageXObject) { - PDImageXObject image = (PDImageXObject) xobj; - - // Get the image in BufferedImage format - BufferedImage bufferedImage = image.getImage(); - - // Calculate the new dimensions - int newWidth = - (int) - (bufferedImage.getWidth() - * scaleFactorConst); - int newHeight = - (int) - (bufferedImage.getHeight() - * scaleFactorConst); - - // If the new dimensions are zero, skip this iteration - if (newWidth == 0 || newHeight == 0) { - continue; - } - - // Otherwise, proceed with the scaling - Image scaledImage = - bufferedImage.getScaledInstance( - newWidth, - newHeight, - Image.SCALE_SMOOTH); - - // Convert the scaled image back to a BufferedImage - BufferedImage scaledBufferedImage = - new BufferedImage( - newWidth, - newHeight, - BufferedImage.TYPE_INT_RGB); - scaledBufferedImage - .getGraphics() - .drawImage(scaledImage, 0, 0, null); - - // Compress the scaled image - ByteArrayOutputStream compressedImageStream = - new ByteArrayOutputStream(); - ImageIO.write( - scaledBufferedImage, - "jpeg", - compressedImageStream); - byte[] imageBytes = compressedImageStream.toByteArray(); - compressedImageStream.close(); - - PDImageXObject compressedImage = - PDImageXObject.createFromByteArray( - doc, - imageBytes, - image.getCOSObject().toString()); - - // Replace the image in the resources with the - // compressed - // version - res.put(name, compressedImage); - } - } - } - } - - // save the document to tempOutputFile again - doc.save(tempOutputFile.toString()); - - long currentSize = Files.size(tempOutputFile); - // Check if the overall PDF size is still larger than expectedOutputSize - if (currentSize > expectedOutputSize) { - // Log the current file size and scaleFactor - - logger.info( - "Current file size: " - + FileUtils.byteCountToDisplaySize(currentSize)); - logger.info("Current scale factor: " + scaleFactor); - - // The file is still too large, reduce scaleFactor and try again - scaleFactor *= 0.9f; // reduce scaleFactor by 10% - // Avoid scaleFactor being too small, causing the image to shrink to - // 0 - if (scaleFactor < 0.2f || previousFileSize == currentSize) { - throw new RuntimeException( - "Could not reach the desired size without excessively degrading image quality, lowest size recommended is " - + FileUtils.byteCountToDisplaySize(currentSize) - + ", " - + currentSize - + " bytes"); - } - previousFileSize = currentSize; - } else { - // The file is small enough, break the loop - break; - } - } - } - } - } // Read the optimized PDF file pdfBytes = Files.readAllBytes(tempOutputFile); Path finalFile = tempOutputFile; + // Check if optimized file is larger than the original if (pdfBytes.length > inputFileSize) { - // Log the occurrence - logger.warn( + log.warn( "Optimized file is larger than the original. Returning the original file instead."); - - // Read the original file again finalFile = tempInputFile; } - // Return the optimized PDF as a response + String outputFilename = Filenames.toSimpleFileName(inputFile.getOriginalFilename()) .replaceFirst("[.][^.]+$", "") @@ -286,10 +214,31 @@ public ResponseEntity optimizePdf(@ModelAttribute OptimizePdfRequest req pdfDocumentFactory.load(finalFile.toFile()), outputFilename); } finally { - // Clean up the temporary files - // deleted by multipart file handler deu to transferTo? - // Files.deleteIfExists(tempInputFile); Files.deleteIfExists(tempOutputFile); } } + + private int determineOptimizeLevel(double sizeReductionRatio) { + if (sizeReductionRatio > 0.9) return 1; + if (sizeReductionRatio > 0.8) return 2; + if (sizeReductionRatio > 0.7) return 3; + if (sizeReductionRatio > 0.6) return 4; + if (sizeReductionRatio > 0.5) return 5; + if (sizeReductionRatio > 0.4) return 6; + if (sizeReductionRatio > 0.3) return 7; + if (sizeReductionRatio > 0.2) return 8; + return 9; + } + + private int incrementOptimizeLevel(int currentLevel, long currentSize, long targetSize) { + double currentRatio = currentSize / (double) targetSize; + log.info("Current compression ratio: {}", String.format("%.2f", currentRatio)); + + if (currentRatio > 2.0) { + return Math.min(9, currentLevel + 3); + } else if (currentRatio > 1.5) { + return Math.min(9, currentLevel + 2); + } + return Math.min(9, currentLevel + 1); + } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java index 966eec84e9..6bcc8003b2 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java @@ -17,8 +17,6 @@ import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.PDFRenderer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; @@ -31,6 +29,7 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.ExtractImageScansRequest; import stirling.software.SPDF.utils.CheckProgramInstall; import stirling.software.SPDF.utils.ProcessExecutor; @@ -39,10 +38,11 @@ @RestController @RequestMapping("/api/v1/misc") +@Slf4j @Tag(name = "Misc", description = "Miscellaneous APIs") public class ExtractImageScansController { - private static final Logger logger = LoggerFactory.getLogger(ExtractImageScansController.class); + private static final String REPLACEFIRST = "[.][^.]+$"; @PostMapping(consumes = "multipart/form-data", value = "/extract-image-scans") @Operation( @@ -201,7 +201,7 @@ public ResponseEntity extractImageScans( try { Files.deleteIfExists(path); } catch (IOException e) { - logger.error("Failed to delete temporary image file: " + path, e); + log.error("Failed to delete temporary image file: " + path, e); } }); @@ -209,7 +209,7 @@ public ResponseEntity extractImageScans( try { Files.deleteIfExists(tempZipFile); } catch (IOException e) { - logger.error("Failed to delete temporary zip file: " + tempZipFile, e); + log.error("Failed to delete temporary zip file: " + tempZipFile, e); } } @@ -218,11 +218,9 @@ public ResponseEntity extractImageScans( try { FileUtils.deleteDirectory(dir.toFile()); } catch (IOException e) { - logger.error("Failed to delete temporary directory: " + dir, e); + log.error("Failed to delete temporary directory: " + dir, e); } }); } } - - private static final String REPLACEFIRST = "[.][^.]+$"; } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java index 075de0d143..5dfeedb77c 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java @@ -25,8 +25,6 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -39,17 +37,17 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.PDFExtractImagesRequest; import stirling.software.SPDF.utils.ImageProcessingUtils; import stirling.software.SPDF.utils.WebResponseUtils; @RestController @RequestMapping("/api/v1/misc") +@Slf4j @Tag(name = "Misc", description = "Miscellaneous APIs") public class ExtractImagesController { - private static final Logger logger = LoggerFactory.getLogger(ExtractImagesController.class); - @PostMapping(consumes = "multipart/form-data", value = "/extract-images") @Operation( summary = "Extract images from a PDF file", @@ -107,7 +105,7 @@ public ResponseEntity extractImages(@ModelAttribute PDFExtractImagesRequ allowDuplicates); } catch (IOException e) { // Log the error and continue processing other pages - logger.error( + log.error( "Error extracting images from page {}: {}", pageNum, e.getMessage()); @@ -167,7 +165,7 @@ private void extractImagesFromPage( try { md = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { - logger.error("MD5 algorithm not available for extractImages hash.", e); + log.error("MD5 algorithm not available for extractImages hash.", e); return; } if (page.getResources() == null || page.getResources().getXObjectNames() == null) { diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanControllerWIP.java b/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanControllerWIP.java index d4c4ce05b6..ca4cbd8fd5 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanControllerWIP.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/FakeScanControllerWIP.java @@ -1,19 +1,10 @@ package stirling.software.SPDF.controller.api.misc; -import java.awt.AlphaComposite; -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.GradientPaint; -import java.awt.Graphics2D; -import java.awt.RenderingHints; +import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; import java.awt.geom.Path2D; -import java.awt.image.AffineTransformOp; -import java.awt.image.BufferedImage; -import java.awt.image.BufferedImageOp; -import java.awt.image.ConvolveOp; -import java.awt.image.Kernel; +import java.awt.image.*; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.security.SecureRandom; @@ -27,8 +18,6 @@ import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; @@ -50,15 +39,13 @@ @Tag(name = "Misc", description = "Miscellaneous APIs") public class FakeScanControllerWIP { - private static final Logger logger = LoggerFactory.getLogger(FakeScanControllerWIP.class); - // TODO finish @PostMapping(consumes = "multipart/form-data", value = "/fake-scan") @Hidden @Operation( summary = "Repair a PDF file", description = - "This endpoint repairs a given PDF file by running Ghostscript command. The PDF is first saved to a temporary location, repaired, read back, and then returned as a response.") + "This endpoint repairs a given PDF file by running qpdf command. The PDF is first saved to a temporary location, repaired, read back, and then returned as a response.") public ResponseEntity fakeScan(@ModelAttribute PDFFile request) throws IOException { MultipartFile inputFile = request.getFileInput(); diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java index c99b5f730c..10acbeea93 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java @@ -12,8 +12,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -26,17 +24,17 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.FlattenRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.WebResponseUtils; @RestController @RequestMapping("/api/v1/misc") +@Slf4j @Tag(name = "Misc", description = "Miscellaneous APIs") public class FlattenController { - private static final Logger logger = LoggerFactory.getLogger(FlattenController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -84,7 +82,7 @@ public ResponseEntity flatten(@ModelAttribute FlattenRequest request) th contentStream.drawImage(pdImage, 0, 0, pageWidth, pageHeight); } } catch (IOException e) { - logger.error("exception", e); + log.error("exception", e); } } return WebResponseUtils.pdfDocToWebResponse( diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/MetadataController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/MetadataController.java index 4d51e0f843..2eec954713 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/MetadataController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/MetadataController.java @@ -11,29 +11,26 @@ import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocumentInformation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import io.github.pixee.security.Filenames; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.MetadataRequest; import stirling.software.SPDF.utils.WebResponseUtils; +import stirling.software.SPDF.utils.propertyeditor.StringToMapPropertyEditor; @RestController @RequestMapping("/api/v1/misc") +@Slf4j @Tag(name = "Misc", description = "Miscellaneous APIs") public class MetadataController { - private static final Logger logger = LoggerFactory.getLogger(MetadataController.class); - private String checkUndefined(String entry) { // Check if the string is "undefined" if ("undefined".equals(entry)) { @@ -44,6 +41,11 @@ private String checkUndefined(String entry) { return entry; } + @InitBinder + public void initBinder(WebDataBinder binder) { + binder.registerCustomEditor(Map.class, "allRequestParams", new StringToMapPropertyEditor()); + } + @PostMapping(consumes = "multipart/form-data", value = "/update-metadata") @Operation( summary = "Update metadata of a PDF file", @@ -140,7 +142,7 @@ public ResponseEntity metadata(@ModelAttribute MetadataRequest request) creationDateCal.setTime( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(creationDate)); } catch (ParseException e) { - logger.error("exception", e); + log.error("exception", e); } info.setCreationDate(creationDateCal); } else { @@ -152,7 +154,7 @@ public ResponseEntity metadata(@ModelAttribute MetadataRequest request) modificationDateCal.setTime( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").parse(modificationDate)); } catch (ParseException e) { - logger.error("exception", e); + log.error("exception", e); } info.setModificationDate(modificationDateCal); } else { diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java index 96cabb60d7..09c6576eea 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java @@ -1,20 +1,21 @@ package stirling.software.SPDF.controller.api.misc; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; +import java.awt.image.BufferedImage; +import java.io.*; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import org.springframework.beans.factory.annotation.Autowired; +import javax.imageio.ImageIO; + +import org.apache.pdfbox.multipdf.PDFMergerUtility; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.rendering.PDFRenderer; +import org.apache.pdfbox.text.PDFTextStripper; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -23,24 +24,33 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import io.github.pixee.security.BoundedLineReader; import io.github.pixee.security.Filenames; -import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.api.misc.ProcessPdfWithOcrRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; -import stirling.software.SPDF.utils.ProcessExecutor; -import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult; -import stirling.software.SPDF.utils.WebResponseUtils; @RestController @RequestMapping("/api/v1/misc") @Tag(name = "Misc", description = "Miscellaneous APIs") +@Slf4j public class OCRController { - @Autowired ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; + + private final CustomPDDocumentFactory pdfDocumentFactory; + + public OCRController( + ApplicationProperties applicationProperties, + CustomPDDocumentFactory pdfDocumentFactory) { + this.applicationProperties = applicationProperties; + this.pdfDocumentFactory = pdfDocumentFactory; + } + /** Gets the list of available Tesseract languages from the tessdata directory */ public List getAvailableTesseractLanguages() { String tessdataDir = applicationProperties.getSystem().getTessdataDir(); File[] files = new File(tessdataDir).listFiles(); @@ -54,196 +64,147 @@ public List getAvailableTesseractLanguages() { .collect(Collectors.toList()); } - private final CustomPDDocumentFactory pdfDocumentFactory; - - @Autowired - public OCRController(CustomPDDocumentFactory pdfDocumentFactory) { - this.pdfDocumentFactory = pdfDocumentFactory; - } - @PostMapping(consumes = "multipart/form-data", value = "/ocr-pdf") - @Operation( - summary = "Process a PDF file with OCR", - description = - "This endpoint processes a PDF file using OCR (Optical Character Recognition). Users can specify languages, sidecar, deskew, clean, cleanFinal, ocrType, ocrRenderType, and removeImagesAfter options. Input:PDF Output:PDF Type:SI-Conditional") public ResponseEntity processPdfWithOCR( @ModelAttribute ProcessPdfWithOcrRequest request) throws IOException, InterruptedException { MultipartFile inputFile = request.getFileInput(); - List selectedLanguages = request.getLanguages(); - Boolean sidecar = request.isSidecar(); - Boolean deskew = request.isDeskew(); - Boolean clean = request.isClean(); - Boolean cleanFinal = request.isCleanFinal(); + List languages = request.getLanguages(); String ocrType = request.getOcrType(); - String ocrRenderType = request.getOcrRenderType(); - Boolean removeImagesAfter = request.isRemoveImagesAfter(); - // --output-type pdfa - if (selectedLanguages == null || selectedLanguages.isEmpty()) { - throw new IOException("Please select at least one language."); - } - - if (!"hocr".equals(ocrRenderType) && !"sandwich".equals(ocrRenderType)) { - throw new IOException("ocrRenderType wrong"); - } - - // Get available Tesseract languages - List availableLanguages = getAvailableTesseractLanguages(); - - // Validate selected languages - selectedLanguages = - selectedLanguages.stream().filter(availableLanguages::contains).toList(); - - if (selectedLanguages.isEmpty()) { - throw new IOException("None of the selected languages are valid."); - } - // Save the uploaded file to a temporary location - Path tempInputFile = Files.createTempFile("input_", ".pdf"); - Path tempOutputFile = Files.createTempFile("output_", ".pdf"); - Path sidecarTextPath = null; - + Path tempDir = Files.createTempDirectory("ocr_process"); + Path tempInputFile = tempDir.resolve("input.pdf"); + Path tempOutputDir = tempDir.resolve("output"); + Path tempImagesDir = tempDir.resolve("images"); + Path finalOutputFile = tempDir.resolve("final_output.pdf"); + Files.createDirectories(tempOutputDir); + Files.createDirectories(tempImagesDir); + Process process = null; try { + // Save input file inputFile.transferTo(tempInputFile.toFile()); - - // Run OCR Command - String languageOption = String.join("+", selectedLanguages); - - List command = - new ArrayList<>( - Arrays.asList( - "ocrmypdf", - "--verbose", - "2", - "--output-type", - "pdf", - "--pdf-renderer", - ocrRenderType)); - - if (sidecar != null && sidecar) { - sidecarTextPath = Files.createTempFile("sidecar", ".txt"); - command.add("--sidecar"); - command.add(sidecarTextPath.toString()); - } - - if (deskew != null && deskew) { - command.add("--deskew"); - } - if (clean != null && clean) { - command.add("--clean"); - } - if (cleanFinal != null && cleanFinal) { - command.add("--clean-final"); - } - if (ocrType != null && !"".equals(ocrType)) { - if ("skip-text".equals(ocrType)) { - command.add("--skip-text"); - } else if ("force-ocr".equals(ocrType)) { - command.add("--force-ocr"); - } else if ("Normal".equals(ocrType)) { - + PDFMergerUtility merger = new PDFMergerUtility(); + merger.setDestinationFileName(finalOutputFile.toString()); + try (PDDocument document = pdfDocumentFactory.load(tempInputFile.toFile())) { + PDFRenderer pdfRenderer = new PDFRenderer(document); + int pageCount = document.getNumberOfPages(); + for (int pageNum = 0; pageNum < pageCount; pageNum++) { + PDPage page = document.getPage(pageNum); + boolean hasText = false; + // Check for existing text + try (PDDocument tempDoc = new PDDocument()) { + tempDoc.addPage(page); + PDFTextStripper stripper = new PDFTextStripper(); + hasText = !stripper.getText(tempDoc).trim().isEmpty(); + } + boolean shouldOcr = + switch (ocrType) { + case "skip-text" -> !hasText; + case "force-ocr" -> true; + default -> true; + }; + Path pageOutputPath = + tempOutputDir.resolve(String.format("page_%d.pdf", pageNum)); + if (shouldOcr) { + // Convert page to image + BufferedImage image = pdfRenderer.renderImageWithDPI(pageNum, 300); + Path imagePath = + tempImagesDir.resolve(String.format("page_%d.png", pageNum)); + ImageIO.write(image, "png", imagePath.toFile()); + // Build OCR command + List command = new ArrayList<>(); + command.add("tesseract"); + command.add(imagePath.toString()); + command.add( + tempOutputDir + .resolve(String.format("page_%d", pageNum)) + .toString()); + command.add("-l"); + command.add(String.join("+", languages)); + // Always output PDF + command.add("pdf"); + ProcessBuilder pb = new ProcessBuilder(command); + process = pb.start(); + // Capture any error output + try (BufferedReader reader = + new BufferedReader( + new InputStreamReader(process.getErrorStream()))) { + String line; + while ((line = BoundedLineReader.readLine(reader, 5_000_000)) != null) { + log.debug("Tesseract: {}", line); + } + } + int exitCode = process.waitFor(); + if (exitCode != 0) { + throw new RuntimeException( + "Tesseract failed with exit code: " + exitCode); + } + // Add OCR'd PDF to merger + merger.addSource(pageOutputPath.toFile()); + } else { + // Save original page without OCR + try (PDDocument pageDoc = new PDDocument()) { + pageDoc.addPage(page); + pageDoc.save(pageOutputPath.toFile()); + merger.addSource(pageOutputPath.toFile()); + } + } } } - - command.addAll( - Arrays.asList( - "--language", - languageOption, - tempInputFile.toString(), - tempOutputFile.toString())); - - // Run CLI command - ProcessExecutorResult result = - ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF) - .runCommandWithOutputHandling(command); - if (result.getRc() != 0 - && result.getMessages().contains("multiprocessing/synchronize.py") - && result.getMessages() - .contains("OSError: [Errno 38] Function not implemented")) { - command.add("--jobs"); - command.add("1"); - result = - ProcessExecutor.getInstance(ProcessExecutor.Processes.OCR_MY_PDF) - .runCommandWithOutputHandling(command); - } - - // Remove images from the OCR processed PDF if the flag is set to true - if (removeImagesAfter != null && removeImagesAfter) { - Path tempPdfWithoutImages = Files.createTempFile("output_", "_no_images.pdf"); - - List gsCommand = - Arrays.asList( - "gs", - "-sDEVICE=pdfwrite", - "-dFILTERIMAGE", - "-o", - tempPdfWithoutImages.toString(), - tempOutputFile.toString()); - - ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT) - .runCommandWithOutputHandling(gsCommand); - tempOutputFile = tempPdfWithoutImages; - } - // Read the OCR processed PDF file - byte[] pdfBytes = pdfDocumentFactory.loadToBytes(tempOutputFile.toFile()); - - // Return the OCR processed PDF as a response + // Merge all pages into final PDF + merger.mergeDocuments(null); + // Read the final PDF file + byte[] pdfContent = Files.readAllBytes(finalOutputFile); String outputFilename = Filenames.toSimpleFileName(inputFile.getOriginalFilename()) .replaceFirst("[.][^.]+$", "") + "_OCR.pdf"; - - if (sidecar != null && sidecar) { - // Create a zip file containing both the PDF and the text file - String outputZipFilename = - Filenames.toSimpleFileName(inputFile.getOriginalFilename()) - .replaceFirst("[.][^.]+$", "") - + "_OCR.zip"; - Path tempZipFile = Files.createTempFile("output_", ".zip"); - - try (ZipOutputStream zipOut = - new ZipOutputStream(new FileOutputStream(tempZipFile.toFile()))) { - // Add PDF file to the zip - ZipEntry pdfEntry = new ZipEntry(outputFilename); - zipOut.putNextEntry(pdfEntry); - try (ByteArrayInputStream pdfInputStream = new ByteArrayInputStream(pdfBytes)) { - byte[] buffer = new byte[1024]; - int length; - while ((length = pdfInputStream.read(buffer)) != -1) { - zipOut.write(buffer, 0, length); - } - } - zipOut.closeEntry(); - - // Add text file to the zip - ZipEntry txtEntry = new ZipEntry(outputFilename.replace(".pdf", ".txt")); - zipOut.putNextEntry(txtEntry); - Files.copy(sidecarTextPath, zipOut); - zipOut.closeEntry(); - } - - byte[] zipBytes = Files.readAllBytes(tempZipFile); - - // Clean up the temporary zip file - Files.deleteIfExists(tempZipFile); - Files.deleteIfExists(tempOutputFile); - Files.deleteIfExists(sidecarTextPath); - - // Return the zip file containing both the PDF and the text file - return WebResponseUtils.bytesToWebResponse( - zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM); - } else { - // Return the OCR processed PDF as a response - Files.deleteIfExists(tempOutputFile); - return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); - } + return ResponseEntity.ok() + .header( + "Content-Disposition", + "attachment; filename=\"" + outputFilename + "\"") + .contentType(MediaType.APPLICATION_PDF) + .body(pdfContent); } finally { - // Clean up the temporary files - Files.deleteIfExists(tempOutputFile); - // Comment out as transferTo makes multipart handle cleanup - // Files.deleteIfExists(tempInputFile); - if (sidecarTextPath != null) { - Files.deleteIfExists(sidecarTextPath); + if (process != null) { + process.destroy(); } + // Clean up temporary files + deleteDirectory(tempDir); + } + } + + private void addFileToZip(File file, String filename, ZipOutputStream zipOut) + throws IOException { + if (!file.exists()) { + log.warn("File {} does not exist, skipping", file); + return; + } + try (FileInputStream fis = new FileInputStream(file)) { + ZipEntry zipEntry = new ZipEntry(filename); + zipOut.putNextEntry(zipEntry); + byte[] buffer = new byte[1024]; + int length; + while ((length = fis.read(buffer)) >= 0) { + zipOut.write(buffer, 0, length); + } + zipOut.closeEntry(); + } + } + + private void deleteDirectory(Path directory) { + try { + Files.walk(directory) + .sorted(Comparator.reverseOrder()) + .forEach( + path -> { + try { + Files.delete(path); + } catch (IOException e) { + log.error("Error deleting {}: {}", path, e.getMessage()); + } + }); + } catch (IOException e) { + log.error("Error walking directory {}: {}", directory, e.getMessage()); } } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/OverlayImageController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/OverlayImageController.java index 893fc1e5da..951515ada6 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/OverlayImageController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/OverlayImageController.java @@ -2,8 +2,6 @@ import java.io.IOException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -17,6 +15,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.OverlayImageRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.PdfUtils; @@ -24,11 +23,10 @@ @RestController @RequestMapping("/api/v1/misc") +@Slf4j @Tag(name = "Misc", description = "Miscellaneous APIs") public class OverlayImageController { - private static final Logger logger = LoggerFactory.getLogger(OverlayImageController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -60,7 +58,7 @@ public ResponseEntity overlayImage(@ModelAttribute OverlayImageRequest r .replaceFirst("[.][^.]+$", "") + "_overlayed.pdf"); } catch (IOException e) { - logger.error("Failed to add image to PDF", e); + log.error("Failed to add image to PDF", e); return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java index e42998d143..040d5e9658 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java @@ -10,8 +10,6 @@ import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.font.PDType1Font; import org.apache.pdfbox.pdmodel.font.Standard14Fonts; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -35,8 +33,6 @@ @Tag(name = "Misc", description = "Miscellaneous APIs") public class PageNumbersController { - private static final Logger logger = LoggerFactory.getLogger(PageNumbersController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java index 8f993abd05..059e70513e 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java @@ -1,7 +1,6 @@ package stirling.software.SPDF.controller.api.misc; -import java.awt.Graphics; -import java.awt.Graphics2D; +import java.awt.*; import java.awt.image.BufferedImage; import java.awt.print.PageFormat; import java.awt.print.Printable; diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java index be0827cc92..374d0c53b2 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java @@ -6,8 +6,6 @@ import java.util.ArrayList; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -31,8 +29,6 @@ @Tag(name = "Misc", description = "Miscellaneous APIs") public class RepairController { - private static final Logger logger = LoggerFactory.getLogger(RepairController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -44,30 +40,29 @@ public RepairController(CustomPDDocumentFactory pdfDocumentFactory) { @Operation( summary = "Repair a PDF file", description = - "This endpoint repairs a given PDF file by running Ghostscript command. The PDF is first saved to a temporary location, repaired, read back, and then returned as a response. Input:PDF Output:PDF Type:SISO") + "This endpoint repairs a given PDF file by running qpdf command. The PDF is first saved to a temporary location, repaired, read back, and then returned as a response. Input:PDF Output:PDF Type:SISO") public ResponseEntity repairPdf(@ModelAttribute PDFFile request) throws IOException, InterruptedException { MultipartFile inputFile = request.getFileInput(); // Save the uploaded file to a temporary location Path tempInputFile = Files.createTempFile("input_", ".pdf"); - Path tempOutputFile = Files.createTempFile("output_", ".pdf"); byte[] pdfBytes = null; inputFile.transferTo(tempInputFile.toFile()); try { List command = new ArrayList<>(); - command.add("gs"); - command.add("-o"); - command.add(tempOutputFile.toString()); - command.add("-sDEVICE=pdfwrite"); + command.add("qpdf"); + command.add("--replace-input"); // Automatically fixes problems it can + command.add("--qdf"); // Linearizes and normalizes PDF structure + command.add("--object-streams=disable"); // Can help with some corruptions command.add(tempInputFile.toString()); ProcessExecutorResult returnCode = - ProcessExecutor.getInstance(ProcessExecutor.Processes.GHOSTSCRIPT) + ProcessExecutor.getInstance(ProcessExecutor.Processes.QPDF) .runCommandWithOutputHandling(command); // Read the optimized PDF file - pdfBytes = pdfDocumentFactory.loadToBytes(tempOutputFile.toFile()); + pdfBytes = pdfDocumentFactory.loadToBytes(tempInputFile.toFile()); // Return the optimized PDF as a response String outputFilename = @@ -78,7 +73,6 @@ public ResponseEntity repairPdf(@ModelAttribute PDFFile request) } finally { // Clean up the temporary files Files.deleteIfExists(tempInputFile); - Files.deleteIfExists(tempOutputFile); } } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/ShowJavascript.java b/src/main/java/stirling/software/SPDF/controller/api/misc/ShowJavascript.java index a608fde951..d252800e6b 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/ShowJavascript.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/ShowJavascript.java @@ -7,8 +7,6 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.common.PDNameTreeNode; import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -29,8 +27,6 @@ @Tag(name = "Misc", description = "Miscellaneous APIs") public class ShowJavascript { - private static final Logger logger = LoggerFactory.getLogger(ShowJavascript.class); - @PostMapping(consumes = "multipart/form-data", value = "/show-javascript") @Operation( summary = "Grabs all JS from a PDF and returns a single JS file with all code", diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java index b15b76e7f9..30a7540ee4 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java @@ -1,6 +1,6 @@ package stirling.software.SPDF.controller.api.misc; -import java.awt.Color; +import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; @@ -229,10 +229,22 @@ private void addTextStamp( calculatePositionY( pageSize, position, calculateTextCapHeight(font, fontSize), margin); } + // Split the stampText into multiple lines + String[] lines = stampText.split("\\\\n"); + + // Calculate dynamic line height based on font ascent and descent + float ascent = font.getFontDescriptor().getAscent(); + float descent = font.getFontDescriptor().getDescent(); + float lineHeight = ((ascent - descent) / 1000) * fontSize; contentStream.beginText(); - contentStream.setTextMatrix(Matrix.getRotateInstance(Math.toRadians(rotation), x, y)); - contentStream.showText(stampText); + for (int i = 0; i < lines.length; i++) { + String line = lines[i]; + // Set the text matrix for each line with rotation + contentStream.setTextMatrix( + Matrix.getRotateInstance(Math.toRadians(rotation), x, y - (i * lineHeight))); + contentStream.showText(line); + } contentStream.endText(); } diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/ApiDocService.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/ApiDocService.java index 771d7b4514..4992c2f626 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/pipeline/ApiDocService.java +++ b/src/main/java/stirling/software/SPDF/controller/api/pipeline/ApiDocService.java @@ -7,8 +7,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -21,28 +19,35 @@ import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.ServletContext; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.SPdfApplication; import stirling.software.SPDF.model.ApiEndpoint; import stirling.software.SPDF.model.Role; @Service +@Slf4j public class ApiDocService { private final Map apiDocumentation = new HashMap<>(); - private static final Logger logger = LoggerFactory.getLogger(ApiDocService.class); + private final ServletContext servletContext; + private final UserServiceInterface userService; + Map> outputToFileTypes = new HashMap<>(); + JsonNode apiDocsJsonRootNode; - @Autowired private ServletContext servletContext; + public ApiDocService( + ServletContext servletContext, + @Autowired(required = false) UserServiceInterface userService) { + this.servletContext = servletContext; + this.userService = userService; + } private String getApiDocsUrl() { String contextPath = servletContext.getContextPath(); String port = SPdfApplication.getStaticPort(); - return "http://localhost:" + port + contextPath + "/v1/api-docs"; } - Map> outputToFileTypes = new HashMap<>(); - public List getExtensionTypes(boolean output, String operationName) { if (outputToFileTypes.size() == 0) { outputToFileTypes.put("PDF", Arrays.asList("pdf")); @@ -66,14 +71,12 @@ public List getExtensionTypes(boolean output, String operationName) { "BOOK", Arrays.asList("epub", "mobi", "azw3", "fb2", "txt", "docx")); // type. } - if (apiDocsJsonRootNode == null || apiDocumentation.size() == 0) { loadApiDocumentation(); } if (!apiDocumentation.containsKey(operationName)) { return null; } - ApiEndpoint endpoint = apiDocumentation.get(operationName); String description = endpoint.getDescription(); Pattern pattern = null; @@ -92,16 +95,11 @@ public List getExtensionTypes(boolean output, String operationName) { return null; } - @Autowired(required = false) - private UserServiceInterface userService; - private String getApiKeyForUser() { if (userService == null) return ""; return userService.getApiKeyForUser(Role.INTERNAL_API_USER.getRoleId()); } - JsonNode apiDocsJsonRootNode; - // @EventListener(ApplicationReadyEvent.class) private synchronized void loadApiDocumentation() { String apiDocsJson = ""; @@ -112,15 +110,12 @@ private synchronized void loadApiDocumentation() { headers.set("X-API-KEY", apiKey); } HttpEntity entity = new HttpEntity<>(headers); - RestTemplate restTemplate = new RestTemplate(); ResponseEntity response = restTemplate.exchange(getApiDocsUrl(), HttpMethod.GET, entity, String.class); apiDocsJson = response.getBody(); - ObjectMapper mapper = new ObjectMapper(); apiDocsJsonRootNode = mapper.readTree(apiDocsJson); - JsonNode paths = apiDocsJsonRootNode.path("paths"); paths.fields() .forEachRemaining( @@ -135,7 +130,7 @@ private synchronized void loadApiDocumentation() { }); } catch (Exception e) { // Handle exceptions - logger.error("Error grabbing swagger doc, body result {}", apiDocsJson); + log.error("Error grabbing swagger doc, body result {}", apiDocsJson); } } @@ -157,19 +152,15 @@ public boolean isMultiInput(String operationName) { if (!apiDocumentation.containsKey(operationName)) { return false; } - ApiEndpoint endpoint = apiDocumentation.get(operationName); String description = endpoint.getDescription(); - Pattern pattern = Pattern.compile("Type:(\\w+)"); Matcher matcher = pattern.matcher(description); if (matcher.find()) { String type = matcher.group(1); return type.startsWith("MI"); } - return false; } } - // Model class for API Endpoint diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java index dfa45096aa..d91ad7e3db 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java @@ -8,9 +8,6 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -26,6 +23,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.PipelineConfig; import stirling.software.SPDF.model.api.HandleDataRequest; @@ -33,30 +31,39 @@ @RestController @RequestMapping("/api/v1/pipeline") +@Slf4j @Tag(name = "Pipeline", description = "Pipeline APIs") public class PipelineController { - private static final Logger logger = LoggerFactory.getLogger(PipelineController.class); - final String watchedFoldersDir = "./pipeline/watchedFolders/"; + final String finishedFoldersDir = "./pipeline/finishedFolders/"; - @Autowired PipelineProcessor processor; - @Autowired ApplicationProperties applicationProperties; + private final PipelineProcessor processor; + + private final ApplicationProperties applicationProperties; - @Autowired private ObjectMapper objectMapper; + private final ObjectMapper objectMapper; + + public PipelineController( + PipelineProcessor processor, + ApplicationProperties applicationProperties, + ObjectMapper objectMapper) { + this.processor = processor; + this.applicationProperties = applicationProperties; + this.objectMapper = objectMapper; + } @PostMapping("/handleData") public ResponseEntity handleData(@ModelAttribute HandleDataRequest request) throws JsonMappingException, JsonProcessingException { - MultipartFile[] files = request.getFileInput(); String jsonString = request.getJson(); if (files == null) { return null; } PipelineConfig config = objectMapper.readValue(jsonString, PipelineConfig.class); - logger.info("Received POST request to /handleData with {} files", files.length); + log.info("Received POST request to /handleData with {} files", files.length); try { List inputFiles = processor.generateInputFiles(files); if (inputFiles == null || inputFiles.size() == 0) { @@ -70,26 +77,21 @@ public ResponseEntity handleData(@ModelAttribute HandleDataRequest reque byte[] bytes = new byte[(int) singleFile.contentLength()]; is.read(bytes); is.close(); - - logger.info("Returning single file response..."); + log.info("Returning single file response..."); return WebResponseUtils.bytesToWebResponse( bytes, singleFile.getFilename(), MediaType.APPLICATION_OCTET_STREAM); } else if (outputFiles == null) { return null; } - // Create a ByteArrayOutputStream to hold the zip ByteArrayOutputStream baos = new ByteArrayOutputStream(); ZipOutputStream zipOut = new ZipOutputStream(baos); - // A map to keep track of filenames and their counts Map filenameCount = new HashMap<>(); - // Loop through each file and add it to the zip for (Resource file : outputFiles) { String originalFilename = file.getFilename(); String filename = originalFilename; - // Check if the filename already exists, and modify it if necessary if (filenameCount.containsKey(originalFilename)) { int count = filenameCount.get(originalFilename); @@ -100,29 +102,23 @@ public ResponseEntity handleData(@ModelAttribute HandleDataRequest reque } else { filenameCount.put(originalFilename, 1); } - ZipEntry zipEntry = new ZipEntry(filename); zipOut.putNextEntry(zipEntry); - // Read the file into a byte array InputStream is = file.getInputStream(); byte[] bytes = new byte[(int) file.contentLength()]; is.read(bytes); - // Write the bytes of the file to the zip zipOut.write(bytes, 0, bytes.length); zipOut.closeEntry(); - is.close(); } - zipOut.close(); - - logger.info("Returning zipped file response..."); + log.info("Returning zipped file response..."); return WebResponseUtils.boasToWebResponse( baos, "output.zip", MediaType.APPLICATION_OCTET_STREAM); } catch (Exception e) { - logger.error("Error handling data: ", e); + log.error("Error handling data: ", e); return null; } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineDirectoryProcessor.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineDirectoryProcessor.java index 25531880ad..2595c2fecd 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineDirectoryProcessor.java +++ b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineDirectoryProcessor.java @@ -16,9 +16,6 @@ import java.util.Optional; import java.util.stream.Stream; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; @@ -27,27 +24,40 @@ import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.PipelineConfig; import stirling.software.SPDF.model.PipelineOperation; import stirling.software.SPDF.utils.FileMonitor; @Service +@Slf4j public class PipelineDirectoryProcessor { - private static final Logger logger = LoggerFactory.getLogger(PipelineDirectoryProcessor.class); - @Autowired private ObjectMapper objectMapper; - @Autowired private ApiDocService apiDocService; - @Autowired PipelineProcessor processor; - @Autowired FileMonitor fileMonitor; + private final ObjectMapper objectMapper; - final String watchedFoldersDir; - final String finishedFoldersDir; + private final ApiDocService apiDocService; + + private final PipelineProcessor processor; + + private final FileMonitor fileMonitor; + + private final String watchedFoldersDir; + + private final String finishedFoldersDir; public PipelineDirectoryProcessor( + ObjectMapper objectMapper, + ApiDocService apiDocService, @Qualifier("watchedFoldersDir") String watchedFoldersDir, - @Qualifier("finishedFoldersDir") String finishedFoldersDir) { + @Qualifier("finishedFoldersDir") String finishedFoldersDir, + PipelineProcessor processor, + FileMonitor fileMonitor) { + this.objectMapper = objectMapper; + this.apiDocService = apiDocService; this.watchedFoldersDir = watchedFoldersDir; this.finishedFoldersDir = finishedFoldersDir; + this.processor = processor; + this.fileMonitor = fileMonitor; } @Scheduled(fixedRate = 60000) @@ -56,9 +66,9 @@ public void scanFolders() { if (!Files.exists(watchedFolderPath)) { try { Files.createDirectories(watchedFolderPath); - logger.info("Created directory: {}", watchedFolderPath); + log.info("Created directory: {}", watchedFolderPath); } catch (IOException e) { - logger.error("Error creating directory: {}", watchedFolderPath, e); + log.error("Error creating directory: {}", watchedFolderPath, e); return; } } @@ -71,24 +81,22 @@ public void scanFolders() { handleDirectory(t); } } catch (Exception e) { - logger.error("Error handling directory: {}", t, e); + log.error("Error handling directory: {}", t, e); } }); } catch (Exception e) { - logger.error("Error walking through directory: {}", watchedFolderPath, e); + log.error("Error walking through directory: {}", watchedFolderPath, e); } } public void handleDirectory(Path dir) throws IOException { - logger.info("Handling directory: {}", dir); + log.info("Handling directory: {}", dir); Path processingDir = createProcessingDirectory(dir); - Optional jsonFileOptional = findJsonFile(dir); if (!jsonFileOptional.isPresent()) { - logger.warn("No .JSON settings file found. No processing will happen for dir {}.", dir); + log.warn("No .JSON settings file found. No processing will happen for dir {}.", dir); return; } - Path jsonFile = jsonFileOptional.get(); PipelineConfig config = readAndParseJson(jsonFile); processPipelineOperations(dir, processingDir, jsonFile, config); @@ -98,7 +106,7 @@ private Path createProcessingDirectory(Path dir) throws IOException { Path processingDir = dir.resolve("processing"); if (!Files.exists(processingDir)) { Files.createDirectory(processingDir); - logger.info("Created processing directory: {}", processingDir); + log.info("Created processing directory: {}", processingDir); } return processingDir; } @@ -111,7 +119,7 @@ private Optional findJsonFile(Path dir) throws IOException { private PipelineConfig readAndParseJson(Path jsonFile) throws IOException { String jsonString = new String(Files.readAllBytes(jsonFile), StandardCharsets.UTF_8); - logger.debug("Reading JSON file: {}", jsonFile); + log.debug("Reading JSON file: {}", jsonFile); return objectMapper.readValue(jsonString, PipelineConfig.class); } @@ -121,7 +129,7 @@ private void processPipelineOperations( validateOperation(operation); File[] files = collectFilesForProcessing(dir, jsonFile, operation); if (files == null || files.length == 0) { - logger.debug("No files detected for {} ", dir); + log.debug("No files detected for {} ", dir); return; } List filesToProcess = prepareFilesForProcessing(files, processingDir); @@ -167,13 +175,11 @@ private List prepareFilesForProcessing(File[] files, Path processingDir) private Path resolveUniqueFilePath(Path directory, String originalFileName) { Path filePath = directory.resolve(originalFileName); int counter = 1; - while (Files.exists(filePath)) { String newName = appendSuffixToFileName(originalFileName, "(" + counter + ")"); filePath = directory.resolve(newName); counter++; } - return filePath; } @@ -202,7 +208,7 @@ private void runPipelineAgainstFiles( moveAndRenameFiles(outputFiles, config, dir); deleteOriginalFiles(filesToProcess, processingDir); } catch (Exception e) { - logger.error("error during processing", e); + log.error("error during processing", e); moveFilesBack(filesToProcess, processingDir); } } @@ -212,18 +218,15 @@ private void moveAndRenameFiles(List resources, PipelineConfig config, for (Resource resource : resources) { String outputFileName = createOutputFileName(resource, config); Path outputPath = determineOutputPath(config, dir); - if (!Files.exists(outputPath)) { Files.createDirectories(outputPath); - logger.info("Created directory: {}", outputPath); + log.info("Created directory: {}", outputPath); } - Path outputFile = outputPath.resolve(outputFileName); try (OutputStream os = new FileOutputStream(outputFile.toFile())) { os.write(((ByteArrayResource) resource).getByteArray()); } - - logger.info("File moved and renamed to {}", outputFile); + log.info("File moved and renamed to {}", outputFile); } } @@ -231,7 +234,6 @@ private String createOutputFileName(Resource resource, PipelineConfig config) { String resourceName = resource.getFilename(); String baseName = resourceName.substring(0, resourceName.lastIndexOf('.')); String extension = resourceName.substring(resourceName.lastIndexOf('.') + 1); - String outputFileName = config.getOutputPattern() .replace("{filename}", baseName) @@ -246,7 +248,6 @@ private String createOutputFileName(Resource resource, PipelineConfig config) { .format(DateTimeFormatter.ofPattern("HHmmss"))) + "." + extension; - return outputFileName; } @@ -256,7 +257,6 @@ private Path determineOutputPath(PipelineConfig config, Path dir) { .replace("{outputFolder}", finishedFoldersDir) .replace("{folderName}", dir.toString()) .replaceAll("\\\\?watchedFolders", ""); - return Paths.get(outputDir).isAbsolute() ? Paths.get(outputDir) : Paths.get(".", outputDir); } @@ -264,7 +264,7 @@ private void deleteOriginalFiles(List filesToProcess, Path processingDir) throws IOException { for (File file : filesToProcess) { Files.deleteIfExists(processingDir.resolve(file.getName())); - logger.info("Deleted original file: {}", file.getName()); + log.info("Deleted original file: {}", file.getName()); } } @@ -272,12 +272,12 @@ private void moveFilesBack(List filesToProcess, Path processingDir) { for (File file : filesToProcess) { try { Files.move(processingDir.resolve(file.getName()), file.toPath()); - logger.info( + log.info( "Moved file back to original location: {} , {}", file.toPath(), file.getName()); } catch (IOException e) { - logger.error("Error moving file back to original location: {}", file.getName(), e); + log.error("Error moving file back to original location: {}", file.getName(), e); } } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java index 2e62c3505c..c9b741a0ad 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java +++ b/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineProcessor.java @@ -1,10 +1,6 @@ package stirling.software.SPDF.controller.api.pipeline; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.PrintStream; +import java.io.*; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -19,17 +15,10 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ByteArrayResource; import org.springframework.core.io.Resource; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; +import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; @@ -40,22 +29,49 @@ import io.github.pixee.security.ZipSecurity; import jakarta.servlet.ServletContext; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.SPdfApplication; import stirling.software.SPDF.model.PipelineConfig; import stirling.software.SPDF.model.PipelineOperation; import stirling.software.SPDF.model.Role; @Service +@Slf4j public class PipelineProcessor { - private static final Logger logger = LoggerFactory.getLogger(PipelineProcessor.class); + private final ApiDocService apiDocService; - @Autowired private ApiDocService apiDocService; + private final UserServiceInterface userService; - @Autowired(required = false) - private UserServiceInterface userService; + private final ServletContext servletContext; - @Autowired private ServletContext servletContext; + public PipelineProcessor( + ApiDocService apiDocService, + @Autowired(required = false) UserServiceInterface userService, + ServletContext servletContext) { + this.apiDocService = apiDocService; + this.userService = userService; + this.servletContext = servletContext; + } + + public static String removeTrailingNaming(String filename) { + // Splitting filename into name and extension + int dotIndex = filename.lastIndexOf("."); + if (dotIndex == -1) { + // No extension found + return filename; + } + String name = filename.substring(0, dotIndex); + String extension = filename.substring(dotIndex); + // Finding the last underscore + int underscoreIndex = name.lastIndexOf("_"); + if (underscoreIndex == -1) { + // No underscore found + return filename; + } + // Removing the last part and reattaching the extension + return name.substring(0, underscoreIndex) + extension; + } private String getApiKeyForUser() { if (userService == null) return ""; @@ -65,23 +81,18 @@ private String getApiKeyForUser() { private String getBaseUrl() { String contextPath = servletContext.getContextPath(); String port = SPdfApplication.getStaticPort(); - return "http://localhost:" + port + contextPath + "/"; } List runPipelineAgainstFiles(List outputFiles, PipelineConfig config) throws Exception { - ByteArrayOutputStream logStream = new ByteArrayOutputStream(); PrintStream logPrintStream = new PrintStream(logStream); - boolean hasErrors = false; - for (PipelineOperation pipelineOperation : config.getOperations()) { String operation = pipelineOperation.getOperation(); boolean isMultiInputOperation = apiDocService.isMultiInput(operation); - - logger.info( + log.info( "Running operation: {} isMultiInputOperation {}", operation, isMultiInputOperation); @@ -91,9 +102,7 @@ List runPipelineAgainstFiles(List outputFiles, PipelineConfi inputFileTypes = new ArrayList(Arrays.asList("ALL")); } // List outputFileTypes = apiDocService.getExtensionTypes(true, operation); - String url = getBaseUrl() + operation; - List newOutputFiles = new ArrayList<>(); if (!isMultiInputOperation) { for (Resource file : outputFiles) { @@ -103,7 +112,6 @@ List runPipelineAgainstFiles(List outputFiles, PipelineConfi hasInputFileType = true; MultiValueMap body = new LinkedMultiValueMap<>(); body.add("fileInput", file); - for (Entry entry : parameters.entrySet()) { if (entry.getValue() instanceof List) { List list = (List) entry.getValue(); @@ -114,9 +122,7 @@ List runPipelineAgainstFiles(List outputFiles, PipelineConfi body.add(entry.getKey(), entry.getValue()); } } - ResponseEntity response = sendWebRequest(url, body); - // If the operation is filter and the response body is null or empty, // skip // this @@ -124,10 +130,9 @@ List runPipelineAgainstFiles(List outputFiles, PipelineConfi if (operation.startsWith("filter-") && (response.getBody() == null || response.getBody().length == 0)) { - logger.info("Skipping file due to failing {}", operation); + log.info("Skipping file due to failing {}", operation); continue; } - if (!response.getStatusCode().equals(HttpStatus.OK)) { logPrintStream.println("Error: " + response.getBody()); hasErrors = true; @@ -136,7 +141,6 @@ List runPipelineAgainstFiles(List outputFiles, PipelineConfi processOutputFiles(operation, response, newOutputFiles); } } - if (!hasInputFileType) { logPrintStream.println( "No files with extension " @@ -146,7 +150,6 @@ List runPipelineAgainstFiles(List outputFiles, PipelineConfi hasErrors = true; } } - } else { // Filter and collect all files that match the inputFileExtension List matchingFiles; @@ -162,17 +165,14 @@ List runPipelineAgainstFiles(List outputFiles, PipelineConfi .anyMatch(file.getFilename()::endsWith)) .collect(Collectors.toList()); } - // Check if there are matching files if (!matchingFiles.isEmpty()) { // Create a new MultiValueMap for the request body MultiValueMap body = new LinkedMultiValueMap<>(); - // Add all matching files to the body for (Resource file : matchingFiles) { body.add("fileInput", file); } - for (Entry entry : parameters.entrySet()) { if (entry.getValue() instanceof List) { List list = (List) entry.getValue(); @@ -183,9 +183,7 @@ List runPipelineAgainstFiles(List outputFiles, PipelineConfi body.add(entry.getKey(), entry.getValue()); } } - ResponseEntity response = sendWebRequest(url, body); - // Handle the response if (response.getStatusCode().equals(HttpStatus.OK)) { processOutputFiles(operation, response, newOutputFiles); @@ -208,50 +206,24 @@ List runPipelineAgainstFiles(List outputFiles, PipelineConfi outputFiles = newOutputFiles; } if (hasErrors) { - logger.error("Errors occurred during processing. Log: {}", logStream.toString()); + log.error("Errors occurred during processing. Log: {}", logStream.toString()); } - return outputFiles; } private ResponseEntity sendWebRequest(String url, MultiValueMap body) { RestTemplate restTemplate = new RestTemplate(); - // Set up headers, including API key - HttpHeaders headers = new HttpHeaders(); String apiKey = getApiKeyForUser(); - headers.add("X-API-Key", apiKey); + headers.add("X-API-KEY", apiKey); headers.setContentType(MediaType.MULTIPART_FORM_DATA); - // Create HttpEntity with the body and headers HttpEntity> entity = new HttpEntity<>(body, headers); - // Make the request to the REST endpoint return restTemplate.exchange(url, HttpMethod.POST, entity, byte[].class); } - public static String removeTrailingNaming(String filename) { - // Splitting filename into name and extension - int dotIndex = filename.lastIndexOf("."); - if (dotIndex == -1) { - // No extension found - return filename; - } - String name = filename.substring(0, dotIndex); - String extension = filename.substring(dotIndex); - - // Finding the last underscore - int underscoreIndex = name.lastIndexOf("_"); - if (underscoreIndex == -1) { - // No underscore found - return filename; - } - - // Removing the last part and reattaching the extension - return name.substring(0, underscoreIndex) + extension; - } - private List processOutputFiles( String operation, ResponseEntity response, List newOutputFiles) throws IOException { @@ -261,13 +233,11 @@ private List processOutputFiles( // If the operation is "auto-rename", generate a new filename. // This is a simple example of generating a filename using current timestamp. // Modify as per your needs. - newFilename = extractFilename(response); } else { // Otherwise, keep the original filename. newFilename = removeTrailingNaming(extractFilename(response)); } - // Check if the response body is a zip file if (isZip(response.getBody())) { // Unzip the file and add all the files to the new output files @@ -275,6 +245,7 @@ private List processOutputFiles( } else { Resource outputResource = new ByteArrayResource(response.getBody()) { + @Override public String getFilename() { return newFilename; @@ -282,16 +253,14 @@ public String getFilename() { }; newOutputFiles.add(outputResource); } - return newOutputFiles; } public String extractFilename(ResponseEntity response) { - String filename = "default-filename.ext"; // Default filename if not found - + // Default filename if not found + String filename = "default-filename.ext"; HttpHeaders headers = response.getHeaders(); String contentDisposition = headers.getFirst(HttpHeaders.CONTENT_DISPOSITION); - if (contentDisposition != null && !contentDisposition.isEmpty()) { String[] parts = contentDisposition.split(";"); for (String part : parts) { @@ -299,30 +268,27 @@ public String extractFilename(ResponseEntity response) { // Extracts filename and removes quotes if present filename = part.split("=")[1].trim().replace("\"", ""); filename = URLDecoder.decode(filename, StandardCharsets.UTF_8); - break; } } } - return filename; } List generateInputFiles(File[] files) throws Exception { if (files == null || files.length == 0) { - logger.info("No files"); + log.info("No files"); return null; } - List outputFiles = new ArrayList<>(); - for (File file : files) { Path path = Paths.get(file.getAbsolutePath()); - logger.info("Reading file: " + path); // debug statement - + // debug statement + log.info("Reading file: " + path); if (Files.exists(path)) { Resource fileResource = new ByteArrayResource(Files.readAllBytes(path)) { + @Override public String getFilename() { return file.getName(); @@ -330,24 +296,23 @@ public String getFilename() { }; outputFiles.add(fileResource); } else { - logger.info("File not found: " + path); + log.info("File not found: " + path); } } - logger.info("Files successfully loaded. Starting processing..."); + log.info("Files successfully loaded. Starting processing..."); return outputFiles; } List generateInputFiles(MultipartFile[] files) throws Exception { if (files == null || files.length == 0) { - logger.info("No files"); + log.info("No files"); return null; } - List outputFiles = new ArrayList<>(); - for (MultipartFile file : files) { Resource fileResource = new ByteArrayResource(file.getBytes()) { + @Override public String getFilename() { return Filenames.toSimpleFileName(file.getOriginalFilename()); @@ -355,7 +320,7 @@ public String getFilename() { }; outputFiles.add(fileResource); } - logger.info("Files successfully loaded. Starting processing..."); + log.info("Files successfully loaded. Starting processing..."); return outputFiles; } @@ -363,48 +328,42 @@ private boolean isZip(byte[] data) { if (data == null || data.length < 4) { return false; } - // Check the first four bytes of the data against the standard zip magic number return data[0] == 0x50 && data[1] == 0x4B && data[2] == 0x03 && data[3] == 0x04; } private List unzip(byte[] data) throws IOException { - logger.info("Unzipping data of length: {}", data.length); + log.info("Unzipping data of length: {}", data.length); List unzippedFiles = new ArrayList<>(); - try (ByteArrayInputStream bais = new ByteArrayInputStream(data); ZipInputStream zis = ZipSecurity.createHardenedInputStream(bais)) { - ZipEntry entry; while ((entry = zis.getNextEntry()) != null) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int count; - while ((count = zis.read(buffer)) != -1) { baos.write(buffer, 0, count); } - final String filename = entry.getName(); Resource fileResource = new ByteArrayResource(baos.toByteArray()) { + @Override public String getFilename() { return filename; } }; - // If the unzipped file is a zip file, unzip it if (isZip(baos.toByteArray())) { - logger.info("File {} is a zip file. Unzipping...", filename); + log.info("File {} is a zip file. Unzipping...", filename); unzippedFiles.addAll(unzip(baos.toByteArray())); } else { unzippedFiles.add(fileResource); } } } - - logger.info("Unzipping completed. {} files were unzipped.", unzippedFiles.size()); + log.info("Unzipping completed. {} files were unzipped.", unzippedFiles.size()); return unzippedFiles; } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java b/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java index 27262febdf..68dca8b816 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java @@ -1,20 +1,9 @@ package stirling.software.SPDF.controller.api.security; -import java.awt.Color; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; +import java.awt.*; +import java.io.*; import java.nio.file.Files; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.Security; -import java.security.UnrecoverableKeyException; +import java.security.*; import java.security.cert.Certificate; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; @@ -63,8 +52,6 @@ import org.bouncycastle.operator.OperatorCreationException; import org.bouncycastle.pkcs.PKCS8EncryptedPrivateKeyInfo; import org.bouncycastle.pkcs.PKCSException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.http.ResponseEntity; @@ -78,141 +65,72 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.security.SignPDFWithCertRequest; import stirling.software.SPDF.service.CustomPDDocumentFactory; import stirling.software.SPDF.utils.WebResponseUtils; @RestController @RequestMapping("/api/v1/security") +@Slf4j @Tag(name = "Security", description = "Security APIs") public class CertSignController { - private static final Logger logger = LoggerFactory.getLogger(CertSignController.class); - static { Security.addProvider(new BouncyCastleProvider()); } - class CreateSignature extends CreateSignatureBase { - File logoFile; - - public CreateSignature(KeyStore keystore, char[] pin) - throws KeyStoreException, - UnrecoverableKeyException, - NoSuchAlgorithmException, - IOException, - CertificateException { - super(keystore, pin); - ClassPathResource resource = new ClassPathResource("static/images/signature.png"); - try (InputStream is = resource.getInputStream()) { - logoFile = Files.createTempFile("signature", ".png").toFile(); - FileUtils.copyInputStreamToFile(is, logoFile); - } catch (IOException e) { - logger.error("Failed to load image signature file"); - throw e; - } - } - - public InputStream createVisibleSignature( - PDDocument srcDoc, PDSignature signature, Integer pageNumber, Boolean showLogo) - throws IOException { - // modified from org.apache.pdfbox.examples.signature.CreateVisibleSignature2 - try (PDDocument doc = new PDDocument()) { - PDPage page = new PDPage(srcDoc.getPage(pageNumber).getMediaBox()); - doc.addPage(page); - PDAcroForm acroForm = new PDAcroForm(doc); - doc.getDocumentCatalog().setAcroForm(acroForm); - PDSignatureField signatureField = new PDSignatureField(acroForm); - PDAnnotationWidget widget = signatureField.getWidgets().get(0); - List acroFormFields = acroForm.getFields(); - acroForm.setSignaturesExist(true); - acroForm.setAppendOnly(true); - acroForm.getCOSObject().setDirect(true); - acroFormFields.add(signatureField); - - PDRectangle rect = new PDRectangle(0, 0, 200, 50); - - widget.setRectangle(rect); - - // from PDVisualSigBuilder.createHolderForm() - PDStream stream = new PDStream(doc); - PDFormXObject form = new PDFormXObject(stream); - PDResources res = new PDResources(); - form.setResources(res); - form.setFormType(1); - PDRectangle bbox = new PDRectangle(rect.getWidth(), rect.getHeight()); - float height = bbox.getHeight(); - form.setBBox(bbox); - PDFont font = new PDType1Font(FontName.TIMES_BOLD); - - // from PDVisualSigBuilder.createAppearanceDictionary() - PDAppearanceDictionary appearance = new PDAppearanceDictionary(); - appearance.getCOSObject().setDirect(true); - PDAppearanceStream appearanceStream = new PDAppearanceStream(form.getCOSObject()); - appearance.setNormalAppearance(appearanceStream); - widget.setAppearance(appearance); - - try (PDPageContentStream cs = new PDPageContentStream(doc, appearanceStream)) { - if (showLogo) { - cs.saveGraphicsState(); - PDExtendedGraphicsState extState = new PDExtendedGraphicsState(); - extState.setBlendMode(BlendMode.MULTIPLY); - extState.setNonStrokingAlphaConstant(0.5f); - cs.setGraphicsStateParameters(extState); - cs.transform(Matrix.getScaleInstance(0.08f, 0.08f)); - PDImageXObject img = - PDImageXObject.createFromFileByExtension(logoFile, doc); - cs.drawImage(img, 100, 0); - cs.restoreGraphicsState(); - } - - // show text - float fontSize = 10; - float leading = fontSize * 1.5f; - cs.beginText(); - cs.setFont(font, fontSize); - cs.setNonStrokingColor(Color.black); - cs.newLineAtOffset(fontSize, height - leading); - cs.setLeading(leading); - - X509Certificate cert = (X509Certificate) getCertificateChain()[0]; + private final CustomPDDocumentFactory pdfDocumentFactory; - // https://stackoverflow.com/questions/2914521/ - X500Name x500Name = new X500Name(cert.getSubjectX500Principal().getName()); - RDN cn = x500Name.getRDNs(BCStyle.CN)[0]; - String name = IETFUtils.valueToString(cn.getFirst().getValue()); + @Autowired + public CertSignController(CustomPDDocumentFactory pdfDocumentFactory) { + this.pdfDocumentFactory = pdfDocumentFactory; + } - String date = signature.getSignDate().getTime().toString(); - String reason = signature.getReason(); + private static void sign( + CustomPDDocumentFactory pdfDocumentFactory, + byte[] input, + OutputStream output, + CreateSignature instance, + Boolean showSignature, + Integer pageNumber, + String name, + String location, + String reason, + Boolean showLogo) { + try (PDDocument doc = pdfDocumentFactory.load(input)) { + PDSignature signature = new PDSignature(); + signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); + signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); + signature.setName(name); + signature.setLocation(location); + signature.setReason(reason); + signature.setSignDate(Calendar.getInstance()); - cs.showText("Signed by " + name); - cs.newLine(); - cs.showText(date); - cs.newLine(); - cs.showText(reason); + if (showSignature) { + SignatureOptions signatureOptions = new SignatureOptions(); + signatureOptions.setVisualSignature( + instance.createVisibleSignature(doc, signature, pageNumber, showLogo)); + signatureOptions.setPage(pageNumber); - cs.endText(); - } + doc.addSignature(signature, instance, signatureOptions); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - doc.save(baos); - return new ByteArrayInputStream(baos.toByteArray()); + } else { + doc.addSignature(signature, instance); } + doc.saveIncremental(output); + } catch (Exception e) { + log.error("exception", e); } } - private final CustomPDDocumentFactory pdfDocumentFactory; - - @Autowired - public CertSignController(CustomPDDocumentFactory pdfDocumentFactory) { - this.pdfDocumentFactory = pdfDocumentFactory; - } - @PostMapping(consumes = "multipart/form-data", value = "/cert-sign") @Operation( summary = "Sign PDF with a Digital Certificate", description = - "This endpoint accepts a PDF file, a digital certificate and related information to sign the PDF. It then returns the digitally signed PDF file. Input:PDF Output:PDF Type:SISO") + "This endpoint accepts a PDF file, a digital certificate and related information to sign" + + " the PDF. It then returns the digitally signed PDF file. Input:PDF Output:PDF" + + " Type:SISO") public ResponseEntity signPDFWithCert(@ModelAttribute SignPDFWithCertRequest request) throws Exception { MultipartFile pdf = request.getFileInput(); @@ -275,43 +193,6 @@ public ResponseEntity signPDFWithCert(@ModelAttribute SignPDFWithCertReq + "_signed.pdf"); } - private static void sign( - CustomPDDocumentFactory pdfDocumentFactory, - byte[] input, - OutputStream output, - CreateSignature instance, - Boolean showSignature, - Integer pageNumber, - String name, - String location, - String reason, - Boolean showLogo) { - try (PDDocument doc = pdfDocumentFactory.load(input)) { - PDSignature signature = new PDSignature(); - signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); - signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); - signature.setName(name); - signature.setLocation(location); - signature.setReason(reason); - signature.setSignDate(Calendar.getInstance()); - - if (showSignature) { - SignatureOptions signatureOptions = new SignatureOptions(); - signatureOptions.setVisualSignature( - instance.createVisibleSignature(doc, signature, pageNumber, showLogo)); - signatureOptions.setPage(pageNumber); - - doc.addSignature(signature, instance, signatureOptions); - - } else { - doc.addSignature(signature, instance); - } - doc.saveIncremental(output); - } catch (Exception e) { - logger.error("exception", e); - } - } - private PrivateKey getPrivateKeyFromPEM(byte[] pemBytes, String password) throws IOException, OperatorCreationException, PKCSException { try (PEMParser pemParser = @@ -343,4 +224,112 @@ private Certificate getCertificateFromPEM(byte[] pemBytes) return CertificateFactory.getInstance("X.509").generateCertificate(bis); } } + + class CreateSignature extends CreateSignatureBase { + File logoFile; + + public CreateSignature(KeyStore keystore, char[] pin) + throws KeyStoreException, + UnrecoverableKeyException, + NoSuchAlgorithmException, + IOException, + CertificateException { + super(keystore, pin); + ClassPathResource resource = new ClassPathResource("static/images/signature.png"); + try (InputStream is = resource.getInputStream()) { + logoFile = Files.createTempFile("signature", ".png").toFile(); + FileUtils.copyInputStreamToFile(is, logoFile); + } catch (IOException e) { + log.error("Failed to load image signature file"); + throw e; + } + } + + public InputStream createVisibleSignature( + PDDocument srcDoc, PDSignature signature, Integer pageNumber, Boolean showLogo) + throws IOException { + // modified from org.apache.pdfbox.examples.signature.CreateVisibleSignature2 + try (PDDocument doc = new PDDocument()) { + PDPage page = new PDPage(srcDoc.getPage(pageNumber).getMediaBox()); + doc.addPage(page); + PDAcroForm acroForm = new PDAcroForm(doc); + doc.getDocumentCatalog().setAcroForm(acroForm); + PDSignatureField signatureField = new PDSignatureField(acroForm); + PDAnnotationWidget widget = signatureField.getWidgets().get(0); + List acroFormFields = acroForm.getFields(); + acroForm.setSignaturesExist(true); + acroForm.setAppendOnly(true); + acroForm.getCOSObject().setDirect(true); + acroFormFields.add(signatureField); + + PDRectangle rect = new PDRectangle(0, 0, 200, 50); + + widget.setRectangle(rect); + + // from PDVisualSigBuilder.createHolderForm() + PDStream stream = new PDStream(doc); + PDFormXObject form = new PDFormXObject(stream); + PDResources res = new PDResources(); + form.setResources(res); + form.setFormType(1); + PDRectangle bbox = new PDRectangle(rect.getWidth(), rect.getHeight()); + float height = bbox.getHeight(); + form.setBBox(bbox); + PDFont font = new PDType1Font(FontName.TIMES_BOLD); + + // from PDVisualSigBuilder.createAppearanceDictionary() + PDAppearanceDictionary appearance = new PDAppearanceDictionary(); + appearance.getCOSObject().setDirect(true); + PDAppearanceStream appearanceStream = new PDAppearanceStream(form.getCOSObject()); + appearance.setNormalAppearance(appearanceStream); + widget.setAppearance(appearance); + + try (PDPageContentStream cs = new PDPageContentStream(doc, appearanceStream)) { + if (showLogo) { + cs.saveGraphicsState(); + PDExtendedGraphicsState extState = new PDExtendedGraphicsState(); + extState.setBlendMode(BlendMode.MULTIPLY); + extState.setNonStrokingAlphaConstant(0.5f); + cs.setGraphicsStateParameters(extState); + cs.transform(Matrix.getScaleInstance(0.08f, 0.08f)); + PDImageXObject img = + PDImageXObject.createFromFileByExtension(logoFile, doc); + cs.drawImage(img, 100, 0); + cs.restoreGraphicsState(); + } + + // show text + float fontSize = 10; + float leading = fontSize * 1.5f; + cs.beginText(); + cs.setFont(font, fontSize); + cs.setNonStrokingColor(Color.black); + cs.newLineAtOffset(fontSize, height - leading); + cs.setLeading(leading); + + X509Certificate cert = (X509Certificate) getCertificateChain()[0]; + + // https://stackoverflow.com/questions/2914521/ + X500Name x500Name = new X500Name(cert.getSubjectX500Principal().getName()); + RDN cn = x500Name.getRDNs(BCStyle.CN)[0]; + String name = IETFUtils.valueToString(cn.getFirst().getValue()); + + String date = signature.getSignDate().getTime().toString(); + String reason = signature.getReason(); + + cs.showText("Signed by " + name); + cs.newLine(); + cs.showText(date); + cs.newLine(); + cs.showText(reason); + + cs.endText(); + } + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + doc.save(baos); + return new ByteArrayInputStream(baos.toByteArray()); + } + } + } } diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/GetInfoOnPDF.java b/src/main/java/stirling/software/SPDF/controller/api/security/GetInfoOnPDF.java index 77f025249b..fc9e862317 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/GetInfoOnPDF.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/GetInfoOnPDF.java @@ -4,25 +4,13 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import org.apache.pdfbox.Loader; import org.apache.pdfbox.cos.COSInputStream; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.cos.COSString; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDDocumentCatalog; -import org.apache.pdfbox.pdmodel.PDDocumentInformation; -import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary; -import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode; -import org.apache.pdfbox.pdmodel.PDJavascriptNameTreeNode; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.PDResources; +import org.apache.pdfbox.pdmodel.*; import org.apache.pdfbox.pdmodel.common.PDMetadata; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.common.PDStream; @@ -56,8 +44,6 @@ import org.apache.xmpbox.xml.DomXmpParser; import org.apache.xmpbox.xml.XmpParsingException; import org.apache.xmpbox.xml.XmpSerializer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -73,18 +59,60 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.PDFFile; import stirling.software.SPDF.utils.WebResponseUtils; @RestController @RequestMapping("/api/v1/security") +@Slf4j @Tag(name = "Security", description = "Security APIs") public class GetInfoOnPDF { - private static final Logger logger = LoggerFactory.getLogger(GetInfoOnPDF.class); - static ObjectMapper objectMapper = new ObjectMapper(); + private static void addOutlinesToArray(PDOutlineItem outline, ArrayNode arrayNode) { + if (outline == null) return; + + ObjectNode outlineNode = objectMapper.createObjectNode(); + outlineNode.put("Title", outline.getTitle()); + // You can add other properties if needed + arrayNode.add(outlineNode); + + PDOutlineItem child = outline.getFirstChild(); + while (child != null) { + addOutlinesToArray(child, arrayNode); + child = child.getNextSibling(); + } + } + + public static boolean checkForStandard(PDDocument document, String standardKeyword) { + // Check XMP Metadata + try { + PDMetadata pdMetadata = document.getDocumentCatalog().getMetadata(); + if (pdMetadata != null) { + COSInputStream metaStream = pdMetadata.createInputStream(); + DomXmpParser domXmpParser = new DomXmpParser(); + XMPMetadata xmpMeta = domXmpParser.parse(metaStream); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + new XmpSerializer().serialize(xmpMeta, baos, true); + String xmpString = new String(baos.toByteArray(), StandardCharsets.UTF_8); + + if (xmpString.contains(standardKeyword)) { + return true; + } + } + } catch ( + Exception + e) { // Catching general exception for brevity, ideally you'd catch specific + // exceptions. + log.error("exception", e); + } + + return false; + } + @PostMapping(consumes = "multipart/form-data", value = "/get-info-on-pdf") @Operation(summary = "Summary here", description = "desc. Input:PDF Output:JSON Type:SISO") public ResponseEntity getPdfInfo(@ModelAttribute PDFFile request) throws IOException { @@ -224,7 +252,7 @@ public ResponseEntity getPdfInfo(@ModelAttribute PDFFile request) throws javascriptArray.add(jsNode); } } catch (IOException e) { - logger.error("exception", e); + log.error("exception", e); } } } @@ -257,7 +285,7 @@ public ResponseEntity getPdfInfo(@ModelAttribute PDFFile request) throws } } catch (Exception e) { // TODO Auto-generated catch block - logger.error("exception", e); + log.error("exception", e); } boolean isPdfACompliant = checkForStandard(pdfBoxDoc, "PDF/A"); @@ -309,7 +337,7 @@ public ResponseEntity getPdfInfo(@ModelAttribute PDFFile request) throws new XmpSerializer().serialize(xmpMeta, os, true); xmpString = new String(os.toByteArray(), StandardCharsets.UTF_8); } catch (XmpParsingException | IOException e) { - logger.error("exception", e); + log.error("exception", e); } } @@ -322,27 +350,14 @@ public ResponseEntity getPdfInfo(@ModelAttribute PDFFile request) throws PDEncryption pdfEncryption = pdfBoxDoc.getEncryption(); encryption.put("EncryptionAlgorithm", pdfEncryption.getFilter()); encryption.put("KeyLength", pdfEncryption.getLength()); - AccessPermission ap = pdfBoxDoc.getCurrentAccessPermission(); - if (ap != null) { - ObjectNode permissionsNode = objectMapper.createObjectNode(); - - permissionsNode.put("CanAssembleDocument", ap.canAssembleDocument()); - permissionsNode.put("CanExtractContent", ap.canExtractContent()); - permissionsNode.put( - "CanExtractForAccessibility", ap.canExtractForAccessibility()); - permissionsNode.put("CanFillInForm", ap.canFillInForm()); - permissionsNode.put("CanModify", ap.canModify()); - permissionsNode.put("CanModifyAnnotations", ap.canModifyAnnotations()); - permissionsNode.put("CanPrint", ap.canPrint()); - - encryption.set( - "Permissions", permissionsNode); // set the node under "Permissions" - } // Add other encryption-related properties as needed } else { encryption.put("IsEncrypted", false); } + ObjectNode permissionsNode = objectMapper.createObjectNode(); + setNodePermissions(pdfBoxDoc, permissionsNode); + ObjectNode pageInfoParent = objectMapper.createObjectNode(); for (int pageNum = 0; pageNum < pdfBoxDoc.getNumberOfPages(); pageNum++) { ObjectNode pageInfo = objectMapper.createObjectNode(); @@ -584,6 +599,7 @@ public ResponseEntity getPdfInfo(@ModelAttribute PDFFile request) throws jsonOutput.set("DocumentInfo", docInfoNode); jsonOutput.set("Compliancy", compliancy); jsonOutput.set("Encryption", encryption); + jsonOutput.set("Permissions", permissionsNode); // set the node under "Permissions" jsonOutput.set("Other", other); jsonOutput.set("PerPageInfo", pageInfoParent); @@ -597,24 +613,27 @@ public ResponseEntity getPdfInfo(@ModelAttribute PDFFile request) throws MediaType.APPLICATION_JSON); } catch (Exception e) { - logger.error("exception", e); + log.error("exception", e); } return null; } - private static void addOutlinesToArray(PDOutlineItem outline, ArrayNode arrayNode) { - if (outline == null) return; - - ObjectNode outlineNode = objectMapper.createObjectNode(); - outlineNode.put("Title", outline.getTitle()); - // You can add other properties if needed - arrayNode.add(outlineNode); + private void setNodePermissions(PDDocument pdfBoxDoc, ObjectNode permissionsNode) { + AccessPermission ap = pdfBoxDoc.getCurrentAccessPermission(); + + permissionsNode.put("Document Assembly", getPermissionState(ap.canAssembleDocument())); + permissionsNode.put("Extracting Content", getPermissionState(ap.canExtractContent())); + permissionsNode.put( + "Extracting for accessibility", + getPermissionState(ap.canExtractForAccessibility())); + permissionsNode.put("Form Filling", getPermissionState(ap.canFillInForm())); + permissionsNode.put("Modifying", getPermissionState(ap.canModify())); + permissionsNode.put("Modifying annotations", getPermissionState(ap.canModifyAnnotations())); + permissionsNode.put("Printing", getPermissionState(ap.canPrint())); + } - PDOutlineItem child = outline.getFirstChild(); - while (child != null) { - addOutlinesToArray(child, arrayNode); - child = child.getNextSibling(); - } + private String getPermissionState(boolean state) { + return state ? "Allowed" : "Not Allowed"; } public String getPageOrientation(double width, double height) { @@ -674,33 +693,6 @@ public ObjectNode getDimensionInfo(ObjectNode dimensionInfo, float width, float return dimensionInfo; } - public static boolean checkForStandard(PDDocument document, String standardKeyword) { - // Check XMP Metadata - try { - PDMetadata pdMetadata = document.getDocumentCatalog().getMetadata(); - if (pdMetadata != null) { - COSInputStream metaStream = pdMetadata.createInputStream(); - DomXmpParser domXmpParser = new DomXmpParser(); - XMPMetadata xmpMeta = domXmpParser.parse(metaStream); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - new XmpSerializer().serialize(xmpMeta, baos, true); - String xmpString = new String(baos.toByteArray(), StandardCharsets.UTF_8); - - if (xmpString.contains(standardKeyword)) { - return true; - } - } - } catch ( - Exception - e) { // Catching general exception for brevity, ideally you'd catch specific - // exceptions. - logger.error("exception", e); - } - - return false; - } - public ArrayNode exploreStructureTree(List nodes) { ArrayNode elementsArray = objectMapper.createArrayNode(); if (nodes != null) { diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/PasswordController.java b/src/main/java/stirling/software/SPDF/controller/api/security/PasswordController.java index d738ae795b..6a89a0710d 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/PasswordController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/PasswordController.java @@ -5,8 +5,6 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.encryption.AccessPermission; import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -29,8 +27,6 @@ @Tag(name = "Security", description = "Security APIs") public class PasswordController { - private static final Logger logger = LoggerFactory.getLogger(PasswordController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -42,7 +38,8 @@ public PasswordController(CustomPDDocumentFactory pdfDocumentFactory) { @Operation( summary = "Remove password from a PDF file", description = - "This endpoint removes the password from a protected PDF file. Users need to provide the existing password. Input:PDF Output:PDF Type:SISO") + "This endpoint removes the password from a protected PDF file. Users need to provide the" + + " existing password. Input:PDF Output:PDF Type:SISO") public ResponseEntity removePassword(@ModelAttribute PDFPasswordRequest request) throws IOException { MultipartFile fileInput = request.getFileInput(); @@ -60,7 +57,8 @@ public ResponseEntity removePassword(@ModelAttribute PDFPasswordRequest @Operation( summary = "Add password to a PDF file", description = - "This endpoint adds password protection to a PDF file. Users can specify a set of permissions that should be applied to the file. Input:PDF Output:PDF") + "This endpoint adds password protection to a PDF file. Users can specify a set of" + + " permissions that should be applied to the file. Input:PDF Output:PDF") public ResponseEntity addPassword(@ModelAttribute AddPasswordRequest request) throws IOException { MultipartFile fileInput = request.getFileInput(); diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java b/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java index d9e1e4ca97..d123e2ef8d 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java @@ -1,17 +1,20 @@ package stirling.software.SPDF.controller.api.security; -import java.awt.Color; +import java.awt.*; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.Collections; import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.PDPageTree; import org.apache.pdfbox.pdmodel.common.PDRectangle; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -22,20 +25,25 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; + import stirling.software.SPDF.model.PDFText; +import stirling.software.SPDF.model.api.security.ManualRedactPdfRequest; import stirling.software.SPDF.model.api.security.RedactPdfRequest; +import stirling.software.SPDF.model.api.security.RedactionArea; import stirling.software.SPDF.pdf.TextFinder; import stirling.software.SPDF.service.CustomPDDocumentFactory; +import stirling.software.SPDF.utils.GeneralUtils; import stirling.software.SPDF.utils.PdfUtils; import stirling.software.SPDF.utils.WebResponseUtils; +import stirling.software.SPDF.utils.propertyeditor.StringToArrayListPropertyEditor; @RestController @RequestMapping("/api/v1/security") +@Slf4j @Tag(name = "Security", description = "Security APIs") public class RedactController { - private static final Logger logger = LoggerFactory.getLogger(RedactController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -43,11 +51,113 @@ public RedactController(CustomPDDocumentFactory pdfDocumentFactory) { this.pdfDocumentFactory = pdfDocumentFactory; } + @InitBinder + public void initBinder(WebDataBinder binder) { + binder.registerCustomEditor(List.class, "redactions", new StringToArrayListPropertyEditor()); + } + + @PostMapping(value = "/redact", consumes = "multipart/form-data") + @Operation(summary = "Redacts areas and pages in a PDF document", description = "This operation takes an input PDF file with a list of areas, page number(s)/range(s)/function(s) to redact. Input:PDF, Output:PDF, Type:SISO") + public ResponseEntity redactPDF(@ModelAttribute ManualRedactPdfRequest request) throws IOException { + MultipartFile file = request.getFileInput(); + List redactionAreas = request.getRedactions(); + + PDDocument document = pdfDocumentFactory.load(file); + + PDPageTree allPages = document.getDocumentCatalog().getPages(); + + redactPages(request, document, allPages); + redactAreas(redactionAreas, document, allPages); + + if (request.isConvertPDFToImage()) { + PDDocument convertedPdf = PdfUtils.convertPdfToPdfImage(document); + document.close(); + document = convertedPdf; + } + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + document.save(baos); + document.close(); + + byte[] pdfContent = baos.toByteArray(); + return WebResponseUtils.bytesToWebResponse( + pdfContent, + Filenames.toSimpleFileName(file.getOriginalFilename()).replaceFirst("[.][^.]+$", "") + + "_redacted.pdf"); + } + + private void redactAreas(List redactionAreas, PDDocument document, PDPageTree allPages) + throws IOException { + Color redactColor = null; + for (RedactionArea redactionArea : redactionAreas) { + if (redactionArea.getPage() == null || redactionArea.getPage() <= 0 + || redactionArea.getHeight() == null || redactionArea.getHeight() <= 0.0D + || redactionArea.getWidth() == null || redactionArea.getWidth() <= 0.0D) + continue; + PDPage page = allPages.get(redactionArea.getPage() - 1); + + PDPageContentStream contentStream = new PDPageContentStream( + document, page, PDPageContentStream.AppendMode.APPEND, true, true); + redactColor = decodeOrDefault(redactionArea.getColor(), Color.BLACK); + contentStream.setNonStrokingColor(redactColor); + + float x = redactionArea.getX().floatValue(); + float y = redactionArea.getY().floatValue(); + float width = redactionArea.getWidth().floatValue(); + float height = redactionArea.getHeight().floatValue(); + + PDRectangle box = page.getBBox(); + + contentStream.addRect(x, box.getHeight() - y - height, width, height); + contentStream.fill(); + contentStream.close(); + } + } + + private void redactPages(ManualRedactPdfRequest request, PDDocument document, PDPageTree allPages) + throws IOException { + Color redactColor = decodeOrDefault(request.getPageRedactionColor(), Color.BLACK); + List pageNumbers = getPageNumbers(request, allPages.getCount()); + for (Integer pageNumber : pageNumbers) { + PDPage page = allPages.get(pageNumber); + + PDPageContentStream contentStream = new PDPageContentStream( + document, page, PDPageContentStream.AppendMode.APPEND, true, true); + contentStream.setNonStrokingColor(redactColor); + + PDRectangle box = page.getBBox(); + + contentStream.addRect(0, 0, box.getWidth(), box.getHeight()); + contentStream.fill(); + contentStream.close(); + } + } + + private Color decodeOrDefault(String hex, Color defaultColor) { + Color color = null; + try { + color = Color.decode(hex); + } catch (Exception e) { + color = defaultColor; + } + + return color; + } + + private List getPageNumbers(ManualRedactPdfRequest request, int pagesCount) { + String pageNumbersInput = request.getPageNumbers(); + String[] parsedPageNumbers = pageNumbersInput != null ? pageNumbersInput.split(",") : new String[0]; + List pageNumbers = GeneralUtils.parsePageList(parsedPageNumbers, pagesCount, false); + Collections.sort(pageNumbers); + return pageNumbers; + } + @PostMapping(value = "/auto-redact", consumes = "multipart/form-data") @Operation( summary = "Redacts listOfText in a PDF document", description = - "This operation takes an input PDF file and redacts the provided listOfText. Input:PDF, Output:PDF, Type:SISO") + "This operation takes an input PDF file and redacts the provided listOfText. Input:PDF," + + " Output:PDF, Type:SISO") public ResponseEntity redactPdf(@ModelAttribute RedactPdfRequest request) throws Exception { MultipartFile file = request.getFileInput(); @@ -68,7 +178,7 @@ public ResponseEntity redactPdf(@ModelAttribute RedactPdfRequest request } redactColor = Color.decode(colorString); } catch (NumberFormatException e) { - logger.warn("Invalid color string provided. Using default color BLACK for redaction."); + log.warn("Invalid color string provided. Using default color BLACK for redaction."); redactColor = Color.BLACK; } diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java b/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java index bd4c8c3d22..9d1c78e968 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java @@ -8,8 +8,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDField; import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; @@ -31,8 +29,6 @@ @Tag(name = "Security", description = "Security APIs") public class RemoveCertSignController { - private static final Logger logger = LoggerFactory.getLogger(RemoveCertSignController.class); - private final CustomPDDocumentFactory pdfDocumentFactory; @Autowired @@ -44,7 +40,8 @@ public RemoveCertSignController(CustomPDDocumentFactory pdfDocumentFactory) { @Operation( summary = "Remove digital signature from PDF", description = - "This endpoint accepts a PDF file and returns the PDF file without the digital signature. Input: PDF, Output: PDF") + "This endpoint accepts a PDF file and returns the PDF file without the digital signature." + + " Input: PDF, Output: PDF") public ResponseEntity removeCertSignPDF(@ModelAttribute PDFFile request) throws Exception { MultipartFile pdf = request.getFileInput(); diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java b/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java index b034d45d66..bd8904fa20 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java @@ -4,17 +4,9 @@ import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDDocumentCatalog; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.PDPageTree; -import org.apache.pdfbox.pdmodel.PDResources; +import org.apache.pdfbox.pdmodel.*; import org.apache.pdfbox.pdmodel.common.PDMetadata; -import org.apache.pdfbox.pdmodel.interactive.action.PDAction; -import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript; -import org.apache.pdfbox.pdmodel.interactive.action.PDActionLaunch; -import org.apache.pdfbox.pdmodel.interactive.action.PDActionURI; -import org.apache.pdfbox.pdmodel.interactive.action.PDFormFieldAdditionalActions; +import org.apache.pdfbox.pdmodel.interactive.action.*; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationLink; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationWidget; diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java b/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java new file mode 100644 index 0000000000..13be9a39c6 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java @@ -0,0 +1,176 @@ +package stirling.software.SPDF.controller.api.security; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.security.interfaces.RSAPublicKey; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.interactive.digitalsignature.PDSignature; +import org.bouncycastle.cert.X509CertificateHolder; +import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter; +import org.bouncycastle.cms.*; +import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder; +import org.bouncycastle.util.Store; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; + +import stirling.software.SPDF.model.api.security.SignatureValidationRequest; +import stirling.software.SPDF.model.api.security.SignatureValidationResult; +import stirling.software.SPDF.service.CertificateValidationService; +import stirling.software.SPDF.service.CustomPDDocumentFactory; + +@RestController +@RequestMapping("/api/v1/security") +@Tag(name = "Security", description = "Security APIs") +public class ValidateSignatureController { + + private final CustomPDDocumentFactory pdfDocumentFactory; + private final CertificateValidationService certValidationService; + + @Autowired + public ValidateSignatureController( + CustomPDDocumentFactory pdfDocumentFactory, + CertificateValidationService certValidationService) { + this.pdfDocumentFactory = pdfDocumentFactory; + this.certValidationService = certValidationService; + } + + @Operation( + summary = "Validate PDF Digital Signature", + description = + "Validates the digital signatures in a PDF file against default or custom certificates. Input:PDF Output:JSON Type:SISO") + @PostMapping(value = "/validate-signature") + public ResponseEntity> validateSignature( + @ModelAttribute SignatureValidationRequest request) throws IOException { + List results = new ArrayList<>(); + MultipartFile file = request.getFileInput(); + + // Load custom certificate if provided + X509Certificate customCert = null; + if (request.getCertFile() != null && !request.getCertFile().isEmpty()) { + try (ByteArrayInputStream certStream = + new ByteArrayInputStream(request.getCertFile().getBytes())) { + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + customCert = (X509Certificate) cf.generateCertificate(certStream); + } catch (CertificateException e) { + throw new RuntimeException("Invalid certificate file: " + e.getMessage()); + } + } + + try (PDDocument document = pdfDocumentFactory.load(file.getInputStream())) { + List signatures = document.getSignatureDictionaries(); + + for (PDSignature sig : signatures) { + SignatureValidationResult result = new SignatureValidationResult(); + + try { + byte[] signedContent = sig.getSignedContent(file.getInputStream()); + byte[] signatureBytes = sig.getContents(file.getInputStream()); + + CMSProcessable content = new CMSProcessableByteArray(signedContent); + CMSSignedData signedData = new CMSSignedData(content, signatureBytes); + + Store certStore = signedData.getCertificates(); + SignerInformationStore signerStore = signedData.getSignerInfos(); + + for (SignerInformation signer : signerStore.getSigners()) { + X509CertificateHolder certHolder = + (X509CertificateHolder) + certStore.getMatches(signer.getSID()).iterator().next(); + X509Certificate cert = + new JcaX509CertificateConverter().getCertificate(certHolder); + + boolean isValid = + signer.verify(new JcaSimpleSignerInfoVerifierBuilder().build(cert)); + result.setValid(isValid); + + // Additional validations + result.setChainValid( + customCert != null + ? certValidationService + .validateCertificateChainWithCustomCert( + cert, customCert) + : certValidationService.validateCertificateChain(cert)); + + result.setTrustValid( + customCert != null + ? certValidationService.validateTrustWithCustomCert( + cert, customCert) + : certValidationService.validateTrustStore(cert)); + + result.setNotRevoked(!certValidationService.isRevoked(cert)); + result.setNotExpired(!cert.getNotAfter().before(new Date())); + + // Set basic signature info + result.setSignerName(sig.getName()); + result.setSignatureDate(sig.getSignDate().getTime().toString()); + result.setReason(sig.getReason()); + result.setLocation(sig.getLocation()); + + // Set new certificate details + result.setIssuerDN(cert.getIssuerX500Principal().getName()); + result.setSubjectDN(cert.getSubjectX500Principal().getName()); + result.setSerialNumber(cert.getSerialNumber().toString(16)); // Hex format + result.setValidFrom(cert.getNotBefore().toString()); + result.setValidUntil(cert.getNotAfter().toString()); + result.setSignatureAlgorithm(cert.getSigAlgName()); + + // Get key size (if possible) + try { + result.setKeySize( + ((RSAPublicKey) cert.getPublicKey()).getModulus().bitLength()); + } catch (Exception e) { + // If not RSA or error, set to 0 + result.setKeySize(0); + } + + result.setVersion(String.valueOf(cert.getVersion())); + + // Set key usage + List keyUsages = new ArrayList<>(); + boolean[] keyUsageFlags = cert.getKeyUsage(); + if (keyUsageFlags != null) { + String[] keyUsageLabels = { + "Digital Signature", "Non-Repudiation", "Key Encipherment", + "Data Encipherment", "Key Agreement", "Certificate Signing", + "CRL Signing", "Encipher Only", "Decipher Only" + }; + for (int i = 0; i < keyUsageFlags.length; i++) { + if (keyUsageFlags[i]) { + keyUsages.add(keyUsageLabels[i]); + } + } + } + result.setKeyUsages(keyUsages); + + // Check if self-signed + result.setSelfSigned( + cert.getSubjectX500Principal() + .equals(cert.getIssuerX500Principal())); + } + } catch (Exception e) { + result.setValid(false); + result.setErrorMessage("Signature validation failed: " + e.getMessage()); + } + + results.add(result); + } + } + + return ResponseEntity.ok(results); + } +} diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java b/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java index a885fcdb3b..6bf0f96b4a 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java @@ -1,6 +1,6 @@ package stirling.software.SPDF.controller.api.security; -import java.awt.Color; +import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; @@ -69,6 +69,7 @@ public ResponseEntity addWatermark(@ModelAttribute AddWatermarkRequest r float opacity = request.getOpacity(); int widthSpacer = request.getWidthSpacer(); int heightSpacer = request.getHeightSpacer(); + String customColor = request.getCustomColor(); boolean convertPdfToImage = request.isConvertPDFToImage(); // Load the input PDF @@ -97,7 +98,8 @@ public ResponseEntity addWatermark(@ModelAttribute AddWatermarkRequest r widthSpacer, heightSpacer, fontSize, - alphabet); + alphabet, + customColor); } else if ("image".equalsIgnoreCase(watermarkType)) { addImageWatermark( contentStream, @@ -136,7 +138,8 @@ private void addTextWatermark( int widthSpacer, int heightSpacer, float fontSize, - String alphabet) + String alphabet, + String colorString) throws IOException { String resourceDir = ""; PDFont font = new PDType1Font(Standard14Fonts.FontName.HELVETICA); @@ -173,7 +176,18 @@ private void addTextWatermark( } contentStream.setFont(font, fontSize); - contentStream.setNonStrokingColor(Color.LIGHT_GRAY); + + Color redactColor; + try { + if (!colorString.startsWith("#")) { + colorString = "#" + colorString; + } + redactColor = Color.decode(colorString); + } catch (NumberFormatException e) { + + redactColor = Color.LIGHT_GRAY; + } + contentStream.setNonStrokingColor(redactColor); String[] textLines = watermarkText.split("\\\\n"); float maxLineWidth = 0; diff --git a/src/main/java/stirling/software/SPDF/controller/api/strippers/PDFTableStripper.java b/src/main/java/stirling/software/SPDF/controller/api/strippers/PDFTableStripper.java deleted file mode 100644 index 0ea3e13187..0000000000 --- a/src/main/java/stirling/software/SPDF/controller/api/strippers/PDFTableStripper.java +++ /dev/null @@ -1,327 +0,0 @@ -package stirling.software.SPDF.controller.api.strippers; - -import java.awt.Shape; -import java.awt.geom.AffineTransform; -import java.awt.geom.Rectangle2D; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import org.apache.fontbox.util.BoundingBox; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.common.PDRectangle; -import org.apache.pdfbox.pdmodel.font.PDFont; -import org.apache.pdfbox.pdmodel.font.PDType3Font; -import org.apache.pdfbox.text.PDFTextStripper; -import org.apache.pdfbox.text.PDFTextStripperByArea; -import org.apache.pdfbox.text.TextPosition; - -/** - * Class to extract tabular data from a PDF. Works by making a first pass of the page to group all - * nearby text items together, and then inferring a 2D grid from these regions. Each table cell is - * then extracted using a PDFTextStripperByArea object. - * - *

Works best when headers are included in the detected region, to ensure representative text in - * every column. - * - *

Based upon DrawPrintTextLocations PDFBox example - * (https://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/DrawPrintTextLocations.java) - * - * @author Beldaz - */ -public class PDFTableStripper extends PDFTextStripper { - - /** - * This will print the documents data, for each table cell. - * - * @param args The command line arguments. - * @throws IOException If there is an error parsing the document. - */ - /* - * Used in methods derived from DrawPrintTextLocations - */ - private AffineTransform flipAT; - - private AffineTransform rotateAT; - - /** Regions updated by calls to writeString */ - private Set boxes; - - // Border to allow when finding intersections - private double dx = 1.0; // This value works for me, feel free to tweak (or add setter) - private double dy = 0.000; // Rows of text tend to overlap, so need to extend - - /** Region in which to find table (otherwise whole page) */ - private Rectangle2D regionArea; - - /** Number of rows in inferred table */ - private int nRows = 0; - - /** Number of columns in inferred table */ - private int nCols = 0; - - /** This is the object that does the text extraction */ - private PDFTextStripperByArea regionStripper; - - /** - * 1D intervals - used for calculateTableRegions() - * - * @author Beldaz - */ - public static class Interval { - double start; - double end; - - public Interval(double start, double end) { - this.start = start; - this.end = end; - } - - public void add(Interval col) { - if (col.start < start) start = col.start; - if (col.end > end) end = col.end; - } - - public static void addTo(Interval x, LinkedList columns) { - int p = 0; - Iterator it = columns.iterator(); - // Find where x should go - while (it.hasNext()) { - Interval col = it.next(); - if (x.end >= col.start) { - if (x.start <= col.end) { // overlaps - x.add(col); - it.remove(); - } - break; - } - ++p; - } - while (it.hasNext()) { - Interval col = it.next(); - if (x.start > col.end) break; - x.add(col); - it.remove(); - } - columns.add(p, x); - } - } - - /** - * Instantiate a new PDFTableStripper object. - * - * @throws IOException If there is an error loading the properties. - */ - public PDFTableStripper() throws IOException { - super.setShouldSeparateByBeads(false); - regionStripper = new PDFTextStripperByArea(); - regionStripper.setSortByPosition(true); - } - - /** - * Define the region to group text by. - * - * @param rect The rectangle area to retrieve the text from. - */ - public void setRegion(Rectangle2D rect) { - regionArea = rect; - } - - public int getRows() { - return nRows; - } - - public int getColumns() { - return nCols; - } - - /** - * Get the text for the region, this should be called after extractTable(). - * - * @return The text that was identified in that region. - */ - public String getText(int row, int col) { - return regionStripper.getTextForRegion("el" + col + "x" + row); - } - - public void extractTable(PDPage pdPage) throws IOException { - setStartPage(getCurrentPageNo()); - setEndPage(getCurrentPageNo()); - - boxes = new HashSet(); - // flip y-axis - flipAT = new AffineTransform(); - flipAT.translate(0, pdPage.getBBox().getHeight()); - flipAT.scale(1, -1); - - // page may be rotated - rotateAT = new AffineTransform(); - int rotation = pdPage.getRotation(); - if (rotation != 0) { - PDRectangle mediaBox = pdPage.getMediaBox(); - switch (rotation) { - case 90: - rotateAT.translate(mediaBox.getHeight(), 0); - break; - case 270: - rotateAT.translate(0, mediaBox.getWidth()); - break; - case 180: - rotateAT.translate(mediaBox.getWidth(), mediaBox.getHeight()); - break; - default: - break; - } - rotateAT.rotate(Math.toRadians(rotation)); - } - // Trigger processing of the document so that writeString is called. - try (Writer dummy = new OutputStreamWriter(new ByteArrayOutputStream())) { - super.output = dummy; - super.processPage(pdPage); - } - - Rectangle2D[][] regions = calculateTableRegions(); - - // System.err.println("Drawing " + nCols + "x" + nRows + "="+ nRows*nCols + " - // regions"); - for (int i = 0; i < nCols; ++i) { - for (int j = 0; j < nRows; ++j) { - final Rectangle2D region = regions[i][j]; - regionStripper.addRegion("el" + i + "x" + j, region); - } - } - - regionStripper.extractRegions(pdPage); - } - - /** - * Infer a rectangular grid of regions from the boxes field. - * - * @return 2D array of table regions (as Rectangle2D objects). Note that some of these regions - * may have no content. - */ - private Rectangle2D[][] calculateTableRegions() { - - // Build up a list of all table regions, based upon the populated - // regions of boxes field. Treats the horizontal and vertical extents - // of each box as distinct - LinkedList columns = new LinkedList(); - LinkedList rows = new LinkedList(); - - for (Rectangle2D box : boxes) { - Interval x = new Interval(box.getMinX(), box.getMaxX()); - Interval y = new Interval(box.getMinY(), box.getMaxY()); - - Interval.addTo(x, columns); - Interval.addTo(y, rows); - } - - nRows = rows.size(); - nCols = columns.size(); - Rectangle2D[][] regions = new Rectangle2D[nCols][nRows]; - int i = 0; - // Label regions from top left, rather than the transformed orientation - for (Interval column : columns) { - int j = 0; - for (Interval row : rows) { - regions[nCols - i - 1][nRows - j - 1] = - new Rectangle2D.Double( - column.start, - row.start, - column.end - column.start, - row.end - row.start); - ++j; - } - ++i; - } - - return regions; - } - - /** - * Register each character's bounding box, updating boxes field to maintain a list of all - * distinct groups of characters. - * - *

Overrides the default functionality of PDFTextStripper. Most of this is taken from - * DrawPrintTextLocations.java, with extra steps at end of main loop - */ - @Override - protected void writeString(String string, List textPositions) throws IOException { - for (TextPosition text : textPositions) { - // glyph space -> user space - // note: text.getTextMatrix() is *not* the Text Matrix, it's the Text Rendering Matrix - AffineTransform at = text.getTextMatrix().createAffineTransform(); - PDFont font = text.getFont(); - BoundingBox bbox = font.getBoundingBox(); - - // advance width, bbox height (glyph space) - float xadvance = - font.getWidth(text.getCharacterCodes()[0]); // todo: should iterate all chars - Rectangle2D.Float rect = - new Rectangle2D.Float(0, bbox.getLowerLeftY(), xadvance, bbox.getHeight()); - - if (font instanceof PDType3Font) { - // bbox and font matrix are unscaled - at.concatenate(font.getFontMatrix().createAffineTransform()); - } else { - // bbox and font matrix are already scaled to 1000 - at.scale(1 / 1000f, 1 / 1000f); - } - Shape s = at.createTransformedShape(rect); - s = flipAT.createTransformedShape(s); - s = rotateAT.createTransformedShape(s); - - // - // Merge character's bounding box with boxes field - // - Rectangle2D bounds = s.getBounds2D(); - // Pad sides to detect almost touching boxes - Rectangle2D hitbox = bounds.getBounds2D(); - hitbox.add(bounds.getMinX() - dx, bounds.getMinY() - dy); - hitbox.add(bounds.getMaxX() + dx, bounds.getMaxY() + dy); - - // Find all overlapping boxes - List intersectList = new ArrayList(); - for (Rectangle2D box : boxes) { - if (box.intersects(hitbox)) { - intersectList.add(box); - } - } - - // Combine all touching boxes and update - // (NOTE: Potentially this could leave some overlapping boxes un-merged, - // but it's sufficient for now and get's fixed up in calculateTableRegions) - for (Rectangle2D box : intersectList) { - bounds.add(box); - boxes.remove(box); - } - boxes.add(bounds); - } - } - - /** - * This method does nothing in this derived class, because beads and regions are incompatible. - * Beads are ignored when stripping by area. - * - * @param aShouldSeparateByBeads The new grouping of beads. - */ - @Override - public final void setShouldSeparateByBeads(boolean aShouldSeparateByBeads) {} - - /** Adapted from PDFTextStripperByArea {@inheritDoc} */ - @Override - protected void processTextPosition(TextPosition text) { - if (regionArea != null && !regionArea.contains(text.getX(), text.getY())) { - // skip character - } else { - super.processTextPosition(text); - } - } -} diff --git a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java index b46290201d..31c39c1fc2 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java @@ -5,7 +5,6 @@ import java.util.*; import java.util.stream.Collectors; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.Authentication; import org.springframework.security.core.userdetails.UserDetails; @@ -38,24 +37,30 @@ @Tag(name = "Account Security", description = "Account Security APIs") public class AccountWebController { - @Autowired ApplicationProperties applicationProperties; - @Autowired SessionPersistentRegistry sessionPersistentRegistry; + private final ApplicationProperties applicationProperties; - @Autowired - private UserRepository userRepository; // Assuming you have a repository for user operations + private final SessionPersistentRegistry sessionPersistentRegistry; + + private final UserRepository // Assuming you have a repository for user operations + userRepository; + + public AccountWebController( + ApplicationProperties applicationProperties, + SessionPersistentRegistry sessionPersistentRegistry, + UserRepository userRepository) { + this.applicationProperties = applicationProperties; + this.sessionPersistentRegistry = sessionPersistentRegistry; + this.userRepository = userRepository; + } @GetMapping("/login") public String login(HttpServletRequest request, Model model, Authentication authentication) { - // If the user is already authenticated, redirect them to the home page. if (authentication != null && authentication.isAuthenticated()) { return "redirect:/"; } - Map providerList = new HashMap<>(); - Security securityProps = applicationProperties.getSecurity(); - OAUTH2 oauth = securityProps.getOauth2(); if (oauth != null) { if (oauth.getEnabled()) { @@ -70,14 +75,12 @@ public String login(HttpServletRequest request, Model model, Authentication auth "/oauth2/authorization/" + google.getName(), google.getClientName()); } - GithubProvider github = client.getGithub(); if (github.isSettingsValid()) { providerList.put( "/oauth2/authorization/" + github.getName(), github.getClientName()); } - KeycloakProvider keycloak = client.getKeycloak(); if (keycloak.isSettingsValid()) { providerList.put( @@ -87,7 +90,6 @@ public String login(HttpServletRequest request, Model model, Authentication auth } } } - SAML2 saml2 = securityProps.getSaml2(); if (securityProps.isSaml2Activ() && applicationProperties.getSystem().getEnableAlphaFunctionality()) { @@ -98,16 +100,12 @@ public String login(HttpServletRequest request, Model model, Authentication auth .entrySet() .removeIf(entry -> entry.getKey() == null || entry.getValue() == null); model.addAttribute("providerlist", providerList); - model.addAttribute("loginMethod", securityProps.getLoginMethod()); boolean altLogin = providerList.size() > 0 ? securityProps.isAltLogin() : false; model.addAttribute("altLogin", altLogin); - model.addAttribute("currentPage", "login"); - String error = request.getParameter("error"); if (error != null) { - switch (error) { case "badcredentials": error = "login.invalid"; @@ -121,12 +119,10 @@ public String login(HttpServletRequest request, Model model, Authentication auth default: break; } - model.addAttribute("error", error); } String erroroauth = request.getParameter("erroroauth"); if (erroroauth != null) { - switch (erroroauth) { case "oauth2AutoCreateDisabled": erroroauth = "login.oauth2AutoCreateDisabled"; @@ -167,8 +163,11 @@ public String login(HttpServletRequest request, Model model, Authentication auth case "invalid_destination": erroroauth = "login.invalid_destination"; break; - // Valid InResponseTo was not available from the validation context, unable to - // evaluate + case "relying_party_registration_not_found": + erroroauth = "login.relyingPartyRegistrationNotFound"; + break; + // Valid InResponseTo was not available from the validation context, unable to + // evaluate case "invalid_in_response_to": erroroauth = "login.invalid_in_response_to"; break; @@ -178,18 +177,14 @@ public String login(HttpServletRequest request, Model model, Authentication auth default: break; } - model.addAttribute("erroroauth", erroroauth); } if (request.getParameter("messageType") != null) { - model.addAttribute("messageType", "changedCredsMessage"); } if (request.getParameter("logout") != null) { - model.addAttribute("logoutMessage", "You have been logged out."); } - return "login"; } @@ -200,14 +195,11 @@ public String showAddUserForm( List allUsers = userRepository.findAll(); Iterator iterator = allUsers.iterator(); Map roleDetails = Role.getAllRoleDetails(); - // Map to store session information and user activity status Map userSessions = new HashMap<>(); Map userLastRequest = new HashMap<>(); - int activeUsers = 0; int disabledUsers = 0; - while (iterator.hasNext()) { User user = iterator.next(); if (user != null) { @@ -215,22 +207,20 @@ public String showAddUserForm( if (authority.getAuthority().equals(Role.INTERNAL_API_USER.getRoleId())) { iterator.remove(); roleDetails.remove(Role.INTERNAL_API_USER.getRoleId()); - break; // Break out of the inner loop once the user is removed + // Break out of the inner loop once the user is removed + break; } } - // Determine the user's session status and last request time int maxInactiveInterval = sessionPersistentRegistry.getMaxInactiveInterval(); boolean hasActiveSession = false; Date lastRequest = null; - Optional latestSession = sessionPersistentRegistry.findLatestSession(user.getUsername()); if (latestSession.isPresent()) { SessionEntity sessionEntity = latestSession.get(); Date lastAccessedTime = sessionEntity.getLastRequest(); Instant now = Instant.now(); - // Calculate session expiration and update session status accordingly Instant expirationTime = lastAccessedTime @@ -242,16 +232,14 @@ public String showAddUserForm( } else { hasActiveSession = !sessionEntity.isExpired(); } - lastRequest = sessionEntity.getLastRequest(); } else { hasActiveSession = false; - lastRequest = new Date(0); // No session, set default last request time + // No session, set default last request time + lastRequest = new Date(0); } - userSessions.put(user.getUsername(), hasActiveSession); userLastRequest.put(user.getUsername(), lastRequest); - if (hasActiveSession) { activeUsers++; } @@ -260,7 +248,6 @@ public String showAddUserForm( } } } - // Sort users by active status and last request date List sortedUsers = allUsers.stream() @@ -268,7 +255,6 @@ public String showAddUserForm( (u1, u2) -> { boolean u1Active = userSessions.get(u1.getUsername()); boolean u2Active = userSessions.get(u2.getUsername()); - if (u1Active && !u2Active) { return -1; } else if (!u1Active && u2Active) { @@ -284,9 +270,7 @@ public String showAddUserForm( } }) .collect(Collectors.toList()); - String messageType = request.getParameter("messageType"); - String deleteMessage = null; if (messageType != null) { switch (messageType) { @@ -300,7 +284,6 @@ public String showAddUserForm( break; } model.addAttribute("deleteMessage", deleteMessage); - String addMessage = null; switch (messageType) { case "usernameExists": @@ -317,7 +300,6 @@ public String showAddUserForm( } model.addAttribute("addMessage", addMessage); } - String changeMessage = null; if (messageType != null) { switch (messageType) { @@ -336,7 +318,6 @@ public String showAddUserForm( } model.addAttribute("changeMessage", changeMessage); } - model.addAttribute("users", sortedUsers); model.addAttribute("currentUsername", authentication.getName()); model.addAttribute("roleDetails", roleDetails); @@ -357,21 +338,17 @@ public String account(HttpServletRequest request, Model model, Authentication au if (authentication != null && authentication.isAuthenticated()) { Object principal = authentication.getPrincipal(); String username = null; - if (principal instanceof UserDetails) { // Cast the principal object to UserDetails UserDetails userDetails = (UserDetails) principal; - // Retrieve username and other attributes username = userDetails.getUsername(); - // Add oAuth2 Login attributes to the model model.addAttribute("oAuth2Login", false); } if (principal instanceof OAuth2User) { // Cast the principal object to OAuth2User OAuth2User userDetails = (OAuth2User) principal; - // Retrieve username and other attributes username = userDetails.getAttribute( @@ -383,22 +360,21 @@ public String account(HttpServletRequest request, Model model, Authentication au // Cast the principal object to OAuth2User CustomSaml2AuthenticatedPrincipal userDetails = (CustomSaml2AuthenticatedPrincipal) principal; - // Retrieve username and other attributes username = userDetails.getName(); // Add oAuth2 Login attributes to the model model.addAttribute("oAuth2Login", true); } - if (username != null) { // Fetch user details from the database Optional user = - userRepository.findByUsernameIgnoreCaseWithSettings( - username); // Assuming findByUsername method exists + userRepository + .findByUsernameIgnoreCaseWithSettings( // Assuming findByUsername + // method exists + username); if (!user.isPresent()) { return "redirect:/error"; } - // Convert settings map to JSON string ObjectMapper objectMapper = new ObjectMapper(); String settingsJson; @@ -409,7 +385,6 @@ public String account(HttpServletRequest request, Model model, Authentication au log.error("exception", e); return "redirect:/error"; } - String messageType = request.getParameter("messageType"); if (messageType != null) { switch (messageType) { @@ -433,7 +408,6 @@ public String account(HttpServletRequest request, Model model, Authentication au } model.addAttribute("messageType", messageType); } - // Add attributes to the model model.addAttribute("username", username); model.addAttribute("role", user.get().getRolesAsString()); @@ -456,23 +430,21 @@ public String changeCreds( } if (authentication != null && authentication.isAuthenticated()) { Object principal = authentication.getPrincipal(); - if (principal instanceof UserDetails) { // Cast the principal object to UserDetails UserDetails userDetails = (UserDetails) principal; - // Retrieve username and other attributes String username = userDetails.getUsername(); - // Fetch user details from the database Optional user = - userRepository.findByUsernameIgnoreCase( - username); // Assuming findByUsername method exists + userRepository + .findByUsernameIgnoreCase( // Assuming findByUsername method exists + username); if (!user.isPresent()) { // Handle error appropriately - return "redirect:/error"; // Example redirection in case of error + // Example redirection in case of error + return "redirect:/error"; } - String messageType = request.getParameter("messageType"); if (messageType != null) { switch (messageType) { @@ -493,7 +465,6 @@ public String changeCreds( } model.addAttribute("messageType", messageType); } - // Add attributes to the model model.addAttribute("username", username); } diff --git a/src/main/java/stirling/software/SPDF/controller/web/DatabaseWebController.java b/src/main/java/stirling/software/SPDF/controller/web/DatabaseWebController.java index 3fd68ad596..eafcbd2673 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/DatabaseWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/DatabaseWebController.java @@ -2,7 +2,6 @@ import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Controller; @@ -19,23 +18,25 @@ @Tag(name = "Database Management", description = "Database management and security APIs") public class DatabaseWebController { - @Autowired private DatabaseBackupHelper databaseBackupHelper; + private final DatabaseBackupHelper databaseBackupHelper; + + public DatabaseWebController(DatabaseBackupHelper databaseBackupHelper) { + this.databaseBackupHelper = databaseBackupHelper; + } @PreAuthorize("hasRole('ROLE_ADMIN')") @GetMapping("/database") public String database(HttpServletRequest request, Model model, Authentication authentication) { String error = request.getParameter("error"); String confirmed = request.getParameter("infoMessage"); - if (error != null) { model.addAttribute("error", error); } else if (confirmed != null) { model.addAttribute("infoMessage", confirmed); } - List backupList = databaseBackupHelper.getBackupList(); - model.addAttribute("systemUpdate", backupList); - + model.addAttribute("backupFiles", backupList); + model.addAttribute("databaseVersion", databaseBackupHelper.getH2Version()); return "database"; } } diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index 99e29bde75..0043c5e1d7 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -6,17 +6,10 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; @@ -31,41 +24,51 @@ import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface; import stirling.software.SPDF.model.SignatureFile; import stirling.software.SPDF.service.SignatureService; @Controller @Tag(name = "General", description = "General APIs") +@Slf4j public class GeneralWebController { - private static final Logger logger = LoggerFactory.getLogger(GeneralWebController.class); + private static final String SIGNATURE_BASE_PATH = "customFiles/static/signatures/"; + private static final String ALL_USERS_FOLDER = "ALL_USERS"; + private final SignatureService signatureService; + private final UserServiceInterface userService; + private final ResourceLoader resourceLoader; + + public GeneralWebController( + SignatureService signatureService, + @Autowired(required = false) UserServiceInterface userService, + ResourceLoader resourceLoader) { + this.signatureService = signatureService; + this.userService = userService; + this.resourceLoader = resourceLoader; + } @GetMapping("/pipeline") @Hidden public String pipelineForm(Model model) { model.addAttribute("currentPage", "pipeline"); - List pipelineConfigs = new ArrayList<>(); List> pipelineConfigsWithNames = new ArrayList<>(); - if (new File("./pipeline/defaultWebUIConfigs/").exists()) { try (Stream paths = Files.walk(Paths.get("./pipeline/defaultWebUIConfigs/"))) { List jsonFiles = paths.filter(Files::isRegularFile) .filter(p -> p.toString().endsWith(".json")) .collect(Collectors.toList()); - for (Path jsonFile : jsonFiles) { String content = Files.readString(jsonFile, StandardCharsets.UTF_8); pipelineConfigs.add(content); } - for (String config : pipelineConfigs) { Map jsonContent = new ObjectMapper() .readValue(config, new TypeReference>() {}); - String name = (String) jsonContent.get("name"); if (name == null || name.length() < 1) { String filename = @@ -80,9 +83,8 @@ public String pipelineForm(Model model) { configWithName.put("name", name); pipelineConfigsWithNames.add(configWithName); } - } catch (IOException e) { - logger.error("exception", e); + log.error("exception", e); } } if (pipelineConfigsWithNames.size() == 0) { @@ -92,9 +94,7 @@ public String pipelineForm(Model model) { pipelineConfigsWithNames.add(configWithName); } model.addAttribute("pipelineConfigsWithNames", pipelineConfigsWithNames); - model.addAttribute("pipelineConfigs", pipelineConfigs); - return "pipeline"; } @@ -175,14 +175,6 @@ public String splitPdfForm(Model model) { return "split-pdfs"; } - private static final String SIGNATURE_BASE_PATH = "customFiles/static/signatures/"; - private static final String ALL_USERS_FOLDER = "ALL_USERS"; - - @Autowired private SignatureService signatureService; - - @Autowired(required = false) - private UserServiceInterface userService; - @GetMapping("/sign") @Hidden public String signForm(Model model) { @@ -190,10 +182,8 @@ public String signForm(Model model) { if (userService != null) { username = userService.getCurrentUsername(); } - // Get signatures from both personal and ALL_USERS folders List signatures = signatureService.getAvailableSignatures(username); - model.addAttribute("currentPage", "sign"); model.addAttribute("fonts", getFontNames()); model.addAttribute("signatures", signatures); @@ -228,17 +218,12 @@ public String overlayPdf(Model model) { return "overlay-pdf"; } - @Autowired private ResourceLoader resourceLoader; - private List getFontNames() { List fontNames = new ArrayList<>(); - // Extract font names from classpath fontNames.addAll(getFontNamesFromLocation("classpath:static/fonts/*.woff2")); - // Extract font names from external directory fontNames.addAll(getFontNamesFromLocation("file:customFiles/static/fonts/*")); - return fontNames; } @@ -285,13 +270,38 @@ public String getFormatFromExtension(String extension) { case "svg": return "svg"; default: - return ""; // or throw an exception if an unexpected extension is encountered + // or throw an exception if an unexpected extension is encountered + return ""; } } + @GetMapping("/crop") + @Hidden + public String cropForm(Model model) { + model.addAttribute("currentPage", "crop"); + return "crop"; + } + + @GetMapping("/auto-split-pdf") + @Hidden + public String autoSPlitPDFForm(Model model) { + model.addAttribute("currentPage", "auto-split-pdf"); + return "auto-split-pdf"; + } + + @GetMapping("/remove-image-pdf") + @Hidden + public String removeImagePdfForm(Model model) { + model.addAttribute("currentPage", "remove-image-pdf"); + return "remove-image-pdf"; + } + public class FontResource { + private String name; + private String extension; + private String type; public FontResource(String name, String extension) { @@ -324,25 +334,4 @@ public void setType(String type) { this.type = type; } } - - @GetMapping("/crop") - @Hidden - public String cropForm(Model model) { - model.addAttribute("currentPage", "crop"); - return "crop"; - } - - @GetMapping("/auto-split-pdf") - @Hidden - public String autoSPlitPDFForm(Model model) { - model.addAttribute("currentPage", "auto-split-pdf"); - return "auto-split-pdf"; - } - - @GetMapping("/remove-image-pdf") - @Hidden - public String removeImagePdfForm(Model model) { - model.addAttribute("currentPage", "remove-image-pdf"); - return "remove-image-pdf"; - } } diff --git a/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java b/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java index 5ade566814..ddc99a82b9 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java @@ -6,9 +6,6 @@ import java.util.List; import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.http.MediaType; @@ -22,13 +19,19 @@ import io.swagger.v3.oas.annotations.Hidden; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.ApplicationProperties; import stirling.software.SPDF.model.Dependency; @Controller +@Slf4j public class HomeWebController { - private static final Logger logger = LoggerFactory.getLogger(HomeWebController.class); + private final ApplicationProperties applicationProperties; + + public HomeWebController(ApplicationProperties applicationProperties) { + this.applicationProperties = applicationProperties; + } @GetMapping("/about") @Hidden @@ -50,11 +53,16 @@ public String licensesForm(Model model) { mapper.readValue(json, new TypeReference>>() {}); model.addAttribute("dependencies", data.get("dependencies")); } catch (IOException e) { - logger.error("exception", e); + log.error("exception", e); } return "licenses"; } + @GetMapping("/releases") + public String getReleaseNotes(Model model) { + return "releases"; + } + @GetMapping("/") public String home(Model model) { model.addAttribute("currentPage", "home"); @@ -66,8 +74,6 @@ public String root(Model model) { return "redirect:/"; } - @Autowired ApplicationProperties applicationProperties; - @GetMapping(value = "/robots.txt", produces = MediaType.TEXT_PLAIN_VALUE) @ResponseBody @Hidden diff --git a/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java b/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java index ff73fb2d3b..6479c7afe1 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java @@ -5,7 +5,6 @@ import java.util.*; import java.util.stream.Collectors; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -30,12 +29,18 @@ @Slf4j public class MetricsController { - @Autowired ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; private final MeterRegistry meterRegistry; private boolean metricsEnabled; + public MetricsController( + ApplicationProperties applicationProperties, MeterRegistry meterRegistry) { + this.applicationProperties = applicationProperties; + this.meterRegistry = meterRegistry; + } + @PostConstruct public void init() { Boolean metricsEnabled = applicationProperties.getMetrics().getEnabled(); @@ -43,11 +48,6 @@ public void init() { this.metricsEnabled = metricsEnabled; } - @Autowired - public MetricsController(MeterRegistry meterRegistry) { - this.meterRegistry = meterRegistry; - } - @GetMapping("/status") @Operation( summary = "Application status and version", @@ -57,7 +57,6 @@ public ResponseEntity getStatus() { if (!metricsEnabled) { return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled."); } - Map status = new HashMap<>(); status.put("status", "UP"); status.put("version", getClass().getPackage().getImplementationVersion()); @@ -236,7 +235,6 @@ private List getEndpointCounts(String method) { String uri = counter.getId().getTag("uri"); counts.merge(uri, counter.count(), Double::sum); }); - List result = counts.entrySet().stream() .map(entry -> new EndpointCount(entry.getKey(), entry.getValue())) @@ -271,7 +269,6 @@ private double getUniqueUserCount(String method, Optional endpoint) { private List getUniqueUserCounts(String method) { log.info("Getting unique user counts for method: {}", method); Map> uniqueUsers = new HashMap<>(); - meterRegistry .find("http.requests") .tag("method", method) @@ -284,19 +281,37 @@ private List getUniqueUserCounts(String method) { uniqueUsers.computeIfAbsent(uri, k -> new HashSet<>()).add(session); } }); - List result = uniqueUsers.entrySet().stream() .map(entry -> new EndpointCount(entry.getKey(), entry.getValue().size())) .sorted(Comparator.comparing(EndpointCount::getCount).reversed()) .collect(Collectors.toList()); - log.info("Found {} endpoints with unique user counts", result.size()); return result; } + @GetMapping("/uptime") + public ResponseEntity getUptime() { + if (!metricsEnabled) { + return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled."); + } + LocalDateTime now = LocalDateTime.now(); + Duration uptime = Duration.between(StartupApplicationListener.startTime, now); + return ResponseEntity.ok(formatDuration(uptime)); + } + + private String formatDuration(Duration duration) { + long days = duration.toDays(); + long hours = duration.toHoursPart(); + long minutes = duration.toMinutesPart(); + long seconds = duration.toSecondsPart(); + return String.format("%dd %dh %dm %ds", days, hours, minutes, seconds); + } + public static class EndpointCount { + private String endpoint; + private double count; public EndpointCount(String endpoint, double count) { @@ -320,23 +335,4 @@ public void setCount(double count) { this.count = count; } } - - @GetMapping("/uptime") - public ResponseEntity getUptime() { - if (!metricsEnabled) { - return ResponseEntity.status(HttpStatus.FORBIDDEN).body("This endpoint is disabled."); - } - - LocalDateTime now = LocalDateTime.now(); - Duration uptime = Duration.between(StartupApplicationListener.startTime, now); - return ResponseEntity.ok(formatDuration(uptime)); - } - - private String formatDuration(Duration duration) { - long days = duration.toDays(); - long hours = duration.toHoursPart(); - long minutes = duration.toMinutesPart(); - long seconds = duration.toSecondsPart(); - return String.format("%dd %dh %dm %ds", days, hours, minutes, seconds); - } } diff --git a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java index 7f87d4f226..0732a2270c 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.stream.Collectors; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @@ -22,7 +21,11 @@ @Tag(name = "Misc", description = "Miscellaneous APIs") public class OtherWebController { - @Autowired ApplicationProperties applicationProperties; + private final ApplicationProperties applicationProperties; + + public OtherWebController(ApplicationProperties applicationProperties) { + this.applicationProperties = applicationProperties; + } @GetMapping("/compress-pdf") @Hidden diff --git a/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java b/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java index 927e9bb847..eb7245e5ad 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java @@ -18,6 +18,12 @@ public String autoRedactForm(Model model) { return "security/auto-redact"; } + @GetMapping("/redact") + public String redactForm(Model model) { + model.addAttribute("currentPage", "redact"); + return "security/redact"; + } + @GetMapping("/add-password") @Hidden public String addPasswordForm(Model model) { @@ -53,6 +59,13 @@ public String certSignForm(Model model) { return "security/cert-sign"; } + @GetMapping("/validate-signature") + @Hidden + public String certSignVerifyForm(Model model) { + model.addAttribute("currentPage", "validate-signature"); + return "security/validate-signature"; + } + @GetMapping("/remove-cert-sign") @Hidden public String certUnSignForm(Model model) { diff --git a/src/main/java/stirling/software/SPDF/controller/web/SignatureController.java b/src/main/java/stirling/software/SPDF/controller/web/SignatureController.java index eb375663c9..eaf6713936 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/SignatureController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/SignatureController.java @@ -18,10 +18,16 @@ @RequestMapping("/api/v1/general") public class SignatureController { - @Autowired private SignatureService signatureService; + private final SignatureService signatureService; - @Autowired(required = false) - private UserServiceInterface userService; + private final UserServiceInterface userService; + + public SignatureController( + SignatureService signatureService, + @Autowired(required = false) UserServiceInterface userService) { + this.signatureService = signatureService; + this.userService = userService; + } @GetMapping("/sign/{fileName}") public ResponseEntity getSignature(@PathVariable(name = "fileName") String fileName) @@ -30,15 +36,14 @@ public ResponseEntity getSignature(@PathVariable(name = "fileName") Stri if (userService != null) { username = userService.getCurrentUsername(); } - // Verify access permission if (!signatureService.hasAccessToFile(username, fileName)) { return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); } - byte[] imageBytes = signatureService.getSignatureBytes(username, fileName); return ResponseEntity.ok() - .contentType(MediaType.IMAGE_JPEG) // Adjust based on file type + .contentType( // Adjust based on file type + MediaType.IMAGE_JPEG) .body(imageBytes); } } diff --git a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java index 83df30ae04..3b2d617629 100644 --- a/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java +++ b/src/main/java/stirling/software/SPDF/model/ApplicationProperties.java @@ -73,11 +73,29 @@ public static class Security { private int loginAttemptCount; private long loginResetTimeMinutes; private String loginMethod = "all"; + private String customGlobalAPIKey; public Boolean isAltLogin() { return saml2.getEnabled() || oauth2.getEnabled(); } + public boolean isUserPass() { + return (loginMethod.equalsIgnoreCase(LoginMethods.NORMAL.toString()) + || loginMethod.equalsIgnoreCase(LoginMethods.ALL.toString())); + } + + public boolean isOauth2Activ() { + return (oauth2 != null + && oauth2.getEnabled() + && !loginMethod.equalsIgnoreCase(LoginMethods.NORMAL.toString())); + } + + public boolean isSaml2Activ() { + return (saml2 != null + && saml2.getEnabled() + && !loginMethod.equalsIgnoreCase(LoginMethods.NORMAL.toString())); + } + public enum LoginMethods { ALL("all"), NORMAL("normal"), @@ -96,23 +114,6 @@ public String toString() { } } - public boolean isUserPass() { - return (loginMethod.equalsIgnoreCase(LoginMethods.NORMAL.toString()) - || loginMethod.equalsIgnoreCase(LoginMethods.ALL.toString())); - } - - public boolean isOauth2Activ() { - return (oauth2 != null - && oauth2.getEnabled() - && !loginMethod.equalsIgnoreCase(LoginMethods.NORMAL.toString())); - } - - public boolean isSaml2Activ() { - return (saml2 != null - && saml2.getEnabled() - && !loginMethod.equalsIgnoreCase(LoginMethods.NORMAL.toString())); - } - @Data public static class InitialLogin { private String username; @@ -121,18 +122,19 @@ public static class InitialLogin { @Getter @Setter + @ToString public static class SAML2 { private Boolean enabled = false; private Boolean autoCreateUser = false; private Boolean blockRegistration = false; private String registrationId = "stirling"; - private String idpMetadataUri; + @ToString.Exclude private String idpMetadataUri; private String idpSingleLogoutUrl; private String idpSingleLoginUrl; private String idpIssuer; private String idpCert; - private String privateKey; - private String spCert; + @ToString.Exclude private String privateKey; + @ToString.Exclude private String spCert; public InputStream getIdpMetadataUri() throws IOException { if (idpMetadataUri.startsWith("classpath:")) { @@ -285,6 +287,7 @@ public static class Metrics { public static class AutomaticallyGenerated { @ToString.Exclude private String key; private String UUID; + private String appVersion; } @Data @@ -320,12 +323,20 @@ public static class ProcessExecutor { public static class SessionLimit { private int libreOfficeSessionLimit; private int pdfToHtmlSessionLimit; - private int ocrMyPdfSessionLimit; private int pythonOpenCvSessionLimit; - private int ghostScriptSessionLimit; private int weasyPrintSessionLimit; private int installAppSessionLimit; private int calibreSessionLimit; + private int qpdfSessionLimit; + private int tesseractSessionLimit; + + public int getQpdfSessionLimit() { + return qpdfSessionLimit > 0 ? qpdfSessionLimit : 2; + } + + public int getTesseractSessionLimit() { + return tesseractSessionLimit > 0 ? tesseractSessionLimit : 1; + } public int getLibreOfficeSessionLimit() { return libreOfficeSessionLimit > 0 ? libreOfficeSessionLimit : 1; @@ -335,18 +346,10 @@ public int getPdfToHtmlSessionLimit() { return pdfToHtmlSessionLimit > 0 ? pdfToHtmlSessionLimit : 1; } - public int getOcrMyPdfSessionLimit() { - return ocrMyPdfSessionLimit > 0 ? ocrMyPdfSessionLimit : 2; - } - public int getPythonOpenCvSessionLimit() { return pythonOpenCvSessionLimit > 0 ? pythonOpenCvSessionLimit : 8; } - public int getGhostScriptSessionLimit() { - return ghostScriptSessionLimit > 0 ? ghostScriptSessionLimit : 16; - } - public int getWeasyPrintSessionLimit() { return weasyPrintSessionLimit > 0 ? weasyPrintSessionLimit : 16; } @@ -364,12 +367,20 @@ public int getCalibreSessionLimit() { public static class TimeoutMinutes { private long libreOfficeTimeoutMinutes; private long pdfToHtmlTimeoutMinutes; - private long ocrMyPdfTimeoutMinutes; private long pythonOpenCvTimeoutMinutes; - private long ghostScriptTimeoutMinutes; private long weasyPrintTimeoutMinutes; private long installAppTimeoutMinutes; private long calibreTimeoutMinutes; + private long tesseractTimeoutMinutes; + private long qpdfTimeoutMinutes; + + public long getTesseractTimeoutMinutes() { + return tesseractTimeoutMinutes > 0 ? tesseractTimeoutMinutes : 30; + } + + public long getQpdfTimeoutMinutes() { + return qpdfTimeoutMinutes > 0 ? qpdfTimeoutMinutes : 30; + } public long getLibreOfficeTimeoutMinutes() { return libreOfficeTimeoutMinutes > 0 ? libreOfficeTimeoutMinutes : 30; @@ -379,18 +390,10 @@ public long getPdfToHtmlTimeoutMinutes() { return pdfToHtmlTimeoutMinutes > 0 ? pdfToHtmlTimeoutMinutes : 20; } - public long getOcrMyPdfTimeoutMinutes() { - return ocrMyPdfTimeoutMinutes > 0 ? ocrMyPdfTimeoutMinutes : 30; - } - public long getPythonOpenCvTimeoutMinutes() { return pythonOpenCvTimeoutMinutes > 0 ? pythonOpenCvTimeoutMinutes : 30; } - public long getGhostScriptTimeoutMinutes() { - return ghostScriptTimeoutMinutes > 0 ? ghostScriptTimeoutMinutes : 30; - } - public long getWeasyPrintTimeoutMinutes() { return weasyPrintTimeoutMinutes > 0 ? weasyPrintTimeoutMinutes : 30; } diff --git a/src/main/java/stirling/software/SPDF/model/AuthenticationType.java b/src/main/java/stirling/software/SPDF/model/AuthenticationType.java index 58e7befb0f..80419cdd24 100644 --- a/src/main/java/stirling/software/SPDF/model/AuthenticationType.java +++ b/src/main/java/stirling/software/SPDF/model/AuthenticationType.java @@ -2,5 +2,5 @@ public enum AuthenticationType { WEB, - OAUTH2 + SSO } diff --git a/src/main/java/stirling/software/SPDF/model/Authority.java b/src/main/java/stirling/software/SPDF/model/Authority.java index 8dd6d6e742..be250e8b8c 100644 --- a/src/main/java/stirling/software/SPDF/model/Authority.java +++ b/src/main/java/stirling/software/SPDF/model/Authority.java @@ -2,14 +2,7 @@ import java.io.Serializable; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; +import jakarta.persistence.*; @Entity @Table(name = "authorities") @@ -17,14 +10,6 @@ public class Authority implements Serializable { private static final long serialVersionUID = 1L; - public Authority() {} - - public Authority(String authority, User user) { - this.authority = authority; - this.user = user; - user.getAuthorities().add(this); - } - @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @@ -36,6 +21,14 @@ public Authority(String authority, User user) { @JoinColumn(name = "user_id") private User user; + public Authority() {} + + public Authority(String authority, User user) { + this.authority = authority; + this.user = user; + user.getAuthorities().add(this); + } + public Long getId() { return id; } diff --git a/src/main/java/stirling/software/SPDF/model/Role.java b/src/main/java/stirling/software/SPDF/model/Role.java index 02e7dd5f10..78f93d867a 100644 --- a/src/main/java/stirling/software/SPDF/model/Role.java +++ b/src/main/java/stirling/software/SPDF/model/Role.java @@ -40,22 +40,6 @@ public enum Role { this.roleName = roleName; } - public String getRoleId() { - return roleId; - } - - public int getApiCallsPerDay() { - return apiCallsPerDay; - } - - public int getWebCallsPerDay() { - return webCallsPerDay; - } - - public String getRoleName() { - return roleName; - } - public static String getRoleNameByRoleId(String roleId) { // Using the fromString method to get the Role enum based on the roleId Role role = fromString(roleId); @@ -81,4 +65,20 @@ public static Role fromString(String roleId) { } throw new IllegalArgumentException("No Role defined for id: " + roleId); } + + public String getRoleId() { + return roleId; + } + + public int getApiCallsPerDay() { + return apiCallsPerDay; + } + + public int getWebCallsPerDay() { + return webCallsPerDay; + } + + public String getRoleName() { + return roleName; + } } diff --git a/src/main/java/stirling/software/SPDF/model/User.java b/src/main/java/stirling/software/SPDF/model/User.java index ddfb71353d..56bcdf332a 100644 --- a/src/main/java/stirling/software/SPDF/model/User.java +++ b/src/main/java/stirling/software/SPDF/model/User.java @@ -111,14 +111,14 @@ public void setEnabled(boolean enabled) { this.enabled = enabled; } - public void setAuthenticationType(AuthenticationType authenticationType) { - this.authenticationType = authenticationType.toString().toLowerCase(); - } - public String getAuthenticationType() { return authenticationType; } + public void setAuthenticationType(AuthenticationType authenticationType) { + this.authenticationType = authenticationType.toString().toLowerCase(); + } + public Set getAuthorities() { return authorities; } diff --git a/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java b/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java index 173bde0beb..4eaabe87fc 100644 --- a/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java +++ b/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java @@ -5,8 +5,6 @@ import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.media.Schema; @@ -14,18 +12,20 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.utils.GeneralUtils; @Data @NoArgsConstructor +@Slf4j @EqualsAndHashCode(callSuper = true) public class PDFWithPageNums extends PDFFile { - private static final Logger logger = LoggerFactory.getLogger(PDFWithPageNums.class); - @Schema( description = - "The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or functions in the format 'an+b' where 'a' is the multiplier of the page number 'n', and 'b' is a constant (e.g., '2n+1', '3n', '6n-5')\"") + "The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or functions in the" + + " format 'an+b' where 'a' is the multiplier of the page number 'n', and 'b' is a" + + " constant (e.g., '2n+1', '3n', '6n-5')\"") private String pageNumbers; @Hidden @@ -35,7 +35,7 @@ public List getPageNumbersList(boolean zeroCount) { pageCount = Loader.loadPDF(getFileInput().getBytes()).getNumberOfPages(); } catch (IOException e) { // TODO Auto-generated catch block - logger.error("exception", e); + log.error("exception", e); } return GeneralUtils.parsePageList(pageNumbers, pageCount, zeroCount); } diff --git a/src/main/java/stirling/software/SPDF/model/api/converters/ConvertToImageRequest.java b/src/main/java/stirling/software/SPDF/model/api/converters/ConvertToImageRequest.java index 3bde3e16ee..87d30e6243 100644 --- a/src/main/java/stirling/software/SPDF/model/api/converters/ConvertToImageRequest.java +++ b/src/main/java/stirling/software/SPDF/model/api/converters/ConvertToImageRequest.java @@ -21,6 +21,11 @@ public class ConvertToImageRequest extends PDFFile { allowableValues = {"single", "multiple"}) private String singleOrMultiple; + @Schema( + description = + "The pages to select, Supports ranges (e.g., '1,3,5-9'), or 'all' or functions in the format 'an+b' where 'a' is the multiplier of the page number 'n', and 'b' is a constant (e.g., '2n+1', '3n', '6n-5')\"") + private String pageNumbers; + @Schema( description = "The color type of the output image(s)", allowableValues = {"color", "greyscale", "blackwhite"}) diff --git a/src/main/java/stirling/software/SPDF/model/api/misc/OptimizePdfRequest.java b/src/main/java/stirling/software/SPDF/model/api/misc/OptimizePdfRequest.java index 96a787f31b..3cd7f7be45 100644 --- a/src/main/java/stirling/software/SPDF/model/api/misc/OptimizePdfRequest.java +++ b/src/main/java/stirling/software/SPDF/model/api/misc/OptimizePdfRequest.java @@ -18,4 +18,15 @@ public class OptimizePdfRequest extends PDFFile { @Schema(description = "The expected output size, e.g. '100MB', '25KB', etc.") private String expectedOutputSize; + + @Schema( + description = "Whether to linearize the PDF for faster web viewing. Default is false.", + defaultValue = "false") + private Boolean linearize = false; + + @Schema( + description = + "Whether to normalize the PDF content for better compatibility. Default is true.", + defaultValue = "true") + private Boolean normalize = true; } diff --git a/src/main/java/stirling/software/SPDF/model/api/misc/ProcessPdfWithOcrRequest.java b/src/main/java/stirling/software/SPDF/model/api/misc/ProcessPdfWithOcrRequest.java index 7d3de3e6c5..e26741c944 100644 --- a/src/main/java/stirling/software/SPDF/model/api/misc/ProcessPdfWithOcrRequest.java +++ b/src/main/java/stirling/software/SPDF/model/api/misc/ProcessPdfWithOcrRequest.java @@ -15,18 +15,6 @@ public class ProcessPdfWithOcrRequest extends PDFFile { @Schema(description = "List of languages to use in OCR processing") private List languages; - @Schema(description = "Include OCR text in a sidecar text file if set to true") - private boolean sidecar; - - @Schema(description = "Deskew the input file if set to true") - private boolean deskew; - - @Schema(description = "Clean the input file if set to true") - private boolean clean; - - @Schema(description = "Clean the final output if set to true") - private boolean cleanFinal; - @Schema( description = "Specify the OCR type, e.g., 'skip-text', 'force-ocr', or 'Normal'", allowableValues = {"skip-text", "force-ocr", "Normal"}) @@ -37,7 +25,4 @@ public class ProcessPdfWithOcrRequest extends PDFFile { allowableValues = {"hocr", "sandwich"}, defaultValue = "hocr") private String ocrRenderType = "hocr"; - - @Schema(description = "Remove images from the output PDF if set to true") - private boolean removeImagesAfter; } diff --git a/src/main/java/stirling/software/SPDF/model/api/security/AddWatermarkRequest.java b/src/main/java/stirling/software/SPDF/model/api/security/AddWatermarkRequest.java index db746fcac4..81f921ec59 100644 --- a/src/main/java/stirling/software/SPDF/model/api/security/AddWatermarkRequest.java +++ b/src/main/java/stirling/software/SPDF/model/api/security/AddWatermarkRequest.java @@ -45,6 +45,9 @@ public class AddWatermarkRequest extends PDFFile { @Schema(description = "The height spacer between watermark elements", example = "50") private int heightSpacer; + @Schema(description = "The color for watermark", defaultValue = "#d3d3d3") + private String customColor = "#d3d3d3"; + @Schema(description = "Convert the redacted PDF to an image", defaultValue = "false") private boolean convertPDFToImage; } diff --git a/src/main/java/stirling/software/SPDF/model/api/security/ManualRedactPdfRequest.java b/src/main/java/stirling/software/SPDF/model/api/security/ManualRedactPdfRequest.java new file mode 100644 index 0000000000..cb98499e03 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/model/api/security/ManualRedactPdfRequest.java @@ -0,0 +1,21 @@ +package stirling.software.SPDF.model.api.security; + +import java.util.List; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import stirling.software.SPDF.model.api.PDFWithPageNums; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ManualRedactPdfRequest extends PDFWithPageNums { + @Schema(description = "A list of areas that should be redacted") + private List redactions; + + @Schema(description = "Convert the redacted PDF to an image", defaultValue = "false") + private boolean convertPDFToImage; + + @Schema(description = "The color used to fully redact certain pages") + private String pageRedactionColor; +} diff --git a/src/main/java/stirling/software/SPDF/model/api/security/RedactionArea.java b/src/main/java/stirling/software/SPDF/model/api/security/RedactionArea.java new file mode 100644 index 0000000000..5157d415d9 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/model/api/security/RedactionArea.java @@ -0,0 +1,23 @@ +package stirling.software.SPDF.model.api.security; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class RedactionArea { + @Schema(description = "The left edge point of the area to be redacted.") + private Double x; + @Schema(description = "The top edge point of the area to be redacted.") + private Double y; + + @Schema(description = "The height of the area to be redacted.") + private Double height; + @Schema(description = "The width of the area to be redacted.") + private Double width; + + @Schema(description = "The page on which the area should be redacted.") + private Integer page; + + @Schema(description = "The color used to redact the specified area.") + private String color; +} diff --git a/src/main/java/stirling/software/SPDF/model/api/security/SignatureValidationRequest.java b/src/main/java/stirling/software/SPDF/model/api/security/SignatureValidationRequest.java new file mode 100644 index 0000000000..73deef4002 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/model/api/security/SignatureValidationRequest.java @@ -0,0 +1,17 @@ +package stirling.software.SPDF.model.api.security; + +import org.springframework.web.multipart.MultipartFile; + +import io.swagger.v3.oas.annotations.media.Schema; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import stirling.software.SPDF.model.api.PDFFile; + +@Data +@EqualsAndHashCode(callSuper = true) +public class SignatureValidationRequest extends PDFFile { + + @Schema(description = "(Optional) file to compare PDF cert signatures against x.509 format") + private MultipartFile certFile; +} diff --git a/src/main/java/stirling/software/SPDF/model/api/security/SignatureValidationResult.java b/src/main/java/stirling/software/SPDF/model/api/security/SignatureValidationResult.java new file mode 100644 index 0000000000..b4c51f3654 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/model/api/security/SignatureValidationResult.java @@ -0,0 +1,30 @@ +package stirling.software.SPDF.model.api.security; + +import java.util.List; + +import lombok.Data; + +@Data +public class SignatureValidationResult { + private boolean valid; + private String signerName; + private String signatureDate; + private String reason; + private String location; + private String errorMessage; + private boolean chainValid; + private boolean trustValid; + private boolean notExpired; + private boolean notRevoked; + + private String issuerDN; // Certificate issuer's Distinguished Name + private String subjectDN; // Certificate subject's Distinguished Name + private String serialNumber; // Certificate serial number + private String validFrom; // Certificate validity start date + private String validUntil; // Certificate validity end date + private String signatureAlgorithm; // Algorithm used for signing + private int keySize; // Key size in bits + private String version; // Certificate version + private List keyUsages; // List of key usage purposes + private boolean isSelfSigned; // Whether the certificate is self-signed +} diff --git a/src/main/java/stirling/software/SPDF/model/provider/GithubProvider.java b/src/main/java/stirling/software/SPDF/model/provider/GithubProvider.java index 85fe72585c..afe7fcb77e 100644 --- a/src/main/java/stirling/software/SPDF/model/provider/GithubProvider.java +++ b/src/main/java/stirling/software/SPDF/model/provider/GithubProvider.java @@ -12,6 +12,10 @@ public class GithubProvider extends Provider { private static final String authorizationUri = "https://github.com/login/oauth/authorize"; private static final String tokenUri = "https://github.com/login/oauth/access_token"; private static final String userInfoUri = "https://api.github.com/user"; + private String clientId; + private String clientSecret; + private Collection scopes = new ArrayList<>(); + private String useAsUsername = "login"; public String getAuthorizationuri() { return authorizationUri; @@ -25,11 +29,6 @@ public String getUserinfouri() { return userInfoUri; } - private String clientId; - private String clientSecret; - private Collection scopes = new ArrayList<>(); - private String useAsUsername = "login"; - @Override public String getIssuer() { return new String(); diff --git a/src/main/java/stirling/software/SPDF/model/provider/GoogleProvider.java b/src/main/java/stirling/software/SPDF/model/provider/GoogleProvider.java index a3608df8c0..e43e1327ba 100644 --- a/src/main/java/stirling/software/SPDF/model/provider/GoogleProvider.java +++ b/src/main/java/stirling/software/SPDF/model/provider/GoogleProvider.java @@ -13,6 +13,10 @@ public class GoogleProvider extends Provider { private static final String tokenUri = "https://www.googleapis.com/oauth2/v4/token"; private static final String userInfoUri = "https://www.googleapis.com/oauth2/v3/userinfo?alt=json"; + private String clientId; + private String clientSecret; + private Collection scopes = new ArrayList<>(); + private String useAsUsername = "email"; public String getAuthorizationuri() { return authorizationUri; @@ -26,11 +30,6 @@ public String getUserinfouri() { return userInfoUri; } - private String clientId; - private String clientSecret; - private Collection scopes = new ArrayList<>(); - private String useAsUsername = "email"; - @Override public String getIssuer() { return new String(); diff --git a/src/main/java/stirling/software/SPDF/pdf/FlexibleCSVWriter.java b/src/main/java/stirling/software/SPDF/pdf/FlexibleCSVWriter.java new file mode 100644 index 0000000000..94a48d9357 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/pdf/FlexibleCSVWriter.java @@ -0,0 +1,16 @@ +package stirling.software.SPDF.pdf; + +import org.apache.commons.csv.CSVFormat; + +import technology.tabula.writers.CSVWriter; + +public class FlexibleCSVWriter extends CSVWriter { + + public FlexibleCSVWriter() { + super(); + } + + public FlexibleCSVWriter(CSVFormat csvFormat) { + super(csvFormat); + } +} diff --git a/src/main/java/stirling/software/SPDF/pdf/TextFinder.java b/src/main/java/stirling/software/SPDF/pdf/TextFinder.java index 77f7d0c6f4..484f65241f 100644 --- a/src/main/java/stirling/software/SPDF/pdf/TextFinder.java +++ b/src/main/java/stirling/software/SPDF/pdf/TextFinder.java @@ -21,16 +21,6 @@ public class TextFinder extends PDFTextStripper { private final boolean wholeWordSearch; private final List textOccurrences = new ArrayList<>(); - private class MatchInfo { - int startIndex; - int matchLength; - - MatchInfo(int startIndex, int matchLength) { - this.startIndex = startIndex; - this.matchLength = matchLength; - } - } - public TextFinder(String searchText, boolean useRegex, boolean wholeWordSearch) throws IOException { this.searchText = searchText.toLowerCase(); @@ -103,4 +93,14 @@ public List getTextLocations(PDDocument document) throws Exception { return textOccurrences; } + + private class MatchInfo { + int startIndex; + int matchLength; + + MatchInfo(int startIndex, int matchLength) { + this.startIndex = startIndex; + this.matchLength = matchLength; + } + } } diff --git a/src/main/java/stirling/software/SPDF/repository/JPATokenRepositoryImpl.java b/src/main/java/stirling/software/SPDF/repository/JPATokenRepositoryImpl.java index 7b2e58ffcd..98becfd48a 100644 --- a/src/main/java/stirling/software/SPDF/repository/JPATokenRepositoryImpl.java +++ b/src/main/java/stirling/software/SPDF/repository/JPATokenRepositoryImpl.java @@ -2,7 +2,6 @@ import java.util.Date; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.web.authentication.rememberme.PersistentRememberMeToken; import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository; import org.springframework.transaction.annotation.Transactional; @@ -11,7 +10,11 @@ public class JPATokenRepositoryImpl implements PersistentTokenRepository { - @Autowired private PersistentLoginRepository persistentLoginRepository; + private final PersistentLoginRepository persistentLoginRepository; + + public JPATokenRepositoryImpl(PersistentLoginRepository persistentLoginRepository) { + this.persistentLoginRepository = persistentLoginRepository; + } @Override @Transactional diff --git a/src/main/java/stirling/software/SPDF/repository/UserRepository.java b/src/main/java/stirling/software/SPDF/repository/UserRepository.java index 0f5387f79b..e1f53efb83 100644 --- a/src/main/java/stirling/software/SPDF/repository/UserRepository.java +++ b/src/main/java/stirling/software/SPDF/repository/UserRepository.java @@ -1,5 +1,6 @@ package stirling.software.SPDF.repository; +import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; @@ -19,4 +20,6 @@ public interface UserRepository extends JpaRepository { Optional findByUsername(String username); Optional findByApiKey(String apiKey); + + List findByAuthenticationTypeIgnoreCase(String authenticationType); } diff --git a/src/main/java/stirling/software/SPDF/service/CertificateValidationService.java b/src/main/java/stirling/software/SPDF/service/CertificateValidationService.java new file mode 100644 index 0000000000..7b4dc6dd82 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/service/CertificateValidationService.java @@ -0,0 +1,143 @@ +package stirling.software.SPDF.service; + +import java.io.*; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.cert.*; +import java.util.*; + +import org.springframework.stereotype.Service; + +import io.github.pixee.security.BoundedLineReader; + +import jakarta.annotation.PostConstruct; + +@Service +public class CertificateValidationService { + private KeyStore trustStore; + + @PostConstruct + private void initializeTrustStore() throws Exception { + trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); + trustStore.load(null, null); + loadMozillaCertificates(); + } + + private void loadMozillaCertificates() throws Exception { + try (InputStream is = getClass().getResourceAsStream("/certdata.txt")) { + BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + String line; + StringBuilder certData = new StringBuilder(); + boolean inCert = false; + int certCount = 0; + + while ((line = BoundedLineReader.readLine(reader, 5_000_000)) != null) { + if (line.startsWith("CKA_VALUE MULTILINE_OCTAL")) { + inCert = true; + certData = new StringBuilder(); + continue; + } + if (inCert) { + if ("END".equals(line)) { + inCert = false; + byte[] certBytes = parseOctalData(certData.toString()); + if (certBytes != null) { + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + X509Certificate cert = + (X509Certificate) + cf.generateCertificate( + new ByteArrayInputStream(certBytes)); + trustStore.setCertificateEntry("mozilla-cert-" + certCount++, cert); + } + } else { + certData.append(line).append("\n"); + } + } + } + } + } + + private byte[] parseOctalData(String data) { + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + String[] tokens = data.split("\\\\"); + for (String token : tokens) { + token = token.trim(); + if (!token.isEmpty()) { + baos.write(Integer.parseInt(token, 8)); + } + } + return baos.toByteArray(); + } catch (Exception e) { + return null; + } + } + + public boolean validateCertificateChain(X509Certificate cert) { + try { + CertPathValidator validator = CertPathValidator.getInstance("PKIX"); + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + List certList = Arrays.asList(cert); + CertPath certPath = cf.generateCertPath(certList); + + Set anchors = new HashSet<>(); + Enumeration aliases = trustStore.aliases(); + while (aliases.hasMoreElements()) { + Object trustCert = trustStore.getCertificate(aliases.nextElement()); + if (trustCert instanceof X509Certificate) { + anchors.add(new TrustAnchor((X509Certificate) trustCert, null)); + } + } + + PKIXParameters params = new PKIXParameters(anchors); + params.setRevocationEnabled(false); + validator.validate(certPath, params); + return true; + } catch (Exception e) { + return false; + } + } + + public boolean validateTrustStore(X509Certificate cert) { + try { + Enumeration aliases = trustStore.aliases(); + while (aliases.hasMoreElements()) { + Object trustCert = trustStore.getCertificate(aliases.nextElement()); + if (trustCert instanceof X509Certificate && cert.equals(trustCert)) { + return true; + } + } + return false; + } catch (KeyStoreException e) { + return false; + } + } + + public boolean isRevoked(X509Certificate cert) { + try { + cert.checkValidity(); + return false; + } catch (CertificateExpiredException | CertificateNotYetValidException e) { + return true; + } + } + + public boolean validateCertificateChainWithCustomCert( + X509Certificate cert, X509Certificate customCert) { + try { + cert.verify(customCert.getPublicKey()); + return true; + } catch (Exception e) { + return false; + } + } + + public boolean validateTrustWithCustomCert(X509Certificate cert, X509Certificate customCert) { + try { + // Compare the issuer of the signature certificate with the custom certificate + return cert.getIssuerX500Principal().equals(customCert.getSubjectX500Principal()); + } catch (Exception e) { + return false; + } + } +} diff --git a/src/main/java/stirling/software/SPDF/service/CustomPDDocumentFactory.java b/src/main/java/stirling/software/SPDF/service/CustomPDDocumentFactory.java index 0807e0d110..040e65d139 100644 --- a/src/main/java/stirling/software/SPDF/service/CustomPDDocumentFactory.java +++ b/src/main/java/stirling/software/SPDF/service/CustomPDDocumentFactory.java @@ -7,20 +7,18 @@ import org.apache.pdfbox.Loader; import org.apache.pdfbox.pdmodel.PDDocument; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.PdfMetadata; import stirling.software.SPDF.model.api.PDFFile; @Component +@Slf4j public class CustomPDDocumentFactory { - private static final Logger logger = LoggerFactory.getLogger(CustomPDDocumentFactory.class); - private final PdfMetadataService pdfMetadataService; @Autowired @@ -133,10 +131,10 @@ private PDDocument load(byte[] bytes, String password) throws IOException { private PDDocument removezeropassword(PDDocument document) throws IOException { if (document.isEncrypted()) { try { - logger.info("Removing security from the source document"); + log.info("Removing security from the source document"); document.setAllSecurityToBeRemoved(true); } catch (Exception e) { - logger.warn("Cannot decrypt the pdf"); + log.warn("Cannot decrypt the pdf"); } } return document; diff --git a/src/main/java/stirling/software/SPDF/service/MetricsAggregatorService.java b/src/main/java/stirling/software/SPDF/service/MetricsAggregatorService.java index 8a65029979..61a1893877 100644 --- a/src/main/java/stirling/software/SPDF/service/MetricsAggregatorService.java +++ b/src/main/java/stirling/software/SPDF/service/MetricsAggregatorService.java @@ -24,7 +24,7 @@ public MetricsAggregatorService(MeterRegistry meterRegistry, PostHogService post this.postHogService = postHogService; } - @Scheduled(fixedRate = 900000) // Run every 15 minutes + @Scheduled(fixedRate = 7200000) // Run every 2 hours public void aggregateAndSendMetrics() { Map metrics = new HashMap<>(); Search.in(meterRegistry) @@ -34,17 +34,22 @@ public void aggregateAndSendMetrics() { counter -> { String method = counter.getId().getTag("method"); String uri = counter.getId().getTag("uri"); - + // Skip if either method or uri is null if (method == null || uri == null) { return; } - - String key = String.format( - "http_requests_%s_%s", - method, - uri.replace("/", "_") - ); + if (!method.equals("GET") && !method.equals("POST")) { + return; + } + // Skip URIs that are 2 characters or shorter + if (uri.length() <= 2) { + return; + } + + String key = + String.format( + "http_requests_%s_%s", method, uri.replace("/", "_")); double currentCount = counter.count(); double lastCount = lastSentMetrics.getOrDefault(key, 0.0); diff --git a/src/main/java/stirling/software/SPDF/service/PdfMetadataService.java b/src/main/java/stirling/software/SPDF/service/PdfMetadataService.java index 373b4c916f..f6e8a5b57e 100644 --- a/src/main/java/stirling/software/SPDF/service/PdfMetadataService.java +++ b/src/main/java/stirling/software/SPDF/service/PdfMetadataService.java @@ -17,15 +17,18 @@ public class PdfMetadataService { private final ApplicationProperties applicationProperties; private final String stirlingPDFLabel; private final UserServiceInterface userService; + private final boolean runningEE; @Autowired public PdfMetadataService( ApplicationProperties applicationProperties, @Qualifier("StirlingPDFLabel") String stirlingPDFLabel, + @Qualifier("runningEE") boolean runningEE, @Autowired(required = false) UserServiceInterface userService) { this.applicationProperties = applicationProperties; this.stirlingPDFLabel = stirlingPDFLabel; this.userService = userService; + this.runningEE = runningEE; } public PdfMetadata extractMetadataFromPdf(PDDocument pdf) { @@ -61,10 +64,8 @@ private void setNewDocumentMetadata(PDDocument pdf, PdfMetadata pdfMetadata) { String creator = stirlingPDFLabel; - if (applicationProperties - .getEnterpriseEdition() - .getCustomMetadata() - .isAutoUpdateMetadata()) { + if (applicationProperties.getEnterpriseEdition().getCustomMetadata().isAutoUpdateMetadata() + && runningEE) { creator = applicationProperties.getEnterpriseEdition().getCustomMetadata().getCreator(); pdf.getDocumentInformation().setProducer(stirlingPDFLabel); @@ -83,10 +84,8 @@ private void setCommonMetadata(PDDocument pdf, PdfMetadata pdfMetadata) { pdf.getDocumentInformation().setModificationDate(Calendar.getInstance()); String author = pdfMetadata.getAuthor(); - if (applicationProperties - .getEnterpriseEdition() - .getCustomMetadata() - .isAutoUpdateMetadata()) { + if (applicationProperties.getEnterpriseEdition().getCustomMetadata().isAutoUpdateMetadata() + && runningEE) { author = applicationProperties.getEnterpriseEdition().getCustomMetadata().getAuthor(); if (userService != null) { diff --git a/src/main/java/stirling/software/SPDF/service/PostHogService.java b/src/main/java/stirling/software/SPDF/service/PostHogService.java index 68a8aa7a24..f47693f9da 100644 --- a/src/main/java/stirling/software/SPDF/service/PostHogService.java +++ b/src/main/java/stirling/software/SPDF/service/PostHogService.java @@ -6,15 +6,12 @@ import java.net.NetworkInterface; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; -import java.util.TimeZone; +import java.util.*; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; import com.posthog.java.PostHog; @@ -26,19 +23,28 @@ public class PostHogService { private final PostHog postHog; private final String uniqueId; + private final String appVersion; private final ApplicationProperties applicationProperties; private final UserServiceInterface userService; + private final Environment env; + private boolean configDirMounted; @Autowired public PostHogService( PostHog postHog, @Qualifier("UUID") String uuid, + @Qualifier("configDirMounted") boolean configDirMounted, + @Qualifier("appVersion") String appVersion, ApplicationProperties applicationProperties, - @Autowired(required = false) UserServiceInterface userService) { + @Autowired(required = false) UserServiceInterface userService, + Environment env) { this.postHog = postHog; this.uniqueId = uuid; + this.appVersion = appVersion; this.applicationProperties = applicationProperties; this.userService = userService; + this.env = env; + this.configDirMounted = configDirMounted; captureSystemInfo(); } @@ -64,6 +70,17 @@ public Map captureServerMetrics() { Map metrics = new HashMap<>(); try { + // Application version + metrics.put("app_version", appVersion); + String deploymentType = "JAR"; // default + if ("true".equalsIgnoreCase(env.getProperty("BROWSER_OPEN"))) { + deploymentType = "EXE"; + } else if (isRunningInDocker()) { + deploymentType = "DOCKER"; + } + metrics.put("deployment_type", deploymentType); + metrics.put("mounted_config_dir", configDirMounted); + // System info metrics.put("os_name", System.getProperty("os.name")); metrics.put("os_version", System.getProperty("os.version")); @@ -132,7 +149,6 @@ public Map captureServerMetrics() { // Docker detection and stats boolean isDocker = isRunningInDocker(); - metrics.put("is_docker", isDocker); if (isDocker) { metrics.put("docker_metrics", getDockerMetrics()); } diff --git a/src/main/java/stirling/software/SPDF/utils/FileInfo.java b/src/main/java/stirling/software/SPDF/utils/FileInfo.java index 4e236756a8..64e21f8c1a 100644 --- a/src/main/java/stirling/software/SPDF/utils/FileInfo.java +++ b/src/main/java/stirling/software/SPDF/utils/FileInfo.java @@ -11,15 +11,14 @@ @AllArgsConstructor @Data public class FileInfo { + private static final DateTimeFormatter DATE_FORMATTER = + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private String fileName; private String filePath; private LocalDateTime modificationDate; private long fileSize; private LocalDateTime creationDate; - private static final DateTimeFormatter DATE_FORMATTER = - DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - // Converts the file path string to a Path object. public Path getFilePathAsPath() { return Paths.get(filePath); diff --git a/src/main/java/stirling/software/SPDF/utils/FileMonitor.java b/src/main/java/stirling/software/SPDF/utils/FileMonitor.java index 6d96958cae..493ddd6e35 100644 --- a/src/main/java/stirling/software/SPDF/utils/FileMonitor.java +++ b/src/main/java/stirling/software/SPDF/utils/FileMonitor.java @@ -9,16 +9,17 @@ import java.util.function.Predicate; import java.util.stream.Stream; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import lombok.extern.slf4j.Slf4j; + @Component +@Slf4j public class FileMonitor { - private static final Logger logger = LoggerFactory.getLogger(FileMonitor.class); + private final Map path2KeyMapping; private final Set newlyDiscoveredFiles; private final ConcurrentHashMap.KeySetView readyForProcessingFiles; @@ -53,7 +54,7 @@ private boolean shouldNotProcess(Path path) { private void recursivelyRegisterEntry(Path dir) throws IOException { WatchKey key = dir.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); path2KeyMapping.put(dir, key); - logger.info("Registered directory: {}", dir); + log.info("Registered directory: {}", dir); try (Stream directoryVisitor = Files.walk(dir, 1)) { final Iterator iterator = directoryVisitor.iterator(); @@ -80,14 +81,13 @@ public void trackFiles() { readyForProcessingFiles.clear(); if (path2KeyMapping.isEmpty()) { - logger.warn( - "not monitoring any directory, even the root directory itself: {}", rootDir); + log.warn("not monitoring any directory, even the root directory itself: {}", rootDir); if (Files.exists( rootDir)) { // if the root directory exists, re-register the root directory try { recursivelyRegisterEntry(rootDir); } catch (IOException e) { - logger.error("unable to register monitoring", e); + log.error("unable to register monitoring", e); } } } @@ -122,7 +122,7 @@ public void trackFiles() { handleFileModification(relativePathFromRoot); } } catch (Exception e) { - logger.error("Error while processing file: {}", path, e); + log.error("Error while processing file: {}", path, e); } }); diff --git a/src/main/java/stirling/software/SPDF/utils/FileToPdf.java b/src/main/java/stirling/software/SPDF/utils/FileToPdf.java index d18277df29..442167d8c4 100644 --- a/src/main/java/stirling/software/SPDF/utils/FileToPdf.java +++ b/src/main/java/stirling/software/SPDF/utils/FileToPdf.java @@ -1,11 +1,6 @@ package stirling.software.SPDF.utils; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.UncheckedIOException; +import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.FileVisitResult; import java.nio.file.Files; @@ -105,7 +100,7 @@ private static void sanitizeHtmlFilesInZip(Path zipFilePath) throws IOException new ByteArrayInputStream(Files.readAllBytes(zipFilePath)))) { ZipEntry entry = zipIn.getNextEntry(); while (entry != null) { - Path filePath = tempUnzippedDir.resolve(entry.getName()); + Path filePath = tempUnzippedDir.resolve(sanitizeZipFilename(entry.getName())); if (!entry.isDirectory()) { Files.createDirectories(filePath.getParent()); if (entry.getName().toLowerCase().endsWith(".html") @@ -175,7 +170,7 @@ private static Path unzipAndGetMainHtml(byte[] fileBytes) throws IOException { ZipSecurity.createHardenedInputStream(new ByteArrayInputStream(fileBytes))) { ZipEntry entry = zipIn.getNextEntry(); while (entry != null) { - Path filePath = tempDirectory.resolve(entry.getName()); + Path filePath = tempDirectory.resolve(sanitizeZipFilename(entry.getName())); if (entry.isDirectory()) { Files.createDirectories(filePath); // Explicitly create the directory structure } else { @@ -241,4 +236,14 @@ public static byte[] convertBookTypeToPdf(byte[] bytes, String originalFilename) Files.deleteIfExists(tempOutputFile); } } + + static String sanitizeZipFilename(String entryName) { + if (entryName == null || entryName.trim().isEmpty()) { + return entryName; + } + while (entryName.contains("../") || entryName.contains("..\\")) { + entryName = entryName.replace("../", "").replace("..\\", ""); + } + return entryName; + } } diff --git a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java index 8e56c8df6e..7995114527 100644 --- a/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java +++ b/src/main/java/stirling/software/SPDF/utils/GeneralUtils.java @@ -4,31 +4,22 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.InetAddress; -import java.net.MalformedURLException; -import java.net.NetworkInterface; -import java.net.URI; -import java.net.URL; +import java.net.*; import java.nio.charset.StandardCharsets; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.SimpleFileVisitor; +import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.security.MessageDigest; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.simpleyaml.configuration.file.YamlFile; import org.simpleyaml.configuration.file.YamlFileWrapper; import org.simpleyaml.configuration.implementation.SimpleYamlImplementation; import org.simpleyaml.configuration.implementation.snakeyaml.lib.DumperOptions; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.web.multipart.MultipartFile; import com.fathzer.soft.javaluator.DoubleEvaluator; @@ -36,9 +27,10 @@ import io.github.pixee.security.HostValidator; import io.github.pixee.security.Urls; -public class GeneralUtils { +import lombok.extern.slf4j.Slf4j; - private static final Logger logger = LoggerFactory.getLogger(GeneralUtils.class); +@Slf4j +public class GeneralUtils { public static File convertMultipartFileToFile(MultipartFile multipartFile) throws IOException { File tempFile = Files.createTempFile("temp", null).toFile(); @@ -88,15 +80,50 @@ public static boolean isValidURL(String urlStr) { public static boolean isURLReachable(String urlStr) { try { + // Parse the URL URL url = URI.create(urlStr).toURL(); + + // Allow only http and https protocols + String protocol = url.getProtocol(); + if (!protocol.equals("http") && !protocol.equals("https")) { + return false; // Disallow other protocols + } + + // Check if the host is a local address + String host = url.getHost(); + if (isLocalAddress(host)) { + return false; // Exclude local addresses + } + + // Check if the URL is reachable HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("HEAD"); + // connection.setConnectTimeout(5000); // Set connection timeout + // connection.setReadTimeout(5000); // Set read timeout int responseCode = connection.getResponseCode(); return (200 <= responseCode && responseCode <= 399); - } catch (MalformedURLException e) { - return false; - } catch (IOException e) { - return false; + } catch (Exception e) { + return false; // Return false in case of any exception + } + } + + private static boolean isLocalAddress(String host) { + try { + // Resolve DNS to IP address + InetAddress address = InetAddress.getByName(host); + + // Check for local addresses + return address.isAnyLocalAddress() + || // Matches 0.0.0.0 or similar + address.isLoopbackAddress() + || // Matches 127.0.0.1 or ::1 + address.isSiteLocalAddress() + || // Matches private IPv4 ranges: 192.168.x.x, 10.x.x.x, 172.16.x.x to + // 172.31.x.x + address.getHostAddress() + .startsWith("fe80:"); // Matches link-local IPv6 addresses + } catch (Exception e) { + return false; // Return false for invalid or unresolved addresses } } @@ -195,32 +222,51 @@ public static List evaluateNFunc(String expression, int maxValue) { throw new IllegalArgumentException("Invalid expression"); } - int n = 0; - while (true) { + for (int n = 1; n <= maxValue; n++) { // Replace 'n' with the current value of n, correctly handling numbers before // 'n' - String sanitizedExpression = insertMultiplicationBeforeN(expression, n); + String sanitizedExpression = sanitizeNFunction(expression, n); Double result = evaluator.evaluate(sanitizedExpression); // Check if the result is null or not within bounds - if (result == null || result <= 0 || result.intValue() > maxValue) { - if (n != 0) break; - } else { + if (result == null) + break; + + if (result.intValue() > 0 && result.intValue() <= maxValue) results.add(result.intValue()); - } - n++; } return results; } + private static String sanitizeNFunction(String expression, int nValue) { + String sanitizedExpression = expression.replace(" ", ""); + String multiplyByOpeningRoundBracketPattern = "([0-9n)])\\("; // example: n(n-1), 9(n-1), (n-1)(n-2) + sanitizedExpression = sanitizedExpression.replaceAll(multiplyByOpeningRoundBracketPattern, "$1*("); + + String multiplyByClosingRoundBracketPattern = "\\)([0-9n)])"; // example: (n-1)n, (n-1)9, (n-1)(n-2) + sanitizedExpression = sanitizedExpression.replaceAll(multiplyByClosingRoundBracketPattern, ")*$1"); + + sanitizedExpression = insertMultiplicationBeforeN(sanitizedExpression, nValue); + return sanitizedExpression; + } + private static String insertMultiplicationBeforeN(String expression, int nValue) { // Insert multiplication between a number and 'n' (e.g., "4n" becomes "4*n") String withMultiplication = expression.replaceAll("(\\d)n", "$1*n"); + withMultiplication = formatConsecutiveNsForNFunction(withMultiplication); // Now replace 'n' with its current value return withMultiplication.replace("n", String.valueOf(nValue)); } + private static String formatConsecutiveNsForNFunction(String expression) { + String text = expression; + while (text.matches(".*n{2,}.*")) { + text = text.replaceAll("(? handlePart(String part, int totalPages, int offset) { List partResult = new ArrayList<>(); @@ -266,7 +312,7 @@ public static boolean createDir(String path) { try { Files.createDirectories(folder); } catch (IOException e) { - logger.error("exception", e); + log.error("exception", e); return false; } } @@ -289,6 +335,10 @@ public static void saveKeyToConfig(String id, String key) throws IOException { saveKeyToConfig(id, key, true); } + public static void saveKeyToConfig(String id, boolean key) throws IOException { + saveKeyToConfig(id, key, true); + } + public static void saveKeyToConfig(String id, String key, boolean autoGenerated) throws IOException { Path path = Paths.get("configs", "settings.yml"); // Target the configs/settings.yml @@ -307,6 +357,24 @@ public static void saveKeyToConfig(String id, String key, boolean autoGenerated) settingsYml.save(); } + public static void saveKeyToConfig(String id, boolean key, boolean autoGenerated) + throws IOException { + Path path = Paths.get("configs", "settings.yml"); + + final YamlFile settingsYml = new YamlFile(path.toFile()); + DumperOptions yamlOptionssettingsYml = + ((SimpleYamlImplementation) settingsYml.getImplementation()).getDumperOptions(); + yamlOptionssettingsYml.setSplitLines(false); + + settingsYml.loadWithComments(); + + YamlFileWrapper writer = settingsYml.path(id).set(key); + if (autoGenerated) { + writer.comment("# Automatically Generated Settings (Do Not Edit Directly)"); + } + settingsYml.save(); + } + public static String generateMachineFingerprint() { try { // Get the MAC address @@ -349,4 +417,33 @@ public static String generateMachineFingerprint() { return "GenericID"; } } + + public static boolean isVersionHigher(String currentVersion, String compareVersion) { + if (currentVersion == null || compareVersion == null) { + return false; + } + + // Split versions into components + String[] current = currentVersion.split("\\."); + String[] compare = compareVersion.split("\\."); + + // Get the length of the shorter version array + int length = Math.min(current.length, compare.length); + + // Compare each component + for (int i = 0; i < length; i++) { + int currentPart = Integer.parseInt(current[i]); + int comparePart = Integer.parseInt(compare[i]); + + if (currentPart > comparePart) { + return true; + } + if (currentPart < comparePart) { + return false; + } + } + + // If all components so far are equal, the longer version is considered higher + return current.length > compare.length; + } } diff --git a/src/main/java/stirling/software/SPDF/utils/ImageProcessingUtils.java b/src/main/java/stirling/software/SPDF/utils/ImageProcessingUtils.java index 4eba6c25a4..8bec891cc4 100644 --- a/src/main/java/stirling/software/SPDF/utils/ImageProcessingUtils.java +++ b/src/main/java/stirling/software/SPDF/utils/ImageProcessingUtils.java @@ -1,19 +1,13 @@ package stirling.software.SPDF.utils; import java.awt.geom.AffineTransform; -import java.awt.image.AffineTransformOp; -import java.awt.image.BufferedImage; -import java.awt.image.DataBuffer; -import java.awt.image.DataBufferByte; -import java.awt.image.DataBufferInt; +import java.awt.image.*; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; import javax.imageio.ImageIO; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.web.multipart.MultipartFile; import com.drew.imaging.ImageMetadataReader; @@ -22,9 +16,10 @@ import com.drew.metadata.MetadataException; import com.drew.metadata.exif.ExifSubIFDDirectory; -public class ImageProcessingUtils { +import lombok.extern.slf4j.Slf4j; - private static final Logger logger = LoggerFactory.getLogger(PdfUtils.class); +@Slf4j +public class ImageProcessingUtils { static BufferedImage convertColorType(BufferedImage sourceImage, String colorType) { BufferedImage convertedImage; @@ -97,7 +92,7 @@ public static double extractImageOrientation(InputStream is) throws IOException case 8: return 270; default: - logger.warn("Unknown orientation tag: {}", orientationTag); + log.warn("Unknown orientation tag: {}", orientationTag); return 0; } } catch (ImageProcessingException | MetadataException e) { diff --git a/src/main/java/stirling/software/SPDF/utils/PDFToFile.java b/src/main/java/stirling/software/SPDF/utils/PDFToFile.java index 1a1957cf71..8827b19b9d 100644 --- a/src/main/java/stirling/software/SPDF/utils/PDFToFile.java +++ b/src/main/java/stirling/software/SPDF/utils/PDFToFile.java @@ -14,8 +14,6 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -23,10 +21,11 @@ import io.github.pixee.security.Filenames; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult; +@Slf4j public class PDFToFile { - private static final Logger logger = LoggerFactory.getLogger(PDFToFile.class); public ResponseEntity processPdfToHtml(MultipartFile inputFile) throws IOException, InterruptedException { @@ -77,12 +76,12 @@ public ResponseEntity processPdfToHtml(MultipartFile inputFile) try (FileInputStream fis = new FileInputStream(outputFile)) { IOUtils.copy(fis, zipOutputStream); } catch (IOException e) { - logger.error("Exception writing zip entry", e); + log.error("Exception writing zip entry", e); } zipOutputStream.closeEntry(); } } catch (IOException e) { - logger.error("Exception writing zip", e); + log.error("Exception writing zip", e); } fileBytes = byteArrayOutputStream.toByteArray(); @@ -174,13 +173,13 @@ public ResponseEntity processPdfToOfficeFormat( try (FileInputStream fis = new FileInputStream(outputFile)) { IOUtils.copy(fis, zipOutputStream); } catch (IOException e) { - logger.error("Exception writing zip entry", e); + log.error("Exception writing zip entry", e); } zipOutputStream.closeEntry(); } } catch (IOException e) { - logger.error("Exception writing zip", e); + log.error("Exception writing zip", e); } fileBytes = byteArrayOutputStream.toByteArray(); diff --git a/src/main/java/stirling/software/SPDF/utils/PdfUtils.java b/src/main/java/stirling/software/SPDF/utils/PdfUtils.java index 8ccd29429b..78b773efdf 100644 --- a/src/main/java/stirling/software/SPDF/utils/PdfUtils.java +++ b/src/main/java/stirling/software/SPDF/utils/PdfUtils.java @@ -30,18 +30,16 @@ import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.pdfbox.text.PDFTextStripper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.web.multipart.MultipartFile; import io.github.pixee.security.Filenames; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.service.CustomPDDocumentFactory; +@Slf4j public class PdfUtils { - private static final Logger logger = LoggerFactory.getLogger(PdfUtils.class); - public static PDRectangle textToPageSize(String size) { switch (size.toUpperCase()) { case "A0": @@ -128,82 +126,6 @@ public static boolean hasTextOnPage(PDPage page, String phrase) throws IOExcepti return pageText.contains(phrase); } - public boolean containsTextInFile(PDDocument pdfDocument, String text, String pagesToCheck) - throws IOException { - PDFTextStripper textStripper = new PDFTextStripper(); - String pdfText = ""; - - if (pagesToCheck == null || "all".equals(pagesToCheck)) { - pdfText = textStripper.getText(pdfDocument); - } else { - // remove whitespaces - pagesToCheck = pagesToCheck.replaceAll("\\s+", ""); - - String[] splitPoints = pagesToCheck.split(","); - for (String splitPoint : splitPoints) { - if (splitPoint.contains("-")) { - // Handle page ranges - String[] range = splitPoint.split("-"); - int startPage = Integer.parseInt(range[0]); - int endPage = Integer.parseInt(range[1]); - - for (int i = startPage; i <= endPage; i++) { - textStripper.setStartPage(i); - textStripper.setEndPage(i); - pdfText += textStripper.getText(pdfDocument); - } - } else { - // Handle individual page - int page = Integer.parseInt(splitPoint); - textStripper.setStartPage(page); - textStripper.setEndPage(page); - pdfText += textStripper.getText(pdfDocument); - } - } - } - - pdfDocument.close(); - - return pdfText.contains(text); - } - - public boolean pageCount(PDDocument pdfDocument, int pageCount, String comparator) - throws IOException { - int actualPageCount = pdfDocument.getNumberOfPages(); - pdfDocument.close(); - - switch (comparator.toLowerCase()) { - case "greater": - return actualPageCount > pageCount; - case "equal": - return actualPageCount == pageCount; - case "less": - return actualPageCount < pageCount; - default: - throw new IllegalArgumentException( - "Invalid comparator. Only 'greater', 'equal', and 'less' are supported."); - } - } - - public boolean pageSize(PDDocument pdfDocument, String expectedPageSize) throws IOException { - PDPage firstPage = pdfDocument.getPage(0); - PDRectangle mediaBox = firstPage.getMediaBox(); - - float actualPageWidth = mediaBox.getWidth(); - float actualPageHeight = mediaBox.getHeight(); - - pdfDocument.close(); - - // Assumes the expectedPageSize is in the format "widthxheight", e.g. "595x842" - // for A4 - String[] dimensions = expectedPageSize.split("x"); - float expectedPageWidth = Float.parseFloat(dimensions[0]); - float expectedPageHeight = Float.parseFloat(dimensions[1]); - - // Checks if the actual page size matches the expected page size - return actualPageWidth == expectedPageWidth && actualPageHeight == expectedPageHeight; - } - public static byte[] convertFromPdf( byte[] inputStream, String imageType, @@ -310,7 +232,7 @@ public static byte[] convertFromPdf( } // Log that the image was successfully written to the byte array - logger.info("Image successfully written to byte array"); + log.info("Image successfully written to byte array"); } else { // Zip the images and return as byte array try (ZipOutputStream zos = new ZipOutputStream(baos)) { @@ -330,13 +252,13 @@ public static byte[] convertFromPdf( } } // Log that the images were successfully written to the byte array - logger.info("Images successfully written to byte array as a zip"); + log.info("Images successfully written to byte array as a zip"); } } return baos.toByteArray(); } catch (IOException e) { // Log an error message if there is an issue converting the PDF to an image - logger.error("Error converting PDF to image", e); + log.error("Error converting PDF to image", e); throw e; } } @@ -354,12 +276,17 @@ public static PDDocument convertPdfToPdfImage(PDDocument document) throws IOExce pdfRenderer.setSubsamplingAllowed(true); for (int page = 0; page < document.getNumberOfPages(); ++page) { BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB); - PDPage newPage = new PDPage(new PDRectangle(bim.getWidth(), bim.getHeight())); + PDPage originalPage = document.getPage(page); + + float width = originalPage.getMediaBox().getWidth(); + float height = originalPage.getMediaBox().getHeight(); + + PDPage newPage = new PDPage(new PDRectangle(width, height)); imageDocument.addPage(newPage); PDImageXObject pdImage = LosslessFactory.createFromImage(imageDocument, bim); PDPageContentStream contentStream = new PDPageContentStream(imageDocument, newPage, AppendMode.APPEND, true, true); - contentStream.drawImage(pdImage, 0, 0); + contentStream.drawImage(pdImage, 0, 0, width, height); contentStream.close(); } return imageDocument; @@ -421,7 +348,7 @@ public static byte[] imageToPdf( } ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); doc.save(byteArrayOutputStream); - logger.info("PDF successfully saved to byte array"); + log.info("PDF successfully saved to byte array"); return byteArrayOutputStream.toByteArray(); } } @@ -471,7 +398,7 @@ public static void addImageToDocument( image.getHeight() * scaleFactor); } } catch (IOException e) { - logger.error("Error adding image to PDF", e); + log.error("Error adding image to PDF", e); throw e; } } @@ -498,23 +425,99 @@ public static byte[] overlayImage( PDImageXObject image = PDImageXObject.createFromByteArray(document, imageBytes, ""); // Draw the image onto the page at the specified x and y coordinates contentStream.drawImage(image, x, y); - logger.info("Image successfully overlayed onto PDF"); + log.info("Image successfully overlayed onto PDF"); if (!everyPage && i == 0) { break; } } catch (IOException e) { // Log an error message if there is an issue overlaying the image onto the PDF - logger.error("Error overlaying image onto PDF", e); + log.error("Error overlaying image onto PDF", e); throw e; } } // Create a ByteArrayOutputStream to save the PDF to ByteArrayOutputStream baos = new ByteArrayOutputStream(); document.save(baos); - logger.info("PDF successfully saved to byte array"); + log.info("PDF successfully saved to byte array"); return baos.toByteArray(); } + public boolean containsTextInFile(PDDocument pdfDocument, String text, String pagesToCheck) + throws IOException { + PDFTextStripper textStripper = new PDFTextStripper(); + String pdfText = ""; + + if (pagesToCheck == null || "all".equals(pagesToCheck)) { + pdfText = textStripper.getText(pdfDocument); + } else { + // remove whitespaces + pagesToCheck = pagesToCheck.replaceAll("\\s+", ""); + + String[] splitPoints = pagesToCheck.split(","); + for (String splitPoint : splitPoints) { + if (splitPoint.contains("-")) { + // Handle page ranges + String[] range = splitPoint.split("-"); + int startPage = Integer.parseInt(range[0]); + int endPage = Integer.parseInt(range[1]); + + for (int i = startPage; i <= endPage; i++) { + textStripper.setStartPage(i); + textStripper.setEndPage(i); + pdfText += textStripper.getText(pdfDocument); + } + } else { + // Handle individual page + int page = Integer.parseInt(splitPoint); + textStripper.setStartPage(page); + textStripper.setEndPage(page); + pdfText += textStripper.getText(pdfDocument); + } + } + } + + pdfDocument.close(); + + return pdfText.contains(text); + } + + public boolean pageCount(PDDocument pdfDocument, int pageCount, String comparator) + throws IOException { + int actualPageCount = pdfDocument.getNumberOfPages(); + pdfDocument.close(); + + switch (comparator.toLowerCase()) { + case "greater": + return actualPageCount > pageCount; + case "equal": + return actualPageCount == pageCount; + case "less": + return actualPageCount < pageCount; + default: + throw new IllegalArgumentException( + "Invalid comparator. Only 'greater', 'equal', and 'less' are supported."); + } + } + + public boolean pageSize(PDDocument pdfDocument, String expectedPageSize) throws IOException { + PDPage firstPage = pdfDocument.getPage(0); + PDRectangle mediaBox = firstPage.getMediaBox(); + + float actualPageWidth = mediaBox.getWidth(); + float actualPageHeight = mediaBox.getHeight(); + + pdfDocument.close(); + + // Assumes the expectedPageSize is in the format "widthxheight", e.g. "595x842" + // for A4 + String[] dimensions = expectedPageSize.split("x"); + float expectedPageWidth = Float.parseFloat(dimensions[0]); + float expectedPageHeight = Float.parseFloat(dimensions[1]); + + // Checks if the actual page size matches the expected page size + return actualPageWidth == expectedPageWidth && actualPageHeight == expectedPageHeight; + } + /** Key for storing the dimensions of a rendered image in a map. */ private record PdfRenderSettingsKey(float mediaBoxWidth, float mediaBoxHeight, int rotation) {} diff --git a/src/main/java/stirling/software/SPDF/utils/ProcessExecutor.java b/src/main/java/stirling/software/SPDF/utils/ProcessExecutor.java index 0947714fd9..d6d8afd6c0 100644 --- a/src/main/java/stirling/software/SPDF/utils/ProcessExecutor.java +++ b/src/main/java/stirling/software/SPDF/utils/ProcessExecutor.java @@ -1,10 +1,6 @@ package stirling.software.SPDF.utils; -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.InterruptedIOException; +import java.io.*; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -13,32 +9,26 @@ import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import io.github.pixee.security.BoundedLineReader; +import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.ApplicationProperties; +@Slf4j public class ProcessExecutor { - private static final Logger logger = LoggerFactory.getLogger(ProcessExecutor.class); - + private static final Map instances = new ConcurrentHashMap<>(); private static ApplicationProperties applicationProperties = new ApplicationProperties(); + private final Semaphore semaphore; + private final boolean liveUpdates; + private long timeoutDuration; - public enum Processes { - LIBRE_OFFICE, - PDFTOHTML, - OCR_MY_PDF, - PYTHON_OPENCV, - GHOSTSCRIPT, - WEASYPRINT, - INSTALL_APP, - CALIBRE + private ProcessExecutor(int semaphoreLimit, boolean liveUpdates, long timeout) { + this.semaphore = new Semaphore(semaphoreLimit); + this.liveUpdates = liveUpdates; + this.timeoutDuration = timeout; } - private static final Map instances = new ConcurrentHashMap<>(); - public static ProcessExecutor getInstance(Processes processType) { return getInstance(processType, true); } @@ -59,21 +49,11 @@ public static ProcessExecutor getInstance(Processes processType, boolean liveUpd .getProcessExecutor() .getSessionLimit() .getPdfToHtmlSessionLimit(); - case OCR_MY_PDF -> - applicationProperties - .getProcessExecutor() - .getSessionLimit() - .getOcrMyPdfSessionLimit(); case PYTHON_OPENCV -> applicationProperties .getProcessExecutor() .getSessionLimit() .getPythonOpenCvSessionLimit(); - case GHOSTSCRIPT -> - applicationProperties - .getProcessExecutor() - .getSessionLimit() - .getGhostScriptSessionLimit(); case WEASYPRINT -> applicationProperties .getProcessExecutor() @@ -84,6 +64,16 @@ public static ProcessExecutor getInstance(Processes processType, boolean liveUpd .getProcessExecutor() .getSessionLimit() .getInstallAppSessionLimit(); + case TESSERACT -> + applicationProperties + .getProcessExecutor() + .getSessionLimit() + .getTesseractSessionLimit(); + case QPDF -> + applicationProperties + .getProcessExecutor() + .getSessionLimit() + .getQpdfSessionLimit(); case CALIBRE -> applicationProperties .getProcessExecutor() @@ -103,21 +93,11 @@ public static ProcessExecutor getInstance(Processes processType, boolean liveUpd .getProcessExecutor() .getTimeoutMinutes() .getPdfToHtmlTimeoutMinutes(); - case OCR_MY_PDF -> - applicationProperties - .getProcessExecutor() - .getTimeoutMinutes() - .getOcrMyPdfTimeoutMinutes(); case PYTHON_OPENCV -> applicationProperties .getProcessExecutor() .getTimeoutMinutes() .getPythonOpenCvTimeoutMinutes(); - case GHOSTSCRIPT -> - applicationProperties - .getProcessExecutor() - .getTimeoutMinutes() - .getGhostScriptTimeoutMinutes(); case WEASYPRINT -> applicationProperties .getProcessExecutor() @@ -128,6 +108,16 @@ public static ProcessExecutor getInstance(Processes processType, boolean liveUpd .getProcessExecutor() .getTimeoutMinutes() .getInstallAppTimeoutMinutes(); + case TESSERACT -> + applicationProperties + .getProcessExecutor() + .getTimeoutMinutes() + .getTesseractTimeoutMinutes(); + case QPDF -> + applicationProperties + .getProcessExecutor() + .getTimeoutMinutes() + .getQpdfTimeoutMinutes(); case CALIBRE -> applicationProperties .getProcessExecutor() @@ -138,16 +128,6 @@ public static ProcessExecutor getInstance(Processes processType, boolean liveUpd }); } - private final Semaphore semaphore; - private final boolean liveUpdates; - private long timeoutDuration; - - private ProcessExecutor(int semaphoreLimit, boolean liveUpdates, long timeout) { - this.semaphore = new Semaphore(semaphoreLimit); - this.liveUpdates = liveUpdates; - this.timeoutDuration = timeout; - } - public ProcessExecutorResult runCommandWithOutputHandling(List command) throws IOException, InterruptedException { return runCommandWithOutputHandling(command, null); @@ -160,7 +140,7 @@ public ProcessExecutorResult runCommandWithOutputHandling( semaphore.acquire(); try { - logger.info("Running command: " + String.join(" ", command)); + log.info("Running command: " + String.join(" ", command)); ProcessBuilder processBuilder = new ProcessBuilder(command); // Use the working directory if it's set @@ -187,13 +167,12 @@ public ProcessExecutorResult runCommandWithOutputHandling( errorReader, 5_000_000)) != null) { errorLines.add(line); - if (liveUpdates) logger.info(line); + if (liveUpdates) log.info(line); } } catch (InterruptedIOException e) { - logger.warn( - "Error reader thread was interrupted due to timeout."); + log.warn("Error reader thread was interrupted due to timeout."); } catch (IOException e) { - logger.error("exception", e); + log.error("exception", e); } }); @@ -211,13 +190,12 @@ public ProcessExecutorResult runCommandWithOutputHandling( outputReader, 5_000_000)) != null) { outputLines.add(line); - if (liveUpdates) logger.info(line); + if (liveUpdates) log.info(line); } } catch (InterruptedIOException e) { - logger.warn( - "Error reader thread was interrupted due to timeout."); + log.warn("Error reader thread was interrupted due to timeout."); } catch (IOException e) { - logger.error("exception", e); + log.error("exception", e); } }); @@ -244,7 +222,7 @@ public ProcessExecutorResult runCommandWithOutputHandling( String outputMessage = String.join("\n", outputLines); messages += outputMessage; if (!liveUpdates) { - logger.info("Command output:\n" + outputMessage); + log.info("Command output:\n" + outputMessage); } } @@ -252,7 +230,7 @@ public ProcessExecutorResult runCommandWithOutputHandling( String errorMessage = String.join("\n", errorLines); messages += errorMessage; if (!liveUpdates) { - logger.warn("Command error output:\n" + errorMessage); + log.warn("Command error output:\n" + errorMessage); } if (exitCode != 0) { throw new IOException( @@ -276,6 +254,17 @@ public ProcessExecutorResult runCommandWithOutputHandling( return new ProcessExecutorResult(exitCode, messages); } + public enum Processes { + LIBRE_OFFICE, + PDFTOHTML, + PYTHON_OPENCV, + WEASYPRINT, + INSTALL_APP, + CALIBRE, + TESSERACT, + QPDF + } + public class ProcessExecutorResult { int rc; String messages; diff --git a/src/main/java/stirling/software/SPDF/utils/misc/CustomColorReplaceStrategy.java b/src/main/java/stirling/software/SPDF/utils/misc/CustomColorReplaceStrategy.java index de548881e2..e2a5166fab 100644 --- a/src/main/java/stirling/software/SPDF/utils/misc/CustomColorReplaceStrategy.java +++ b/src/main/java/stirling/software/SPDF/utils/misc/CustomColorReplaceStrategy.java @@ -14,7 +14,10 @@ import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.PDPageTree; -import org.apache.pdfbox.pdmodel.font.*; +import org.apache.pdfbox.pdmodel.font.PDFont; +import org.apache.pdfbox.pdmodel.font.PDFontFactory; +import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.pdfbox.pdmodel.font.Standard14Fonts; import org.apache.pdfbox.text.TextPosition; import org.springframework.core.io.InputStreamResource; import org.springframework.web.multipart.MultipartFile; diff --git a/src/main/java/stirling/software/SPDF/utils/propertyeditor/StringToArrayListPropertyEditor.java b/src/main/java/stirling/software/SPDF/utils/propertyeditor/StringToArrayListPropertyEditor.java new file mode 100644 index 0000000000..cbcb617210 --- /dev/null +++ b/src/main/java/stirling/software/SPDF/utils/propertyeditor/StringToArrayListPropertyEditor.java @@ -0,0 +1,37 @@ +package stirling.software.SPDF.utils.propertyeditor; + +import java.beans.PropertyEditorSupport; +import java.util.ArrayList; +import java.util.List; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.extern.slf4j.Slf4j; +import stirling.software.SPDF.model.api.security.RedactionArea; + +@Slf4j +public class StringToArrayListPropertyEditor extends PropertyEditorSupport { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public void setAsText(String text) throws IllegalArgumentException { + if (text == null || text.trim().isEmpty()) { + setValue(new ArrayList<>()); + return; + } + try { + objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); + TypeReference> typeRef = new TypeReference>() { + }; + List list = objectMapper.readValue(text, typeRef); + setValue(list); + } catch (Exception e) { + log.error("Exception while converting {}", e); + throw new IllegalArgumentException( + "Failed to convert java.lang.String to java.util.List"); + } + } +} diff --git a/src/main/java/stirling/software/SPDF/utils/propertyeditor/StringToMapPropertyEditor.java b/src/main/java/stirling/software/SPDF/utils/propertyeditor/StringToMapPropertyEditor.java new file mode 100644 index 0000000000..6c3135e8cf --- /dev/null +++ b/src/main/java/stirling/software/SPDF/utils/propertyeditor/StringToMapPropertyEditor.java @@ -0,0 +1,26 @@ +package stirling.software.SPDF.utils.propertyeditor; + +import java.beans.PropertyEditorSupport; +import java.util.HashMap; +import java.util.Map; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class StringToMapPropertyEditor extends PropertyEditorSupport { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public void setAsText(String text) throws IllegalArgumentException { + try { + TypeReference> typeRef = + new TypeReference>() {}; + Map map = objectMapper.readValue(text, typeRef); + setValue(map); + } catch (Exception e) { + throw new IllegalArgumentException( + "Failed to convert java.lang.String to java.util.Map"); + } + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index fdfb603c1a..d76eadf1bf 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,53 +1,44 @@ multipart.enabled=true - logging.level.org.springframework=WARN logging.level.org.hibernate=WARN logging.level.org.eclipse.jetty=WARN +#logging.level.org.springframework.security.saml2=TRACE +#logging.level.org.springframework.security=DEBUG +#logging.level.org.opensaml=DEBUG +#logging.level.stirling.software.SPDF.config.security: DEBUG logging.level.com.zaxxer.hikari=WARN - spring.jpa.open-in-view=false - server.forward-headers-strategy=NATIVE - server.error.path=/error server.error.whitelabel.enabled=false server.error.include-stacktrace=always server.error.include-exception=true server.error.include-message=always - #logging.level.org.springframework.web=DEBUG #logging.level.org.springframework=DEBUG #logging.level.org.springframework.security=DEBUG - spring.servlet.multipart.max-file-size=2000MB spring.servlet.multipart.max-request-size=2000MB - server.servlet.session.tracking-modes=cookie server.servlet.context-path=${SYSTEM_ROOTURIPATH:/} - spring.devtools.restart.enabled=true spring.devtools.livereload.enabled=true +spring.devtools.restart.exclude=stirling.software.SPDF.config.security/** spring.thymeleaf.encoding=UTF-8 - spring.web.resources.mime-mappings.webmanifest=application/manifest+json - spring.mvc.async.request-timeout=${SYSTEM_CONNECTIONTIMEOUTMILLISECONDS:1200000} #spring.thymeleaf.prefix=file:/customFiles/templates/,classpath:/templates/ #spring.thymeleaf.cache=false - -spring.datasource.url=jdbc:h2:file:./configs/stirling-pdf-DB;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE +spring.datasource.url=jdbc:h2:file:./configs/stirling-pdf-DB-2.3.232;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.h2.console.enabled=false spring.jpa.hibernate.ddl-auto=update -server.servlet.session.timeout: 30m +server.servlet.session.timeout:30m # Change the default URL path for OpenAPI JSON springdoc.api-docs.path=/v1/api-docs - # Set the URL of the OpenAPI JSON for the Swagger UI springdoc.swagger-ui.url=/v1/api-docs - - posthog.api.key=phc_fiR65u5j6qmXTYL56MNrLZSWqLaDW74OrZH0Insd2xq posthog.host=https://eu.i.posthog.com diff --git a/src/main/resources/certdata.txt b/src/main/resources/certdata.txt new file mode 100644 index 0000000000..e0f60abcd6 --- /dev/null +++ b/src/main/resources/certdata.txt @@ -0,0 +1,25972 @@ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# +# certdata.txt +# +# This file contains the object definitions for the certs and other +# information "built into" NSS. +# +# Object definitions: +# +# Certificates +# +# -- Attribute -- -- type -- -- value -- +# CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +# CKA_TOKEN CK_BBOOL CK_TRUE +# CKA_PRIVATE CK_BBOOL CK_FALSE +# CKA_MODIFIABLE CK_BBOOL CK_FALSE +# CKA_LABEL UTF8 (varies) +# CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +# CKA_SUBJECT DER+base64 (varies) +# CKA_ID byte array (varies) +# CKA_ISSUER DER+base64 (varies) +# CKA_SERIAL_NUMBER DER+base64 (varies) +# CKA_VALUE DER+base64 (varies) +# CKA_NSS_EMAIL ASCII7 (unused here) +# CKA_NSS_SERVER_DISTRUST_AFTER DER+base64 (varies) +# CKA_NSS_EMAIL_DISTRUST_AFTER DER+base64 (varies) +# +# Trust +# +# -- Attribute -- -- type -- -- value -- +# CKA_CLASS CK_OBJECT_CLASS CKO_TRUST +# CKA_TOKEN CK_BBOOL CK_TRUE +# CKA_PRIVATE CK_BBOOL CK_FALSE +# CKA_MODIFIABLE CK_BBOOL CK_FALSE +# CKA_LABEL UTF8 (varies) +# CKA_ISSUER DER+base64 (varies) +# CKA_SERIAL_NUMBER DER+base64 (varies) +# CKA_CERT_HASH binary+base64 (varies) +# CKA_EXPIRES CK_DATE (not used here) +# CKA_TRUST_DIGITAL_SIGNATURE CK_TRUST (varies) +# CKA_TRUST_NON_REPUDIATION CK_TRUST (varies) +# CKA_TRUST_KEY_ENCIPHERMENT CK_TRUST (varies) +# CKA_TRUST_DATA_ENCIPHERMENT CK_TRUST (varies) +# CKA_TRUST_KEY_AGREEMENT CK_TRUST (varies) +# CKA_TRUST_KEY_CERT_SIGN CK_TRUST (varies) +# CKA_TRUST_CRL_SIGN CK_TRUST (varies) +# CKA_TRUST_SERVER_AUTH CK_TRUST (varies) +# CKA_TRUST_CLIENT_AUTH CK_TRUST (varies) +# CKA_TRUST_CODE_SIGNING CK_TRUST (varies) +# CKA_TRUST_EMAIL_PROTECTION CK_TRUST (varies) +# CKA_TRUST_IPSEC_END_SYSTEM CK_TRUST (varies) +# CKA_TRUST_IPSEC_TUNNEL CK_TRUST (varies) +# CKA_TRUST_IPSEC_USER CK_TRUST (varies) +# CKA_TRUST_TIME_STAMPING CK_TRUST (varies) +# CKA_TRUST_STEP_UP_APPROVED CK_BBOOL (varies) +# (other trust attributes can be defined) +# + +# +# The object to tell NSS that this is a root list and we don't +# have to go looking for others. +# +BEGINDATA +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_BUILTIN_ROOT_LIST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Mozilla Builtin Roots" + +# +# Certificate "GlobalSign Root CA" +# +# Issuer: CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE +# Serial Number:04:00:00:00:00:01:15:4b:5a:c3:94 +# Subject: CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Tue Sep 01 12:00:00 1998 +# Not Valid After : Fri Jan 28 12:00:00 2028 +# Fingerprint (SHA-256): EB:D4:10:40:E4:BB:3E:C7:42:C9:E3:81:D3:1E:F2:A4:1A:48:B6:68:5C:96:E7:CE:F3:C1:DF:6C:D4:33:1C:99 +# Fingerprint (SHA1): B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9C +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\127\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\020\060\016\006\003 +\125\004\013\023\007\122\157\157\164\040\103\101\061\033\060\031 +\006\003\125\004\003\023\022\107\154\157\142\141\154\123\151\147 +\156\040\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\127\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\020\060\016\006\003 +\125\004\013\023\007\122\157\157\164\040\103\101\061\033\060\031 +\006\003\125\004\003\023\022\107\154\157\142\141\154\123\151\147 +\156\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\013\004\000\000\000\000\001\025\113\132\303\224 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\165\060\202\002\135\240\003\002\001\002\002\013\004 +\000\000\000\000\001\025\113\132\303\224\060\015\006\011\052\206 +\110\206\367\015\001\001\005\005\000\060\127\061\013\060\011\006 +\003\125\004\006\023\002\102\105\061\031\060\027\006\003\125\004 +\012\023\020\107\154\157\142\141\154\123\151\147\156\040\156\166 +\055\163\141\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\033\060\031\006\003\125\004\003\023\022 +\107\154\157\142\141\154\123\151\147\156\040\122\157\157\164\040 +\103\101\060\036\027\015\071\070\060\071\060\061\061\062\060\060 +\060\060\132\027\015\062\070\060\061\062\070\061\062\060\060\060 +\060\132\060\127\061\013\060\011\006\003\125\004\006\023\002\102 +\105\061\031\060\027\006\003\125\004\012\023\020\107\154\157\142 +\141\154\123\151\147\156\040\156\166\055\163\141\061\020\060\016 +\006\003\125\004\013\023\007\122\157\157\164\040\103\101\061\033 +\060\031\006\003\125\004\003\023\022\107\154\157\142\141\154\123 +\151\147\156\040\122\157\157\164\040\103\101\060\202\001\042\060 +\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202 +\001\017\000\060\202\001\012\002\202\001\001\000\332\016\346\231 +\215\316\243\343\117\212\176\373\361\213\203\045\153\352\110\037 +\361\052\260\271\225\021\004\275\360\143\321\342\147\146\317\034 +\335\317\033\110\053\356\215\211\216\232\257\051\200\145\253\351 +\307\055\022\313\253\034\114\160\007\241\075\012\060\315\025\215 +\117\370\335\324\214\120\025\034\357\120\356\304\056\367\374\351 +\122\362\221\175\340\155\325\065\060\216\136\103\163\362\101\351 +\325\152\343\262\211\072\126\071\070\157\006\074\210\151\133\052 +\115\305\247\124\270\154\211\314\233\371\074\312\345\375\211\365 +\022\074\222\170\226\326\334\164\156\223\104\141\321\215\307\106 +\262\165\016\206\350\031\212\325\155\154\325\170\026\225\242\351 +\310\012\070\353\362\044\023\117\163\124\223\023\205\072\033\274 +\036\064\265\213\005\214\271\167\213\261\333\037\040\221\253\011 +\123\156\220\316\173\067\164\271\160\107\221\042\121\143\026\171 +\256\261\256\101\046\010\310\031\053\321\106\252\110\326\144\052 +\327\203\064\377\054\052\301\154\031\103\112\007\205\347\323\174 +\366\041\150\357\352\362\122\237\177\223\220\317\002\003\001\000 +\001\243\102\060\100\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004 +\024\140\173\146\032\105\015\227\312\211\120\057\175\004\315\064 +\250\377\374\375\113\060\015\006\011\052\206\110\206\367\015\001 +\001\005\005\000\003\202\001\001\000\326\163\347\174\117\166\320 +\215\277\354\272\242\276\064\305\050\062\265\174\374\154\234\054 +\053\275\011\236\123\277\153\136\252\021\110\266\345\010\243\263 +\312\075\141\115\323\106\011\263\076\303\240\343\143\125\033\362 +\272\357\255\071\341\103\271\070\243\346\057\212\046\073\357\240 +\120\126\371\306\012\375\070\315\304\013\160\121\224\227\230\004 +\337\303\137\224\325\025\311\024\101\234\304\135\165\144\025\015 +\377\125\060\354\206\217\377\015\357\054\271\143\106\366\252\374 +\337\274\151\375\056\022\110\144\232\340\225\360\246\357\051\217 +\001\261\025\265\014\035\245\376\151\054\151\044\170\036\263\247 +\034\161\142\356\312\310\227\254\027\135\212\302\370\107\206\156 +\052\304\126\061\225\320\147\211\205\053\371\154\246\135\106\235 +\014\252\202\344\231\121\335\160\267\333\126\075\141\344\152\341 +\134\326\366\376\075\336\101\314\007\256\143\122\277\123\123\364 +\053\351\307\375\266\367\202\137\205\322\101\030\333\201\263\004 +\034\305\037\244\200\157\025\040\311\336\014\210\012\035\326\146 +\125\342\374\110\311\051\046\151\340 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GlobalSign Root CA" +# Issuer: CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE +# Serial Number:04:00:00:00:00:01:15:4b:5a:c3:94 +# Subject: CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Tue Sep 01 12:00:00 1998 +# Not Valid After : Fri Jan 28 12:00:00 2028 +# Fingerprint (SHA-256): EB:D4:10:40:E4:BB:3E:C7:42:C9:E3:81:D3:1E:F2:A4:1A:48:B6:68:5C:96:E7:CE:F3:C1:DF:6C:D4:33:1C:99 +# Fingerprint (SHA1): B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9C +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\261\274\226\213\324\364\235\142\052\250\232\201\362\025\001\122 +\244\035\202\234 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\076\105\122\025\011\121\222\341\267\135\067\237\261\207\051\212 +END +CKA_ISSUER MULTILINE_OCTAL +\060\127\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\020\060\016\006\003 +\125\004\013\023\007\122\157\157\164\040\103\101\061\033\060\031 +\006\003\125\004\003\023\022\107\154\157\142\141\154\123\151\147 +\156\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\013\004\000\000\000\000\001\025\113\132\303\224 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Entrust.net Premium 2048 Secure Server CA" +# +# Issuer: CN=Entrust.net Certification Authority (2048),OU=(c) 1999 Entrust.net Limited,OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.),O=Entrust.net +# Serial Number: 946069240 (0x3863def8) +# Subject: CN=Entrust.net Certification Authority (2048),OU=(c) 1999 Entrust.net Limited,OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.),O=Entrust.net +# Not Valid Before: Fri Dec 24 17:50:51 1999 +# Not Valid After : Tue Jul 24 14:15:12 2029 +# Fingerprint (SHA-256): 6D:C4:71:72:E0:1C:BC:B0:BF:62:58:0D:89:5F:E2:B8:AC:9A:D4:F8:73:80:1E:0C:10:B9:C8:37:D2:1E:B1:77 +# Fingerprint (SHA1): 50:30:06:09:1D:97:D4:F5:AE:39:F7:CB:E7:92:7D:7D:65:2D:34:31 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust.net Premium 2048 Secure Server CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\264\061\024\060\022\006\003\125\004\012\023\013\105\156 +\164\162\165\163\164\056\156\145\164\061\100\060\076\006\003\125 +\004\013\024\067\167\167\167\056\145\156\164\162\165\163\164\056 +\156\145\164\057\103\120\123\137\062\060\064\070\040\151\156\143 +\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151 +\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006 +\003\125\004\013\023\034\050\143\051\040\061\071\071\071\040\105 +\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164 +\145\144\061\063\060\061\006\003\125\004\003\023\052\105\156\164 +\162\165\163\164\056\156\145\164\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +\040\050\062\060\064\070\051 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\264\061\024\060\022\006\003\125\004\012\023\013\105\156 +\164\162\165\163\164\056\156\145\164\061\100\060\076\006\003\125 +\004\013\024\067\167\167\167\056\145\156\164\162\165\163\164\056 +\156\145\164\057\103\120\123\137\062\060\064\070\040\151\156\143 +\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151 +\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006 +\003\125\004\013\023\034\050\143\051\040\061\071\071\071\040\105 +\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164 +\145\144\061\063\060\061\006\003\125\004\003\023\052\105\156\164 +\162\165\163\164\056\156\145\164\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +\040\050\062\060\064\070\051 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\070\143\336\370 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\052\060\202\003\022\240\003\002\001\002\002\004\070 +\143\336\370\060\015\006\011\052\206\110\206\367\015\001\001\005 +\005\000\060\201\264\061\024\060\022\006\003\125\004\012\023\013 +\105\156\164\162\165\163\164\056\156\145\164\061\100\060\076\006 +\003\125\004\013\024\067\167\167\167\056\145\156\164\162\165\163 +\164\056\156\145\164\057\103\120\123\137\062\060\064\070\040\151 +\156\143\157\162\160\056\040\142\171\040\162\145\146\056\040\050 +\154\151\155\151\164\163\040\154\151\141\142\056\051\061\045\060 +\043\006\003\125\004\013\023\034\050\143\051\040\061\071\071\071 +\040\105\156\164\162\165\163\164\056\156\145\164\040\114\151\155 +\151\164\145\144\061\063\060\061\006\003\125\004\003\023\052\105 +\156\164\162\165\163\164\056\156\145\164\040\103\145\162\164\151 +\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151 +\164\171\040\050\062\060\064\070\051\060\036\027\015\071\071\061 +\062\062\064\061\067\065\060\065\061\132\027\015\062\071\060\067 +\062\064\061\064\061\065\061\062\132\060\201\264\061\024\060\022 +\006\003\125\004\012\023\013\105\156\164\162\165\163\164\056\156 +\145\164\061\100\060\076\006\003\125\004\013\024\067\167\167\167 +\056\145\156\164\162\165\163\164\056\156\145\164\057\103\120\123 +\137\062\060\064\070\040\151\156\143\157\162\160\056\040\142\171 +\040\162\145\146\056\040\050\154\151\155\151\164\163\040\154\151 +\141\142\056\051\061\045\060\043\006\003\125\004\013\023\034\050 +\143\051\040\061\071\071\071\040\105\156\164\162\165\163\164\056 +\156\145\164\040\114\151\155\151\164\145\144\061\063\060\061\006 +\003\125\004\003\023\052\105\156\164\162\165\163\164\056\156\145 +\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040 +\101\165\164\150\157\162\151\164\171\040\050\062\060\064\070\051 +\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001 +\000\255\115\113\251\022\206\262\352\243\040\007\025\026\144\052 +\053\113\321\277\013\112\115\216\355\200\166\245\147\267\170\100 +\300\163\102\310\150\300\333\123\053\335\136\270\166\230\065\223 +\213\032\235\174\023\072\016\037\133\267\036\317\345\044\024\036 +\261\201\251\215\175\270\314\153\113\003\361\002\014\334\253\245 +\100\044\000\177\164\224\241\235\010\051\263\210\013\365\207\167 +\235\125\315\344\303\176\327\152\144\253\205\024\206\225\133\227 +\062\120\157\075\310\272\146\014\343\374\275\270\111\301\166\211 +\111\031\375\300\250\275\211\243\147\057\306\237\274\161\031\140 +\270\055\351\054\311\220\166\146\173\224\342\257\170\326\145\123 +\135\074\326\234\262\317\051\003\371\057\244\120\262\324\110\316 +\005\062\125\212\375\262\144\114\016\344\230\007\165\333\177\337 +\271\010\125\140\205\060\051\371\173\110\244\151\206\343\065\077 +\036\206\135\172\172\025\275\357\000\216\025\042\124\027\000\220 +\046\223\274\016\111\150\221\277\370\107\323\235\225\102\301\016 +\115\337\157\046\317\303\030\041\142\146\103\160\326\325\300\007 +\341\002\003\001\000\001\243\102\060\100\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\006\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125 +\035\016\004\026\004\024\125\344\201\321\021\200\276\330\211\271 +\010\243\061\371\241\044\011\026\271\160\060\015\006\011\052\206 +\110\206\367\015\001\001\005\005\000\003\202\001\001\000\073\233 +\217\126\233\060\347\123\231\174\172\171\247\115\227\327\031\225 +\220\373\006\037\312\063\174\106\143\217\226\146\044\372\100\033 +\041\047\312\346\162\163\362\117\376\061\231\375\310\014\114\150 +\123\306\200\202\023\230\372\266\255\332\135\075\361\316\156\366 +\025\021\224\202\014\356\077\225\257\021\253\017\327\057\336\037 +\003\217\127\054\036\311\273\232\032\104\225\353\030\117\246\037 +\315\175\127\020\057\233\004\011\132\204\265\156\330\035\072\341 +\326\236\321\154\171\136\171\034\024\305\343\320\114\223\073\145 +\074\355\337\075\276\246\345\225\032\303\265\031\303\275\136\133 +\273\377\043\357\150\031\313\022\223\047\134\003\055\157\060\320 +\036\266\032\254\336\132\367\321\252\250\047\246\376\171\201\304 +\171\231\063\127\272\022\260\251\340\102\154\223\312\126\336\376 +\155\204\013\010\213\176\215\352\327\230\041\306\363\347\074\171 +\057\136\234\321\114\025\215\341\354\042\067\314\232\103\013\227 +\334\200\220\215\263\147\233\157\110\010\025\126\317\277\361\053 +\174\136\232\166\351\131\220\305\174\203\065\021\145\121 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +# For Server Distrust After: Sat Nov 30 23:59:59 2024 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\061\061\063\060\062\063\065\071\065\071\132 +END +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Entrust.net Premium 2048 Secure Server CA" +# Issuer: CN=Entrust.net Certification Authority (2048),OU=(c) 1999 Entrust.net Limited,OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.),O=Entrust.net +# Serial Number: 946069240 (0x3863def8) +# Subject: CN=Entrust.net Certification Authority (2048),OU=(c) 1999 Entrust.net Limited,OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.),O=Entrust.net +# Not Valid Before: Fri Dec 24 17:50:51 1999 +# Not Valid After : Tue Jul 24 14:15:12 2029 +# Fingerprint (SHA-256): 6D:C4:71:72:E0:1C:BC:B0:BF:62:58:0D:89:5F:E2:B8:AC:9A:D4:F8:73:80:1E:0C:10:B9:C8:37:D2:1E:B1:77 +# Fingerprint (SHA1): 50:30:06:09:1D:97:D4:F5:AE:39:F7:CB:E7:92:7D:7D:65:2D:34:31 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust.net Premium 2048 Secure Server CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\120\060\006\011\035\227\324\365\256\071\367\313\347\222\175\175 +\145\055\064\061 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\356\051\061\274\062\176\232\346\350\265\367\121\264\064\161\220 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\264\061\024\060\022\006\003\125\004\012\023\013\105\156 +\164\162\165\163\164\056\156\145\164\061\100\060\076\006\003\125 +\004\013\024\067\167\167\167\056\145\156\164\162\165\163\164\056 +\156\145\164\057\103\120\123\137\062\060\064\070\040\151\156\143 +\157\162\160\056\040\142\171\040\162\145\146\056\040\050\154\151 +\155\151\164\163\040\154\151\141\142\056\051\061\045\060\043\006 +\003\125\004\013\023\034\050\143\051\040\061\071\071\071\040\105 +\156\164\162\165\163\164\056\156\145\164\040\114\151\155\151\164 +\145\144\061\063\060\061\006\003\125\004\003\023\052\105\156\164 +\162\165\163\164\056\156\145\164\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +\040\050\062\060\064\070\051 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\070\143\336\370 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Baltimore CyberTrust Root" +# +# Issuer: CN=Baltimore CyberTrust Root,OU=CyberTrust,O=Baltimore,C=IE +# Serial Number: 33554617 (0x20000b9) +# Subject: CN=Baltimore CyberTrust Root,OU=CyberTrust,O=Baltimore,C=IE +# Not Valid Before: Fri May 12 18:46:00 2000 +# Not Valid After : Mon May 12 23:59:00 2025 +# Fingerprint (SHA-256): 16:AF:57:A9:F6:76:B0:AB:12:60:95:AA:5E:BA:DE:F2:2A:B3:11:19:D6:44:AC:95:CD:4B:93:DB:F3:F2:6A:EB +# Fingerprint (SHA1): D4:DE:20:D0:5E:66:FC:53:FE:1A:50:88:2C:78:DB:28:52:CA:E4:74 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Baltimore CyberTrust Root" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\111\105\061 +\022\060\020\006\003\125\004\012\023\011\102\141\154\164\151\155 +\157\162\145\061\023\060\021\006\003\125\004\013\023\012\103\171 +\142\145\162\124\162\165\163\164\061\042\060\040\006\003\125\004 +\003\023\031\102\141\154\164\151\155\157\162\145\040\103\171\142 +\145\162\124\162\165\163\164\040\122\157\157\164 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\111\105\061 +\022\060\020\006\003\125\004\012\023\011\102\141\154\164\151\155 +\157\162\145\061\023\060\021\006\003\125\004\013\023\012\103\171 +\142\145\162\124\162\165\163\164\061\042\060\040\006\003\125\004 +\003\023\031\102\141\154\164\151\155\157\162\145\040\103\171\142 +\145\162\124\162\165\163\164\040\122\157\157\164 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\002\000\000\271 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\167\060\202\002\137\240\003\002\001\002\002\004\002 +\000\000\271\060\015\006\011\052\206\110\206\367\015\001\001\005 +\005\000\060\132\061\013\060\011\006\003\125\004\006\023\002\111 +\105\061\022\060\020\006\003\125\004\012\023\011\102\141\154\164 +\151\155\157\162\145\061\023\060\021\006\003\125\004\013\023\012 +\103\171\142\145\162\124\162\165\163\164\061\042\060\040\006\003 +\125\004\003\023\031\102\141\154\164\151\155\157\162\145\040\103 +\171\142\145\162\124\162\165\163\164\040\122\157\157\164\060\036 +\027\015\060\060\060\065\061\062\061\070\064\066\060\060\132\027 +\015\062\065\060\065\061\062\062\063\065\071\060\060\132\060\132 +\061\013\060\011\006\003\125\004\006\023\002\111\105\061\022\060 +\020\006\003\125\004\012\023\011\102\141\154\164\151\155\157\162 +\145\061\023\060\021\006\003\125\004\013\023\012\103\171\142\145 +\162\124\162\165\163\164\061\042\060\040\006\003\125\004\003\023 +\031\102\141\154\164\151\155\157\162\145\040\103\171\142\145\162 +\124\162\165\163\164\040\122\157\157\164\060\202\001\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001 +\017\000\060\202\001\012\002\202\001\001\000\243\004\273\042\253 +\230\075\127\350\046\162\232\265\171\324\051\342\341\350\225\200 +\261\260\343\133\216\053\051\232\144\337\241\135\355\260\011\005 +\155\333\050\056\316\142\242\142\376\264\210\332\022\353\070\353 +\041\235\300\101\053\001\122\173\210\167\323\034\217\307\272\271 +\210\265\152\011\347\163\350\021\100\247\321\314\312\142\215\055 +\345\217\013\246\120\322\250\120\303\050\352\365\253\045\207\212 +\232\226\034\251\147\270\077\014\325\367\371\122\023\057\302\033 +\325\160\160\360\217\300\022\312\006\313\232\341\331\312\063\172 +\167\326\370\354\271\361\150\104\102\110\023\322\300\302\244\256 +\136\140\376\266\246\005\374\264\335\007\131\002\324\131\030\230 +\143\365\245\143\340\220\014\175\135\262\006\172\363\205\352\353 +\324\003\256\136\204\076\137\377\025\355\151\274\371\071\066\162 +\165\317\167\122\115\363\311\220\054\271\075\345\311\043\123\077 +\037\044\230\041\134\007\231\051\275\306\072\354\347\156\206\072 +\153\227\164\143\063\275\150\030\061\360\170\215\166\277\374\236 +\216\135\052\206\247\115\220\334\047\032\071\002\003\001\000\001 +\243\105\060\103\060\035\006\003\125\035\016\004\026\004\024\345 +\235\131\060\202\107\130\314\254\372\010\124\066\206\173\072\265 +\004\115\360\060\022\006\003\125\035\023\001\001\377\004\010\060 +\006\001\001\377\002\001\003\060\016\006\003\125\035\017\001\001 +\377\004\004\003\002\001\006\060\015\006\011\052\206\110\206\367 +\015\001\001\005\005\000\003\202\001\001\000\205\014\135\216\344 +\157\121\150\102\005\240\335\273\117\047\045\204\003\275\367\144 +\375\055\327\060\343\244\020\027\353\332\051\051\266\171\077\166 +\366\031\023\043\270\020\012\371\130\244\324\141\160\275\004\141 +\152\022\212\027\325\012\275\305\274\060\174\326\351\014\045\215 +\206\100\117\354\314\243\176\070\306\067\021\117\355\335\150\061 +\216\114\322\263\001\164\356\276\165\136\007\110\032\177\160\377 +\026\134\204\300\171\205\270\005\375\177\276\145\021\243\017\300 +\002\264\370\122\067\071\004\325\251\061\172\030\277\240\052\364 +\022\231\367\243\105\202\343\074\136\365\235\236\265\310\236\174 +\056\310\244\236\116\010\024\113\155\375\160\155\153\032\143\275 +\144\346\037\267\316\360\362\237\056\273\033\267\362\120\210\163 +\222\302\342\343\026\215\232\062\002\253\216\030\335\351\020\021 +\356\176\065\253\220\257\076\060\224\172\320\063\075\247\145\017 +\365\374\216\236\142\317\107\104\054\001\135\273\035\265\062\322 +\107\322\070\056\320\376\201\334\062\152\036\265\356\074\325\374 +\347\201\035\031\303\044\102\352\143\071\251 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Baltimore CyberTrust Root" +# Issuer: CN=Baltimore CyberTrust Root,OU=CyberTrust,O=Baltimore,C=IE +# Serial Number: 33554617 (0x20000b9) +# Subject: CN=Baltimore CyberTrust Root,OU=CyberTrust,O=Baltimore,C=IE +# Not Valid Before: Fri May 12 18:46:00 2000 +# Not Valid After : Mon May 12 23:59:00 2025 +# Fingerprint (SHA-256): 16:AF:57:A9:F6:76:B0:AB:12:60:95:AA:5E:BA:DE:F2:2A:B3:11:19:D6:44:AC:95:CD:4B:93:DB:F3:F2:6A:EB +# Fingerprint (SHA1): D4:DE:20:D0:5E:66:FC:53:FE:1A:50:88:2C:78:DB:28:52:CA:E4:74 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Baltimore CyberTrust Root" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\324\336\040\320\136\146\374\123\376\032\120\210\054\170\333\050 +\122\312\344\164 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\254\266\224\245\234\027\340\327\221\122\233\261\227\006\246\344 +END +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\111\105\061 +\022\060\020\006\003\125\004\012\023\011\102\141\154\164\151\155 +\157\162\145\061\023\060\021\006\003\125\004\013\023\012\103\171 +\142\145\162\124\162\165\163\164\061\042\060\040\006\003\125\004 +\003\023\031\102\141\154\164\151\155\157\162\145\040\103\171\142 +\145\162\124\162\165\163\164\040\122\157\157\164 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\002\000\000\271 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Entrust Root Certification Authority" +# +# Issuer: CN=Entrust Root Certification Authority,OU="(c) 2006 Entrust, Inc.",OU=www.entrust.net/CPS is incorporated by reference,O="Entrust, Inc.",C=US +# Serial Number: 1164660820 (0x456b5054) +# Subject: CN=Entrust Root Certification Authority,OU="(c) 2006 Entrust, Inc.",OU=www.entrust.net/CPS is incorporated by reference,O="Entrust, Inc.",C=US +# Not Valid Before: Mon Nov 27 20:23:42 2006 +# Not Valid After : Fri Nov 27 20:53:42 2026 +# Fingerprint (SHA-256): 73:C1:76:43:4F:1B:C6:D5:AD:F4:5B:0E:76:E7:27:28:7C:8D:E5:76:16:C1:E6:E6:14:1A:2B:2C:BC:7D:8E:4C +# Fingerprint (SHA1): B3:1E:B1:B7:40:E3:6C:84:02:DA:DC:37:D4:4D:F5:D4:67:49:52:F9 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust Root Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\260\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\071\060\067\006\003\125\004 +\013\023\060\167\167\167\056\145\156\164\162\165\163\164\056\156 +\145\164\057\103\120\123\040\151\163\040\151\156\143\157\162\160 +\157\162\141\164\145\144\040\142\171\040\162\145\146\145\162\145 +\156\143\145\061\037\060\035\006\003\125\004\013\023\026\050\143 +\051\040\062\060\060\066\040\105\156\164\162\165\163\164\054\040 +\111\156\143\056\061\055\060\053\006\003\125\004\003\023\044\105 +\156\164\162\165\163\164\040\122\157\157\164\040\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162 +\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\260\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\071\060\067\006\003\125\004 +\013\023\060\167\167\167\056\145\156\164\162\165\163\164\056\156 +\145\164\057\103\120\123\040\151\163\040\151\156\143\157\162\160 +\157\162\141\164\145\144\040\142\171\040\162\145\146\145\162\145 +\156\143\145\061\037\060\035\006\003\125\004\013\023\026\050\143 +\051\040\062\060\060\066\040\105\156\164\162\165\163\164\054\040 +\111\156\143\056\061\055\060\053\006\003\125\004\003\023\044\105 +\156\164\162\165\163\164\040\122\157\157\164\040\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162 +\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\105\153\120\124 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\221\060\202\003\171\240\003\002\001\002\002\004\105 +\153\120\124\060\015\006\011\052\206\110\206\367\015\001\001\005 +\005\000\060\201\260\061\013\060\011\006\003\125\004\006\023\002 +\125\123\061\026\060\024\006\003\125\004\012\023\015\105\156\164 +\162\165\163\164\054\040\111\156\143\056\061\071\060\067\006\003 +\125\004\013\023\060\167\167\167\056\145\156\164\162\165\163\164 +\056\156\145\164\057\103\120\123\040\151\163\040\151\156\143\157 +\162\160\157\162\141\164\145\144\040\142\171\040\162\145\146\145 +\162\145\156\143\145\061\037\060\035\006\003\125\004\013\023\026 +\050\143\051\040\062\060\060\066\040\105\156\164\162\165\163\164 +\054\040\111\156\143\056\061\055\060\053\006\003\125\004\003\023 +\044\105\156\164\162\165\163\164\040\122\157\157\164\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150 +\157\162\151\164\171\060\036\027\015\060\066\061\061\062\067\062 +\060\062\063\064\062\132\027\015\062\066\061\061\062\067\062\060 +\065\063\064\062\132\060\201\260\061\013\060\011\006\003\125\004 +\006\023\002\125\123\061\026\060\024\006\003\125\004\012\023\015 +\105\156\164\162\165\163\164\054\040\111\156\143\056\061\071\060 +\067\006\003\125\004\013\023\060\167\167\167\056\145\156\164\162 +\165\163\164\056\156\145\164\057\103\120\123\040\151\163\040\151 +\156\143\157\162\160\157\162\141\164\145\144\040\142\171\040\162 +\145\146\145\162\145\156\143\145\061\037\060\035\006\003\125\004 +\013\023\026\050\143\051\040\062\060\060\066\040\105\156\164\162 +\165\163\164\054\040\111\156\143\056\061\055\060\053\006\003\125 +\004\003\023\044\105\156\164\162\165\163\164\040\122\157\157\164 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101 +\165\164\150\157\162\151\164\171\060\202\001\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000 +\060\202\001\012\002\202\001\001\000\266\225\266\103\102\372\306 +\155\052\157\110\337\224\114\071\127\005\356\303\171\021\101\150 +\066\355\354\376\232\001\217\241\070\050\374\367\020\106\146\056 +\115\036\032\261\032\116\306\321\300\225\210\260\311\377\061\213 +\063\003\333\267\203\173\076\040\204\136\355\262\126\050\247\370 +\340\271\100\161\067\305\313\107\016\227\052\150\300\042\225\142 +\025\333\107\331\365\320\053\377\202\113\311\255\076\336\114\333 +\220\200\120\077\011\212\204\000\354\060\012\075\030\315\373\375 +\052\131\232\043\225\027\054\105\236\037\156\103\171\155\014\134 +\230\376\110\247\305\043\107\134\136\375\156\347\036\264\366\150 +\105\321\206\203\133\242\212\215\261\343\051\200\376\045\161\210 +\255\276\274\217\254\122\226\113\252\121\215\344\023\061\031\350 +\116\115\237\333\254\263\152\325\274\071\124\161\312\172\172\177 +\220\335\175\035\200\331\201\273\131\046\302\021\376\346\223\342 +\367\200\344\145\373\064\067\016\051\200\160\115\257\070\206\056 +\236\177\127\257\236\027\256\353\034\313\050\041\137\266\034\330 +\347\242\004\042\371\323\332\330\313\002\003\001\000\001\243\201 +\260\060\201\255\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\053\006\003\125\035\020\004\044\060\042 +\200\017\062\060\060\066\061\061\062\067\062\060\062\063\064\062 +\132\201\017\062\060\062\066\061\061\062\067\062\060\065\063\064 +\062\132\060\037\006\003\125\035\043\004\030\060\026\200\024\150 +\220\344\147\244\246\123\200\307\206\146\244\361\367\113\103\373 +\204\275\155\060\035\006\003\125\035\016\004\026\004\024\150\220 +\344\147\244\246\123\200\307\206\146\244\361\367\113\103\373\204 +\275\155\060\035\006\011\052\206\110\206\366\175\007\101\000\004 +\020\060\016\033\010\126\067\056\061\072\064\056\060\003\002\004 +\220\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000 +\003\202\001\001\000\223\324\060\260\327\003\040\052\320\371\143 +\350\221\014\005\040\251\137\031\312\173\162\116\324\261\333\320 +\226\373\124\132\031\054\014\010\367\262\274\205\250\235\177\155 +\073\122\263\052\333\347\324\204\214\143\366\017\313\046\001\221 +\120\154\364\137\024\342\223\164\300\023\236\060\072\120\343\264 +\140\305\034\360\042\104\215\161\107\254\310\032\311\351\233\232 +\000\140\023\377\160\176\137\021\115\111\033\263\025\122\173\311 +\124\332\277\235\225\257\153\232\330\236\351\361\344\103\215\342 +\021\104\072\277\257\275\203\102\163\122\213\252\273\247\051\317 +\365\144\034\012\115\321\274\252\254\237\052\320\377\177\177\332 +\175\352\261\355\060\045\301\204\332\064\322\133\170\203\126\354 +\234\066\303\046\342\021\366\147\111\035\222\253\214\373\353\377 +\172\356\205\112\247\120\200\360\247\134\112\224\056\137\005\231 +\074\122\101\340\315\264\143\317\001\103\272\234\203\334\217\140 +\073\363\132\264\264\173\256\332\013\220\070\165\357\201\035\146 +\322\367\127\160\066\263\277\374\050\257\161\045\205\133\023\376 +\036\177\132\264\074 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +# For Server Distrust After: Sat Nov 30 23:59:59 2024 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\061\061\063\060\062\063\065\071\065\071\132 +END +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Entrust Root Certification Authority" +# Issuer: CN=Entrust Root Certification Authority,OU="(c) 2006 Entrust, Inc.",OU=www.entrust.net/CPS is incorporated by reference,O="Entrust, Inc.",C=US +# Serial Number: 1164660820 (0x456b5054) +# Subject: CN=Entrust Root Certification Authority,OU="(c) 2006 Entrust, Inc.",OU=www.entrust.net/CPS is incorporated by reference,O="Entrust, Inc.",C=US +# Not Valid Before: Mon Nov 27 20:23:42 2006 +# Not Valid After : Fri Nov 27 20:53:42 2026 +# Fingerprint (SHA-256): 73:C1:76:43:4F:1B:C6:D5:AD:F4:5B:0E:76:E7:27:28:7C:8D:E5:76:16:C1:E6:E6:14:1A:2B:2C:BC:7D:8E:4C +# Fingerprint (SHA1): B3:1E:B1:B7:40:E3:6C:84:02:DA:DC:37:D4:4D:F5:D4:67:49:52:F9 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust Root Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\263\036\261\267\100\343\154\204\002\332\334\067\324\115\365\324 +\147\111\122\371 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\326\245\303\355\135\335\076\000\301\075\207\222\037\035\077\344 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\260\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\071\060\067\006\003\125\004 +\013\023\060\167\167\167\056\145\156\164\162\165\163\164\056\156 +\145\164\057\103\120\123\040\151\163\040\151\156\143\157\162\160 +\157\162\141\164\145\144\040\142\171\040\162\145\146\145\162\145 +\156\143\145\061\037\060\035\006\003\125\004\013\023\026\050\143 +\051\040\062\060\060\066\040\105\156\164\162\165\163\164\054\040 +\111\156\143\056\061\055\060\053\006\003\125\004\003\023\044\105 +\156\164\162\165\163\164\040\122\157\157\164\040\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162 +\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\105\153\120\124 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certum Root CA" +# +# Issuer: CN=Certum CA,O=Unizeto Sp. z o.o.,C=PL +# Serial Number: 65568 (0x10020) +# Subject: CN=Certum CA,O=Unizeto Sp. z o.o.,C=PL +# Not Valid Before: Tue Jun 11 10:46:39 2002 +# Not Valid After : Fri Jun 11 10:46:39 2027 +# Fingerprint (SHA-256): D8:E0:FE:BC:1D:B2:E3:8D:00:94:0F:37:D2:7D:41:34:4D:99:3E:73:4B:99:D5:65:6D:97:78:D4:D8:14:36:24 +# Fingerprint (SHA1): 62:52:DC:40:F7:11:43:A2:2F:DE:9E:F7:34:8E:06:42:51:B1:81:18 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145\164 +\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060\020 +\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145\164 +\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060\020 +\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\001\000\040 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\014\060\202\001\364\240\003\002\001\002\002\003\001 +\000\040\060\015\006\011\052\206\110\206\367\015\001\001\005\005 +\000\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114 +\061\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145 +\164\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060 +\020\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103 +\101\060\036\027\015\060\062\060\066\061\061\061\060\064\066\063 +\071\132\027\015\062\067\060\066\061\061\061\060\064\066\063\071 +\132\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114 +\061\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145 +\164\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060 +\020\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103 +\101\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001 +\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001 +\001\000\316\261\301\056\323\117\174\315\045\316\030\076\117\304 +\214\157\200\152\163\310\133\121\370\233\322\334\273\000\134\261 +\240\374\165\003\356\201\360\210\356\043\122\351\346\025\063\215 +\254\055\011\305\166\371\053\071\200\211\344\227\113\220\245\250 +\170\370\163\103\173\244\141\260\330\130\314\341\154\146\176\234 +\363\011\136\125\143\204\325\250\357\363\261\056\060\150\263\304 +\074\330\254\156\215\231\132\220\116\064\334\066\232\217\201\210 +\120\267\155\226\102\011\363\327\225\203\015\101\113\260\152\153 +\370\374\017\176\142\237\147\304\355\046\137\020\046\017\010\117 +\360\244\127\050\316\217\270\355\105\366\156\356\045\135\252\156 +\071\276\344\223\057\331\107\240\162\353\372\246\133\257\312\123 +\077\342\016\306\226\126\021\156\367\351\146\251\046\330\177\225 +\123\355\012\205\210\272\117\051\245\102\214\136\266\374\205\040 +\000\252\150\013\241\032\205\001\234\304\106\143\202\210\266\042 +\261\356\376\252\106\131\176\317\065\054\325\266\332\135\367\110 +\063\024\124\266\353\331\157\316\315\210\326\253\033\332\226\073 +\035\131\002\003\001\000\001\243\023\060\021\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\015\006\011 +\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000 +\270\215\316\357\347\024\272\317\356\260\104\222\154\264\071\076 +\242\204\156\255\270\041\167\322\324\167\202\207\346\040\101\201 +\356\342\370\021\267\143\321\027\067\276\031\166\044\034\004\032 +\114\353\075\252\147\157\055\324\315\376\145\061\160\305\033\246 +\002\012\272\140\173\155\130\302\232\111\376\143\062\013\153\343 +\072\300\254\253\073\260\350\323\011\121\214\020\203\306\064\340 +\305\053\340\032\266\140\024\047\154\062\167\214\274\262\162\230 +\317\315\314\077\271\310\044\102\024\326\127\374\346\046\103\251 +\035\345\200\220\316\003\124\050\076\367\077\323\370\115\355\152 +\012\072\223\023\233\073\024\043\023\143\234\077\321\207\047\171 +\345\114\121\343\001\255\205\135\032\073\261\325\163\020\244\323 +\362\274\156\144\365\132\126\220\250\307\016\114\164\017\056\161 +\073\367\310\107\364\151\157\025\362\021\136\203\036\234\174\122 +\256\375\002\332\022\250\131\147\030\333\274\160\335\233\261\151 +\355\200\316\211\100\110\152\016\065\312\051\146\025\041\224\054 +\350\140\052\233\205\112\100\363\153\212\044\354\006\026\054\163 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certum Root CA" +# Issuer: CN=Certum CA,O=Unizeto Sp. z o.o.,C=PL +# Serial Number: 65568 (0x10020) +# Subject: CN=Certum CA,O=Unizeto Sp. z o.o.,C=PL +# Not Valid Before: Tue Jun 11 10:46:39 2002 +# Not Valid After : Fri Jun 11 10:46:39 2027 +# Fingerprint (SHA-256): D8:E0:FE:BC:1D:B2:E3:8D:00:94:0F:37:D2:7D:41:34:4D:99:3E:73:4B:99:D5:65:6D:97:78:D4:D8:14:36:24 +# Fingerprint (SHA1): 62:52:DC:40:F7:11:43:A2:2F:DE:9E:F7:34:8E:06:42:51:B1:81:18 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\142\122\334\100\367\021\103\242\057\336\236\367\064\216\006\102 +\121\261\201\030 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\054\217\237\146\035\030\220\261\107\046\235\216\206\202\214\251 +END +CKA_ISSUER MULTILINE_OCTAL +\060\076\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\033\060\031\006\003\125\004\012\023\022\125\156\151\172\145\164 +\157\040\123\160\056\040\172\040\157\056\157\056\061\022\060\020 +\006\003\125\004\003\023\011\103\145\162\164\165\155\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\001\000\040 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Comodo AAA Services root" +# +# Issuer: CN=AAA Certificate Services,O=Comodo CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Serial Number: 1 (0x1) +# Subject: CN=AAA Certificate Services,O=Comodo CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Not Valid Before: Thu Jan 01 00:00:00 2004 +# Not Valid After : Sun Dec 31 23:59:59 2028 +# Fingerprint (SHA-256): D7:A7:A0:FB:5D:7E:27:31:D7:71:E9:48:4E:BC:DE:F7:1D:5F:0C:3E:0A:29:48:78:2B:C8:3E:E0:EA:69:9E:F4 +# Fingerprint (SHA1): D1:EB:23:A4:6D:17:D6:8F:D9:25:64:C2:F1:F1:60:17:64:D8:E3:49 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Comodo AAA Services root" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\173\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145 +\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016 +\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032 +\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040 +\103\101\040\114\151\155\151\164\145\144\061\041\060\037\006\003 +\125\004\003\014\030\101\101\101\040\103\145\162\164\151\146\151 +\143\141\164\145\040\123\145\162\166\151\143\145\163 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\173\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145 +\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016 +\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032 +\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040 +\103\101\040\114\151\155\151\164\145\144\061\041\060\037\006\003 +\125\004\003\014\030\101\101\101\040\103\145\162\164\151\146\151 +\143\141\164\145\040\123\145\162\166\151\143\145\163 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\062\060\202\003\032\240\003\002\001\002\002\001\001 +\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060 +\173\061\013\060\011\006\003\125\004\006\023\002\107\102\061\033 +\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145\162 +\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016\006 +\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032\060 +\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040\103 +\101\040\114\151\155\151\164\145\144\061\041\060\037\006\003\125 +\004\003\014\030\101\101\101\040\103\145\162\164\151\146\151\143 +\141\164\145\040\123\145\162\166\151\143\145\163\060\036\027\015 +\060\064\060\061\060\061\060\060\060\060\060\060\132\027\015\062 +\070\061\062\063\061\062\063\065\071\065\071\132\060\173\061\013 +\060\011\006\003\125\004\006\023\002\107\102\061\033\060\031\006 +\003\125\004\010\014\022\107\162\145\141\164\145\162\040\115\141 +\156\143\150\145\163\164\145\162\061\020\060\016\006\003\125\004 +\007\014\007\123\141\154\146\157\162\144\061\032\060\030\006\003 +\125\004\012\014\021\103\157\155\157\144\157\040\103\101\040\114 +\151\155\151\164\145\144\061\041\060\037\006\003\125\004\003\014 +\030\101\101\101\040\103\145\162\164\151\146\151\143\141\164\145 +\040\123\145\162\166\151\143\145\163\060\202\001\042\060\015\006 +\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017 +\000\060\202\001\012\002\202\001\001\000\276\100\235\364\156\341 +\352\166\207\034\115\105\104\216\276\106\310\203\006\235\301\052 +\376\030\037\216\344\002\372\363\253\135\120\212\026\061\013\232 +\006\320\305\160\042\315\111\055\124\143\314\266\156\150\106\013 +\123\352\313\114\044\300\274\162\116\352\361\025\256\364\124\232 +\022\012\303\172\262\063\140\342\332\211\125\363\042\130\363\336 +\334\317\357\203\206\242\214\224\117\237\150\362\230\220\106\204 +\047\307\166\277\343\314\065\054\213\136\007\144\145\202\300\110 +\260\250\221\371\141\237\166\040\120\250\221\307\146\265\353\170 +\142\003\126\360\212\032\023\352\061\243\036\240\231\375\070\366 +\366\047\062\130\157\007\365\153\270\373\024\053\257\267\252\314 +\326\143\137\163\214\332\005\231\250\070\250\313\027\170\066\121 +\254\351\236\364\170\072\215\317\017\331\102\342\230\014\253\057 +\237\016\001\336\357\237\231\111\361\055\337\254\164\115\033\230 +\265\107\305\345\051\321\371\220\030\307\142\234\276\203\307\046 +\173\076\212\045\307\300\335\235\346\065\150\020\040\235\217\330 +\336\322\303\204\234\015\136\350\057\311\002\003\001\000\001\243 +\201\300\060\201\275\060\035\006\003\125\035\016\004\026\004\024 +\240\021\012\043\076\226\361\007\354\342\257\051\357\202\245\177 +\320\060\244\264\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\173\006\003\125\035\037\004\164\060\162 +\060\070\240\066\240\064\206\062\150\164\164\160\072\057\057\143 +\162\154\056\143\157\155\157\144\157\143\141\056\143\157\155\057 +\101\101\101\103\145\162\164\151\146\151\143\141\164\145\123\145 +\162\166\151\143\145\163\056\143\162\154\060\066\240\064\240\062 +\206\060\150\164\164\160\072\057\057\143\162\154\056\143\157\155 +\157\144\157\056\156\145\164\057\101\101\101\103\145\162\164\151 +\146\151\143\141\164\145\123\145\162\166\151\143\145\163\056\143 +\162\154\060\015\006\011\052\206\110\206\367\015\001\001\005\005 +\000\003\202\001\001\000\010\126\374\002\360\233\350\377\244\372 +\326\173\306\104\200\316\117\304\305\366\000\130\314\246\266\274 +\024\111\150\004\166\350\346\356\135\354\002\017\140\326\215\120 +\030\117\046\116\001\343\346\260\245\356\277\274\164\124\101\277 +\375\374\022\270\307\117\132\364\211\140\005\177\140\267\005\112 +\363\366\361\302\277\304\271\164\206\266\055\175\153\314\322\363 +\106\335\057\306\340\152\303\303\064\003\054\175\226\335\132\302 +\016\247\012\231\301\005\213\253\014\057\363\134\072\317\154\067 +\125\011\207\336\123\100\154\130\357\374\266\253\145\156\004\366 +\033\334\074\340\132\025\306\236\331\361\131\110\060\041\145\003 +\154\354\351\041\163\354\233\003\241\340\067\255\240\025\030\217 +\372\272\002\316\247\054\251\020\023\054\324\345\010\046\253\042 +\227\140\370\220\136\164\324\242\232\123\275\362\251\150\340\242 +\156\302\327\154\261\243\017\236\277\353\150\347\126\362\256\362 +\343\053\070\072\011\201\265\153\205\327\276\055\355\077\032\267 +\262\143\342\365\142\054\202\324\152\000\101\120\361\071\203\237 +\225\351\066\226\230\156 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Comodo AAA Services root" +# Issuer: CN=AAA Certificate Services,O=Comodo CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Serial Number: 1 (0x1) +# Subject: CN=AAA Certificate Services,O=Comodo CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Not Valid Before: Thu Jan 01 00:00:00 2004 +# Not Valid After : Sun Dec 31 23:59:59 2028 +# Fingerprint (SHA-256): D7:A7:A0:FB:5D:7E:27:31:D7:71:E9:48:4E:BC:DE:F7:1D:5F:0C:3E:0A:29:48:78:2B:C8:3E:E0:EA:69:9E:F4 +# Fingerprint (SHA1): D1:EB:23:A4:6D:17:D6:8F:D9:25:64:C2:F1:F1:60:17:64:D8:E3:49 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Comodo AAA Services root" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\321\353\043\244\155\027\326\217\331\045\144\302\361\361\140\027 +\144\330\343\111 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\111\171\004\260\353\207\031\254\107\260\274\021\121\233\164\320 +END +CKA_ISSUER MULTILINE_OCTAL +\060\173\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\033\060\031\006\003\125\004\010\014\022\107\162\145\141\164\145 +\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016 +\006\003\125\004\007\014\007\123\141\154\146\157\162\144\061\032 +\060\030\006\003\125\004\012\014\021\103\157\155\157\144\157\040 +\103\101\040\114\151\155\151\164\145\144\061\041\060\037\006\003 +\125\004\003\014\030\101\101\101\040\103\145\162\164\151\146\151 +\143\141\164\145\040\123\145\162\166\151\143\145\163 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "QuoVadis Root CA 2" +# +# Issuer: CN=QuoVadis Root CA 2,O=QuoVadis Limited,C=BM +# Serial Number: 1289 (0x509) +# Subject: CN=QuoVadis Root CA 2,O=QuoVadis Limited,C=BM +# Not Valid Before: Fri Nov 24 18:27:00 2006 +# Not Valid After : Mon Nov 24 18:23:33 2031 +# Fingerprint (SHA-256): 85:A0:DD:7D:D7:20:AD:B7:FF:05:F8:3D:54:2B:20:9D:C7:FF:45:28:F7:D6:77:B1:83:89:FE:A5:E5:C4:9E:86 +# Fingerprint (SHA1): CA:3A:FB:CF:12:40:36:4B:44:B2:16:20:88:80:48:39:19:93:7C:F7 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003 +\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003 +\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\002\005\011 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\267\060\202\003\237\240\003\002\001\002\002\002\005 +\011\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000 +\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003 +\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\062\060\036\027\015\060\066\061\061\062 +\064\061\070\062\067\060\060\132\027\015\063\061\061\061\062\064 +\061\070\062\063\063\063\132\060\105\061\013\060\011\006\003\125 +\004\006\023\002\102\115\061\031\060\027\006\003\125\004\012\023 +\020\121\165\157\126\141\144\151\163\040\114\151\155\151\164\145 +\144\061\033\060\031\006\003\125\004\003\023\022\121\165\157\126 +\141\144\151\163\040\122\157\157\164\040\103\101\040\062\060\202 +\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 +\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\232 +\030\312\113\224\015\000\055\257\003\051\212\360\017\201\310\256 +\114\031\205\035\010\237\253\051\104\205\363\057\201\255\062\036 +\220\106\277\243\206\046\032\036\376\176\034\030\072\134\234\140 +\027\052\072\164\203\063\060\175\141\124\021\313\355\253\340\346 +\322\242\176\365\153\157\030\267\012\013\055\375\351\076\357\012 +\306\263\020\351\334\302\106\027\370\135\375\244\332\377\236\111 +\132\234\346\063\346\044\226\367\077\272\133\053\034\172\065\302 +\326\147\376\253\146\120\213\155\050\140\053\357\327\140\303\307 +\223\274\215\066\221\363\177\370\333\021\023\304\234\167\166\301 +\256\267\002\152\201\172\251\105\203\342\005\346\271\126\301\224 +\067\217\110\161\143\042\354\027\145\007\225\212\113\337\217\306 +\132\012\345\260\343\137\136\153\021\253\014\371\205\353\104\351 +\370\004\163\362\351\376\134\230\214\365\163\257\153\264\176\315 +\324\134\002\053\114\071\341\262\225\225\055\102\207\327\325\263 +\220\103\267\154\023\361\336\335\366\304\370\211\077\321\165\365 +\222\303\221\325\212\210\320\220\354\334\155\336\211\302\145\161 +\226\213\015\003\375\234\277\133\026\254\222\333\352\376\171\174 +\255\353\257\367\026\313\333\315\045\053\345\037\373\232\237\342 +\121\314\072\123\014\110\346\016\275\311\264\166\006\122\346\021 +\023\205\162\143\003\004\340\004\066\053\040\031\002\350\164\247 +\037\266\311\126\146\360\165\045\334\147\301\016\141\140\210\263 +\076\321\250\374\243\332\035\260\321\261\043\124\337\104\166\155 +\355\101\330\301\262\042\266\123\034\337\065\035\334\241\167\052 +\061\344\055\365\345\345\333\310\340\377\345\200\327\013\143\240 +\377\063\241\017\272\054\025\025\352\227\263\322\242\265\276\362 +\214\226\036\032\217\035\154\244\141\067\271\206\163\063\327\227 +\226\236\043\175\202\244\114\201\342\241\321\272\147\137\225\007 +\243\047\021\356\026\020\173\274\105\112\114\262\004\322\253\357 +\325\375\014\121\316\120\152\010\061\371\221\332\014\217\144\134 +\003\303\072\213\040\077\156\215\147\075\072\326\376\175\133\210 +\311\136\373\314\141\334\213\063\167\323\104\062\065\011\142\004 +\222\026\020\330\236\047\107\373\073\041\343\370\353\035\133\002 +\003\001\000\001\243\201\260\060\201\255\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\013\006\003\125 +\035\017\004\004\003\002\001\006\060\035\006\003\125\035\016\004 +\026\004\024\032\204\142\274\110\114\063\045\004\324\356\320\366 +\003\304\031\106\321\224\153\060\156\006\003\125\035\043\004\147 +\060\145\200\024\032\204\142\274\110\114\063\045\004\324\356\320 +\366\003\304\031\106\321\224\153\241\111\244\107\060\105\061\013 +\060\011\006\003\125\004\006\023\002\102\115\061\031\060\027\006 +\003\125\004\012\023\020\121\165\157\126\141\144\151\163\040\114 +\151\155\151\164\145\144\061\033\060\031\006\003\125\004\003\023 +\022\121\165\157\126\141\144\151\163\040\122\157\157\164\040\103 +\101\040\062\202\002\005\011\060\015\006\011\052\206\110\206\367 +\015\001\001\005\005\000\003\202\002\001\000\076\012\026\115\237 +\006\133\250\256\161\135\057\005\057\147\346\023\105\203\304\066 +\366\363\300\046\014\015\265\107\144\135\370\264\162\311\106\245 +\003\030\047\125\211\170\175\166\352\226\064\200\027\040\334\347 +\203\370\215\374\007\270\332\137\115\056\147\262\204\375\331\104 +\374\167\120\201\346\174\264\311\015\013\162\123\370\166\007\007 +\101\107\226\014\373\340\202\046\223\125\214\376\042\037\140\145 +\174\137\347\046\263\367\062\220\230\120\324\067\161\125\366\222 +\041\170\367\225\171\372\370\055\046\207\146\126\060\167\246\067 +\170\063\122\020\130\256\077\141\216\362\152\261\357\030\176\112 +\131\143\312\215\242\126\325\247\057\274\126\037\317\071\301\342 +\373\012\250\025\054\175\115\172\143\306\154\227\104\074\322\157 +\303\112\027\012\370\220\322\127\242\031\121\245\055\227\101\332 +\007\117\251\120\332\220\215\224\106\341\076\360\224\375\020\000 +\070\365\073\350\100\341\264\156\126\032\040\314\157\130\215\355 +\056\105\217\326\351\223\077\347\261\054\337\072\326\042\214\334 +\204\273\042\157\320\370\344\306\071\351\004\210\074\303\272\353 +\125\172\155\200\231\044\365\154\001\373\370\227\260\224\133\353 +\375\322\157\361\167\150\015\065\144\043\254\270\125\241\003\321 +\115\102\031\334\370\165\131\126\243\371\250\111\171\370\257\016 +\271\021\240\174\267\152\355\064\320\266\046\142\070\032\207\014 +\370\350\375\056\323\220\177\007\221\052\035\326\176\134\205\203 +\231\260\070\010\077\351\136\371\065\007\344\311\142\156\127\177 +\247\120\225\367\272\310\233\346\216\242\001\305\326\146\277\171 +\141\363\074\034\341\271\202\134\135\240\303\351\330\110\275\031 +\242\021\024\031\156\262\206\033\150\076\110\067\032\210\267\135 +\226\136\234\307\357\047\142\010\342\221\031\134\322\361\041\335 +\272\027\102\202\227\161\201\123\061\251\237\366\175\142\277\162 +\341\243\223\035\314\212\046\132\011\070\320\316\327\015\200\026 +\264\170\245\072\207\114\215\212\245\325\106\227\362\054\020\271 +\274\124\042\300\001\120\151\103\236\364\262\357\155\370\354\332 +\361\343\261\357\337\221\217\124\052\013\045\301\046\031\304\122 +\020\005\145\325\202\020\352\302\061\315\056 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "QuoVadis Root CA 2" +# Issuer: CN=QuoVadis Root CA 2,O=QuoVadis Limited,C=BM +# Serial Number: 1289 (0x509) +# Subject: CN=QuoVadis Root CA 2,O=QuoVadis Limited,C=BM +# Not Valid Before: Fri Nov 24 18:27:00 2006 +# Not Valid After : Mon Nov 24 18:23:33 2031 +# Fingerprint (SHA-256): 85:A0:DD:7D:D7:20:AD:B7:FF:05:F8:3D:54:2B:20:9D:C7:FF:45:28:F7:D6:77:B1:83:89:FE:A5:E5:C4:9E:86 +# Fingerprint (SHA1): CA:3A:FB:CF:12:40:36:4B:44:B2:16:20:88:80:48:39:19:93:7C:F7 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\312\072\373\317\022\100\066\113\104\262\026\040\210\200\110\071 +\031\223\174\367 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\136\071\173\335\370\272\354\202\351\254\142\272\014\124\000\053 +END +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003 +\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\002\005\011 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "QuoVadis Root CA 3" +# +# Issuer: CN=QuoVadis Root CA 3,O=QuoVadis Limited,C=BM +# Serial Number: 1478 (0x5c6) +# Subject: CN=QuoVadis Root CA 3,O=QuoVadis Limited,C=BM +# Not Valid Before: Fri Nov 24 19:11:23 2006 +# Not Valid After : Mon Nov 24 19:06:44 2031 +# Fingerprint (SHA-256): 18:F1:FC:7F:20:5D:F8:AD:DD:EB:7F:E0:07:DD:57:E3:AF:37:5A:9C:4D:8D:73:54:6B:F4:F1:FE:D1:E1:8D:35 +# Fingerprint (SHA1): 1F:49:14:F7:D8:74:95:1D:DD:AE:02:C0:BE:FD:3A:2D:82:75:51:85 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003 +\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003 +\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\002\005\306 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\006\235\060\202\004\205\240\003\002\001\002\002\002\005 +\306\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000 +\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003 +\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\063\060\036\027\015\060\066\061\061\062 +\064\061\071\061\061\062\063\132\027\015\063\061\061\061\062\064 +\061\071\060\066\064\064\132\060\105\061\013\060\011\006\003\125 +\004\006\023\002\102\115\061\031\060\027\006\003\125\004\012\023 +\020\121\165\157\126\141\144\151\163\040\114\151\155\151\164\145 +\144\061\033\060\031\006\003\125\004\003\023\022\121\165\157\126 +\141\144\151\163\040\122\157\157\164\040\103\101\040\063\060\202 +\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 +\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\314 +\127\102\026\124\234\346\230\323\323\115\356\376\355\307\237\103 +\071\112\145\263\350\026\210\064\333\015\131\221\164\317\222\270 +\004\100\255\002\113\061\253\274\215\221\150\330\040\016\032\001 +\342\032\173\116\027\135\342\212\267\077\231\032\315\353\141\253 +\302\145\246\037\267\267\275\267\217\374\375\160\217\013\240\147 +\276\001\242\131\317\161\346\017\051\166\377\261\126\171\105\053 +\037\236\172\124\350\243\051\065\150\244\001\117\017\244\056\067 +\357\033\277\343\217\020\250\162\253\130\127\347\124\206\310\311 +\363\133\332\054\332\135\216\156\074\243\076\332\373\202\345\335 +\362\134\262\005\063\157\212\066\316\320\023\116\377\277\112\014 +\064\114\246\303\041\275\120\004\125\353\261\273\235\373\105\036 +\144\025\336\125\001\214\002\166\265\313\241\077\102\151\274\057 +\275\150\103\026\126\211\052\067\141\221\375\246\256\116\300\313 +\024\145\224\067\113\222\006\357\004\320\310\234\210\333\013\173 +\201\257\261\075\052\304\145\072\170\266\356\334\200\261\322\323 +\231\234\072\356\153\132\153\263\215\267\325\316\234\302\276\245 +\113\057\026\261\236\150\073\006\157\256\175\237\370\336\354\314 +\051\247\230\243\045\103\057\357\361\137\046\341\210\115\370\136 +\156\327\331\024\156\031\063\151\247\073\204\211\223\304\123\125 +\023\241\121\170\100\370\270\311\242\356\173\272\122\102\203\236 +\024\355\005\122\132\131\126\247\227\374\235\077\012\051\330\334 +\117\221\016\023\274\336\225\244\337\213\231\276\254\233\063\210 +\357\265\201\257\033\306\042\123\310\366\307\356\227\024\260\305 +\174\170\122\310\360\316\156\167\140\204\246\351\052\166\040\355 +\130\001\027\060\223\351\032\213\340\163\143\331\152\222\224\111 +\116\264\255\112\205\304\243\042\060\374\011\355\150\042\163\246 +\210\014\125\041\130\305\341\072\237\052\335\312\341\220\340\331 +\163\253\154\200\270\350\013\144\223\240\234\214\031\377\263\322 +\014\354\221\046\207\212\263\242\341\160\217\054\012\345\315\155 +\150\121\353\332\077\005\177\213\062\346\023\134\153\376\137\100 +\342\042\310\264\264\144\117\326\272\175\110\076\250\151\014\327 +\273\206\161\311\163\270\077\073\235\045\113\332\377\100\353\002 +\003\001\000\001\243\202\001\225\060\202\001\221\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\201\341 +\006\003\125\035\040\004\201\331\060\201\326\060\201\323\006\011 +\053\006\001\004\001\276\130\000\003\060\201\305\060\201\223\006 +\010\053\006\001\005\005\007\002\002\060\201\206\032\201\203\101 +\156\171\040\165\163\145\040\157\146\040\164\150\151\163\040\103 +\145\162\164\151\146\151\143\141\164\145\040\143\157\156\163\164 +\151\164\165\164\145\163\040\141\143\143\145\160\164\141\156\143 +\145\040\157\146\040\164\150\145\040\121\165\157\126\141\144\151 +\163\040\122\157\157\164\040\103\101\040\063\040\103\145\162\164 +\151\146\151\143\141\164\145\040\120\157\154\151\143\171\040\057 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\120 +\162\141\143\164\151\143\145\040\123\164\141\164\145\155\145\156 +\164\056\060\055\006\010\053\006\001\005\005\007\002\001\026\041 +\150\164\164\160\072\057\057\167\167\167\056\161\165\157\166\141 +\144\151\163\147\154\157\142\141\154\056\143\157\155\057\143\160 +\163\060\013\006\003\125\035\017\004\004\003\002\001\006\060\035 +\006\003\125\035\016\004\026\004\024\362\300\023\340\202\103\076 +\373\356\057\147\062\226\065\134\333\270\313\002\320\060\156\006 +\003\125\035\043\004\147\060\145\200\024\362\300\023\340\202\103 +\076\373\356\057\147\062\226\065\134\333\270\313\002\320\241\111 +\244\107\060\105\061\013\060\011\006\003\125\004\006\023\002\102 +\115\061\031\060\027\006\003\125\004\012\023\020\121\165\157\126 +\141\144\151\163\040\114\151\155\151\164\145\144\061\033\060\031 +\006\003\125\004\003\023\022\121\165\157\126\141\144\151\163\040 +\122\157\157\164\040\103\101\040\063\202\002\005\306\060\015\006 +\011\052\206\110\206\367\015\001\001\005\005\000\003\202\002\001 +\000\117\255\240\054\114\372\300\362\157\367\146\125\253\043\064 +\356\347\051\332\303\133\266\260\203\331\320\320\342\041\373\363 +\140\247\073\135\140\123\047\242\233\366\010\042\052\347\277\240 +\162\345\234\044\152\061\261\220\172\047\333\204\021\211\047\246 +\167\132\070\327\277\254\206\374\356\135\203\274\006\306\321\167 +\153\017\155\044\057\113\172\154\247\007\226\312\343\204\237\255 +\210\213\035\253\026\215\133\146\027\331\026\364\213\200\322\335 +\370\262\166\303\374\070\023\252\014\336\102\151\053\156\363\074 +\353\200\047\333\365\246\104\015\237\132\125\131\013\325\015\122 +\110\305\256\237\362\057\200\305\352\062\120\065\022\227\056\301 +\341\377\361\043\210\121\070\237\362\146\126\166\347\017\121\227 +\245\122\014\115\111\121\225\066\075\277\242\113\014\020\035\206 +\231\114\252\363\162\021\223\344\352\366\233\332\250\135\247\115 +\267\236\002\256\163\000\310\332\043\003\350\371\352\031\164\142 +\000\224\313\042\040\276\224\247\131\265\202\152\276\231\171\172 +\251\362\112\044\122\367\164\375\272\116\346\250\035\002\156\261 +\015\200\104\301\256\323\043\067\137\273\205\174\053\222\056\350 +\176\245\213\335\231\341\277\047\157\055\135\252\173\207\376\012 +\335\113\374\216\365\046\344\156\160\102\156\063\354\061\236\173 +\223\301\344\311\151\032\075\300\153\116\042\155\356\253\130\115 +\306\320\101\301\053\352\117\022\207\136\353\105\330\154\365\230 +\002\323\240\330\125\212\006\231\031\242\240\167\321\060\236\254 +\314\165\356\203\365\260\142\071\317\154\127\342\114\322\221\013 +\016\165\050\033\232\277\375\032\103\361\312\167\373\073\217\141 +\270\151\050\026\102\004\136\160\052\034\041\330\217\341\275\043 +\133\055\164\100\222\331\143\031\015\163\335\151\274\142\107\274 +\340\164\053\262\353\175\276\101\033\265\300\106\305\241\042\313 +\137\116\301\050\222\336\030\272\325\052\050\273\021\213\027\223 +\230\231\140\224\134\043\317\132\047\227\136\013\005\006\223\067 +\036\073\151\066\353\251\236\141\035\217\062\332\216\014\326\164 +\076\173\011\044\332\001\167\107\304\073\315\064\214\231\365\312 +\341\045\141\063\262\131\033\342\156\327\067\127\266\015\251\022 +\332 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "QuoVadis Root CA 3" +# Issuer: CN=QuoVadis Root CA 3,O=QuoVadis Limited,C=BM +# Serial Number: 1478 (0x5c6) +# Subject: CN=QuoVadis Root CA 3,O=QuoVadis Limited,C=BM +# Not Valid Before: Fri Nov 24 19:11:23 2006 +# Not Valid After : Mon Nov 24 19:06:44 2031 +# Fingerprint (SHA-256): 18:F1:FC:7F:20:5D:F8:AD:DD:EB:7F:E0:07:DD:57:E3:AF:37:5A:9C:4D:8D:73:54:6B:F4:F1:FE:D1:E1:8D:35 +# Fingerprint (SHA1): 1F:49:14:F7:D8:74:95:1D:DD:AE:02:C0:BE:FD:3A:2D:82:75:51:85 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\037\111\024\367\330\164\225\035\335\256\002\300\276\375\072\055 +\202\165\121\205 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\061\205\074\142\224\227\143\271\252\375\211\116\257\157\340\317 +END +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\033\060\031\006\003 +\125\004\003\023\022\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\002\005\306 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "XRamp Global CA Root" +# +# Issuer: CN=XRamp Global Certification Authority,O=XRamp Security Services Inc,OU=www.xrampsecurity.com,C=US +# Serial Number:50:94:6c:ec:18:ea:d5:9c:4d:d5:97:ef:75:8f:a0:ad +# Subject: CN=XRamp Global Certification Authority,O=XRamp Security Services Inc,OU=www.xrampsecurity.com,C=US +# Not Valid Before: Mon Nov 01 17:14:04 2004 +# Not Valid After : Mon Jan 01 05:37:19 2035 +# Fingerprint (SHA-256): CE:CD:DC:90:50:99:D8:DA:DF:C5:B1:D2:09:B7:37:CB:E2:C1:8C:FB:2C:10:C0:FF:0B:CF:0D:32:86:FC:1A:A2 +# Fingerprint (SHA1): B8:01:86:D1:EB:9C:86:A5:41:04:CF:30:54:F3:4C:52:B7:E5:58:C6 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "XRamp Global CA Root" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\036\060\034\006\003\125\004\013\023\025\167\167\167\056\170 +\162\141\155\160\163\145\143\165\162\151\164\171\056\143\157\155 +\061\044\060\042\006\003\125\004\012\023\033\130\122\141\155\160 +\040\123\145\143\165\162\151\164\171\040\123\145\162\166\151\143 +\145\163\040\111\156\143\061\055\060\053\006\003\125\004\003\023 +\044\130\122\141\155\160\040\107\154\157\142\141\154\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150 +\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\036\060\034\006\003\125\004\013\023\025\167\167\167\056\170 +\162\141\155\160\163\145\143\165\162\151\164\171\056\143\157\155 +\061\044\060\042\006\003\125\004\012\023\033\130\122\141\155\160 +\040\123\145\143\165\162\151\164\171\040\123\145\162\166\151\143 +\145\163\040\111\156\143\061\055\060\053\006\003\125\004\003\023 +\044\130\122\141\155\160\040\107\154\157\142\141\154\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150 +\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\120\224\154\354\030\352\325\234\115\325\227\357\165\217 +\240\255 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\060\060\202\003\030\240\003\002\001\002\002\020\120 +\224\154\354\030\352\325\234\115\325\227\357\165\217\240\255\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201 +\202\061\013\060\011\006\003\125\004\006\023\002\125\123\061\036 +\060\034\006\003\125\004\013\023\025\167\167\167\056\170\162\141 +\155\160\163\145\143\165\162\151\164\171\056\143\157\155\061\044 +\060\042\006\003\125\004\012\023\033\130\122\141\155\160\040\123 +\145\143\165\162\151\164\171\040\123\145\162\166\151\143\145\163 +\040\111\156\143\061\055\060\053\006\003\125\004\003\023\044\130 +\122\141\155\160\040\107\154\157\142\141\154\040\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162 +\151\164\171\060\036\027\015\060\064\061\061\060\061\061\067\061 +\064\060\064\132\027\015\063\065\060\061\060\061\060\065\063\067 +\061\071\132\060\201\202\061\013\060\011\006\003\125\004\006\023 +\002\125\123\061\036\060\034\006\003\125\004\013\023\025\167\167 +\167\056\170\162\141\155\160\163\145\143\165\162\151\164\171\056 +\143\157\155\061\044\060\042\006\003\125\004\012\023\033\130\122 +\141\155\160\040\123\145\143\165\162\151\164\171\040\123\145\162 +\166\151\143\145\163\040\111\156\143\061\055\060\053\006\003\125 +\004\003\023\044\130\122\141\155\160\040\107\154\157\142\141\154 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101 +\165\164\150\157\162\151\164\171\060\202\001\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000 +\060\202\001\012\002\202\001\001\000\230\044\036\275\025\264\272 +\337\307\214\245\047\266\070\013\151\363\266\116\250\054\056\041 +\035\134\104\337\041\135\176\043\164\376\136\176\264\112\267\246 +\255\037\256\340\006\026\342\233\133\331\147\164\153\135\200\217 +\051\235\206\033\331\234\015\230\155\166\020\050\130\344\145\260 +\177\112\230\171\237\340\303\061\176\200\053\265\214\300\100\073 +\021\206\320\313\242\206\066\140\244\325\060\202\155\331\156\320 +\017\022\004\063\227\137\117\141\132\360\344\371\221\253\347\035 +\073\274\350\317\364\153\055\064\174\342\110\141\034\216\363\141 +\104\314\157\240\112\251\224\260\115\332\347\251\064\172\162\070 +\250\101\314\074\224\021\175\353\310\246\214\267\206\313\312\063 +\073\331\075\067\213\373\172\076\206\054\347\163\327\012\127\254 +\144\233\031\353\364\017\004\010\212\254\003\027\031\144\364\132 +\045\042\215\064\054\262\366\150\035\022\155\323\212\036\024\332 +\304\217\246\342\043\205\325\172\015\275\152\340\351\354\354\027 +\273\102\033\147\252\045\355\105\203\041\374\301\311\174\325\142 +\076\372\362\305\055\323\375\324\145\002\003\001\000\001\243\201 +\237\060\201\234\060\023\006\011\053\006\001\004\001\202\067\024 +\002\004\006\036\004\000\103\000\101\060\013\006\003\125\035\017 +\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026 +\004\024\306\117\242\075\006\143\204\011\234\316\142\344\004\254 +\215\134\265\351\266\033\060\066\006\003\125\035\037\004\057\060 +\055\060\053\240\051\240\047\206\045\150\164\164\160\072\057\057 +\143\162\154\056\170\162\141\155\160\163\145\143\165\162\151\164 +\171\056\143\157\155\057\130\107\103\101\056\143\162\154\060\020 +\006\011\053\006\001\004\001\202\067\025\001\004\003\002\001\001 +\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003 +\202\001\001\000\221\025\071\003\001\033\147\373\112\034\371\012 +\140\133\241\332\115\227\142\371\044\123\047\327\202\144\116\220 +\056\303\111\033\053\232\334\374\250\170\147\065\361\035\360\021 +\275\267\110\343\020\366\015\337\077\322\311\266\252\125\244\110 +\272\002\333\336\131\056\025\133\073\235\026\175\107\327\067\352 +\137\115\166\022\066\273\037\327\241\201\004\106\040\243\054\155 +\251\236\001\176\077\051\316\000\223\337\375\311\222\163\211\211 +\144\236\347\053\344\034\221\054\322\271\316\175\316\157\061\231 +\323\346\276\322\036\220\360\011\024\171\134\043\253\115\322\332 +\041\037\115\231\171\235\341\317\047\237\020\233\034\210\015\260 +\212\144\101\061\270\016\154\220\044\244\233\134\161\217\272\273 +\176\034\033\333\152\200\017\041\274\351\333\246\267\100\364\262 +\213\251\261\344\357\232\032\320\075\151\231\356\250\050\243\341 +\074\263\360\262\021\234\317\174\100\346\335\347\103\175\242\330 +\072\265\251\215\362\064\231\304\324\020\341\006\375\011\204\020 +\073\356\304\114\364\354\047\174\102\302\164\174\202\212\011\311 +\264\003\045\274 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "XRamp Global CA Root" +# Issuer: CN=XRamp Global Certification Authority,O=XRamp Security Services Inc,OU=www.xrampsecurity.com,C=US +# Serial Number:50:94:6c:ec:18:ea:d5:9c:4d:d5:97:ef:75:8f:a0:ad +# Subject: CN=XRamp Global Certification Authority,O=XRamp Security Services Inc,OU=www.xrampsecurity.com,C=US +# Not Valid Before: Mon Nov 01 17:14:04 2004 +# Not Valid After : Mon Jan 01 05:37:19 2035 +# Fingerprint (SHA-256): CE:CD:DC:90:50:99:D8:DA:DF:C5:B1:D2:09:B7:37:CB:E2:C1:8C:FB:2C:10:C0:FF:0B:CF:0D:32:86:FC:1A:A2 +# Fingerprint (SHA1): B8:01:86:D1:EB:9C:86:A5:41:04:CF:30:54:F3:4C:52:B7:E5:58:C6 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "XRamp Global CA Root" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\270\001\206\321\353\234\206\245\101\004\317\060\124\363\114\122 +\267\345\130\306 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\241\013\104\263\312\020\330\000\156\235\017\330\017\222\012\321 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\036\060\034\006\003\125\004\013\023\025\167\167\167\056\170 +\162\141\155\160\163\145\143\165\162\151\164\171\056\143\157\155 +\061\044\060\042\006\003\125\004\012\023\033\130\122\141\155\160 +\040\123\145\143\165\162\151\164\171\040\123\145\162\166\151\143 +\145\163\040\111\156\143\061\055\060\053\006\003\125\004\003\023 +\044\130\122\141\155\160\040\107\154\157\142\141\154\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150 +\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\120\224\154\354\030\352\325\234\115\325\227\357\165\217 +\240\255 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Go Daddy Class 2 CA" +# +# Issuer: OU=Go Daddy Class 2 Certification Authority,O="The Go Daddy Group, Inc.",C=US +# Serial Number: 0 (0x0) +# Subject: OU=Go Daddy Class 2 Certification Authority,O="The Go Daddy Group, Inc.",C=US +# Not Valid Before: Tue Jun 29 17:06:20 2004 +# Not Valid After : Thu Jun 29 17:06:20 2034 +# Fingerprint (SHA-256): C3:84:6B:F2:4B:9E:93:CA:64:27:4C:0E:C6:7C:1E:CC:5E:02:4F:FC:AC:D2:D7:40:19:35:0E:81:FE:54:6A:E4 +# Fingerprint (SHA1): 27:96:BA:E6:3F:18:01:E2:77:26:1B:A0:D7:77:70:02:8F:20:EE:E4 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Go Daddy Class 2 CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\041\060\037\006\003\125\004\012\023\030\124\150\145\040\107\157 +\040\104\141\144\144\171\040\107\162\157\165\160\054\040\111\156 +\143\056\061\061\060\057\006\003\125\004\013\023\050\107\157\040 +\104\141\144\144\171\040\103\154\141\163\163\040\062\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150 +\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\041\060\037\006\003\125\004\012\023\030\124\150\145\040\107\157 +\040\104\141\144\144\171\040\107\162\157\165\160\054\040\111\156 +\143\056\061\061\060\057\006\003\125\004\013\023\050\107\157\040 +\104\141\144\144\171\040\103\154\141\163\163\040\062\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150 +\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\000\060\202\002\350\240\003\002\001\002\002\001\000 +\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060 +\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061\041 +\060\037\006\003\125\004\012\023\030\124\150\145\040\107\157\040 +\104\141\144\144\171\040\107\162\157\165\160\054\040\111\156\143 +\056\061\061\060\057\006\003\125\004\013\023\050\107\157\040\104 +\141\144\144\171\040\103\154\141\163\163\040\062\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171\060\036\027\015\060\064\060\066\062\071\061\067 +\060\066\062\060\132\027\015\063\064\060\066\062\071\061\067\060 +\066\062\060\132\060\143\061\013\060\011\006\003\125\004\006\023 +\002\125\123\061\041\060\037\006\003\125\004\012\023\030\124\150 +\145\040\107\157\040\104\141\144\144\171\040\107\162\157\165\160 +\054\040\111\156\143\056\061\061\060\057\006\003\125\004\013\023 +\050\107\157\040\104\141\144\144\171\040\103\154\141\163\163\040 +\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040 +\101\165\164\150\157\162\151\164\171\060\202\001\040\060\015\006 +\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\015 +\000\060\202\001\010\002\202\001\001\000\336\235\327\352\127\030 +\111\241\133\353\327\137\110\206\352\276\335\377\344\357\147\034 +\364\145\150\263\127\161\240\136\167\273\355\233\111\351\160\200 +\075\126\030\143\010\157\332\362\314\320\077\177\002\124\042\124 +\020\330\262\201\324\300\165\075\113\177\307\167\303\076\170\253 +\032\003\265\040\153\057\152\053\261\305\210\176\304\273\036\260 +\301\330\105\047\157\252\067\130\367\207\046\327\330\055\366\251 +\027\267\037\162\066\116\246\027\077\145\230\222\333\052\156\135 +\242\376\210\340\013\336\177\345\215\025\341\353\313\072\325\342 +\022\242\023\055\330\216\257\137\022\075\240\010\005\010\266\134 +\245\145\070\004\105\231\036\243\140\140\164\305\101\245\162\142 +\033\142\305\037\157\137\032\102\276\002\121\145\250\256\043\030 +\152\374\170\003\251\115\177\200\303\372\253\132\374\241\100\244 +\312\031\026\376\262\310\357\136\163\015\356\167\275\232\366\171 +\230\274\261\007\147\242\025\015\335\240\130\306\104\173\012\076 +\142\050\137\272\101\007\123\130\317\021\176\070\164\305\370\377 +\265\151\220\217\204\164\352\227\033\257\002\001\003\243\201\300 +\060\201\275\060\035\006\003\125\035\016\004\026\004\024\322\304 +\260\322\221\324\114\021\161\263\141\313\075\241\376\335\250\152 +\324\343\060\201\215\006\003\125\035\043\004\201\205\060\201\202 +\200\024\322\304\260\322\221\324\114\021\161\263\141\313\075\241 +\376\335\250\152\324\343\241\147\244\145\060\143\061\013\060\011 +\006\003\125\004\006\023\002\125\123\061\041\060\037\006\003\125 +\004\012\023\030\124\150\145\040\107\157\040\104\141\144\144\171 +\040\107\162\157\165\160\054\040\111\156\143\056\061\061\060\057 +\006\003\125\004\013\023\050\107\157\040\104\141\144\144\171\040 +\103\154\141\163\163\040\062\040\103\145\162\164\151\146\151\143 +\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\202 +\001\000\060\014\006\003\125\035\023\004\005\060\003\001\001\377 +\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003 +\202\001\001\000\062\113\363\262\312\076\221\374\022\306\241\007 +\214\216\167\240\063\006\024\134\220\036\030\367\010\246\075\012 +\031\371\207\200\021\156\151\344\226\027\060\377\064\221\143\162 +\070\356\314\034\001\243\035\224\050\244\061\366\172\304\124\327 +\366\345\061\130\003\242\314\316\142\333\224\105\163\265\277\105 +\311\044\265\325\202\002\255\043\171\151\215\270\266\115\316\317 +\114\312\063\043\350\034\210\252\235\213\101\156\026\311\040\345 +\211\236\315\073\332\160\367\176\231\046\040\024\124\045\253\156 +\163\205\346\233\041\235\012\154\202\016\250\370\302\014\372\020 +\036\154\226\357\207\015\304\017\141\213\255\356\203\053\225\370 +\216\222\204\162\071\353\040\352\203\355\203\315\227\156\010\274 +\353\116\046\266\163\053\344\323\366\114\376\046\161\342\141\021 +\164\112\377\127\032\207\017\165\110\056\317\121\151\027\240\002 +\022\141\225\325\321\100\262\020\114\356\304\254\020\103\246\245 +\236\012\325\225\142\232\015\317\210\202\305\062\014\344\053\237 +\105\346\015\237\050\234\261\271\052\132\127\255\067\017\257\035 +\177\333\275\237 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Go Daddy Class 2 CA" +# Issuer: OU=Go Daddy Class 2 Certification Authority,O="The Go Daddy Group, Inc.",C=US +# Serial Number: 0 (0x0) +# Subject: OU=Go Daddy Class 2 Certification Authority,O="The Go Daddy Group, Inc.",C=US +# Not Valid Before: Tue Jun 29 17:06:20 2004 +# Not Valid After : Thu Jun 29 17:06:20 2034 +# Fingerprint (SHA-256): C3:84:6B:F2:4B:9E:93:CA:64:27:4C:0E:C6:7C:1E:CC:5E:02:4F:FC:AC:D2:D7:40:19:35:0E:81:FE:54:6A:E4 +# Fingerprint (SHA1): 27:96:BA:E6:3F:18:01:E2:77:26:1B:A0:D7:77:70:02:8F:20:EE:E4 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Go Daddy Class 2 CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\047\226\272\346\077\030\001\342\167\046\033\240\327\167\160\002 +\217\040\356\344 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\221\336\006\045\253\332\375\062\027\014\273\045\027\052\204\147 +END +CKA_ISSUER MULTILINE_OCTAL +\060\143\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\041\060\037\006\003\125\004\012\023\030\124\150\145\040\107\157 +\040\104\141\144\144\171\040\107\162\157\165\160\054\040\111\156 +\143\056\061\061\060\057\006\003\125\004\013\023\050\107\157\040 +\104\141\144\144\171\040\103\154\141\163\163\040\062\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150 +\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Starfield Class 2 CA" +# +# Issuer: OU=Starfield Class 2 Certification Authority,O="Starfield Technologies, Inc.",C=US +# Serial Number: 0 (0x0) +# Subject: OU=Starfield Class 2 Certification Authority,O="Starfield Technologies, Inc.",C=US +# Not Valid Before: Tue Jun 29 17:39:16 2004 +# Not Valid After : Thu Jun 29 17:39:16 2034 +# Fingerprint (SHA-256): 14:65:FA:20:53:97:B8:76:FA:A6:F0:A9:95:8E:55:90:E4:0F:CC:7F:AA:4F:B7:C2:C8:67:75:21:FB:5F:B6:58 +# Fingerprint (SHA1): AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Starfield Class 2 CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\150\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\045\060\043\006\003\125\004\012\023\034\123\164\141\162\146\151 +\145\154\144\040\124\145\143\150\156\157\154\157\147\151\145\163 +\054\040\111\156\143\056\061\062\060\060\006\003\125\004\013\023 +\051\123\164\141\162\146\151\145\154\144\040\103\154\141\163\163 +\040\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\101\165\164\150\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\150\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\045\060\043\006\003\125\004\012\023\034\123\164\141\162\146\151 +\145\154\144\040\124\145\143\150\156\157\154\157\147\151\145\163 +\054\040\111\156\143\056\061\062\060\060\006\003\125\004\013\023 +\051\123\164\141\162\146\151\145\154\144\040\103\154\141\163\163 +\040\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\017\060\202\002\367\240\003\002\001\002\002\001\000 +\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060 +\150\061\013\060\011\006\003\125\004\006\023\002\125\123\061\045 +\060\043\006\003\125\004\012\023\034\123\164\141\162\146\151\145 +\154\144\040\124\145\143\150\156\157\154\157\147\151\145\163\054 +\040\111\156\143\056\061\062\060\060\006\003\125\004\013\023\051 +\123\164\141\162\146\151\145\154\144\040\103\154\141\163\163\040 +\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040 +\101\165\164\150\157\162\151\164\171\060\036\027\015\060\064\060 +\066\062\071\061\067\063\071\061\066\132\027\015\063\064\060\066 +\062\071\061\067\063\071\061\066\132\060\150\061\013\060\011\006 +\003\125\004\006\023\002\125\123\061\045\060\043\006\003\125\004 +\012\023\034\123\164\141\162\146\151\145\154\144\040\124\145\143 +\150\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061 +\062\060\060\006\003\125\004\013\023\051\123\164\141\162\146\151 +\145\154\144\040\103\154\141\163\163\040\062\040\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162 +\151\164\171\060\202\001\040\060\015\006\011\052\206\110\206\367 +\015\001\001\001\005\000\003\202\001\015\000\060\202\001\010\002 +\202\001\001\000\267\062\310\376\351\161\246\004\205\255\014\021 +\144\337\316\115\357\310\003\030\207\077\241\253\373\074\246\237 +\360\303\241\332\324\330\156\053\123\220\373\044\244\076\204\360 +\236\350\137\354\345\047\104\365\050\246\077\173\336\340\052\360 +\310\257\123\057\236\312\005\001\223\036\217\146\034\071\247\115 +\372\132\266\163\004\045\146\353\167\177\347\131\306\112\231\045 +\024\124\353\046\307\363\177\031\325\060\160\217\257\260\106\052 +\377\255\353\051\355\327\237\252\004\207\243\324\371\211\245\064 +\137\333\103\221\202\066\331\146\074\261\270\271\202\375\234\072 +\076\020\310\073\357\006\145\146\172\233\031\030\075\377\161\121 +\074\060\056\137\276\075\167\163\262\135\006\154\303\043\126\232 +\053\205\046\222\034\247\002\263\344\077\015\257\010\171\202\270 +\066\075\352\234\323\065\263\274\151\312\365\314\235\350\375\144 +\215\027\200\063\156\136\112\135\231\311\036\207\264\235\032\300 +\325\156\023\065\043\136\337\233\137\075\357\326\367\166\302\352 +\076\273\170\015\034\102\147\153\004\330\370\326\332\157\213\362 +\104\240\001\253\002\001\003\243\201\305\060\201\302\060\035\006 +\003\125\035\016\004\026\004\024\277\137\267\321\316\335\037\206 +\364\133\125\254\334\327\020\302\016\251\210\347\060\201\222\006 +\003\125\035\043\004\201\212\060\201\207\200\024\277\137\267\321 +\316\335\037\206\364\133\125\254\334\327\020\302\016\251\210\347 +\241\154\244\152\060\150\061\013\060\011\006\003\125\004\006\023 +\002\125\123\061\045\060\043\006\003\125\004\012\023\034\123\164 +\141\162\146\151\145\154\144\040\124\145\143\150\156\157\154\157 +\147\151\145\163\054\040\111\156\143\056\061\062\060\060\006\003 +\125\004\013\023\051\123\164\141\162\146\151\145\154\144\040\103 +\154\141\163\163\040\062\040\103\145\162\164\151\146\151\143\141 +\164\151\157\156\040\101\165\164\150\157\162\151\164\171\202\001 +\000\060\014\006\003\125\035\023\004\005\060\003\001\001\377\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202 +\001\001\000\005\235\077\210\235\321\311\032\125\241\254\151\363 +\363\131\332\233\001\207\032\117\127\251\241\171\011\052\333\367 +\057\262\036\314\307\136\152\330\203\207\241\227\357\111\065\076 +\167\006\101\130\142\277\216\130\270\012\147\077\354\263\335\041 +\146\037\311\124\372\162\314\075\114\100\330\201\257\167\236\203 +\172\273\242\307\365\064\027\216\331\021\100\364\374\054\052\115 +\025\177\247\142\135\056\045\323\000\013\040\032\035\150\371\027 +\270\364\275\213\355\050\131\335\115\026\213\027\203\310\262\145 +\307\055\172\245\252\274\123\206\155\335\127\244\312\370\040\101 +\013\150\360\364\373\164\276\126\135\172\171\365\371\035\205\343 +\055\225\276\365\161\220\103\314\215\037\232\000\012\207\051\351 +\125\042\130\000\043\352\343\022\103\051\133\107\010\335\214\101 +\152\145\006\250\345\041\252\101\264\225\041\225\271\175\321\064 +\253\023\326\255\274\334\342\075\071\315\275\076\165\160\241\030 +\131\003\311\042\264\217\234\325\136\052\327\245\266\324\012\155 +\370\267\100\021\106\232\037\171\016\142\277\017\227\354\340\057 +\037\027\224 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Starfield Class 2 CA" +# Issuer: OU=Starfield Class 2 Certification Authority,O="Starfield Technologies, Inc.",C=US +# Serial Number: 0 (0x0) +# Subject: OU=Starfield Class 2 Certification Authority,O="Starfield Technologies, Inc.",C=US +# Not Valid Before: Tue Jun 29 17:39:16 2004 +# Not Valid After : Thu Jun 29 17:39:16 2034 +# Fingerprint (SHA-256): 14:65:FA:20:53:97:B8:76:FA:A6:F0:A9:95:8E:55:90:E4:0F:CC:7F:AA:4F:B7:C2:C8:67:75:21:FB:5F:B6:58 +# Fingerprint (SHA1): AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Starfield Class 2 CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\255\176\034\050\260\144\357\217\140\003\100\040\024\303\320\343 +\067\016\265\212 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\062\112\113\273\310\143\151\233\276\164\232\306\335\035\106\044 +END +CKA_ISSUER MULTILINE_OCTAL +\060\150\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\045\060\043\006\003\125\004\012\023\034\123\164\141\162\146\151 +\145\154\144\040\124\145\143\150\156\157\154\157\147\151\145\163 +\054\040\111\156\143\056\061\062\060\060\006\003\125\004\013\023 +\051\123\164\141\162\146\151\145\154\144\040\103\154\141\163\163 +\040\062\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert Assured ID Root CA" +# +# Issuer: CN=DigiCert Assured ID Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:0c:e7:e0:e5:17:d8:46:fe:8f:e5:60:fc:1b:f0:30:39 +# Subject: CN=DigiCert Assured ID Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Fri Nov 10 00:00:00 2006 +# Not Valid After : Mon Nov 10 00:00:00 2031 +# Fingerprint (SHA-256): 3E:90:99:B5:01:5E:8F:48:6C:00:BC:EA:9D:11:1E:E7:21:FA:BA:35:5A:89:BC:F1:DF:69:56:1E:3D:C6:32:5C +# Fingerprint (SHA1): 05:63:B8:63:0D:62:D7:5A:BB:C8:AB:1E:4B:DF:B5:A8:99:B2:4D:43 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Assured ID Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151 +\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040 +\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151 +\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040 +\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\014\347\340\345\027\330\106\376\217\345\140\374\033\360 +\060\071 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\267\060\202\002\237\240\003\002\001\002\002\020\014 +\347\340\345\027\330\106\376\217\345\140\374\033\360\060\071\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\145 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060 +\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164 +\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167 +\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061 +\044\060\042\006\003\125\004\003\023\033\104\151\147\151\103\145 +\162\164\040\101\163\163\165\162\145\144\040\111\104\040\122\157 +\157\164\040\103\101\060\036\027\015\060\066\061\061\061\060\060 +\060\060\060\060\060\132\027\015\063\061\061\061\061\060\060\060 +\060\060\060\060\132\060\145\061\013\060\011\006\003\125\004\006 +\023\002\125\123\061\025\060\023\006\003\125\004\012\023\014\104 +\151\147\151\103\145\162\164\040\111\156\143\061\031\060\027\006 +\003\125\004\013\023\020\167\167\167\056\144\151\147\151\143\145 +\162\164\056\143\157\155\061\044\060\042\006\003\125\004\003\023 +\033\104\151\147\151\103\145\162\164\040\101\163\163\165\162\145 +\144\040\111\104\040\122\157\157\164\040\103\101\060\202\001\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\001\017\000\060\202\001\012\002\202\001\001\000\255\016\025 +\316\344\103\200\134\261\207\363\267\140\371\161\022\245\256\334 +\046\224\210\252\364\316\365\040\071\050\130\140\014\370\200\332 +\251\025\225\062\141\074\265\261\050\204\212\212\334\237\012\014 +\203\027\172\217\220\254\212\347\171\123\134\061\204\052\366\017 +\230\062\066\166\314\336\335\074\250\242\357\152\373\041\362\122 +\141\337\237\040\327\037\342\261\331\376\030\144\322\022\133\137 +\371\130\030\065\274\107\315\241\066\371\153\177\324\260\070\076 +\301\033\303\214\063\331\330\057\030\376\050\017\263\247\203\326 +\303\156\104\300\141\065\226\026\376\131\234\213\166\155\327\361 +\242\113\015\053\377\013\162\332\236\140\320\216\220\065\306\170 +\125\207\040\241\317\345\155\012\310\111\174\061\230\063\154\042 +\351\207\320\062\132\242\272\023\202\021\355\071\027\235\231\072 +\162\241\346\372\244\331\325\027\061\165\256\205\175\042\256\077 +\001\106\206\366\050\171\310\261\332\344\127\027\304\176\034\016 +\260\264\222\246\126\263\275\262\227\355\252\247\360\267\305\250 +\077\225\026\320\377\241\226\353\010\137\030\167\117\002\003\001 +\000\001\243\143\060\141\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026 +\004\024\105\353\242\257\364\222\313\202\061\055\121\213\247\247 +\041\235\363\155\310\017\060\037\006\003\125\035\043\004\030\060 +\026\200\024\105\353\242\257\364\222\313\202\061\055\121\213\247 +\247\041\235\363\155\310\017\060\015\006\011\052\206\110\206\367 +\015\001\001\005\005\000\003\202\001\001\000\242\016\274\337\342 +\355\360\343\162\163\172\144\224\277\367\162\146\330\062\344\102 +\165\142\256\207\353\362\325\331\336\126\263\237\314\316\024\050 +\271\015\227\140\134\022\114\130\344\323\075\203\111\105\130\227 +\065\151\032\250\107\352\126\306\171\253\022\330\147\201\204\337 +\177\011\074\224\346\270\046\054\040\275\075\263\050\211\367\137 +\377\042\342\227\204\037\351\145\357\207\340\337\301\147\111\263 +\135\353\262\011\052\353\046\355\170\276\175\077\053\363\267\046 +\065\155\137\211\001\266\111\133\237\001\005\233\253\075\045\301 +\314\266\177\302\361\157\206\306\372\144\150\353\201\055\224\353 +\102\267\372\214\036\335\142\361\276\120\147\267\154\275\363\361 +\037\153\014\066\007\026\177\067\174\251\133\155\172\361\022\106 +\140\203\327\047\004\276\113\316\227\276\303\147\052\150\021\337 +\200\347\014\063\146\277\023\015\024\156\363\177\037\143\020\036 +\372\215\033\045\155\154\217\245\267\141\001\261\322\243\046\241 +\020\161\235\255\342\303\371\303\231\121\267\053\007\010\316\056 +\346\120\262\247\372\012\105\057\242\360\362 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert Assured ID Root CA" +# Issuer: CN=DigiCert Assured ID Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:0c:e7:e0:e5:17:d8:46:fe:8f:e5:60:fc:1b:f0:30:39 +# Subject: CN=DigiCert Assured ID Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Fri Nov 10 00:00:00 2006 +# Not Valid After : Mon Nov 10 00:00:00 2031 +# Fingerprint (SHA-256): 3E:90:99:B5:01:5E:8F:48:6C:00:BC:EA:9D:11:1E:E7:21:FA:BA:35:5A:89:BC:F1:DF:69:56:1E:3D:C6:32:5C +# Fingerprint (SHA1): 05:63:B8:63:0D:62:D7:5A:BB:C8:AB:1E:4B:DF:B5:A8:99:B2:4D:43 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Assured ID Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\005\143\270\143\015\142\327\132\273\310\253\036\113\337\265\250 +\231\262\115\103 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\207\316\013\173\052\016\111\000\341\130\161\233\067\250\223\162 +END +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151 +\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040 +\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\014\347\340\345\027\330\106\376\217\345\140\374\033\360 +\060\071 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert Global Root CA" +# +# Issuer: CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:08:3b:e0:56:90:42:46:b1:a1:75:6a:c9:59:91:c7:4a +# Subject: CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Fri Nov 10 00:00:00 2006 +# Not Valid After : Mon Nov 10 00:00:00 2031 +# Fingerprint (SHA-256): 43:48:A0:E9:44:4C:78:CB:26:5E:05:8D:5E:89:44:B4:D8:4F:96:62:BD:26:DB:25:7F:89:34:A4:43:C7:01:61 +# Fingerprint (SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Global Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151 +\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151 +\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\010\073\340\126\220\102\106\261\241\165\152\311\131\221 +\307\112 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\257\060\202\002\227\240\003\002\001\002\002\020\010 +\073\340\126\220\102\106\261\241\165\152\311\131\221\307\112\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\141 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060 +\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164 +\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167 +\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061 +\040\060\036\006\003\125\004\003\023\027\104\151\147\151\103\145 +\162\164\040\107\154\157\142\141\154\040\122\157\157\164\040\103 +\101\060\036\027\015\060\066\061\061\061\060\060\060\060\060\060 +\060\132\027\015\063\061\061\061\061\060\060\060\060\060\060\060 +\132\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103 +\145\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013 +\023\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143 +\157\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147 +\151\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157 +\164\040\103\101\060\202\001\042\060\015\006\011\052\206\110\206 +\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012 +\002\202\001\001\000\342\073\341\021\162\336\250\244\323\243\127 +\252\120\242\217\013\167\220\311\242\245\356\022\316\226\133\001 +\011\040\314\001\223\247\116\060\267\123\367\103\304\151\000\127 +\235\342\215\042\335\207\006\100\000\201\011\316\316\033\203\277 +\337\315\073\161\106\342\326\146\307\005\263\166\047\026\217\173 +\236\036\225\175\356\267\110\243\010\332\326\257\172\014\071\006 +\145\177\112\135\037\274\027\370\253\276\356\050\327\164\177\172 +\170\231\131\205\150\156\134\043\062\113\277\116\300\350\132\155 +\343\160\277\167\020\277\374\001\366\205\331\250\104\020\130\062 +\251\165\030\325\321\242\276\107\342\047\152\364\232\063\370\111 +\010\140\213\324\137\264\072\204\277\241\252\112\114\175\076\317 +\117\137\154\166\136\240\113\067\221\236\334\042\346\155\316\024 +\032\216\152\313\376\315\263\024\144\027\307\133\051\236\062\277 +\362\356\372\323\013\102\324\253\267\101\062\332\014\324\357\370 +\201\325\273\215\130\077\265\033\350\111\050\242\160\332\061\004 +\335\367\262\026\362\114\012\116\007\250\355\112\075\136\265\177 +\243\220\303\257\047\002\003\001\000\001\243\143\060\141\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\035\006\003\125\035\016\004\026\004\024\003\336\120\065\126\321 +\114\273\146\360\243\342\033\033\303\227\262\075\321\125\060\037 +\006\003\125\035\043\004\030\060\026\200\024\003\336\120\065\126 +\321\114\273\146\360\243\342\033\033\303\227\262\075\321\125\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202 +\001\001\000\313\234\067\252\110\023\022\012\372\335\104\234\117 +\122\260\364\337\256\004\365\171\171\010\243\044\030\374\113\053 +\204\300\055\271\325\307\376\364\301\037\130\313\270\155\234\172 +\164\347\230\051\253\021\265\343\160\240\241\315\114\210\231\223 +\214\221\160\342\253\017\034\276\223\251\377\143\325\344\007\140 +\323\243\277\235\133\011\361\325\216\343\123\364\216\143\372\077 +\247\333\264\146\337\142\146\326\321\156\101\215\362\055\265\352 +\167\112\237\235\130\342\053\131\300\100\043\355\055\050\202\105 +\076\171\124\222\046\230\340\200\110\250\067\357\360\326\171\140 +\026\336\254\350\016\315\156\254\104\027\070\057\111\332\341\105 +\076\052\271\066\123\317\072\120\006\367\056\350\304\127\111\154 +\141\041\030\325\004\255\170\074\054\072\200\153\247\353\257\025 +\024\351\330\211\301\271\070\154\342\221\154\212\377\144\271\167 +\045\127\060\300\033\044\243\341\334\351\337\107\174\265\264\044 +\010\005\060\354\055\275\013\277\105\277\120\271\251\363\353\230 +\001\022\255\310\210\306\230\064\137\215\012\074\306\351\325\225 +\225\155\336 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert Global Root CA" +# Issuer: CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:08:3b:e0:56:90:42:46:b1:a1:75:6a:c9:59:91:c7:4a +# Subject: CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Fri Nov 10 00:00:00 2006 +# Not Valid After : Mon Nov 10 00:00:00 2031 +# Fingerprint (SHA-256): 43:48:A0:E9:44:4C:78:CB:26:5E:05:8D:5E:89:44:B4:D8:4F:96:62:BD:26:DB:25:7F:89:34:A4:43:C7:01:61 +# Fingerprint (SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Global Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\250\230\135\072\145\345\345\304\262\327\326\155\100\306\335\057 +\261\234\124\066 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\171\344\251\204\015\175\072\226\327\300\117\342\103\114\211\056 +END +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151 +\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\010\073\340\126\220\102\106\261\241\165\152\311\131\221 +\307\112 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert High Assurance EV Root CA" +# +# Issuer: CN=DigiCert High Assurance EV Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:02:ac:5c:26:6a:0b:40:9b:8f:0b:79:f2:ae:46:25:77 +# Subject: CN=DigiCert High Assurance EV Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Fri Nov 10 00:00:00 2006 +# Not Valid After : Mon Nov 10 00:00:00 2031 +# Fingerprint (SHA-256): 74:31:E5:F4:C3:C1:CE:46:90:77:4F:0B:61:E0:54:40:88:3B:A9:A0:1E:D0:0B:A6:AB:D7:80:6E:D3:B1:18:CF +# Fingerprint (SHA1): 5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert High Assurance EV Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\154\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\053\060\051\006\003\125\004\003\023\042\104\151\147\151 +\103\145\162\164\040\110\151\147\150\040\101\163\163\165\162\141 +\156\143\145\040\105\126\040\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\154\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\053\060\051\006\003\125\004\003\023\042\104\151\147\151 +\103\145\162\164\040\110\151\147\150\040\101\163\163\165\162\141 +\156\143\145\040\105\126\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\002\254\134\046\152\013\100\233\217\013\171\362\256\106 +\045\167 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\305\060\202\002\255\240\003\002\001\002\002\020\002 +\254\134\046\152\013\100\233\217\013\171\362\256\106\045\167\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\154 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060 +\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164 +\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167 +\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061 +\053\060\051\006\003\125\004\003\023\042\104\151\147\151\103\145 +\162\164\040\110\151\147\150\040\101\163\163\165\162\141\156\143 +\145\040\105\126\040\122\157\157\164\040\103\101\060\036\027\015 +\060\066\061\061\061\060\060\060\060\060\060\060\132\027\015\063 +\061\061\061\061\060\060\060\060\060\060\060\132\060\154\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\025\060\023\006 +\003\125\004\012\023\014\104\151\147\151\103\145\162\164\040\111 +\156\143\061\031\060\027\006\003\125\004\013\023\020\167\167\167 +\056\144\151\147\151\143\145\162\164\056\143\157\155\061\053\060 +\051\006\003\125\004\003\023\042\104\151\147\151\103\145\162\164 +\040\110\151\147\150\040\101\163\163\165\162\141\156\143\145\040 +\105\126\040\122\157\157\164\040\103\101\060\202\001\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001 +\017\000\060\202\001\012\002\202\001\001\000\306\314\345\163\346 +\373\324\273\345\055\055\062\246\337\345\201\077\311\315\045\111 +\266\161\052\303\325\224\064\147\242\012\034\260\137\151\246\100 +\261\304\267\262\217\320\230\244\251\101\131\072\323\334\224\326 +\074\333\164\070\244\112\314\115\045\202\367\112\245\123\022\070 +\356\363\111\155\161\221\176\143\266\253\246\137\303\244\204\370 +\117\142\121\276\370\305\354\333\070\222\343\006\345\010\221\014 +\304\050\101\125\373\313\132\211\025\176\161\350\065\277\115\162 +\011\075\276\072\070\120\133\167\061\033\215\263\307\044\105\232 +\247\254\155\000\024\132\004\267\272\023\353\121\012\230\101\101 +\042\116\145\141\207\201\101\120\246\171\134\211\336\031\112\127 +\325\056\346\135\034\123\054\176\230\315\032\006\026\244\150\163 +\320\064\004\023\134\241\161\323\132\174\125\333\136\144\341\067 +\207\060\126\004\345\021\264\051\200\022\361\171\071\210\242\002 +\021\174\047\146\267\210\267\170\362\312\012\250\070\253\012\144 +\302\277\146\135\225\204\301\241\045\036\207\135\032\120\013\040 +\022\314\101\273\156\013\121\070\270\113\313\002\003\001\000\001 +\243\143\060\141\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\206\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024 +\261\076\303\151\003\370\277\107\001\324\230\046\032\010\002\357 +\143\144\053\303\060\037\006\003\125\035\043\004\030\060\026\200 +\024\261\076\303\151\003\370\277\107\001\324\230\046\032\010\002 +\357\143\144\053\303\060\015\006\011\052\206\110\206\367\015\001 +\001\005\005\000\003\202\001\001\000\034\032\006\227\334\327\234 +\237\074\210\146\006\010\127\041\333\041\107\370\052\147\252\277 +\030\062\166\100\020\127\301\212\363\172\331\021\145\216\065\372 +\236\374\105\265\236\331\114\061\113\270\221\350\103\054\216\263 +\170\316\333\343\123\171\161\326\345\041\224\001\332\125\207\232 +\044\144\366\212\146\314\336\234\067\315\250\064\261\151\233\043 +\310\236\170\042\053\160\103\343\125\107\061\141\031\357\130\305 +\205\057\116\060\366\240\061\026\043\310\347\342\145\026\063\313 +\277\032\033\240\075\370\312\136\213\061\213\140\010\211\055\014 +\006\134\122\267\304\371\012\230\321\025\137\237\022\276\174\066 +\143\070\275\104\244\177\344\046\053\012\304\227\151\015\351\214 +\342\300\020\127\270\310\166\022\221\125\362\110\151\330\274\052 +\002\133\017\104\324\040\061\333\364\272\160\046\135\220\140\236 +\274\113\027\011\057\264\313\036\103\150\311\007\047\301\322\134 +\367\352\041\271\150\022\234\074\234\277\236\374\200\134\233\143 +\315\354\107\252\045\047\147\240\067\363\000\202\175\124\327\251 +\370\351\056\023\243\167\350\037\112 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert High Assurance EV Root CA" +# Issuer: CN=DigiCert High Assurance EV Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:02:ac:5c:26:6a:0b:40:9b:8f:0b:79:f2:ae:46:25:77 +# Subject: CN=DigiCert High Assurance EV Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Fri Nov 10 00:00:00 2006 +# Not Valid After : Mon Nov 10 00:00:00 2031 +# Fingerprint (SHA-256): 74:31:E5:F4:C3:C1:CE:46:90:77:4F:0B:61:E0:54:40:88:3B:A9:A0:1E:D0:0B:A6:AB:D7:80:6E:D3:B1:18:CF +# Fingerprint (SHA1): 5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert High Assurance EV Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\137\267\356\006\063\342\131\333\255\014\114\232\346\323\217\032 +\141\307\334\045 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\324\164\336\127\134\071\262\323\234\205\203\305\300\145\111\212 +END +CKA_ISSUER MULTILINE_OCTAL +\060\154\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\053\060\051\006\003\125\004\003\023\042\104\151\147\151 +\103\145\162\164\040\110\151\147\150\040\101\163\163\165\162\141 +\156\143\145\040\105\126\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\002\254\134\046\152\013\100\233\217\013\171\362\256\106 +\045\167 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SwissSign Gold CA - G2" +# +# Issuer: CN=SwissSign Gold CA - G2,O=SwissSign AG,C=CH +# Serial Number:00:bb:40:1c:43:f5:5e:4f:b0 +# Subject: CN=SwissSign Gold CA - G2,O=SwissSign AG,C=CH +# Not Valid Before: Wed Oct 25 08:30:35 2006 +# Not Valid After : Sat Oct 25 08:30:35 2036 +# Fingerprint (SHA-256): 62:DD:0B:E9:B9:F5:0A:16:3E:A0:F8:E7:5C:05:3B:1E:CA:57:EA:55:C8:68:8F:64:7C:68:81:F2:C8:35:7B:95 +# Fingerprint (SHA1): D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SwissSign Gold CA - G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 +\151\147\156\040\101\107\061\037\060\035\006\003\125\004\003\023 +\026\123\167\151\163\163\123\151\147\156\040\107\157\154\144\040 +\103\101\040\055\040\107\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 +\151\147\156\040\101\107\061\037\060\035\006\003\125\004\003\023 +\026\123\167\151\163\163\123\151\147\156\040\107\157\154\144\040 +\103\101\040\055\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\273\100\034\103\365\136\117\260 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\272\060\202\003\242\240\003\002\001\002\002\011\000 +\273\100\034\103\365\136\117\260\060\015\006\011\052\206\110\206 +\367\015\001\001\005\005\000\060\105\061\013\060\011\006\003\125 +\004\006\023\002\103\110\061\025\060\023\006\003\125\004\012\023 +\014\123\167\151\163\163\123\151\147\156\040\101\107\061\037\060 +\035\006\003\125\004\003\023\026\123\167\151\163\163\123\151\147 +\156\040\107\157\154\144\040\103\101\040\055\040\107\062\060\036 +\027\015\060\066\061\060\062\065\060\070\063\060\063\065\132\027 +\015\063\066\061\060\062\065\060\070\063\060\063\065\132\060\105 +\061\013\060\011\006\003\125\004\006\023\002\103\110\061\025\060 +\023\006\003\125\004\012\023\014\123\167\151\163\163\123\151\147 +\156\040\101\107\061\037\060\035\006\003\125\004\003\023\026\123 +\167\151\163\163\123\151\147\156\040\107\157\154\144\040\103\101 +\040\055\040\107\062\060\202\002\042\060\015\006\011\052\206\110 +\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002 +\012\002\202\002\001\000\257\344\356\176\213\044\016\022\156\251 +\120\055\026\104\073\222\222\134\312\270\135\204\222\102\023\052 +\274\145\127\202\100\076\127\044\315\120\213\045\052\267\157\374 +\357\242\320\300\037\002\044\112\023\226\217\043\023\346\050\130 +\000\243\107\307\006\247\204\043\053\273\275\226\053\177\125\314 +\213\301\127\037\016\142\145\017\335\075\126\212\163\332\256\176 +\155\272\201\034\176\102\214\040\065\331\103\115\204\372\204\333 +\122\054\363\016\047\167\013\153\277\021\057\162\170\237\056\330 +\076\346\030\067\132\052\162\371\332\142\220\222\225\312\037\234 +\351\263\074\053\313\363\001\023\277\132\317\301\265\012\140\275 +\335\265\231\144\123\270\240\226\263\157\342\046\167\221\214\340 +\142\020\002\237\064\017\244\325\222\063\121\336\276\215\272\204 +\172\140\074\152\333\237\053\354\336\336\001\077\156\115\345\120 +\206\313\264\257\355\104\100\305\312\132\214\332\322\053\174\250 +\356\276\246\345\012\252\016\245\337\005\122\267\125\307\042\135 +\062\152\227\227\143\023\333\311\333\171\066\173\205\072\112\305 +\122\211\371\044\347\235\167\251\202\377\125\034\245\161\151\053 +\321\002\044\362\263\046\324\153\332\004\125\345\301\012\307\155 +\060\067\220\052\344\236\024\063\136\026\027\125\305\133\265\313 +\064\211\222\361\235\046\217\241\007\324\306\262\170\120\333\014 +\014\013\174\013\214\101\327\271\351\335\214\210\367\243\115\262 +\062\314\330\027\332\315\267\316\146\235\324\375\136\377\275\227 +\076\051\165\347\176\247\142\130\257\045\064\245\101\307\075\274 +\015\120\312\003\003\017\010\132\037\225\163\170\142\277\257\162 +\024\151\016\245\345\003\016\170\216\046\050\102\360\007\013\142 +\040\020\147\071\106\372\251\003\314\004\070\172\146\357\040\203 +\265\214\112\126\216\221\000\374\216\134\202\336\210\240\303\342 +\150\156\175\215\357\074\335\145\364\135\254\121\357\044\200\256 +\252\126\227\157\371\255\175\332\141\077\230\167\074\245\221\266 +\034\214\046\332\145\242\011\155\301\342\124\343\271\312\114\114 +\200\217\167\173\140\232\036\337\266\362\110\036\016\272\116\124 +\155\230\340\341\242\032\242\167\120\317\304\143\222\354\107\031 +\235\353\346\153\316\301\002\003\001\000\001\243\201\254\060\201 +\251\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 +\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\035\006\003\125\035\016\004\026\004\024\133\045\173 +\226\244\145\121\176\270\071\363\300\170\146\136\350\072\347\360 +\356\060\037\006\003\125\035\043\004\030\060\026\200\024\133\045 +\173\226\244\145\121\176\270\071\363\300\170\146\136\350\072\347 +\360\356\060\106\006\003\125\035\040\004\077\060\075\060\073\006 +\011\140\205\164\001\131\001\002\001\001\060\056\060\054\006\010 +\053\006\001\005\005\007\002\001\026\040\150\164\164\160\072\057 +\057\162\145\160\157\163\151\164\157\162\171\056\163\167\151\163 +\163\163\151\147\156\056\143\157\155\057\060\015\006\011\052\206 +\110\206\367\015\001\001\005\005\000\003\202\002\001\000\047\272 +\343\224\174\361\256\300\336\027\346\345\330\325\365\124\260\203 +\364\273\315\136\005\173\117\237\165\146\257\074\350\126\176\374 +\162\170\070\003\331\053\142\033\000\271\370\351\140\315\314\316 +\121\212\307\120\061\156\341\112\176\030\057\151\131\266\075\144 +\201\053\343\203\204\346\042\207\216\175\340\356\002\231\141\270 +\036\364\270\053\210\022\026\204\302\061\223\070\226\061\246\271 +\073\123\077\303\044\223\126\133\151\222\354\305\301\273\070\000 +\343\354\027\251\270\334\307\174\001\203\237\062\107\272\122\042 +\064\035\062\172\011\126\247\174\045\066\251\075\113\332\300\202 +\157\012\273\022\310\207\113\047\021\371\036\055\307\223\077\236 +\333\137\046\153\122\331\056\212\361\024\306\104\215\025\251\267 +\277\275\336\246\032\356\256\055\373\110\167\027\376\273\354\257 +\030\365\052\121\360\071\204\227\225\154\156\033\303\053\304\164 +\140\171\045\260\012\047\337\337\136\322\071\317\105\175\102\113 +\337\263\054\036\305\306\135\312\125\072\240\234\151\232\217\332 +\357\262\260\074\237\207\154\022\053\145\160\025\122\061\032\044 +\317\157\061\043\120\037\214\117\217\043\303\164\101\143\034\125 +\250\024\335\076\340\121\120\317\361\033\060\126\016\222\260\202 +\205\330\203\313\042\144\274\055\270\045\325\124\242\270\006\352 +\255\222\244\044\240\301\206\265\112\023\152\107\317\056\013\126 +\225\124\313\316\232\333\152\264\246\262\333\101\010\206\047\167 +\367\152\240\102\154\013\070\316\327\165\120\062\222\302\337\053 +\060\042\110\320\325\101\070\045\135\244\351\135\237\306\224\165 +\320\105\375\060\227\103\217\220\253\012\307\206\163\140\112\151 +\055\336\245\170\327\006\332\152\236\113\076\167\072\040\023\042 +\001\320\277\150\236\143\140\153\065\115\013\155\272\241\075\300 +\223\340\177\043\263\125\255\162\045\116\106\371\322\026\357\260 +\144\301\001\236\351\312\240\152\230\016\317\330\140\362\057\111 +\270\344\102\341\070\065\026\364\310\156\117\367\201\126\350\272 +\243\276\043\257\256\375\157\003\340\002\073\060\166\372\033\155 +\101\317\001\261\351\270\311\146\364\333\046\363\072\244\164\362 +\111\044\133\311\260\320\127\301\372\076\172\341\227\311 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SwissSign Gold CA - G2" +# Issuer: CN=SwissSign Gold CA - G2,O=SwissSign AG,C=CH +# Serial Number:00:bb:40:1c:43:f5:5e:4f:b0 +# Subject: CN=SwissSign Gold CA - G2,O=SwissSign AG,C=CH +# Not Valid Before: Wed Oct 25 08:30:35 2006 +# Not Valid After : Sat Oct 25 08:30:35 2036 +# Fingerprint (SHA-256): 62:DD:0B:E9:B9:F5:0A:16:3E:A0:F8:E7:5C:05:3B:1E:CA:57:EA:55:C8:68:8F:64:7C:68:81:F2:C8:35:7B:95 +# Fingerprint (SHA1): D8:C5:38:8A:B7:30:1B:1B:6E:D4:7A:E6:45:25:3A:6F:9F:1A:27:61 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SwissSign Gold CA - G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\330\305\070\212\267\060\033\033\156\324\172\346\105\045\072\157 +\237\032\047\141 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\044\167\331\250\221\321\073\372\210\055\302\377\370\315\063\223 +END +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 +\151\147\156\040\101\107\061\037\060\035\006\003\125\004\003\023 +\026\123\167\151\163\163\123\151\147\156\040\107\157\154\144\040 +\103\101\040\055\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\273\100\034\103\365\136\117\260 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SwissSign Silver CA - G2" +# +# Issuer: CN=SwissSign Silver CA - G2,O=SwissSign AG,C=CH +# Serial Number:4f:1b:d4:2f:54:bb:2f:4b +# Subject: CN=SwissSign Silver CA - G2,O=SwissSign AG,C=CH +# Not Valid Before: Wed Oct 25 08:32:46 2006 +# Not Valid After : Sat Oct 25 08:32:46 2036 +# Fingerprint (SHA-256): BE:6C:4D:A2:BB:B9:BA:59:B6:F3:93:97:68:37:42:46:C3:C0:05:99:3F:A9:8F:02:0D:1D:ED:BE:D4:8A:81:D5 +# Fingerprint (SHA1): 9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CB +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SwissSign Silver CA - G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 +\151\147\156\040\101\107\061\041\060\037\006\003\125\004\003\023 +\030\123\167\151\163\163\123\151\147\156\040\123\151\154\166\145 +\162\040\103\101\040\055\040\107\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 +\151\147\156\040\101\107\061\041\060\037\006\003\125\004\003\023 +\030\123\167\151\163\163\123\151\147\156\040\123\151\154\166\145 +\162\040\103\101\040\055\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\117\033\324\057\124\273\057\113 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\275\060\202\003\245\240\003\002\001\002\002\010\117 +\033\324\057\124\273\057\113\060\015\006\011\052\206\110\206\367 +\015\001\001\005\005\000\060\107\061\013\060\011\006\003\125\004 +\006\023\002\103\110\061\025\060\023\006\003\125\004\012\023\014 +\123\167\151\163\163\123\151\147\156\040\101\107\061\041\060\037 +\006\003\125\004\003\023\030\123\167\151\163\163\123\151\147\156 +\040\123\151\154\166\145\162\040\103\101\040\055\040\107\062\060 +\036\027\015\060\066\061\060\062\065\060\070\063\062\064\066\132 +\027\015\063\066\061\060\062\065\060\070\063\062\064\066\132\060 +\107\061\013\060\011\006\003\125\004\006\023\002\103\110\061\025 +\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123\151 +\147\156\040\101\107\061\041\060\037\006\003\125\004\003\023\030 +\123\167\151\163\163\123\151\147\156\040\123\151\154\166\145\162 +\040\103\101\040\055\040\107\062\060\202\002\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 +\060\202\002\012\002\202\002\001\000\304\361\207\177\323\170\061 +\367\070\311\370\303\231\103\274\307\367\274\067\347\116\161\272 +\113\217\245\163\035\134\156\230\256\003\127\256\070\067\103\057 +\027\075\037\310\316\150\020\301\170\256\031\003\053\020\372\054 +\171\203\366\350\271\150\271\125\362\004\104\247\071\371\374\004 +\213\036\361\242\115\047\371\141\173\272\267\345\242\023\266\353 +\141\076\320\154\321\346\373\372\136\355\035\264\236\240\065\133 +\241\222\313\360\111\222\376\205\012\005\076\346\331\013\342\117 +\273\334\225\067\374\221\351\062\065\042\321\037\072\116\047\205 +\235\260\025\224\062\332\141\015\107\115\140\102\256\222\107\350 +\203\132\120\130\351\212\213\271\135\241\334\335\231\112\037\066 +\147\273\110\344\203\266\067\353\110\072\257\017\147\217\027\007 +\350\004\312\357\152\061\207\324\300\266\371\224\161\173\147\144 +\270\266\221\112\102\173\145\056\060\152\014\365\220\356\225\346 +\362\315\202\354\331\241\112\354\366\262\113\345\105\205\346\155 +\170\223\004\056\234\202\155\066\251\304\061\144\037\206\203\013 +\052\364\065\012\170\311\125\317\101\260\107\351\060\237\231\276 +\141\250\006\204\271\050\172\137\070\331\033\251\070\260\203\177 +\163\301\303\073\110\052\202\017\041\233\270\314\250\065\303\204 +\033\203\263\076\276\244\225\151\001\072\211\000\170\004\331\311 +\364\231\031\253\126\176\133\213\206\071\025\221\244\020\054\011 +\062\200\140\263\223\300\052\266\030\013\235\176\215\111\362\020 +\112\177\371\325\106\057\031\222\243\231\247\046\254\273\214\074 +\346\016\274\107\007\334\163\121\361\160\144\057\010\371\264\107 +\035\060\154\104\352\051\067\205\222\150\146\274\203\070\376\173 +\071\056\323\120\360\037\373\136\140\266\251\246\372\047\101\361 +\233\030\162\362\365\204\164\112\311\147\304\124\256\110\144\337 +\214\321\156\260\035\341\007\217\010\036\231\234\161\351\114\330 +\245\367\107\022\037\164\321\121\236\206\363\302\242\043\100\013 +\163\333\113\246\347\163\006\214\301\240\351\301\131\254\106\372 +\346\057\370\317\161\234\106\155\271\304\025\215\070\171\003\105 +\110\357\304\135\327\010\356\207\071\042\206\262\015\017\130\103 +\367\161\251\110\056\375\352\326\037\002\003\001\000\001\243\201 +\254\060\201\251\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024 +\027\240\315\301\344\101\266\072\133\073\313\105\235\275\034\302 +\230\372\206\130\060\037\006\003\125\035\043\004\030\060\026\200 +\024\027\240\315\301\344\101\266\072\133\073\313\105\235\275\034 +\302\230\372\206\130\060\106\006\003\125\035\040\004\077\060\075 +\060\073\006\011\140\205\164\001\131\001\003\001\001\060\056\060 +\054\006\010\053\006\001\005\005\007\002\001\026\040\150\164\164 +\160\072\057\057\162\145\160\157\163\151\164\157\162\171\056\163 +\167\151\163\163\163\151\147\156\056\143\157\155\057\060\015\006 +\011\052\206\110\206\367\015\001\001\005\005\000\003\202\002\001 +\000\163\306\201\340\047\322\055\017\340\225\060\342\232\101\177 +\120\054\137\137\142\141\251\206\152\151\030\014\164\111\326\135 +\204\352\101\122\030\157\130\255\120\126\040\152\306\275\050\151 +\130\221\334\221\021\065\251\072\035\274\032\245\140\236\330\037 +\177\105\221\151\331\176\273\170\162\301\006\017\052\316\217\205 +\160\141\254\240\315\013\270\071\051\126\204\062\116\206\273\075 +\304\052\331\327\037\162\356\376\121\241\042\101\261\161\002\143 +\032\202\260\142\253\136\127\022\037\337\313\335\165\240\300\135 +\171\220\214\033\340\120\346\336\061\376\230\173\160\137\245\220 +\330\255\370\002\266\157\323\140\335\100\113\042\305\075\255\072 +\172\237\032\032\107\221\171\063\272\202\334\062\151\003\226\156 +\037\113\360\161\376\343\147\162\240\261\277\134\213\344\372\231 +\042\307\204\271\033\215\043\227\077\355\045\340\317\145\273\365 +\141\004\357\335\036\262\132\101\042\132\241\237\135\054\350\133 +\311\155\251\014\014\170\252\140\306\126\217\001\132\014\150\274 +\151\031\171\304\037\176\227\005\277\305\351\044\121\136\324\325 +\113\123\355\331\043\132\066\003\145\243\301\003\255\101\060\363 +\106\033\205\220\257\145\265\325\261\344\026\133\170\165\035\227 +\172\155\131\251\052\217\173\336\303\207\211\020\231\111\163\170 +\310\075\275\121\065\164\052\325\361\176\151\033\052\273\073\275 +\045\270\232\132\075\162\141\220\146\207\356\014\326\115\324\021 +\164\013\152\376\013\003\374\243\125\127\211\376\112\313\256\133 +\027\005\310\362\215\043\061\123\070\322\055\152\077\202\271\215 +\010\152\367\136\101\164\156\303\021\176\007\254\051\140\221\077 +\070\312\127\020\015\275\060\057\307\245\346\101\240\332\256\005 +\207\232\240\244\145\154\114\011\014\211\272\270\323\271\300\223 +\212\060\372\215\345\232\153\025\001\116\147\252\332\142\126\076 +\204\010\146\322\304\066\175\247\076\020\374\210\340\324\200\345 +\000\275\252\363\116\006\243\172\152\371\142\162\343\011\117\353 +\233\016\001\043\361\237\273\174\334\334\154\021\227\045\262\362 +\264\143\024\322\006\052\147\214\203\365\316\352\007\330\232\152 +\036\354\344\012\273\052\114\353\011\140\071\316\312\142\330\056 +\156 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SwissSign Silver CA - G2" +# Issuer: CN=SwissSign Silver CA - G2,O=SwissSign AG,C=CH +# Serial Number:4f:1b:d4:2f:54:bb:2f:4b +# Subject: CN=SwissSign Silver CA - G2,O=SwissSign AG,C=CH +# Not Valid Before: Wed Oct 25 08:32:46 2006 +# Not Valid After : Sat Oct 25 08:32:46 2036 +# Fingerprint (SHA-256): BE:6C:4D:A2:BB:B9:BA:59:B6:F3:93:97:68:37:42:46:C3:C0:05:99:3F:A9:8F:02:0D:1D:ED:BE:D4:8A:81:D5 +# Fingerprint (SHA1): 9B:AA:E5:9F:56:EE:21:CB:43:5A:BE:25:93:DF:A7:F0:40:D1:1D:CB +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SwissSign Silver CA - G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\233\252\345\237\126\356\041\313\103\132\276\045\223\337\247\360 +\100\321\035\313 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\340\006\241\311\175\317\311\374\015\300\126\165\226\330\142\023 +END +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\025\060\023\006\003\125\004\012\023\014\123\167\151\163\163\123 +\151\147\156\040\101\107\061\041\060\037\006\003\125\004\003\023 +\030\123\167\151\163\163\123\151\147\156\040\123\151\154\166\145 +\162\040\103\101\040\055\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\117\033\324\057\124\273\057\113 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SecureTrust CA" +# +# Issuer: CN=SecureTrust CA,O=SecureTrust Corporation,C=US +# Serial Number:0c:f0:8e:5c:08:16:a5:ad:42:7f:f0:eb:27:18:59:d0 +# Subject: CN=SecureTrust CA,O=SecureTrust Corporation,C=US +# Not Valid Before: Tue Nov 07 19:31:18 2006 +# Not Valid After : Mon Dec 31 19:40:55 2029 +# Fingerprint (SHA-256): F1:C1:B5:0A:E5:A2:0D:D8:03:0E:C9:F6:BC:24:82:3D:D3:67:B5:25:57:59:B4:E7:1B:61:FC:E9:F7:37:5D:73 +# Fingerprint (SHA1): 87:82:C6:C3:04:35:3B:CF:D2:96:92:D2:59:3E:7D:44:D9:34:FF:11 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SecureTrust CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145 +\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157 +\156\061\027\060\025\006\003\125\004\003\023\016\123\145\143\165 +\162\145\124\162\165\163\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145 +\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157 +\156\061\027\060\025\006\003\125\004\003\023\016\123\145\143\165 +\162\145\124\162\165\163\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\014\360\216\134\010\026\245\255\102\177\360\353\047\030 +\131\320 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\270\060\202\002\240\240\003\002\001\002\002\020\014 +\360\216\134\010\026\245\255\102\177\360\353\047\030\131\320\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\110 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\040\060 +\036\006\003\125\004\012\023\027\123\145\143\165\162\145\124\162 +\165\163\164\040\103\157\162\160\157\162\141\164\151\157\156\061 +\027\060\025\006\003\125\004\003\023\016\123\145\143\165\162\145 +\124\162\165\163\164\040\103\101\060\036\027\015\060\066\061\061 +\060\067\061\071\063\061\061\070\132\027\015\062\071\061\062\063 +\061\061\071\064\060\065\065\132\060\110\061\013\060\011\006\003 +\125\004\006\023\002\125\123\061\040\060\036\006\003\125\004\012 +\023\027\123\145\143\165\162\145\124\162\165\163\164\040\103\157 +\162\160\157\162\141\164\151\157\156\061\027\060\025\006\003\125 +\004\003\023\016\123\145\143\165\162\145\124\162\165\163\164\040 +\103\101\060\202\001\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202 +\001\001\000\253\244\201\345\225\315\365\366\024\216\302\117\312 +\324\342\170\225\130\234\101\341\015\231\100\044\027\071\221\063 +\146\351\276\341\203\257\142\134\211\321\374\044\133\141\263\340 +\021\021\101\034\035\156\360\270\273\370\336\247\201\272\246\110 +\306\237\035\275\276\216\251\101\076\270\224\355\051\032\324\216 +\322\003\035\003\357\155\015\147\034\127\327\006\255\312\310\365 +\376\016\257\146\045\110\004\226\013\135\243\272\026\303\010\117 +\321\106\370\024\134\362\310\136\001\231\155\375\210\314\206\250 +\301\157\061\102\154\122\076\150\313\363\031\064\337\273\207\030 +\126\200\046\304\320\334\300\157\337\336\240\302\221\026\240\144 +\021\113\104\274\036\366\347\372\143\336\146\254\166\244\161\243 +\354\066\224\150\172\167\244\261\347\016\057\201\172\342\265\162 +\206\357\242\153\213\360\017\333\323\131\077\272\162\274\104\044 +\234\343\163\263\367\257\127\057\102\046\235\251\164\272\000\122 +\362\113\315\123\174\107\013\066\205\016\146\251\010\227\026\064 +\127\301\146\367\200\343\355\160\124\307\223\340\056\050\025\131 +\207\272\273\002\003\001\000\001\243\201\235\060\201\232\060\023 +\006\011\053\006\001\004\001\202\067\024\002\004\006\036\004\000 +\103\000\101\060\013\006\003\125\035\017\004\004\003\002\001\206 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\035\006\003\125\035\016\004\026\004\024\102\062\266\026 +\372\004\375\376\135\113\172\303\375\367\114\100\035\132\103\257 +\060\064\006\003\125\035\037\004\055\060\053\060\051\240\047\240 +\045\206\043\150\164\164\160\072\057\057\143\162\154\056\163\145 +\143\165\162\145\164\162\165\163\164\056\143\157\155\057\123\124 +\103\101\056\143\162\154\060\020\006\011\053\006\001\004\001\202 +\067\025\001\004\003\002\001\000\060\015\006\011\052\206\110\206 +\367\015\001\001\005\005\000\003\202\001\001\000\060\355\117\112 +\341\130\072\122\162\133\265\246\243\145\030\246\273\121\073\167 +\351\235\352\323\237\134\340\105\145\173\015\312\133\342\160\120 +\262\224\005\024\256\111\307\215\101\007\022\163\224\176\014\043 +\041\375\274\020\177\140\020\132\162\365\230\016\254\354\271\177 +\335\172\157\135\323\034\364\377\210\005\151\102\251\005\161\310 +\267\254\046\350\056\264\214\152\377\161\334\270\261\337\231\274 +\174\041\124\053\344\130\242\273\127\051\256\236\251\243\031\046 +\017\231\056\010\260\357\375\151\317\231\032\011\215\343\247\237 +\053\311\066\064\173\044\263\170\114\225\027\244\006\046\036\266 +\144\122\066\137\140\147\331\234\305\005\164\013\347\147\043\322 +\010\374\210\351\256\213\177\341\060\364\067\176\375\306\062\332 +\055\236\104\060\060\154\356\007\336\322\064\374\322\377\100\366 +\113\364\146\106\006\124\246\362\062\012\143\046\060\153\233\321 +\334\213\107\272\341\271\325\142\320\242\240\364\147\005\170\051 +\143\032\157\004\326\370\306\114\243\232\261\067\264\215\345\050 +\113\035\236\054\302\270\150\274\355\002\356\061 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SecureTrust CA" +# Issuer: CN=SecureTrust CA,O=SecureTrust Corporation,C=US +# Serial Number:0c:f0:8e:5c:08:16:a5:ad:42:7f:f0:eb:27:18:59:d0 +# Subject: CN=SecureTrust CA,O=SecureTrust Corporation,C=US +# Not Valid Before: Tue Nov 07 19:31:18 2006 +# Not Valid After : Mon Dec 31 19:40:55 2029 +# Fingerprint (SHA-256): F1:C1:B5:0A:E5:A2:0D:D8:03:0E:C9:F6:BC:24:82:3D:D3:67:B5:25:57:59:B4:E7:1B:61:FC:E9:F7:37:5D:73 +# Fingerprint (SHA1): 87:82:C6:C3:04:35:3B:CF:D2:96:92:D2:59:3E:7D:44:D9:34:FF:11 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SecureTrust CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\207\202\306\303\004\065\073\317\322\226\222\322\131\076\175\104 +\331\064\377\021 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\334\062\303\247\155\045\127\307\150\011\235\352\055\251\242\321 +END +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145 +\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157 +\156\061\027\060\025\006\003\125\004\003\023\016\123\145\143\165 +\162\145\124\162\165\163\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\014\360\216\134\010\026\245\255\102\177\360\353\047\030 +\131\320 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Secure Global CA" +# +# Issuer: CN=Secure Global CA,O=SecureTrust Corporation,C=US +# Serial Number:07:56:22:a4:e8:d4:8a:89:4d:f4:13:c8:f0:f8:ea:a5 +# Subject: CN=Secure Global CA,O=SecureTrust Corporation,C=US +# Not Valid Before: Tue Nov 07 19:42:28 2006 +# Not Valid After : Mon Dec 31 19:52:06 2029 +# Fingerprint (SHA-256): 42:00:F5:04:3A:C8:59:0E:BB:52:7D:20:9E:D1:50:30:29:FB:CB:D4:1C:A1:B5:06:EC:27:F1:5A:DE:7D:AC:69 +# Fingerprint (SHA1): 3A:44:73:5A:E5:81:90:1F:24:86:61:46:1E:3B:9C:C4:5F:F5:3A:1B +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Secure Global CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\112\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145 +\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157 +\156\061\031\060\027\006\003\125\004\003\023\020\123\145\143\165 +\162\145\040\107\154\157\142\141\154\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\112\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145 +\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157 +\156\061\031\060\027\006\003\125\004\003\023\020\123\145\143\165 +\162\145\040\107\154\157\142\141\154\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\007\126\042\244\350\324\212\211\115\364\023\310\360\370 +\352\245 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\274\060\202\002\244\240\003\002\001\002\002\020\007 +\126\042\244\350\324\212\211\115\364\023\310\360\370\352\245\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\112 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\040\060 +\036\006\003\125\004\012\023\027\123\145\143\165\162\145\124\162 +\165\163\164\040\103\157\162\160\157\162\141\164\151\157\156\061 +\031\060\027\006\003\125\004\003\023\020\123\145\143\165\162\145 +\040\107\154\157\142\141\154\040\103\101\060\036\027\015\060\066 +\061\061\060\067\061\071\064\062\062\070\132\027\015\062\071\061 +\062\063\061\061\071\065\062\060\066\132\060\112\061\013\060\011 +\006\003\125\004\006\023\002\125\123\061\040\060\036\006\003\125 +\004\012\023\027\123\145\143\165\162\145\124\162\165\163\164\040 +\103\157\162\160\157\162\141\164\151\157\156\061\031\060\027\006 +\003\125\004\003\023\020\123\145\143\165\162\145\040\107\154\157 +\142\141\154\040\103\101\060\202\001\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202 +\001\012\002\202\001\001\000\257\065\056\330\254\154\125\151\006 +\161\345\023\150\044\263\117\330\314\041\107\370\361\140\070\211 +\211\003\351\275\352\136\106\123\011\334\134\365\132\350\367\105 +\052\002\353\061\141\327\051\063\114\316\307\174\012\067\176\017 +\272\062\230\341\035\227\257\217\307\334\311\070\226\363\333\032 +\374\121\355\150\306\320\156\244\174\044\321\256\102\310\226\120 +\143\056\340\376\165\376\230\247\137\111\056\225\343\071\063\144 +\216\036\244\137\220\322\147\074\262\331\376\101\271\125\247\011 +\216\162\005\036\213\335\104\205\202\102\320\111\300\035\140\360 +\321\027\054\225\353\366\245\301\222\243\305\302\247\010\140\015 +\140\004\020\226\171\236\026\064\346\251\266\372\045\105\071\310 +\036\145\371\223\365\252\361\122\334\231\230\075\245\206\032\014 +\065\063\372\113\245\004\006\025\034\061\200\357\252\030\153\302 +\173\327\332\316\371\063\040\325\365\275\152\063\055\201\004\373 +\260\134\324\234\243\342\134\035\343\251\102\165\136\173\324\167 +\357\071\124\272\311\012\030\033\022\231\111\057\210\113\375\120 +\142\321\163\347\217\172\103\002\003\001\000\001\243\201\235\060 +\201\232\060\023\006\011\053\006\001\004\001\202\067\024\002\004 +\006\036\004\000\103\000\101\060\013\006\003\125\035\017\004\004 +\003\002\001\206\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024 +\257\104\004\302\101\176\110\203\333\116\071\002\354\354\204\172 +\346\316\311\244\060\064\006\003\125\035\037\004\055\060\053\060 +\051\240\047\240\045\206\043\150\164\164\160\072\057\057\143\162 +\154\056\163\145\143\165\162\145\164\162\165\163\164\056\143\157 +\155\057\123\107\103\101\056\143\162\154\060\020\006\011\053\006 +\001\004\001\202\067\025\001\004\003\002\001\000\060\015\006\011 +\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000 +\143\032\010\100\175\244\136\123\015\167\330\172\256\037\015\013 +\121\026\003\357\030\174\310\343\257\152\130\223\024\140\221\262 +\204\334\210\116\276\071\212\072\363\346\202\211\135\001\067\263 +\253\044\244\025\016\222\065\132\112\104\136\116\127\372\165\316 +\037\110\316\146\364\074\100\046\222\230\154\033\356\044\106\014 +\027\263\122\245\333\245\221\221\317\067\323\157\347\047\010\072 +\116\031\037\072\247\130\134\027\317\171\077\213\344\247\323\046 +\043\235\046\017\130\151\374\107\176\262\320\215\213\223\277\051 +\117\103\151\164\166\147\113\317\007\214\346\002\367\265\341\264 +\103\265\113\055\024\237\371\334\046\015\277\246\107\164\006\330 +\210\321\072\051\060\204\316\322\071\200\142\033\250\307\127\111 +\274\152\125\121\147\025\112\276\065\007\344\325\165\230\067\171 +\060\024\333\051\235\154\305\151\314\107\125\242\060\367\314\134 +\177\302\303\230\034\153\116\026\200\353\172\170\145\105\242\000 +\032\257\014\015\125\144\064\110\270\222\271\361\264\120\051\362 +\117\043\037\332\154\254\037\104\341\335\043\170\121\133\307\026 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Secure Global CA" +# Issuer: CN=Secure Global CA,O=SecureTrust Corporation,C=US +# Serial Number:07:56:22:a4:e8:d4:8a:89:4d:f4:13:c8:f0:f8:ea:a5 +# Subject: CN=Secure Global CA,O=SecureTrust Corporation,C=US +# Not Valid Before: Tue Nov 07 19:42:28 2006 +# Not Valid After : Mon Dec 31 19:52:06 2029 +# Fingerprint (SHA-256): 42:00:F5:04:3A:C8:59:0E:BB:52:7D:20:9E:D1:50:30:29:FB:CB:D4:1C:A1:B5:06:EC:27:F1:5A:DE:7D:AC:69 +# Fingerprint (SHA1): 3A:44:73:5A:E5:81:90:1F:24:86:61:46:1E:3B:9C:C4:5F:F5:3A:1B +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Secure Global CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\072\104\163\132\345\201\220\037\044\206\141\106\036\073\234\304 +\137\365\072\033 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\317\364\047\015\324\355\334\145\026\111\155\075\332\277\156\336 +END +CKA_ISSUER MULTILINE_OCTAL +\060\112\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\040\060\036\006\003\125\004\012\023\027\123\145\143\165\162\145 +\124\162\165\163\164\040\103\157\162\160\157\162\141\164\151\157 +\156\061\031\060\027\006\003\125\004\003\023\020\123\145\143\165 +\162\145\040\107\154\157\142\141\154\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\007\126\042\244\350\324\212\211\115\364\023\310\360\370 +\352\245 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "COMODO Certification Authority" +# +# Issuer: CN=COMODO Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Serial Number:4e:81:2d:8a:82:65:e0:0b:02:ee:3e:35:02:46:e5:3d +# Subject: CN=COMODO Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Not Valid Before: Fri Dec 01 00:00:00 2006 +# Not Valid After : Mon Dec 31 23:59:59 2029 +# Fingerprint (SHA-256): 0C:2C:D6:3D:F7:80:6F:A3:99:ED:E8:09:11:6B:57:5B:F8:79:89:F0:65:18:F9:80:8C:86:05:03:17:8B:AF:66 +# Fingerprint (SHA1): 66:31:BF:9E:F7:4F:9E:B6:C9:D5:A6:0C:BA:6A:BE:D1:F7:BD:EF:7B +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "COMODO Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\201\061\013\060\011\006\003\125\004\006\023\002\107\102 +\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164 +\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060 +\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061 +\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117 +\040\103\101\040\114\151\155\151\164\145\144\061\047\060\045\006 +\003\125\004\003\023\036\103\117\115\117\104\117\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\201\061\013\060\011\006\003\125\004\006\023\002\107\102 +\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164 +\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060 +\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061 +\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117 +\040\103\101\040\114\151\155\151\164\145\144\061\047\060\045\006 +\003\125\004\003\023\036\103\117\115\117\104\117\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\116\201\055\212\202\145\340\013\002\356\076\065\002\106 +\345\075 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\035\060\202\003\005\240\003\002\001\002\002\020\116 +\201\055\212\202\145\340\013\002\356\076\065\002\106\345\075\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201 +\201\061\013\060\011\006\003\125\004\006\023\002\107\102\061\033 +\060\031\006\003\125\004\010\023\022\107\162\145\141\164\145\162 +\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016\006 +\003\125\004\007\023\007\123\141\154\146\157\162\144\061\032\060 +\030\006\003\125\004\012\023\021\103\117\115\117\104\117\040\103 +\101\040\114\151\155\151\164\145\144\061\047\060\045\006\003\125 +\004\003\023\036\103\117\115\117\104\117\040\103\145\162\164\151 +\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151 +\164\171\060\036\027\015\060\066\061\062\060\061\060\060\060\060 +\060\060\132\027\015\062\071\061\062\063\061\062\063\065\071\065 +\071\132\060\201\201\061\013\060\011\006\003\125\004\006\023\002 +\107\102\061\033\060\031\006\003\125\004\010\023\022\107\162\145 +\141\164\145\162\040\115\141\156\143\150\145\163\164\145\162\061 +\020\060\016\006\003\125\004\007\023\007\123\141\154\146\157\162 +\144\061\032\060\030\006\003\125\004\012\023\021\103\117\115\117 +\104\117\040\103\101\040\114\151\155\151\164\145\144\061\047\060 +\045\006\003\125\004\003\023\036\103\117\115\117\104\117\040\103 +\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164 +\150\157\162\151\164\171\060\202\001\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202 +\001\012\002\202\001\001\000\320\100\213\213\162\343\221\033\367 +\121\301\033\124\004\230\323\251\277\301\346\212\135\073\207\373 +\273\210\316\015\343\057\077\006\226\360\242\051\120\231\256\333 +\073\241\127\260\164\121\161\315\355\102\221\115\101\376\251\310 +\330\152\206\167\104\273\131\146\227\120\136\264\324\054\160\104 +\317\332\067\225\102\151\074\060\304\161\263\122\360\041\115\241 +\330\272\071\174\034\236\243\044\235\362\203\026\230\252\026\174 +\103\233\025\133\267\256\064\221\376\324\142\046\030\106\232\077 +\353\301\371\361\220\127\353\254\172\015\213\333\162\060\152\146 +\325\340\106\243\160\334\150\331\377\004\110\211\167\336\265\351 +\373\147\155\101\351\274\071\275\062\331\142\002\361\261\250\075 +\156\067\234\342\057\342\323\242\046\213\306\270\125\103\210\341 +\043\076\245\322\044\071\152\107\253\000\324\241\263\251\045\376 +\015\077\247\035\272\323\121\301\013\244\332\254\070\357\125\120 +\044\005\145\106\223\064\117\055\215\255\306\324\041\031\322\216 +\312\005\141\161\007\163\107\345\212\031\022\275\004\115\316\116 +\234\245\110\254\273\046\367\002\003\001\000\001\243\201\216\060 +\201\213\060\035\006\003\125\035\016\004\026\004\024\013\130\345 +\213\306\114\025\067\244\100\251\060\251\041\276\107\066\132\126 +\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 +\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\111\006\003\125\035\037\004\102\060\100\060\076\240 +\074\240\072\206\070\150\164\164\160\072\057\057\143\162\154\056 +\143\157\155\157\144\157\143\141\056\143\157\155\057\103\117\115 +\117\104\117\103\145\162\164\151\146\151\143\141\164\151\157\156 +\101\165\164\150\157\162\151\164\171\056\143\162\154\060\015\006 +\011\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001 +\000\076\230\236\233\366\033\351\327\071\267\170\256\035\162\030 +\111\323\207\344\103\202\353\077\311\252\365\250\265\357\125\174 +\041\122\145\371\325\015\341\154\364\076\214\223\163\221\056\002 +\304\116\007\161\157\300\217\070\141\010\250\036\201\012\300\057 +\040\057\101\213\221\334\110\105\274\361\306\336\272\166\153\063 +\310\000\055\061\106\114\355\347\235\317\210\224\377\063\300\126 +\350\044\206\046\270\330\070\070\337\052\153\335\022\314\307\077 +\107\027\114\242\302\006\226\011\326\333\376\077\074\106\101\337 +\130\342\126\017\074\073\301\034\223\065\331\070\122\254\356\310 +\354\056\060\116\224\065\264\044\037\113\170\151\332\362\002\070 +\314\225\122\223\360\160\045\131\234\040\147\304\356\371\213\127 +\141\364\222\166\175\077\204\215\125\267\350\345\254\325\361\365 +\031\126\246\132\373\220\034\257\223\353\345\034\324\147\227\135 +\004\016\276\013\203\246\027\203\271\060\022\240\305\063\025\005 +\271\015\373\307\005\166\343\330\112\215\374\064\027\243\306\041 +\050\276\060\105\061\036\307\170\276\130\141\070\254\073\342\001 +\145 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "COMODO Certification Authority" +# Issuer: CN=COMODO Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Serial Number:4e:81:2d:8a:82:65:e0:0b:02:ee:3e:35:02:46:e5:3d +# Subject: CN=COMODO Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Not Valid Before: Fri Dec 01 00:00:00 2006 +# Not Valid After : Mon Dec 31 23:59:59 2029 +# Fingerprint (SHA-256): 0C:2C:D6:3D:F7:80:6F:A3:99:ED:E8:09:11:6B:57:5B:F8:79:89:F0:65:18:F9:80:8C:86:05:03:17:8B:AF:66 +# Fingerprint (SHA1): 66:31:BF:9E:F7:4F:9E:B6:C9:D5:A6:0C:BA:6A:BE:D1:F7:BD:EF:7B +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "COMODO Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\146\061\277\236\367\117\236\266\311\325\246\014\272\152\276\321 +\367\275\357\173 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\134\110\334\367\102\162\354\126\224\155\034\314\161\065\200\165 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\201\061\013\060\011\006\003\125\004\006\023\002\107\102 +\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164 +\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060 +\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061 +\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117 +\040\103\101\040\114\151\155\151\164\145\144\061\047\060\045\006 +\003\125\004\003\023\036\103\117\115\117\104\117\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\116\201\055\212\202\145\340\013\002\356\076\065\002\106 +\345\075 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "COMODO ECC Certification Authority" +# +# Issuer: CN=COMODO ECC Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Serial Number:1f:47:af:aa:62:00:70:50:54:4c:01:9e:9b:63:99:2a +# Subject: CN=COMODO ECC Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Not Valid Before: Thu Mar 06 00:00:00 2008 +# Not Valid After : Mon Jan 18 23:59:59 2038 +# Fingerprint (SHA-256): 17:93:92:7A:06:14:54:97:89:AD:CE:2F:8F:34:F7:F0:B6:6D:0F:3A:E3:A3:B8:4D:21:EC:15:DB:BA:4F:AD:C7 +# Fingerprint (SHA1): 9F:74:4E:9F:2B:4D:BA:EC:0F:31:2C:50:B6:56:3B:8E:2D:93:C3:11 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "COMODO ECC Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\205\061\013\060\011\006\003\125\004\006\023\002\107\102 +\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164 +\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060 +\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061 +\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117 +\040\103\101\040\114\151\155\151\164\145\144\061\053\060\051\006 +\003\125\004\003\023\042\103\117\115\117\104\117\040\105\103\103 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101 +\165\164\150\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\205\061\013\060\011\006\003\125\004\006\023\002\107\102 +\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164 +\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060 +\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061 +\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117 +\040\103\101\040\114\151\155\151\164\145\144\061\053\060\051\006 +\003\125\004\003\023\042\103\117\115\117\104\117\040\105\103\103 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101 +\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\037\107\257\252\142\000\160\120\124\114\001\236\233\143 +\231\052 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\211\060\202\002\017\240\003\002\001\002\002\020\037 +\107\257\252\142\000\160\120\124\114\001\236\233\143\231\052\060 +\012\006\010\052\206\110\316\075\004\003\003\060\201\205\061\013 +\060\011\006\003\125\004\006\023\002\107\102\061\033\060\031\006 +\003\125\004\010\023\022\107\162\145\141\164\145\162\040\115\141 +\156\143\150\145\163\164\145\162\061\020\060\016\006\003\125\004 +\007\023\007\123\141\154\146\157\162\144\061\032\060\030\006\003 +\125\004\012\023\021\103\117\115\117\104\117\040\103\101\040\114 +\151\155\151\164\145\144\061\053\060\051\006\003\125\004\003\023 +\042\103\117\115\117\104\117\040\105\103\103\040\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162 +\151\164\171\060\036\027\015\060\070\060\063\060\066\060\060\060 +\060\060\060\132\027\015\063\070\060\061\061\070\062\063\065\071 +\065\071\132\060\201\205\061\013\060\011\006\003\125\004\006\023 +\002\107\102\061\033\060\031\006\003\125\004\010\023\022\107\162 +\145\141\164\145\162\040\115\141\156\143\150\145\163\164\145\162 +\061\020\060\016\006\003\125\004\007\023\007\123\141\154\146\157 +\162\144\061\032\060\030\006\003\125\004\012\023\021\103\117\115 +\117\104\117\040\103\101\040\114\151\155\151\164\145\144\061\053 +\060\051\006\003\125\004\003\023\042\103\117\115\117\104\117\040 +\105\103\103\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\060\166\060\020\006 +\007\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003 +\142\000\004\003\107\173\057\165\311\202\025\205\373\165\344\221 +\026\324\253\142\231\365\076\122\013\006\316\101\000\177\227\341 +\012\044\074\035\001\004\356\075\322\215\011\227\014\340\165\344 +\372\373\167\212\052\365\003\140\113\066\213\026\043\026\255\011 +\161\364\112\364\050\120\264\376\210\034\156\077\154\057\057\011 +\131\133\245\133\013\063\231\342\303\075\211\371\152\054\357\262 +\323\006\351\243\102\060\100\060\035\006\003\125\035\016\004\026 +\004\024\165\161\247\031\110\031\274\235\235\352\101\107\337\224 +\304\110\167\231\323\171\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\012\006\010\052\206\110\316\075 +\004\003\003\003\150\000\060\145\002\061\000\357\003\133\172\254 +\267\170\012\162\267\210\337\377\265\106\024\011\012\372\240\346 +\175\010\306\032\207\275\030\250\163\275\046\312\140\014\235\316 +\231\237\317\134\017\060\341\276\024\061\352\002\060\024\364\223 +\074\111\247\063\172\220\106\107\263\143\175\023\233\116\267\157 +\030\067\200\123\376\335\040\340\065\232\066\321\307\001\271\346 +\334\335\363\377\035\054\072\026\127\331\222\071\326 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "COMODO ECC Certification Authority" +# Issuer: CN=COMODO ECC Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Serial Number:1f:47:af:aa:62:00:70:50:54:4c:01:9e:9b:63:99:2a +# Subject: CN=COMODO ECC Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Not Valid Before: Thu Mar 06 00:00:00 2008 +# Not Valid After : Mon Jan 18 23:59:59 2038 +# Fingerprint (SHA-256): 17:93:92:7A:06:14:54:97:89:AD:CE:2F:8F:34:F7:F0:B6:6D:0F:3A:E3:A3:B8:4D:21:EC:15:DB:BA:4F:AD:C7 +# Fingerprint (SHA1): 9F:74:4E:9F:2B:4D:BA:EC:0F:31:2C:50:B6:56:3B:8E:2D:93:C3:11 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "COMODO ECC Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\237\164\116\237\053\115\272\354\017\061\054\120\266\126\073\216 +\055\223\303\021 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\174\142\377\164\235\061\123\136\150\112\325\170\252\036\277\043 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\205\061\013\060\011\006\003\125\004\006\023\002\107\102 +\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164 +\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060 +\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061 +\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117 +\040\103\101\040\114\151\155\151\164\145\144\061\053\060\051\006 +\003\125\004\003\023\042\103\117\115\117\104\117\040\105\103\103 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101 +\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\037\107\257\252\142\000\160\120\124\114\001\236\233\143 +\231\052 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "OISTE WISeKey Global Root GA CA" +# +# Issuer: CN=OISTE WISeKey Global Root GA CA,OU=OISTE Foundation Endorsed,OU=Copyright (c) 2005,O=WISeKey,C=CH +# Serial Number:41:3d:72:c7:f4:6b:1f:81:43:7d:f1:d2:28:54:df:9a +# Subject: CN=OISTE WISeKey Global Root GA CA,OU=OISTE Foundation Endorsed,OU=Copyright (c) 2005,O=WISeKey,C=CH +# Not Valid Before: Sun Dec 11 16:03:44 2005 +# Not Valid After : Fri Dec 11 16:09:51 2037 +# Fingerprint (SHA-256): 41:C9:23:86:6A:B4:CA:D6:B7:AD:57:80:81:58:2E:02:07:97:A6:CB:DF:4F:FF:78:CE:83:96:B3:89:37:D7:F5 +# Fingerprint (SHA1): 59:22:A1:E1:5A:EA:16:35:21:F8:98:39:6A:46:46:B0:44:1B:0F:A9 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "OISTE WISeKey Global Root GA CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\212\061\013\060\011\006\003\125\004\006\023\002\103\110 +\061\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113 +\145\171\061\033\060\031\006\003\125\004\013\023\022\103\157\160 +\171\162\151\147\150\164\040\050\143\051\040\062\060\060\065\061 +\042\060\040\006\003\125\004\013\023\031\117\111\123\124\105\040 +\106\157\165\156\144\141\164\151\157\156\040\105\156\144\157\162 +\163\145\144\061\050\060\046\006\003\125\004\003\023\037\117\111 +\123\124\105\040\127\111\123\145\113\145\171\040\107\154\157\142 +\141\154\040\122\157\157\164\040\107\101\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\212\061\013\060\011\006\003\125\004\006\023\002\103\110 +\061\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113 +\145\171\061\033\060\031\006\003\125\004\013\023\022\103\157\160 +\171\162\151\147\150\164\040\050\143\051\040\062\060\060\065\061 +\042\060\040\006\003\125\004\013\023\031\117\111\123\124\105\040 +\106\157\165\156\144\141\164\151\157\156\040\105\156\144\157\162 +\163\145\144\061\050\060\046\006\003\125\004\003\023\037\117\111 +\123\124\105\040\127\111\123\145\113\145\171\040\107\154\157\142 +\141\154\040\122\157\157\164\040\107\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\101\075\162\307\364\153\037\201\103\175\361\322\050\124 +\337\232 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\361\060\202\002\331\240\003\002\001\002\002\020\101 +\075\162\307\364\153\037\201\103\175\361\322\050\124\337\232\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\201 +\212\061\013\060\011\006\003\125\004\006\023\002\103\110\061\020 +\060\016\006\003\125\004\012\023\007\127\111\123\145\113\145\171 +\061\033\060\031\006\003\125\004\013\023\022\103\157\160\171\162 +\151\147\150\164\040\050\143\051\040\062\060\060\065\061\042\060 +\040\006\003\125\004\013\023\031\117\111\123\124\105\040\106\157 +\165\156\144\141\164\151\157\156\040\105\156\144\157\162\163\145 +\144\061\050\060\046\006\003\125\004\003\023\037\117\111\123\124 +\105\040\127\111\123\145\113\145\171\040\107\154\157\142\141\154 +\040\122\157\157\164\040\107\101\040\103\101\060\036\027\015\060 +\065\061\062\061\061\061\066\060\063\064\064\132\027\015\063\067 +\061\062\061\061\061\066\060\071\065\061\132\060\201\212\061\013 +\060\011\006\003\125\004\006\023\002\103\110\061\020\060\016\006 +\003\125\004\012\023\007\127\111\123\145\113\145\171\061\033\060 +\031\006\003\125\004\013\023\022\103\157\160\171\162\151\147\150 +\164\040\050\143\051\040\062\060\060\065\061\042\060\040\006\003 +\125\004\013\023\031\117\111\123\124\105\040\106\157\165\156\144 +\141\164\151\157\156\040\105\156\144\157\162\163\145\144\061\050 +\060\046\006\003\125\004\003\023\037\117\111\123\124\105\040\127 +\111\123\145\113\145\171\040\107\154\157\142\141\154\040\122\157 +\157\164\040\107\101\040\103\101\060\202\001\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000 +\060\202\001\012\002\202\001\001\000\313\117\263\000\233\075\066 +\335\371\321\111\152\153\020\111\037\354\330\053\262\306\370\062 +\201\051\103\225\114\232\031\043\041\025\105\336\343\310\034\121 +\125\133\256\223\350\067\377\053\153\351\324\352\276\052\335\250 +\121\053\327\146\303\141\134\140\002\310\365\316\162\173\073\270 +\362\116\145\010\232\315\244\152\031\301\001\273\163\246\327\366 +\303\335\315\274\244\213\265\231\141\270\001\242\243\324\115\324 +\005\075\221\255\370\264\010\161\144\257\160\361\034\153\176\366 +\303\167\235\044\163\173\344\014\214\341\331\066\341\231\213\005 +\231\013\355\105\061\011\312\302\000\333\367\162\240\226\252\225 +\207\320\216\307\266\141\163\015\166\146\214\334\033\264\143\242 +\237\177\223\023\060\361\241\047\333\331\377\054\125\210\221\240 +\340\117\007\260\050\126\214\030\033\227\104\216\211\335\340\027 +\156\347\052\357\217\071\012\061\204\202\330\100\024\111\056\172 +\101\344\247\376\343\144\314\301\131\161\113\054\041\247\133\175 +\340\035\321\056\201\233\303\330\150\367\275\226\033\254\160\261 +\026\024\013\333\140\271\046\001\005\002\003\001\000\001\243\121 +\060\117\060\013\006\003\125\035\017\004\004\003\002\001\206\060 +\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 +\060\035\006\003\125\035\016\004\026\004\024\263\003\176\256\066 +\274\260\171\321\334\224\046\266\021\276\041\262\151\206\224\060 +\020\006\011\053\006\001\004\001\202\067\025\001\004\003\002\001 +\000\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000 +\003\202\001\001\000\113\241\377\013\207\156\263\371\301\103\261 +\110\363\050\300\035\056\311\011\101\372\224\000\034\244\244\253 +\111\117\217\075\036\357\115\157\275\274\244\366\362\046\060\311 +\020\312\035\210\373\164\031\037\205\105\275\260\154\121\371\066 +\176\333\365\114\062\072\101\117\133\107\317\350\013\055\266\304 +\031\235\164\305\107\306\073\152\017\254\024\333\074\364\163\234 +\251\005\337\000\334\164\170\372\370\065\140\131\002\023\030\174 +\274\373\115\260\040\155\103\273\140\060\172\147\063\134\305\231 +\321\370\055\071\122\163\373\214\252\227\045\134\162\331\010\036 +\253\116\074\343\201\061\237\003\246\373\300\376\051\210\125\332 +\204\325\120\003\266\342\204\243\246\066\252\021\072\001\341\030 +\113\326\104\150\263\075\371\123\164\204\263\106\221\106\226\000 +\267\200\054\266\341\343\020\342\333\242\347\050\217\001\226\142 +\026\076\000\343\034\245\066\201\030\242\114\122\166\300\021\243 +\156\346\035\272\343\132\276\066\123\305\076\165\217\206\151\051 +\130\123\265\234\273\157\237\134\305\030\354\335\057\341\230\311 +\374\276\337\012\015 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "OISTE WISeKey Global Root GA CA" +# Issuer: CN=OISTE WISeKey Global Root GA CA,OU=OISTE Foundation Endorsed,OU=Copyright (c) 2005,O=WISeKey,C=CH +# Serial Number:41:3d:72:c7:f4:6b:1f:81:43:7d:f1:d2:28:54:df:9a +# Subject: CN=OISTE WISeKey Global Root GA CA,OU=OISTE Foundation Endorsed,OU=Copyright (c) 2005,O=WISeKey,C=CH +# Not Valid Before: Sun Dec 11 16:03:44 2005 +# Not Valid After : Fri Dec 11 16:09:51 2037 +# Fingerprint (SHA-256): 41:C9:23:86:6A:B4:CA:D6:B7:AD:57:80:81:58:2E:02:07:97:A6:CB:DF:4F:FF:78:CE:83:96:B3:89:37:D7:F5 +# Fingerprint (SHA1): 59:22:A1:E1:5A:EA:16:35:21:F8:98:39:6A:46:46:B0:44:1B:0F:A9 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "OISTE WISeKey Global Root GA CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\131\042\241\341\132\352\026\065\041\370\230\071\152\106\106\260 +\104\033\017\251 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\274\154\121\063\247\351\323\146\143\124\025\162\033\041\222\223 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\212\061\013\060\011\006\003\125\004\006\023\002\103\110 +\061\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113 +\145\171\061\033\060\031\006\003\125\004\013\023\022\103\157\160 +\171\162\151\147\150\164\040\050\143\051\040\062\060\060\065\061 +\042\060\040\006\003\125\004\013\023\031\117\111\123\124\105\040 +\106\157\165\156\144\141\164\151\157\156\040\105\156\144\157\162 +\163\145\144\061\050\060\046\006\003\125\004\003\023\037\117\111 +\123\124\105\040\127\111\123\145\113\145\171\040\107\154\157\142 +\141\154\040\122\157\157\164\040\107\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\101\075\162\307\364\153\037\201\103\175\361\322\050\124 +\337\232 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certigna" +# +# Issuer: CN=Certigna,O=Dhimyotis,C=FR +# Serial Number:00:fe:dc:e3:01:0f:c9:48:ff +# Subject: CN=Certigna,O=Dhimyotis,C=FR +# Not Valid Before: Fri Jun 29 15:13:05 2007 +# Not Valid After : Tue Jun 29 15:13:05 2027 +# Fingerprint (SHA-256): E3:B6:A2:DB:2E:D7:CE:48:84:2F:7A:C5:32:41:C7:B7:1D:54:14:4B:FB:40:C1:1F:3F:1D:0B:42:F5:EE:A1:2D +# Fingerprint (SHA1): B1:2E:13:63:45:86:A4:6F:1A:B2:60:68:37:58:2D:C4:AC:FD:94:97 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certigna" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\064\061\013\060\011\006\003\125\004\006\023\002\106\122\061 +\022\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157 +\164\151\163\061\021\060\017\006\003\125\004\003\014\010\103\145 +\162\164\151\147\156\141 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\064\061\013\060\011\006\003\125\004\006\023\002\106\122\061 +\022\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157 +\164\151\163\061\021\060\017\006\003\125\004\003\014\010\103\145 +\162\164\151\147\156\141 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\376\334\343\001\017\311\110\377 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\250\060\202\002\220\240\003\002\001\002\002\011\000 +\376\334\343\001\017\311\110\377\060\015\006\011\052\206\110\206 +\367\015\001\001\005\005\000\060\064\061\013\060\011\006\003\125 +\004\006\023\002\106\122\061\022\060\020\006\003\125\004\012\014 +\011\104\150\151\155\171\157\164\151\163\061\021\060\017\006\003 +\125\004\003\014\010\103\145\162\164\151\147\156\141\060\036\027 +\015\060\067\060\066\062\071\061\065\061\063\060\065\132\027\015 +\062\067\060\066\062\071\061\065\061\063\060\065\132\060\064\061 +\013\060\011\006\003\125\004\006\023\002\106\122\061\022\060\020 +\006\003\125\004\012\014\011\104\150\151\155\171\157\164\151\163 +\061\021\060\017\006\003\125\004\003\014\010\103\145\162\164\151 +\147\156\141\060\202\001\042\060\015\006\011\052\206\110\206\367 +\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002 +\202\001\001\000\310\150\361\311\326\326\263\064\165\046\202\036 +\354\264\276\352\134\341\046\355\021\107\141\341\242\174\026\170 +\100\041\344\140\236\132\310\143\341\304\261\226\222\377\030\155 +\151\043\341\053\142\367\335\342\066\057\221\007\271\110\317\016 +\354\171\266\054\347\064\113\160\010\045\243\074\207\033\031\362 +\201\007\017\070\220\031\323\021\376\206\264\362\321\136\036\036 +\226\315\200\154\316\073\061\223\266\362\240\320\251\225\022\175 +\245\232\314\153\310\204\126\212\063\251\347\042\025\123\026\360 +\314\027\354\127\137\351\242\012\230\011\336\343\137\234\157\334 +\110\343\205\013\025\132\246\272\237\254\110\343\011\262\367\364 +\062\336\136\064\276\034\170\135\102\133\316\016\042\217\115\220 +\327\175\062\030\263\013\054\152\277\216\077\024\021\211\040\016 +\167\024\265\075\224\010\207\367\045\036\325\262\140\000\354\157 +\052\050\045\156\052\076\030\143\027\045\077\076\104\040\026\366 +\046\310\045\256\005\112\264\347\143\054\363\214\026\123\176\134 +\373\021\032\010\301\106\142\237\042\270\361\302\215\151\334\372 +\072\130\006\337\002\003\001\000\001\243\201\274\060\201\271\060 +\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 +\060\035\006\003\125\035\016\004\026\004\024\032\355\376\101\071 +\220\264\044\131\276\001\362\122\325\105\366\132\071\334\021\060 +\144\006\003\125\035\043\004\135\060\133\200\024\032\355\376\101 +\071\220\264\044\131\276\001\362\122\325\105\366\132\071\334\021 +\241\070\244\066\060\064\061\013\060\011\006\003\125\004\006\023 +\002\106\122\061\022\060\020\006\003\125\004\012\014\011\104\150 +\151\155\171\157\164\151\163\061\021\060\017\006\003\125\004\003 +\014\010\103\145\162\164\151\147\156\141\202\011\000\376\334\343 +\001\017\311\110\377\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\021\006\011\140\206\110\001\206\370\102 +\001\001\004\004\003\002\000\007\060\015\006\011\052\206\110\206 +\367\015\001\001\005\005\000\003\202\001\001\000\205\003\036\222 +\161\366\102\257\341\243\141\236\353\363\300\017\362\245\324\332 +\225\346\326\276\150\066\075\176\156\037\114\212\357\321\017\041 +\155\136\245\122\143\316\022\370\357\052\332\157\353\067\376\023 +\002\307\313\073\076\042\153\332\141\056\177\324\162\075\335\060 +\341\036\114\100\031\214\017\327\234\321\203\060\173\230\131\334 +\175\306\271\014\051\114\241\063\242\353\147\072\145\204\323\226 +\342\355\166\105\160\217\265\053\336\371\043\326\111\156\074\024 +\265\306\237\065\036\120\320\301\217\152\160\104\002\142\313\256 +\035\150\101\247\252\127\350\123\252\007\322\006\366\325\024\006 +\013\221\003\165\054\154\162\265\141\225\232\015\213\271\015\347 +\365\337\124\315\336\346\330\326\011\010\227\143\345\301\056\260 +\267\104\046\300\046\300\257\125\060\236\073\325\066\052\031\004 +\364\134\036\377\317\054\267\377\320\375\207\100\021\325\021\043 +\273\110\300\041\251\244\050\055\375\025\370\260\116\053\364\060 +\133\041\374\021\221\064\276\101\357\173\235\227\165\377\227\225 +\300\226\130\057\352\273\106\327\273\344\331\056 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certigna" +# Issuer: CN=Certigna,O=Dhimyotis,C=FR +# Serial Number:00:fe:dc:e3:01:0f:c9:48:ff +# Subject: CN=Certigna,O=Dhimyotis,C=FR +# Not Valid Before: Fri Jun 29 15:13:05 2007 +# Not Valid After : Tue Jun 29 15:13:05 2027 +# Fingerprint (SHA-256): E3:B6:A2:DB:2E:D7:CE:48:84:2F:7A:C5:32:41:C7:B7:1D:54:14:4B:FB:40:C1:1F:3F:1D:0B:42:F5:EE:A1:2D +# Fingerprint (SHA1): B1:2E:13:63:45:86:A4:6F:1A:B2:60:68:37:58:2D:C4:AC:FD:94:97 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certigna" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\261\056\023\143\105\206\244\157\032\262\140\150\067\130\055\304 +\254\375\224\227 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\253\127\246\133\175\102\202\031\265\330\130\046\050\136\375\377 +END +CKA_ISSUER MULTILINE_OCTAL +\060\064\061\013\060\011\006\003\125\004\006\023\002\106\122\061 +\022\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157 +\164\151\163\061\021\060\017\006\003\125\004\003\014\010\103\145 +\162\164\151\147\156\141 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\376\334\343\001\017\311\110\377 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "ePKI Root Certification Authority" +# +# Issuer: OU=ePKI Root Certification Authority,O="Chunghwa Telecom Co., Ltd.",C=TW +# Serial Number:15:c8:bd:65:47:5c:af:b8:97:00:5e:e4:06:d2:bc:9d +# Subject: OU=ePKI Root Certification Authority,O="Chunghwa Telecom Co., Ltd.",C=TW +# Not Valid Before: Mon Dec 20 02:31:27 2004 +# Not Valid After : Wed Dec 20 02:31:27 2034 +# Fingerprint (SHA-256): C0:A6:F4:DC:63:A2:4B:FD:CF:54:EF:2A:6A:08:2A:0A:72:DE:35:80:3E:2F:F5:FF:52:7A:E5:D8:72:06:DF:D5 +# Fingerprint (SHA1): 67:65:0D:F1:7E:8E:7E:5B:82:40:A4:F4:56:4B:CF:E2:3D:69:C6:F0 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ePKI Root Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\136\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\043\060\041\006\003\125\004\012\014\032\103\150\165\156\147\150 +\167\141\040\124\145\154\145\143\157\155\040\103\157\056\054\040 +\114\164\144\056\061\052\060\050\006\003\125\004\013\014\041\145 +\120\113\111\040\122\157\157\164\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\136\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\043\060\041\006\003\125\004\012\014\032\103\150\165\156\147\150 +\167\141\040\124\145\154\145\143\157\155\040\103\157\056\054\040 +\114\164\144\056\061\052\060\050\006\003\125\004\013\014\041\145 +\120\113\111\040\122\157\157\164\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\025\310\275\145\107\134\257\270\227\000\136\344\006\322 +\274\235 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\260\060\202\003\230\240\003\002\001\002\002\020\025 +\310\275\145\107\134\257\270\227\000\136\344\006\322\274\235\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\136 +\061\013\060\011\006\003\125\004\006\023\002\124\127\061\043\060 +\041\006\003\125\004\012\014\032\103\150\165\156\147\150\167\141 +\040\124\145\154\145\143\157\155\040\103\157\056\054\040\114\164 +\144\056\061\052\060\050\006\003\125\004\013\014\041\145\120\113 +\111\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141 +\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060\036 +\027\015\060\064\061\062\062\060\060\062\063\061\062\067\132\027 +\015\063\064\061\062\062\060\060\062\063\061\062\067\132\060\136 +\061\013\060\011\006\003\125\004\006\023\002\124\127\061\043\060 +\041\006\003\125\004\012\014\032\103\150\165\156\147\150\167\141 +\040\124\145\154\145\143\157\155\040\103\157\056\054\040\114\164 +\144\056\061\052\060\050\006\003\125\004\013\014\041\145\120\113 +\111\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141 +\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060\202 +\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 +\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\341 +\045\017\356\215\333\210\063\165\147\315\255\037\175\072\116\155 +\235\323\057\024\363\143\164\313\001\041\152\067\352\204\120\007 +\113\046\133\011\103\154\041\236\152\310\325\003\365\140\151\217 +\314\360\042\344\037\347\367\152\042\061\267\054\025\362\340\376 +\000\152\103\377\207\145\306\265\032\301\247\114\155\042\160\041 +\212\061\362\227\164\211\011\022\046\034\236\312\331\022\242\225 +\074\332\351\147\277\010\240\144\343\326\102\267\105\357\227\364 +\366\365\327\265\112\025\002\130\175\230\130\113\140\274\315\327 +\015\232\023\063\123\321\141\371\172\325\327\170\263\232\063\367 +\000\206\316\035\115\224\070\257\250\354\170\121\160\212\134\020 +\203\121\041\367\021\075\064\206\136\345\110\315\227\201\202\065 +\114\031\354\145\366\153\305\005\241\356\107\023\326\263\041\047 +\224\020\012\331\044\073\272\276\104\023\106\060\077\227\074\330 +\327\327\152\356\073\070\343\053\324\227\016\271\033\347\007\111 +\177\067\052\371\167\170\317\124\355\133\106\235\243\200\016\221 +\103\301\326\133\137\024\272\237\246\215\044\107\100\131\277\162 +\070\262\066\154\067\377\231\321\135\016\131\012\253\151\367\300 +\262\004\105\172\124\000\256\276\123\366\265\347\341\370\074\243 +\061\322\251\376\041\122\144\305\246\147\360\165\007\006\224\024 +\201\125\306\047\344\001\217\027\301\152\161\327\276\113\373\224 +\130\175\176\021\063\261\102\367\142\154\030\326\317\011\150\076 +\177\154\366\036\217\142\255\245\143\333\011\247\037\042\102\101 +\036\157\231\212\076\327\371\077\100\172\171\260\245\001\222\322 +\235\075\010\025\245\020\001\055\263\062\166\250\225\015\263\172 +\232\373\007\020\170\021\157\341\217\307\272\017\045\032\164\052 +\345\034\230\101\231\337\041\207\350\225\006\152\012\263\152\107 +\166\145\366\072\317\217\142\027\031\173\012\050\315\032\322\203 +\036\041\307\054\277\276\377\141\150\267\147\033\273\170\115\215 +\316\147\345\344\301\216\267\043\146\342\235\220\165\064\230\251 +\066\053\212\232\224\271\235\354\314\212\261\370\045\211\134\132 +\266\057\214\037\155\171\044\247\122\150\303\204\065\342\146\215 +\143\016\045\115\325\031\262\346\171\067\247\042\235\124\061\002 +\003\001\000\001\243\152\060\150\060\035\006\003\125\035\016\004 +\026\004\024\036\014\367\266\147\362\341\222\046\011\105\300\125 +\071\056\167\077\102\112\242\060\014\006\003\125\035\023\004\005 +\060\003\001\001\377\060\071\006\004\147\052\007\000\004\061\060 +\057\060\055\002\001\000\060\011\006\005\053\016\003\002\032\005 +\000\060\007\006\005\147\052\003\000\000\004\024\105\260\302\307 +\012\126\174\356\133\170\014\225\371\030\123\301\246\034\330\020 +\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\003 +\202\002\001\000\011\263\203\123\131\001\076\225\111\271\361\201 +\272\371\166\040\043\265\047\140\164\324\152\231\064\136\154\000 +\123\331\237\362\246\261\044\007\104\152\052\306\245\216\170\022 +\350\107\331\130\033\023\052\136\171\233\237\012\052\147\246\045 +\077\006\151\126\163\303\212\146\110\373\051\201\127\164\006\312 +\234\352\050\350\070\147\046\053\361\325\265\077\145\223\370\066 +\135\216\215\215\100\040\207\031\352\357\047\300\075\264\071\017 +\045\173\150\120\164\125\234\014\131\175\132\075\101\224\045\122 +\010\340\107\054\025\061\031\325\277\007\125\306\273\022\265\227 +\364\137\203\205\272\161\301\331\154\201\021\166\012\012\260\277 +\202\227\367\352\075\372\372\354\055\251\050\224\073\126\335\322 +\121\056\256\300\275\010\025\214\167\122\064\226\326\233\254\323 +\035\216\141\017\065\173\233\256\071\151\013\142\140\100\040\066 +\217\257\373\066\356\055\010\112\035\270\277\233\134\370\352\245 +\033\240\163\246\330\370\156\340\063\004\137\150\252\047\207\355 +\331\301\220\234\355\275\343\152\065\257\143\337\253\030\331\272 +\346\351\112\352\120\212\017\141\223\036\342\055\031\342\060\224 +\065\222\135\016\266\007\257\031\200\217\107\220\121\113\056\115 +\335\205\342\322\012\122\012\027\232\374\032\260\120\002\345\001 +\243\143\067\041\114\104\304\233\121\231\021\016\163\234\006\217 +\124\056\247\050\136\104\071\207\126\055\067\275\205\104\224\341 +\014\113\054\234\303\222\205\064\141\313\017\270\233\112\103\122 +\376\064\072\175\270\351\051\334\166\251\310\060\370\024\161\200 +\306\036\066\110\164\042\101\134\207\202\350\030\161\213\101\211 +\104\347\176\130\133\250\270\215\023\351\247\154\303\107\355\263 +\032\235\142\256\215\202\352\224\236\335\131\020\303\255\335\342 +\115\343\061\325\307\354\350\362\260\376\222\036\026\012\032\374 +\331\363\370\047\266\311\276\035\264\154\144\220\177\364\344\304 +\133\327\067\256\102\016\335\244\032\157\174\210\124\305\026\156 +\341\172\150\056\370\072\277\015\244\074\211\073\170\247\116\143 +\203\004\041\010\147\215\362\202\111\320\133\375\261\315\017\203 +\204\324\076\040\205\367\112\075\053\234\375\052\012\011\115\352 +\201\370\021\234 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "ePKI Root Certification Authority" +# Issuer: OU=ePKI Root Certification Authority,O="Chunghwa Telecom Co., Ltd.",C=TW +# Serial Number:15:c8:bd:65:47:5c:af:b8:97:00:5e:e4:06:d2:bc:9d +# Subject: OU=ePKI Root Certification Authority,O="Chunghwa Telecom Co., Ltd.",C=TW +# Not Valid Before: Mon Dec 20 02:31:27 2004 +# Not Valid After : Wed Dec 20 02:31:27 2034 +# Fingerprint (SHA-256): C0:A6:F4:DC:63:A2:4B:FD:CF:54:EF:2A:6A:08:2A:0A:72:DE:35:80:3E:2F:F5:FF:52:7A:E5:D8:72:06:DF:D5 +# Fingerprint (SHA1): 67:65:0D:F1:7E:8E:7E:5B:82:40:A4:F4:56:4B:CF:E2:3D:69:C6:F0 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ePKI Root Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\147\145\015\361\176\216\176\133\202\100\244\364\126\113\317\342 +\075\151\306\360 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\033\056\000\312\046\006\220\075\255\376\157\025\150\323\153\263 +END +CKA_ISSUER MULTILINE_OCTAL +\060\136\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\043\060\041\006\003\125\004\012\014\032\103\150\165\156\147\150 +\167\141\040\124\145\154\145\143\157\155\040\103\157\056\054\040 +\114\164\144\056\061\052\060\050\006\003\125\004\013\014\041\145 +\120\113\111\040\122\157\157\164\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\025\310\275\145\107\134\257\270\227\000\136\344\006\322 +\274\235 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "certSIGN ROOT CA" +# +# Issuer: OU=certSIGN ROOT CA,O=certSIGN,C=RO +# Serial Number:20:06:05:16:70:02 +# Subject: OU=certSIGN ROOT CA,O=certSIGN,C=RO +# Not Valid Before: Tue Jul 04 17:20:04 2006 +# Not Valid After : Fri Jul 04 17:20:04 2031 +# Fingerprint (SHA-256): EA:A9:62:C4:FA:4A:6B:AF:EB:E4:15:19:6D:35:1C:CD:88:8D:4F:53:F3:FA:8A:E6:D7:C4:66:A9:4E:60:42:BB +# Fingerprint (SHA1): FA:B7:EE:36:97:26:62:FB:2D:B0:2A:F6:BF:03:FD:E8:7C:4B:2F:9B +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "certSIGN ROOT CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\073\061\013\060\011\006\003\125\004\006\023\002\122\117\061 +\021\060\017\006\003\125\004\012\023\010\143\145\162\164\123\111 +\107\116\061\031\060\027\006\003\125\004\013\023\020\143\145\162 +\164\123\111\107\116\040\122\117\117\124\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\073\061\013\060\011\006\003\125\004\006\023\002\122\117\061 +\021\060\017\006\003\125\004\012\023\010\143\145\162\164\123\111 +\107\116\061\031\060\027\006\003\125\004\013\023\020\143\145\162 +\164\123\111\107\116\040\122\117\117\124\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\006\040\006\005\026\160\002 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\070\060\202\002\040\240\003\002\001\002\002\006\040 +\006\005\026\160\002\060\015\006\011\052\206\110\206\367\015\001 +\001\005\005\000\060\073\061\013\060\011\006\003\125\004\006\023 +\002\122\117\061\021\060\017\006\003\125\004\012\023\010\143\145 +\162\164\123\111\107\116\061\031\060\027\006\003\125\004\013\023 +\020\143\145\162\164\123\111\107\116\040\122\117\117\124\040\103 +\101\060\036\027\015\060\066\060\067\060\064\061\067\062\060\060 +\064\132\027\015\063\061\060\067\060\064\061\067\062\060\060\064 +\132\060\073\061\013\060\011\006\003\125\004\006\023\002\122\117 +\061\021\060\017\006\003\125\004\012\023\010\143\145\162\164\123 +\111\107\116\061\031\060\027\006\003\125\004\013\023\020\143\145 +\162\164\123\111\107\116\040\122\117\117\124\040\103\101\060\202 +\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 +\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000\267 +\063\271\176\310\045\112\216\265\333\264\050\033\252\127\220\350 +\321\042\323\144\272\323\223\350\324\254\206\141\100\152\140\127 +\150\124\204\115\274\152\124\002\005\377\337\233\232\052\256\135 +\007\217\112\303\050\177\357\373\053\372\171\361\307\255\360\020 +\123\044\220\213\146\311\250\210\253\257\132\243\000\351\276\272 +\106\356\133\163\173\054\027\202\201\136\142\054\241\002\145\263 +\275\305\053\000\176\304\374\003\063\127\015\355\342\372\316\135 +\105\326\070\315\065\266\262\301\320\234\201\112\252\344\262\001 +\134\035\217\137\231\304\261\255\333\210\041\353\220\010\202\200 +\363\060\243\103\346\220\202\256\125\050\111\355\133\327\251\020 +\070\016\376\217\114\133\233\106\352\101\365\260\010\164\303\320 +\210\063\266\174\327\164\337\334\204\321\103\016\165\071\241\045 +\100\050\352\170\313\016\054\056\071\235\214\213\156\026\034\057 +\046\202\020\342\343\145\224\012\004\300\136\367\135\133\370\020 +\342\320\272\172\113\373\336\067\000\000\032\133\050\343\322\234 +\163\076\062\207\230\241\311\121\057\327\336\254\063\263\117\002 +\003\001\000\001\243\102\060\100\060\017\006\003\125\035\023\001 +\001\377\004\005\060\003\001\001\377\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\306\060\035\006\003\125\035\016 +\004\026\004\024\340\214\233\333\045\111\263\361\174\206\326\262 +\102\207\013\320\153\240\331\344\060\015\006\011\052\206\110\206 +\367\015\001\001\005\005\000\003\202\001\001\000\076\322\034\211 +\056\065\374\370\165\335\346\177\145\210\364\162\114\311\054\327 +\062\116\363\335\031\171\107\275\216\073\133\223\017\120\111\044 +\023\153\024\006\162\357\011\323\241\241\343\100\204\311\347\030 +\062\164\074\110\156\017\237\113\324\367\036\323\223\206\144\124 +\227\143\162\120\325\125\317\372\040\223\002\242\233\303\043\223 +\116\026\125\166\240\160\171\155\315\041\037\317\057\055\274\031 +\343\210\061\370\131\032\201\011\310\227\246\164\307\140\304\133 +\314\127\216\262\165\375\033\002\011\333\131\157\162\223\151\367 +\061\101\326\210\070\277\207\262\275\026\171\371\252\344\276\210 +\045\335\141\047\043\034\265\061\007\004\066\264\032\220\275\240 +\164\161\120\211\155\274\024\343\017\206\256\361\253\076\307\240 +\011\314\243\110\321\340\333\144\347\222\265\317\257\162\103\160 +\213\371\303\204\074\023\252\176\222\233\127\123\223\372\160\302 +\221\016\061\371\233\147\135\351\226\070\136\137\263\163\116\210 +\025\147\336\236\166\020\142\040\276\125\151\225\103\000\071\115 +\366\356\260\132\116\111\104\124\130\137\102\203 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "certSIGN ROOT CA" +# Issuer: OU=certSIGN ROOT CA,O=certSIGN,C=RO +# Serial Number:20:06:05:16:70:02 +# Subject: OU=certSIGN ROOT CA,O=certSIGN,C=RO +# Not Valid Before: Tue Jul 04 17:20:04 2006 +# Not Valid After : Fri Jul 04 17:20:04 2031 +# Fingerprint (SHA-256): EA:A9:62:C4:FA:4A:6B:AF:EB:E4:15:19:6D:35:1C:CD:88:8D:4F:53:F3:FA:8A:E6:D7:C4:66:A9:4E:60:42:BB +# Fingerprint (SHA1): FA:B7:EE:36:97:26:62:FB:2D:B0:2A:F6:BF:03:FD:E8:7C:4B:2F:9B +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "certSIGN ROOT CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\372\267\356\066\227\046\142\373\055\260\052\366\277\003\375\350 +\174\113\057\233 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\030\230\300\326\351\072\374\371\260\365\014\367\113\001\104\027 +END +CKA_ISSUER MULTILINE_OCTAL +\060\073\061\013\060\011\006\003\125\004\006\023\002\122\117\061 +\021\060\017\006\003\125\004\012\023\010\143\145\162\164\123\111 +\107\116\061\031\060\027\006\003\125\004\013\023\020\143\145\162 +\164\123\111\107\116\040\122\117\117\124\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\006\040\006\005\026\160\002 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "NetLock Arany (Class Gold) FőtanÃēsítvÃĄny" +# +# Issuer: CN=NetLock Arany (Class Gold) F..tan..s..tv..ny,OU=Tan..s..tv..nykiad..k (Certification Services),O=NetLock Kft.,L=Budapest,C=HU +# Serial Number:49:41:2c:e4:00:10 +# Subject: CN=NetLock Arany (Class Gold) F..tan..s..tv..ny,OU=Tan..s..tv..nykiad..k (Certification Services),O=NetLock Kft.,L=Budapest,C=HU +# Not Valid Before: Thu Dec 11 15:08:21 2008 +# Not Valid After : Wed Dec 06 15:08:21 2028 +# Fingerprint (SHA-256): 6C:61:DA:C3:A2:DE:F0:31:50:6B:E0:36:D2:A6:FE:40:19:94:FB:D1:3D:F9:C8:D4:66:59:92:74:C4:46:EC:98 +# Fingerprint (SHA1): 06:08:3F:59:3F:15:A1:04:A0:69:A4:6B:A9:03:D0:06:B7:97:09:91 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "NetLock Arany (Class Gold) FőtanÃēsítvÃĄny" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\247\061\013\060\011\006\003\125\004\006\023\002\110\125 +\061\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160 +\145\163\164\061\025\060\023\006\003\125\004\012\014\014\116\145 +\164\114\157\143\153\040\113\146\164\056\061\067\060\065\006\003 +\125\004\013\014\056\124\141\156\303\272\163\303\255\164\166\303 +\241\156\171\153\151\141\144\303\263\153\040\050\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\123\145\162\166\151\143 +\145\163\051\061\065\060\063\006\003\125\004\003\014\054\116\145 +\164\114\157\143\153\040\101\162\141\156\171\040\050\103\154\141 +\163\163\040\107\157\154\144\051\040\106\305\221\164\141\156\303 +\272\163\303\255\164\166\303\241\156\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\247\061\013\060\011\006\003\125\004\006\023\002\110\125 +\061\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160 +\145\163\164\061\025\060\023\006\003\125\004\012\014\014\116\145 +\164\114\157\143\153\040\113\146\164\056\061\067\060\065\006\003 +\125\004\013\014\056\124\141\156\303\272\163\303\255\164\166\303 +\241\156\171\153\151\141\144\303\263\153\040\050\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\123\145\162\166\151\143 +\145\163\051\061\065\060\063\006\003\125\004\003\014\054\116\145 +\164\114\157\143\153\040\101\162\141\156\171\040\050\103\154\141 +\163\163\040\107\157\154\144\051\040\106\305\221\164\141\156\303 +\272\163\303\255\164\166\303\241\156\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\006\111\101\054\344\000\020 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\025\060\202\002\375\240\003\002\001\002\002\006\111 +\101\054\344\000\020\060\015\006\011\052\206\110\206\367\015\001 +\001\013\005\000\060\201\247\061\013\060\011\006\003\125\004\006 +\023\002\110\125\061\021\060\017\006\003\125\004\007\014\010\102 +\165\144\141\160\145\163\164\061\025\060\023\006\003\125\004\012 +\014\014\116\145\164\114\157\143\153\040\113\146\164\056\061\067 +\060\065\006\003\125\004\013\014\056\124\141\156\303\272\163\303 +\255\164\166\303\241\156\171\153\151\141\144\303\263\153\040\050 +\103\145\162\164\151\146\151\143\141\164\151\157\156\040\123\145 +\162\166\151\143\145\163\051\061\065\060\063\006\003\125\004\003 +\014\054\116\145\164\114\157\143\153\040\101\162\141\156\171\040 +\050\103\154\141\163\163\040\107\157\154\144\051\040\106\305\221 +\164\141\156\303\272\163\303\255\164\166\303\241\156\171\060\036 +\027\015\060\070\061\062\061\061\061\065\060\070\062\061\132\027 +\015\062\070\061\062\060\066\061\065\060\070\062\061\132\060\201 +\247\061\013\060\011\006\003\125\004\006\023\002\110\125\061\021 +\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145\163 +\164\061\025\060\023\006\003\125\004\012\014\014\116\145\164\114 +\157\143\153\040\113\146\164\056\061\067\060\065\006\003\125\004 +\013\014\056\124\141\156\303\272\163\303\255\164\166\303\241\156 +\171\153\151\141\144\303\263\153\040\050\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\123\145\162\166\151\143\145\163 +\051\061\065\060\063\006\003\125\004\003\014\054\116\145\164\114 +\157\143\153\040\101\162\141\156\171\040\050\103\154\141\163\163 +\040\107\157\154\144\051\040\106\305\221\164\141\156\303\272\163 +\303\255\164\166\303\241\156\171\060\202\001\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000 +\060\202\001\012\002\202\001\001\000\304\044\136\163\276\113\155 +\024\303\241\364\343\227\220\156\322\060\105\036\074\356\147\331 +\144\340\032\212\177\312\060\312\203\343\040\301\343\364\072\323 +\224\137\032\174\133\155\277\060\117\204\047\366\237\037\111\274 +\306\231\012\220\362\017\365\177\103\204\067\143\121\213\172\245 +\160\374\172\130\315\216\233\355\303\106\154\204\160\135\332\363 +\001\220\043\374\116\060\251\176\341\047\143\347\355\144\074\240 +\270\311\063\143\376\026\220\377\260\270\375\327\250\300\300\224 +\103\013\266\325\131\246\236\126\320\044\037\160\171\257\333\071 +\124\015\145\165\331\025\101\224\001\257\136\354\366\215\361\377 +\255\144\376\040\232\327\134\353\376\246\037\010\144\243\213\166 +\125\255\036\073\050\140\056\207\045\350\252\257\037\306\144\106 +\040\267\160\177\074\336\110\333\226\123\267\071\167\344\032\342 +\307\026\204\166\227\133\057\273\031\025\205\370\151\205\365\231 +\247\251\362\064\247\251\266\246\003\374\157\206\075\124\174\166 +\004\233\153\371\100\135\000\064\307\056\231\165\235\345\210\003 +\252\115\370\003\322\102\166\300\033\002\003\000\250\213\243\105 +\060\103\060\022\006\003\125\035\023\001\001\377\004\010\060\006 +\001\001\377\002\001\004\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\035\006\003\125\035\016\004\026\004 +\024\314\372\147\223\360\266\270\320\245\300\036\363\123\375\214 +\123\337\203\327\226\060\015\006\011\052\206\110\206\367\015\001 +\001\013\005\000\003\202\001\001\000\253\177\356\034\026\251\234 +\074\121\000\240\300\021\010\005\247\231\346\157\001\210\124\141 +\156\361\271\030\255\112\255\376\201\100\043\224\057\373\165\174 +\057\050\113\142\044\201\202\013\365\141\361\034\156\270\141\070 +\353\201\372\142\241\073\132\142\323\224\145\304\341\346\155\202 +\370\057\045\160\262\041\046\301\162\121\037\214\054\303\204\220 +\303\132\217\272\317\364\247\145\245\353\230\321\373\005\262\106 +\165\025\043\152\157\205\143\060\200\360\325\236\037\051\034\302 +\154\260\120\131\135\220\133\073\250\015\060\317\277\175\177\316 +\361\235\203\275\311\106\156\040\246\371\141\121\272\041\057\173 +\276\245\025\143\241\324\225\207\361\236\271\363\211\363\075\205 +\270\270\333\276\265\271\051\371\332\067\005\000\111\224\003\204 +\104\347\277\103\061\317\165\213\045\321\364\246\144\365\222\366 +\253\005\353\075\351\245\013\066\142\332\314\006\137\066\213\266 +\136\061\270\052\373\136\366\161\337\104\046\236\304\346\015\221 +\264\056\165\225\200\121\152\113\060\246\260\142\241\223\361\233 +\330\316\304\143\165\077\131\107\261 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "NetLock Arany (Class Gold) FőtanÃēsítvÃĄny" +# Issuer: CN=NetLock Arany (Class Gold) F..tan..s..tv..ny,OU=Tan..s..tv..nykiad..k (Certification Services),O=NetLock Kft.,L=Budapest,C=HU +# Serial Number:49:41:2c:e4:00:10 +# Subject: CN=NetLock Arany (Class Gold) F..tan..s..tv..ny,OU=Tan..s..tv..nykiad..k (Certification Services),O=NetLock Kft.,L=Budapest,C=HU +# Not Valid Before: Thu Dec 11 15:08:21 2008 +# Not Valid After : Wed Dec 06 15:08:21 2028 +# Fingerprint (SHA-256): 6C:61:DA:C3:A2:DE:F0:31:50:6B:E0:36:D2:A6:FE:40:19:94:FB:D1:3D:F9:C8:D4:66:59:92:74:C4:46:EC:98 +# Fingerprint (SHA1): 06:08:3F:59:3F:15:A1:04:A0:69:A4:6B:A9:03:D0:06:B7:97:09:91 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "NetLock Arany (Class Gold) FőtanÃēsítvÃĄny" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\006\010\077\131\077\025\241\004\240\151\244\153\251\003\320\006 +\267\227\011\221 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\305\241\267\377\163\335\326\327\064\062\030\337\374\074\255\210 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\247\061\013\060\011\006\003\125\004\006\023\002\110\125 +\061\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160 +\145\163\164\061\025\060\023\006\003\125\004\012\014\014\116\145 +\164\114\157\143\153\040\113\146\164\056\061\067\060\065\006\003 +\125\004\013\014\056\124\141\156\303\272\163\303\255\164\166\303 +\241\156\171\153\151\141\144\303\263\153\040\050\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\123\145\162\166\151\143 +\145\163\051\061\065\060\063\006\003\125\004\003\014\054\116\145 +\164\114\157\143\153\040\101\162\141\156\171\040\050\103\154\141 +\163\163\040\107\157\154\144\051\040\106\305\221\164\141\156\303 +\272\163\303\255\164\166\303\241\156\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\006\111\101\054\344\000\020 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Microsec e-Szigno Root CA 2009" +# +# Issuer: E=info@e-szigno.hu,CN=Microsec e-Szigno Root CA 2009,O=Microsec Ltd.,L=Budapest,C=HU +# Serial Number:00:c2:7e:43:04:4e:47:3f:19 +# Subject: E=info@e-szigno.hu,CN=Microsec e-Szigno Root CA 2009,O=Microsec Ltd.,L=Budapest,C=HU +# Not Valid Before: Tue Jun 16 11:30:18 2009 +# Not Valid After : Sun Dec 30 11:30:18 2029 +# Fingerprint (SHA-256): 3C:5F:81:FE:A5:FA:B8:2C:64:BF:A2:EA:EC:AF:CD:E8:E0:77:FC:86:20:A7:CA:E5:37:16:3D:F3:6E:DB:F3:78 +# Fingerprint (SHA1): 89:DF:74:FE:5C:F4:0F:4A:80:F9:E3:37:7D:54:DA:91:E1:01:31:8E +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Microsec e-Szigno Root CA 2009" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\110\125 +\061\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160 +\145\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151 +\143\162\157\163\145\143\040\114\164\144\056\061\047\060\045\006 +\003\125\004\003\014\036\115\151\143\162\157\163\145\143\040\145 +\055\123\172\151\147\156\157\040\122\157\157\164\040\103\101\040 +\062\060\060\071\061\037\060\035\006\011\052\206\110\206\367\015 +\001\011\001\026\020\151\156\146\157\100\145\055\163\172\151\147 +\156\157\056\150\165 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\110\125 +\061\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160 +\145\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151 +\143\162\157\163\145\143\040\114\164\144\056\061\047\060\045\006 +\003\125\004\003\014\036\115\151\143\162\157\163\145\143\040\145 +\055\123\172\151\147\156\157\040\122\157\157\164\040\103\101\040 +\062\060\060\071\061\037\060\035\006\011\052\206\110\206\367\015 +\001\011\001\026\020\151\156\146\157\100\145\055\163\172\151\147 +\156\157\056\150\165 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\302\176\103\004\116\107\077\031 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\012\060\202\002\362\240\003\002\001\002\002\011\000 +\302\176\103\004\116\107\077\031\060\015\006\011\052\206\110\206 +\367\015\001\001\013\005\000\060\201\202\061\013\060\011\006\003 +\125\004\006\023\002\110\125\061\021\060\017\006\003\125\004\007 +\014\010\102\165\144\141\160\145\163\164\061\026\060\024\006\003 +\125\004\012\014\015\115\151\143\162\157\163\145\143\040\114\164 +\144\056\061\047\060\045\006\003\125\004\003\014\036\115\151\143 +\162\157\163\145\143\040\145\055\123\172\151\147\156\157\040\122 +\157\157\164\040\103\101\040\062\060\060\071\061\037\060\035\006 +\011\052\206\110\206\367\015\001\011\001\026\020\151\156\146\157 +\100\145\055\163\172\151\147\156\157\056\150\165\060\036\027\015 +\060\071\060\066\061\066\061\061\063\060\061\070\132\027\015\062 +\071\061\062\063\060\061\061\063\060\061\070\132\060\201\202\061 +\013\060\011\006\003\125\004\006\023\002\110\125\061\021\060\017 +\006\003\125\004\007\014\010\102\165\144\141\160\145\163\164\061 +\026\060\024\006\003\125\004\012\014\015\115\151\143\162\157\163 +\145\143\040\114\164\144\056\061\047\060\045\006\003\125\004\003 +\014\036\115\151\143\162\157\163\145\143\040\145\055\123\172\151 +\147\156\157\040\122\157\157\164\040\103\101\040\062\060\060\071 +\061\037\060\035\006\011\052\206\110\206\367\015\001\011\001\026 +\020\151\156\146\157\100\145\055\163\172\151\147\156\157\056\150 +\165\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001 +\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001 +\001\000\351\370\217\363\143\255\332\206\330\247\340\102\373\317 +\221\336\246\046\370\231\245\143\160\255\233\256\312\063\100\175 +\155\226\156\241\016\104\356\341\023\235\224\102\122\232\275\165 +\205\164\054\250\016\035\223\266\030\267\214\054\250\317\373\134 +\161\271\332\354\376\350\176\217\344\057\035\262\250\165\207\330 +\267\241\345\073\317\231\112\106\320\203\031\175\300\241\022\034 +\225\155\112\364\330\307\245\115\063\056\205\071\100\165\176\024 +\174\200\022\230\120\307\101\147\270\240\200\141\124\246\154\116 +\037\340\235\016\007\351\311\272\063\347\376\300\125\050\054\002 +\200\247\031\365\236\334\125\123\003\227\173\007\110\377\231\373 +\067\212\044\304\131\314\120\020\143\216\252\251\032\260\204\032 +\206\371\137\273\261\120\156\244\321\012\314\325\161\176\037\247 +\033\174\365\123\156\042\137\313\053\346\324\174\135\256\326\302 +\306\114\345\005\001\331\355\127\374\301\043\171\374\372\310\044 +\203\225\363\265\152\121\001\320\167\326\351\022\241\371\032\203 +\373\202\033\271\260\227\364\166\006\063\103\111\240\377\013\265 +\372\265\002\003\001\000\001\243\201\200\060\176\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006 +\003\125\035\016\004\026\004\024\313\017\306\337\102\103\314\075 +\313\265\110\043\241\032\172\246\052\273\064\150\060\037\006\003 +\125\035\043\004\030\060\026\200\024\313\017\306\337\102\103\314 +\075\313\265\110\043\241\032\172\246\052\273\064\150\060\033\006 +\003\125\035\021\004\024\060\022\201\020\151\156\146\157\100\145 +\055\163\172\151\147\156\157\056\150\165\060\015\006\011\052\206 +\110\206\367\015\001\001\013\005\000\003\202\001\001\000\311\321 +\016\136\056\325\314\263\174\076\313\374\075\377\015\050\225\223 +\004\310\277\332\315\171\270\103\220\360\244\276\357\362\357\041 +\230\274\324\324\135\006\366\356\102\354\060\154\240\252\251\312 +\361\257\212\372\077\013\163\152\076\352\056\100\176\037\256\124 +\141\171\353\056\010\067\327\043\363\214\237\276\035\261\341\244 +\165\333\240\342\124\024\261\272\034\051\244\030\366\022\272\242 +\024\024\343\061\065\310\100\377\267\340\005\166\127\301\034\131 +\362\370\277\344\355\045\142\134\204\360\176\176\037\263\276\371 +\267\041\021\314\003\001\126\160\247\020\222\036\033\064\201\036 +\255\234\032\303\004\074\355\002\141\326\036\006\363\137\072\207 +\362\053\361\105\207\345\075\254\321\307\127\204\275\153\256\334 +\330\371\266\033\142\160\013\075\066\311\102\362\062\327\172\141 +\346\322\333\075\317\310\251\311\233\334\333\130\104\327\157\070 +\257\177\170\323\243\255\032\165\272\034\301\066\174\217\036\155 +\034\303\165\106\256\065\005\246\366\134\075\041\356\126\360\311 +\202\042\055\172\124\253\160\303\175\042\145\202\160\226 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Microsec e-Szigno Root CA 2009" +# Issuer: E=info@e-szigno.hu,CN=Microsec e-Szigno Root CA 2009,O=Microsec Ltd.,L=Budapest,C=HU +# Serial Number:00:c2:7e:43:04:4e:47:3f:19 +# Subject: E=info@e-szigno.hu,CN=Microsec e-Szigno Root CA 2009,O=Microsec Ltd.,L=Budapest,C=HU +# Not Valid Before: Tue Jun 16 11:30:18 2009 +# Not Valid After : Sun Dec 30 11:30:18 2029 +# Fingerprint (SHA-256): 3C:5F:81:FE:A5:FA:B8:2C:64:BF:A2:EA:EC:AF:CD:E8:E0:77:FC:86:20:A7:CA:E5:37:16:3D:F3:6E:DB:F3:78 +# Fingerprint (SHA1): 89:DF:74:FE:5C:F4:0F:4A:80:F9:E3:37:7D:54:DA:91:E1:01:31:8E +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Microsec e-Szigno Root CA 2009" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\211\337\164\376\134\364\017\112\200\371\343\067\175\124\332\221 +\341\001\061\216 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\370\111\364\003\274\104\055\203\276\110\151\175\051\144\374\261 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\110\125 +\061\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160 +\145\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151 +\143\162\157\163\145\143\040\114\164\144\056\061\047\060\045\006 +\003\125\004\003\014\036\115\151\143\162\157\163\145\143\040\145 +\055\123\172\151\147\156\157\040\122\157\157\164\040\103\101\040 +\062\060\060\071\061\037\060\035\006\011\052\206\110\206\367\015 +\001\011\001\026\020\151\156\146\157\100\145\055\163\172\151\147 +\156\157\056\150\165 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\302\176\103\004\116\107\077\031 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GlobalSign Root CA - R3" +# +# Issuer: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R3 +# Serial Number:04:00:00:00:00:01:21:58:53:08:a2 +# Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R3 +# Not Valid Before: Wed Mar 18 10:00:00 2009 +# Not Valid After : Sun Mar 18 10:00:00 2029 +# Fingerprint (SHA-256): CB:B5:22:D7:B7:F1:27:AD:6A:01:13:86:5B:DF:1C:D4:10:2E:7D:07:59:AF:63:5A:7C:F4:72:0D:C9:63:C5:3B +# Fingerprint (SHA1): D6:9B:56:11:48:F0:1C:77:C5:45:78:C1:09:26:DF:5B:85:69:76:AD +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root CA - R3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\114\061\040\060\036\006\003\125\004\013\023\027\107\154\157 +\142\141\154\123\151\147\156\040\122\157\157\164\040\103\101\040 +\055\040\122\063\061\023\060\021\006\003\125\004\012\023\012\107 +\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125 +\004\003\023\012\107\154\157\142\141\154\123\151\147\156 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\114\061\040\060\036\006\003\125\004\013\023\027\107\154\157 +\142\141\154\123\151\147\156\040\122\157\157\164\040\103\101\040 +\055\040\122\063\061\023\060\021\006\003\125\004\012\023\012\107 +\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125 +\004\003\023\012\107\154\157\142\141\154\123\151\147\156 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\013\004\000\000\000\000\001\041\130\123\010\242 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\137\060\202\002\107\240\003\002\001\002\002\013\004 +\000\000\000\000\001\041\130\123\010\242\060\015\006\011\052\206 +\110\206\367\015\001\001\013\005\000\060\114\061\040\060\036\006 +\003\125\004\013\023\027\107\154\157\142\141\154\123\151\147\156 +\040\122\157\157\164\040\103\101\040\055\040\122\063\061\023\060 +\021\006\003\125\004\012\023\012\107\154\157\142\141\154\123\151 +\147\156\061\023\060\021\006\003\125\004\003\023\012\107\154\157 +\142\141\154\123\151\147\156\060\036\027\015\060\071\060\063\061 +\070\061\060\060\060\060\060\132\027\015\062\071\060\063\061\070 +\061\060\060\060\060\060\132\060\114\061\040\060\036\006\003\125 +\004\013\023\027\107\154\157\142\141\154\123\151\147\156\040\122 +\157\157\164\040\103\101\040\055\040\122\063\061\023\060\021\006 +\003\125\004\012\023\012\107\154\157\142\141\154\123\151\147\156 +\061\023\060\021\006\003\125\004\003\023\012\107\154\157\142\141 +\154\123\151\147\156\060\202\001\042\060\015\006\011\052\206\110 +\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001 +\012\002\202\001\001\000\314\045\166\220\171\006\170\042\026\365 +\300\203\266\204\312\050\236\375\005\166\021\305\255\210\162\374 +\106\002\103\307\262\212\235\004\137\044\313\056\113\341\140\202 +\106\341\122\253\014\201\107\160\154\335\144\321\353\365\054\243 +\017\202\075\014\053\256\227\327\266\024\206\020\171\273\073\023 +\200\167\214\010\341\111\322\152\142\057\037\136\372\226\150\337 +\211\047\225\070\237\006\327\076\311\313\046\131\015\163\336\260 +\310\351\046\016\203\025\306\357\133\213\322\004\140\312\111\246 +\050\366\151\073\366\313\310\050\221\345\235\212\141\127\067\254 +\164\024\334\164\340\072\356\162\057\056\234\373\320\273\277\365 +\075\000\341\006\063\350\202\053\256\123\246\072\026\163\214\335 +\101\016\040\072\300\264\247\241\351\262\117\220\056\062\140\351 +\127\313\271\004\222\150\150\345\070\046\140\165\262\237\167\377 +\221\024\357\256\040\111\374\255\100\025\110\321\002\061\141\031 +\136\270\227\357\255\167\267\144\232\172\277\137\301\023\357\233 +\142\373\015\154\340\124\151\026\251\003\332\156\351\203\223\161 +\166\306\151\205\202\027\002\003\001\000\001\243\102\060\100\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060 +\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 +\060\035\006\003\125\035\016\004\026\004\024\217\360\113\177\250 +\056\105\044\256\115\120\372\143\232\213\336\342\335\033\274\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003\202 +\001\001\000\113\100\333\300\120\252\376\310\014\357\367\226\124 +\105\111\273\226\000\011\101\254\263\023\206\206\050\007\063\312 +\153\346\164\271\272\000\055\256\244\012\323\365\361\361\017\212 +\277\163\147\112\203\307\104\173\170\340\257\156\154\157\003\051 +\216\063\071\105\303\216\344\271\127\154\252\374\022\226\354\123 +\306\055\344\044\154\271\224\143\373\334\123\150\147\126\076\203 +\270\317\065\041\303\311\150\376\316\332\302\123\252\314\220\212 +\351\360\135\106\214\225\335\172\130\050\032\057\035\336\315\000 +\067\101\217\355\104\155\327\123\050\227\176\363\147\004\036\025 +\327\212\226\264\323\336\114\047\244\114\033\163\163\166\364\027 +\231\302\037\172\016\343\055\010\255\012\034\054\377\074\253\125 +\016\017\221\176\066\353\303\127\111\276\341\056\055\174\140\213 +\303\101\121\023\043\235\316\367\062\153\224\001\250\231\347\054 +\063\037\072\073\045\322\206\100\316\073\054\206\170\311\141\057 +\024\272\356\333\125\157\337\204\356\005\011\115\275\050\330\162 +\316\323\142\120\145\036\353\222\227\203\061\331\263\265\312\107 +\130\077\137 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GlobalSign Root CA - R3" +# Issuer: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R3 +# Serial Number:04:00:00:00:00:01:21:58:53:08:a2 +# Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R3 +# Not Valid Before: Wed Mar 18 10:00:00 2009 +# Not Valid After : Sun Mar 18 10:00:00 2029 +# Fingerprint (SHA-256): CB:B5:22:D7:B7:F1:27:AD:6A:01:13:86:5B:DF:1C:D4:10:2E:7D:07:59:AF:63:5A:7C:F4:72:0D:C9:63:C5:3B +# Fingerprint (SHA1): D6:9B:56:11:48:F0:1C:77:C5:45:78:C1:09:26:DF:5B:85:69:76:AD +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root CA - R3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\326\233\126\021\110\360\034\167\305\105\170\301\011\046\337\133 +\205\151\166\255 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\305\337\270\111\312\005\023\125\356\055\272\032\303\076\260\050 +END +CKA_ISSUER MULTILINE_OCTAL +\060\114\061\040\060\036\006\003\125\004\013\023\027\107\154\157 +\142\141\154\123\151\147\156\040\122\157\157\164\040\103\101\040 +\055\040\122\063\061\023\060\021\006\003\125\004\012\023\012\107 +\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125 +\004\003\023\012\107\154\157\142\141\154\123\151\147\156 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\013\004\000\000\000\000\001\041\130\123\010\242 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Izenpe.com" +# +# Issuer: CN=Izenpe.com,O=IZENPE S.A.,C=ES +# Serial Number:00:b0:b7:5a:16:48:5f:bf:e1:cb:f5:8b:d7:19:e6:7d +# Subject: CN=Izenpe.com,O=IZENPE S.A.,C=ES +# Not Valid Before: Thu Dec 13 13:08:28 2007 +# Not Valid After : Sun Dec 13 08:27:25 2037 +# Fingerprint (SHA-256): 25:30:CC:8E:98:32:15:02:BA:D9:6F:9B:1F:BA:1B:09:9E:2D:29:9E:0F:45:48:BB:91:4F:36:3B:C0:D4:53:1F +# Fingerprint (SHA1): 2F:78:3D:25:52:18:A7:4A:65:39:71:B5:2C:A2:9C:45:15:6F:E9:19 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Izenpe.com" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\070\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\024\060\022\006\003\125\004\012\014\013\111\132\105\116\120\105 +\040\123\056\101\056\061\023\060\021\006\003\125\004\003\014\012 +\111\172\145\156\160\145\056\143\157\155 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\070\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\024\060\022\006\003\125\004\012\014\013\111\132\105\116\120\105 +\040\123\056\101\056\061\023\060\021\006\003\125\004\003\014\012 +\111\172\145\156\160\145\056\143\157\155 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\000\260\267\132\026\110\137\277\341\313\365\213\327\031 +\346\175 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\361\060\202\003\331\240\003\002\001\002\002\020\000 +\260\267\132\026\110\137\277\341\313\365\213\327\031\346\175\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\070 +\061\013\060\011\006\003\125\004\006\023\002\105\123\061\024\060 +\022\006\003\125\004\012\014\013\111\132\105\116\120\105\040\123 +\056\101\056\061\023\060\021\006\003\125\004\003\014\012\111\172 +\145\156\160\145\056\143\157\155\060\036\027\015\060\067\061\062 +\061\063\061\063\060\070\062\070\132\027\015\063\067\061\062\061 +\063\060\070\062\067\062\065\132\060\070\061\013\060\011\006\003 +\125\004\006\023\002\105\123\061\024\060\022\006\003\125\004\012 +\014\013\111\132\105\116\120\105\040\123\056\101\056\061\023\060 +\021\006\003\125\004\003\014\012\111\172\145\156\160\145\056\143 +\157\155\060\202\002\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202 +\002\001\000\311\323\172\312\017\036\254\247\206\350\026\145\152 +\261\302\033\105\062\161\225\331\376\020\133\314\257\347\245\171 +\001\217\211\303\312\362\125\161\367\167\276\167\224\363\162\244 +\054\104\330\236\222\233\024\072\241\347\044\220\012\012\126\216 +\305\330\046\224\341\331\110\341\055\076\332\012\162\335\243\231 +\025\332\201\242\207\364\173\156\046\167\211\130\255\326\353\014 +\262\101\172\163\156\155\333\172\170\101\351\010\210\022\176\207 +\056\146\021\143\154\124\373\074\235\162\300\274\056\377\302\267 +\335\015\166\343\072\327\367\264\150\276\242\365\343\201\156\301 +\106\157\135\215\340\115\306\124\125\211\032\063\061\012\261\127 +\271\243\212\230\303\354\073\064\305\225\101\151\176\165\302\074 +\040\305\141\272\121\107\240\040\220\223\241\220\113\363\116\174 +\205\105\124\232\321\005\046\101\260\265\115\035\063\276\304\003 +\310\045\174\301\160\333\073\364\011\055\124\047\110\254\057\341 +\304\254\076\310\313\222\114\123\071\067\043\354\323\001\371\340 +\011\104\115\115\144\300\341\015\132\207\042\274\255\033\243\376 +\046\265\025\363\247\374\204\031\351\354\241\210\264\104\151\204 +\203\363\211\321\164\006\251\314\013\326\302\336\047\205\120\046 +\312\027\270\311\172\207\126\054\032\001\036\154\276\023\255\020 +\254\265\044\365\070\221\241\326\113\332\361\273\322\336\107\265 +\361\274\201\366\131\153\317\031\123\351\215\025\313\112\313\251 +\157\104\345\033\101\317\341\206\247\312\320\152\237\274\114\215 +\006\063\132\242\205\345\220\065\240\142\134\026\116\360\343\242 +\372\003\032\264\054\161\263\130\054\336\173\013\333\032\017\353 +\336\041\037\006\167\006\003\260\311\357\231\374\300\271\117\013 +\206\050\376\322\271\352\343\332\245\303\107\151\022\340\333\360 +\366\031\213\355\173\160\327\002\326\355\207\030\050\054\004\044 +\114\167\344\110\212\032\306\073\232\324\017\312\372\165\322\001 +\100\132\215\171\277\213\317\113\317\252\026\301\225\344\255\114 +\212\076\027\221\324\261\142\345\202\345\200\004\244\003\176\215 +\277\332\177\242\017\227\117\014\323\015\373\327\321\345\162\176 +\034\310\167\377\133\232\017\267\256\005\106\345\361\250\026\354 +\107\244\027\002\003\001\000\001\243\201\366\060\201\363\060\201 +\260\006\003\125\035\021\004\201\250\060\201\245\201\017\151\156 +\146\157\100\151\172\145\156\160\145\056\143\157\155\244\201\221 +\060\201\216\061\107\060\105\006\003\125\004\012\014\076\111\132 +\105\116\120\105\040\123\056\101\056\040\055\040\103\111\106\040 +\101\060\061\063\063\067\062\066\060\055\122\115\145\162\143\056 +\126\151\164\157\162\151\141\055\107\141\163\164\145\151\172\040 +\124\061\060\065\065\040\106\066\062\040\123\070\061\103\060\101 +\006\003\125\004\011\014\072\101\166\144\141\040\144\145\154\040 +\115\145\144\151\164\145\162\162\141\156\145\157\040\105\164\157 +\162\142\151\144\145\141\040\061\064\040\055\040\060\061\060\061 +\060\040\126\151\164\157\162\151\141\055\107\141\163\164\145\151 +\172\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\006\060\035\006\003\125\035\016\004\026\004\024\035\034\145 +\016\250\362\045\173\264\221\317\344\261\261\346\275\125\164\154 +\005\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000 +\003\202\002\001\000\170\246\014\026\112\237\114\210\072\300\313 +\016\245\026\175\237\271\110\137\030\217\015\142\066\366\315\031 +\153\254\253\325\366\221\175\256\161\363\077\263\016\170\205\233 +\225\244\047\041\107\102\112\174\110\072\365\105\174\263\014\216 +\121\170\254\225\023\336\306\375\175\270\032\220\114\253\222\003 +\307\355\102\001\316\017\330\261\372\242\222\341\140\155\256\172 +\153\011\252\306\051\356\150\111\147\060\200\044\172\061\026\071 +\133\176\361\034\056\335\154\011\255\362\061\301\202\116\271\273 +\371\276\277\052\205\077\300\100\243\072\131\374\131\113\074\050 +\044\333\264\025\165\256\015\210\272\056\163\300\275\130\207\345 +\102\362\353\136\356\036\060\042\231\313\067\321\304\041\154\201 +\354\276\155\046\346\034\344\102\040\236\107\260\254\203\131\160 +\054\065\326\257\066\064\264\315\073\370\062\250\357\343\170\211 +\373\215\105\054\332\234\270\176\100\034\141\347\076\242\222\054 +\113\362\315\372\230\266\051\377\363\362\173\251\037\056\240\223 +\127\053\336\205\003\371\151\067\313\236\170\152\005\264\305\061 +\170\211\354\172\247\205\341\271\173\074\336\276\036\171\204\316 +\237\160\016\131\302\065\056\220\052\061\331\344\105\172\101\244 +\056\023\233\064\016\146\173\111\253\144\227\320\106\303\171\235 +\162\120\143\246\230\133\006\275\110\155\330\071\203\160\350\065 +\360\005\321\252\274\343\333\310\002\352\174\375\202\332\302\133 +\122\065\256\230\072\255\272\065\223\043\247\037\110\335\065\106 +\230\262\020\150\344\245\061\302\012\130\056\031\201\020\311\120 +\165\374\352\132\026\316\021\327\356\357\120\210\055\141\377\077 +\102\163\005\224\103\325\216\074\116\001\072\031\245\037\106\116 +\167\320\135\345\201\042\041\207\376\224\175\204\330\223\255\326 +\150\103\110\262\333\353\163\044\347\221\177\124\244\266\200\076 +\235\243\074\114\162\302\127\304\240\324\314\070\047\316\325\006 +\236\242\110\331\351\237\316\202\160\066\223\232\073\337\226\041 +\343\131\267\014\332\221\067\360\375\131\132\263\231\310\151\154 +\103\046\001\065\143\140\125\211\003\072\165\330\272\112\331\124 +\377\356\336\200\330\055\321\070\325\136\055\013\230\175\076\154 +\333\374\046\210\307 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Izenpe.com" +# Issuer: CN=Izenpe.com,O=IZENPE S.A.,C=ES +# Serial Number:00:b0:b7:5a:16:48:5f:bf:e1:cb:f5:8b:d7:19:e6:7d +# Subject: CN=Izenpe.com,O=IZENPE S.A.,C=ES +# Not Valid Before: Thu Dec 13 13:08:28 2007 +# Not Valid After : Sun Dec 13 08:27:25 2037 +# Fingerprint (SHA-256): 25:30:CC:8E:98:32:15:02:BA:D9:6F:9B:1F:BA:1B:09:9E:2D:29:9E:0F:45:48:BB:91:4F:36:3B:C0:D4:53:1F +# Fingerprint (SHA1): 2F:78:3D:25:52:18:A7:4A:65:39:71:B5:2C:A2:9C:45:15:6F:E9:19 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Izenpe.com" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\057\170\075\045\122\030\247\112\145\071\161\265\054\242\234\105 +\025\157\351\031 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\246\260\315\205\200\332\134\120\064\243\071\220\057\125\147\163 +END +CKA_ISSUER MULTILINE_OCTAL +\060\070\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\024\060\022\006\003\125\004\012\014\013\111\132\105\116\120\105 +\040\123\056\101\056\061\023\060\021\006\003\125\004\003\014\012 +\111\172\145\156\160\145\056\143\157\155 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\000\260\267\132\026\110\137\277\341\313\365\213\327\031 +\346\175 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Go Daddy Root Certificate Authority - G2" +# +# Issuer: CN=Go Daddy Root Certificate Authority - G2,O="GoDaddy.com, Inc.",L=Scottsdale,ST=Arizona,C=US +# Serial Number: 0 (0x0) +# Subject: CN=Go Daddy Root Certificate Authority - G2,O="GoDaddy.com, Inc.",L=Scottsdale,ST=Arizona,C=US +# Not Valid Before: Tue Sep 01 00:00:00 2009 +# Not Valid After : Thu Dec 31 23:59:59 2037 +# Fingerprint (SHA-256): 45:14:0B:32:47:EB:9C:C8:C5:B4:F0:D7:B5:30:91:F7:32:92:08:9E:6E:5A:63:E2:74:9D:D3:AC:A9:19:8E:DA +# Fingerprint (SHA1): 47:BE:AB:C9:22:EA:E8:0E:78:78:34:62:A7:9F:45:C2:54:FD:E6:8B +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Go Daddy Root Certificate Authority - G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157 +\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157 +\164\164\163\144\141\154\145\061\032\060\030\006\003\125\004\012 +\023\021\107\157\104\141\144\144\171\056\143\157\155\054\040\111 +\156\143\056\061\061\060\057\006\003\125\004\003\023\050\107\157 +\040\104\141\144\144\171\040\122\157\157\164\040\103\145\162\164 +\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151\164 +\171\040\055\040\107\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157 +\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157 +\164\164\163\144\141\154\145\061\032\060\030\006\003\125\004\012 +\023\021\107\157\104\141\144\144\171\056\143\157\155\054\040\111 +\156\143\056\061\061\060\057\006\003\125\004\003\023\050\107\157 +\040\104\141\144\144\171\040\122\157\157\164\040\103\145\162\164 +\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151\164 +\171\040\055\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\305\060\202\002\255\240\003\002\001\002\002\001\000 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157\156 +\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157\164 +\164\163\144\141\154\145\061\032\060\030\006\003\125\004\012\023 +\021\107\157\104\141\144\144\171\056\143\157\155\054\040\111\156 +\143\056\061\061\060\057\006\003\125\004\003\023\050\107\157\040 +\104\141\144\144\171\040\122\157\157\164\040\103\145\162\164\151 +\146\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171 +\040\055\040\107\062\060\036\027\015\060\071\060\071\060\061\060 +\060\060\060\060\060\132\027\015\063\067\061\062\063\061\062\063 +\065\071\065\071\132\060\201\203\061\013\060\011\006\003\125\004 +\006\023\002\125\123\061\020\060\016\006\003\125\004\010\023\007 +\101\162\151\172\157\156\141\061\023\060\021\006\003\125\004\007 +\023\012\123\143\157\164\164\163\144\141\154\145\061\032\060\030 +\006\003\125\004\012\023\021\107\157\104\141\144\144\171\056\143 +\157\155\054\040\111\156\143\056\061\061\060\057\006\003\125\004 +\003\023\050\107\157\040\104\141\144\144\171\040\122\157\157\164 +\040\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164 +\150\157\162\151\164\171\040\055\040\107\062\060\202\001\042\060 +\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202 +\001\017\000\060\202\001\012\002\202\001\001\000\277\161\142\010 +\361\372\131\064\367\033\311\030\243\367\200\111\130\351\042\203 +\023\246\305\040\103\001\073\204\361\346\205\111\237\047\352\366 +\204\033\116\240\264\333\160\230\307\062\001\261\005\076\007\116 +\356\364\372\117\057\131\060\042\347\253\031\126\153\342\200\007 +\374\363\026\165\200\071\121\173\345\371\065\266\164\116\251\215 +\202\023\344\266\077\251\003\203\372\242\276\212\025\152\177\336 +\013\303\266\031\024\005\312\352\303\250\004\224\073\106\174\062 +\015\363\000\146\042\310\215\151\155\066\214\021\030\267\323\262 +\034\140\264\070\372\002\214\316\323\335\106\007\336\012\076\353 +\135\174\310\174\373\260\053\123\244\222\142\151\121\045\005\141 +\032\104\201\214\054\251\103\226\043\337\254\072\201\232\016\051 +\305\034\251\351\135\036\266\236\236\060\012\071\316\361\210\200 +\373\113\135\314\062\354\205\142\103\045\064\002\126\047\001\221 +\264\073\160\052\077\156\261\350\234\210\001\175\237\324\371\333 +\123\155\140\235\277\054\347\130\253\270\137\106\374\316\304\033 +\003\074\011\353\111\061\134\151\106\263\340\107\002\003\001\000 +\001\243\102\060\100\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\035\006\003\125\035\016\004\026\004 +\024\072\232\205\007\020\147\050\266\357\366\275\005\101\156\040 +\301\224\332\017\336\060\015\006\011\052\206\110\206\367\015\001 +\001\013\005\000\003\202\001\001\000\231\333\135\171\325\371\227 +\131\147\003\141\361\176\073\006\061\165\055\241\040\216\117\145 +\207\264\367\246\234\274\330\351\057\320\333\132\356\317\164\214 +\163\264\070\102\332\005\173\370\002\165\270\375\245\261\327\256 +\366\327\336\023\313\123\020\176\212\106\321\227\372\267\056\053 +\021\253\220\260\047\200\371\350\237\132\351\067\237\253\344\337 +\154\263\205\027\235\075\331\044\117\171\221\065\326\137\004\353 +\200\203\253\232\002\055\265\020\364\330\220\307\004\163\100\355 +\162\045\240\251\237\354\236\253\150\022\231\127\306\217\022\072 +\011\244\275\104\375\006\025\067\301\233\344\062\243\355\070\350 +\330\144\363\054\176\024\374\002\352\237\315\377\007\150\027\333 +\042\220\070\055\172\215\321\124\361\151\343\137\063\312\172\075 +\173\012\343\312\177\137\071\345\342\165\272\305\166\030\063\316 +\054\360\057\114\255\367\261\347\316\117\250\304\233\112\124\006 +\305\177\175\325\010\017\342\034\376\176\027\270\254\136\366\324 +\026\262\103\011\014\115\366\247\153\264\231\204\145\312\172\210 +\342\342\104\276\134\367\352\034\365 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Go Daddy Root Certificate Authority - G2" +# Issuer: CN=Go Daddy Root Certificate Authority - G2,O="GoDaddy.com, Inc.",L=Scottsdale,ST=Arizona,C=US +# Serial Number: 0 (0x0) +# Subject: CN=Go Daddy Root Certificate Authority - G2,O="GoDaddy.com, Inc.",L=Scottsdale,ST=Arizona,C=US +# Not Valid Before: Tue Sep 01 00:00:00 2009 +# Not Valid After : Thu Dec 31 23:59:59 2037 +# Fingerprint (SHA-256): 45:14:0B:32:47:EB:9C:C8:C5:B4:F0:D7:B5:30:91:F7:32:92:08:9E:6E:5A:63:E2:74:9D:D3:AC:A9:19:8E:DA +# Fingerprint (SHA1): 47:BE:AB:C9:22:EA:E8:0E:78:78:34:62:A7:9F:45:C2:54:FD:E6:8B +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Go Daddy Root Certificate Authority - G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\107\276\253\311\042\352\350\016\170\170\064\142\247\237\105\302 +\124\375\346\213 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\200\072\274\042\301\346\373\215\233\073\047\112\062\033\232\001 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\203\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157 +\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157 +\164\164\163\144\141\154\145\061\032\060\030\006\003\125\004\012 +\023\021\107\157\104\141\144\144\171\056\143\157\155\054\040\111 +\156\143\056\061\061\060\057\006\003\125\004\003\023\050\107\157 +\040\104\141\144\144\171\040\122\157\157\164\040\103\145\162\164 +\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151\164 +\171\040\055\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Starfield Root Certificate Authority - G2" +# +# Issuer: CN=Starfield Root Certificate Authority - G2,O="Starfield Technologies, Inc.",L=Scottsdale,ST=Arizona,C=US +# Serial Number: 0 (0x0) +# Subject: CN=Starfield Root Certificate Authority - G2,O="Starfield Technologies, Inc.",L=Scottsdale,ST=Arizona,C=US +# Not Valid Before: Tue Sep 01 00:00:00 2009 +# Not Valid After : Thu Dec 31 23:59:59 2037 +# Fingerprint (SHA-256): 2C:E1:CB:0B:F9:D2:F9:E1:02:99:3F:BE:21:51:52:C3:B2:DD:0C:AB:DE:1C:68:E5:31:9B:83:91:54:DB:B7:F5 +# Fingerprint (SHA1): B5:1C:06:7C:EE:2B:0C:3D:F8:55:AB:2D:92:F4:FE:39:D4:E7:0F:0E +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Starfield Root Certificate Authority - G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\217\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157 +\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157 +\164\164\163\144\141\154\145\061\045\060\043\006\003\125\004\012 +\023\034\123\164\141\162\146\151\145\154\144\040\124\145\143\150 +\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061\062 +\060\060\006\003\125\004\003\023\051\123\164\141\162\146\151\145 +\154\144\040\122\157\157\164\040\103\145\162\164\151\146\151\143 +\141\164\145\040\101\165\164\150\157\162\151\164\171\040\055\040 +\107\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\217\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157 +\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157 +\164\164\163\144\141\154\145\061\045\060\043\006\003\125\004\012 +\023\034\123\164\141\162\146\151\145\154\144\040\124\145\143\150 +\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061\062 +\060\060\006\003\125\004\003\023\051\123\164\141\162\146\151\145 +\154\144\040\122\157\157\164\040\103\145\162\164\151\146\151\143 +\141\164\145\040\101\165\164\150\157\162\151\164\171\040\055\040 +\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\335\060\202\002\305\240\003\002\001\002\002\001\000 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\201\217\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157\156 +\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157\164 +\164\163\144\141\154\145\061\045\060\043\006\003\125\004\012\023 +\034\123\164\141\162\146\151\145\154\144\040\124\145\143\150\156 +\157\154\157\147\151\145\163\054\040\111\156\143\056\061\062\060 +\060\006\003\125\004\003\023\051\123\164\141\162\146\151\145\154 +\144\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141 +\164\145\040\101\165\164\150\157\162\151\164\171\040\055\040\107 +\062\060\036\027\015\060\071\060\071\060\061\060\060\060\060\060 +\060\132\027\015\063\067\061\062\063\061\062\063\065\071\065\071 +\132\060\201\217\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172 +\157\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143 +\157\164\164\163\144\141\154\145\061\045\060\043\006\003\125\004 +\012\023\034\123\164\141\162\146\151\145\154\144\040\124\145\143 +\150\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061 +\062\060\060\006\003\125\004\003\023\051\123\164\141\162\146\151 +\145\154\144\040\122\157\157\164\040\103\145\162\164\151\146\151 +\143\141\164\145\040\101\165\164\150\157\162\151\164\171\040\055 +\040\107\062\060\202\001\042\060\015\006\011\052\206\110\206\367 +\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002 +\202\001\001\000\275\355\301\003\374\366\217\374\002\261\157\133 +\237\110\331\235\171\342\242\267\003\141\126\030\303\107\266\327 +\312\075\065\056\211\103\367\241\151\233\336\212\032\375\023\040 +\234\264\111\167\062\051\126\375\271\354\214\335\042\372\162\334 +\047\141\227\356\366\132\204\354\156\031\271\211\054\334\204\133 +\325\164\373\153\137\305\211\245\020\122\211\106\125\364\270\165 +\034\346\177\344\124\256\113\370\125\162\127\002\031\370\027\161 +\131\353\036\050\007\164\305\235\110\276\154\264\364\244\260\363 +\144\067\171\222\300\354\106\136\177\341\155\123\114\142\257\315 +\037\013\143\273\072\235\373\374\171\000\230\141\164\317\046\202 +\100\143\363\262\162\152\031\015\231\312\324\016\165\314\067\373 +\213\211\301\131\361\142\177\137\263\137\145\060\370\247\267\115 +\166\132\036\166\136\064\300\350\226\126\231\212\263\360\177\244 +\315\275\334\062\061\174\221\317\340\137\021\370\153\252\111\134 +\321\231\224\321\242\343\143\133\011\166\265\126\142\341\113\164 +\035\226\324\046\324\010\004\131\320\230\016\016\346\336\374\303 +\354\037\220\361\002\003\001\000\001\243\102\060\100\060\017\006 +\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060\035 +\006\003\125\035\016\004\026\004\024\174\014\062\037\247\331\060 +\177\304\175\150\243\142\250\241\316\253\007\133\047\060\015\006 +\011\052\206\110\206\367\015\001\001\013\005\000\003\202\001\001 +\000\021\131\372\045\117\003\157\224\231\073\232\037\202\205\071 +\324\166\005\224\136\341\050\223\155\142\135\011\302\240\250\324 +\260\165\070\361\064\152\235\344\237\212\206\046\121\346\054\321 +\306\055\156\225\040\112\222\001\354\270\212\147\173\061\342\147 +\056\214\225\003\046\056\103\235\112\061\366\016\265\014\273\267 +\342\067\177\042\272\000\243\016\173\122\373\153\273\073\304\323 +\171\121\116\315\220\364\147\007\031\310\074\106\172\015\001\175 +\305\130\347\155\346\205\060\027\232\044\304\020\340\004\367\340 +\362\177\324\252\012\377\102\035\067\355\224\345\144\131\022\040 +\167\070\323\062\076\070\201\165\226\163\372\150\217\261\313\316 +\037\305\354\372\234\176\317\176\261\361\007\055\266\374\277\312 +\244\277\320\227\005\112\274\352\030\050\002\220\275\124\170\011 +\041\161\323\321\175\035\331\026\260\251\141\075\320\012\000\042 +\374\307\173\313\011\144\105\013\073\100\201\367\175\174\062\365 +\230\312\130\216\175\052\356\220\131\163\144\371\066\164\136\045 +\241\365\146\005\056\177\071\025\251\052\373\120\213\216\205\151 +\364 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Starfield Root Certificate Authority - G2" +# Issuer: CN=Starfield Root Certificate Authority - G2,O="Starfield Technologies, Inc.",L=Scottsdale,ST=Arizona,C=US +# Serial Number: 0 (0x0) +# Subject: CN=Starfield Root Certificate Authority - G2,O="Starfield Technologies, Inc.",L=Scottsdale,ST=Arizona,C=US +# Not Valid Before: Tue Sep 01 00:00:00 2009 +# Not Valid After : Thu Dec 31 23:59:59 2037 +# Fingerprint (SHA-256): 2C:E1:CB:0B:F9:D2:F9:E1:02:99:3F:BE:21:51:52:C3:B2:DD:0C:AB:DE:1C:68:E5:31:9B:83:91:54:DB:B7:F5 +# Fingerprint (SHA1): B5:1C:06:7C:EE:2B:0C:3D:F8:55:AB:2D:92:F4:FE:39:D4:E7:0F:0E +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Starfield Root Certificate Authority - G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\265\034\006\174\356\053\014\075\370\125\253\055\222\364\376\071 +\324\347\017\016 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\326\071\201\306\122\176\226\151\374\374\312\146\355\005\362\226 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\217\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157 +\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157 +\164\164\163\144\141\154\145\061\045\060\043\006\003\125\004\012 +\023\034\123\164\141\162\146\151\145\154\144\040\124\145\143\150 +\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061\062 +\060\060\006\003\125\004\003\023\051\123\164\141\162\146\151\145 +\154\144\040\122\157\157\164\040\103\145\162\164\151\146\151\143 +\141\164\145\040\101\165\164\150\157\162\151\164\171\040\055\040 +\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Starfield Services Root Certificate Authority - G2" +# +# Issuer: CN=Starfield Services Root Certificate Authority - G2,O="Starfield Technologies, Inc.",L=Scottsdale,ST=Arizona,C=US +# Serial Number: 0 (0x0) +# Subject: CN=Starfield Services Root Certificate Authority - G2,O="Starfield Technologies, Inc.",L=Scottsdale,ST=Arizona,C=US +# Not Valid Before: Tue Sep 01 00:00:00 2009 +# Not Valid After : Thu Dec 31 23:59:59 2037 +# Fingerprint (SHA-256): 56:8D:69:05:A2:C8:87:08:A4:B3:02:51:90:ED:CF:ED:B1:97:4A:60:6A:13:C6:E5:29:0F:CB:2A:E6:3E:DA:B5 +# Fingerprint (SHA1): 92:5A:8F:8D:2C:6D:04:E0:66:5F:59:6A:FF:22:D8:63:E8:25:6F:3F +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Starfield Services Root Certificate Authority - G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\230\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157 +\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157 +\164\164\163\144\141\154\145\061\045\060\043\006\003\125\004\012 +\023\034\123\164\141\162\146\151\145\154\144\040\124\145\143\150 +\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061\073 +\060\071\006\003\125\004\003\023\062\123\164\141\162\146\151\145 +\154\144\040\123\145\162\166\151\143\145\163\040\122\157\157\164 +\040\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164 +\150\157\162\151\164\171\040\055\040\107\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\230\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157 +\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157 +\164\164\163\144\141\154\145\061\045\060\043\006\003\125\004\012 +\023\034\123\164\141\162\146\151\145\154\144\040\124\145\143\150 +\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061\073 +\060\071\006\003\125\004\003\023\062\123\164\141\162\146\151\145 +\154\144\040\123\145\162\166\151\143\145\163\040\122\157\157\164 +\040\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164 +\150\157\162\151\164\171\040\055\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\357\060\202\002\327\240\003\002\001\002\002\001\000 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\201\230\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157\156 +\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157\164 +\164\163\144\141\154\145\061\045\060\043\006\003\125\004\012\023 +\034\123\164\141\162\146\151\145\154\144\040\124\145\143\150\156 +\157\154\157\147\151\145\163\054\040\111\156\143\056\061\073\060 +\071\006\003\125\004\003\023\062\123\164\141\162\146\151\145\154 +\144\040\123\145\162\166\151\143\145\163\040\122\157\157\164\040 +\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150 +\157\162\151\164\171\040\055\040\107\062\060\036\027\015\060\071 +\060\071\060\061\060\060\060\060\060\060\132\027\015\063\067\061 +\062\063\061\062\063\065\071\065\071\132\060\201\230\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\020\060\016\006\003 +\125\004\010\023\007\101\162\151\172\157\156\141\061\023\060\021 +\006\003\125\004\007\023\012\123\143\157\164\164\163\144\141\154 +\145\061\045\060\043\006\003\125\004\012\023\034\123\164\141\162 +\146\151\145\154\144\040\124\145\143\150\156\157\154\157\147\151 +\145\163\054\040\111\156\143\056\061\073\060\071\006\003\125\004 +\003\023\062\123\164\141\162\146\151\145\154\144\040\123\145\162 +\166\151\143\145\163\040\122\157\157\164\040\103\145\162\164\151 +\146\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171 +\040\055\040\107\062\060\202\001\042\060\015\006\011\052\206\110 +\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001 +\012\002\202\001\001\000\325\014\072\304\052\371\116\342\365\276 +\031\227\137\216\210\123\261\037\077\313\317\237\040\023\155\051 +\072\310\017\175\074\367\153\166\070\143\331\066\140\250\233\136 +\134\000\200\262\057\131\177\366\207\371\045\103\206\347\151\033 +\122\232\220\341\161\343\330\055\015\116\157\366\310\111\331\266 +\363\032\126\256\053\266\164\024\353\317\373\046\343\032\272\035 +\226\056\152\073\130\224\211\107\126\377\045\240\223\160\123\203 +\332\204\164\024\303\147\236\004\150\072\337\216\100\132\035\112 +\116\317\103\221\073\347\126\326\000\160\313\122\356\173\175\256 +\072\347\274\061\371\105\366\302\140\317\023\131\002\053\200\314 +\064\107\337\271\336\220\145\155\002\317\054\221\246\246\347\336 +\205\030\111\174\146\116\243\072\155\251\265\356\064\056\272\015 +\003\270\063\337\107\353\261\153\215\045\331\233\316\201\321\105 +\106\062\226\160\207\336\002\016\111\103\205\266\154\163\273\144 +\352\141\101\254\311\324\124\337\207\057\307\042\262\046\314\237 +\131\124\150\237\374\276\052\057\304\125\034\165\100\140\027\205 +\002\125\071\213\177\005\002\003\001\000\001\243\102\060\100\060 +\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 +\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006 +\060\035\006\003\125\035\016\004\026\004\024\234\137\000\337\252 +\001\327\060\053\070\210\242\270\155\112\234\362\021\221\203\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003\202 +\001\001\000\113\066\246\204\167\151\335\073\031\237\147\043\010 +\157\016\141\311\375\204\334\137\330\066\201\315\330\033\101\055 +\237\140\335\307\032\150\331\321\156\206\341\210\043\317\023\336 +\103\317\342\064\263\004\235\037\051\325\277\370\136\310\325\301 +\275\356\222\157\062\164\362\221\202\057\275\202\102\172\255\052 +\267\040\175\115\274\172\125\022\302\025\352\275\367\152\225\056 +\154\164\237\317\034\264\362\305\001\243\205\320\162\076\255\163 +\253\013\233\165\014\155\105\267\216\224\254\226\067\265\240\320 +\217\025\107\016\343\350\203\335\217\375\357\101\001\167\314\047 +\251\142\205\063\362\067\010\357\161\317\167\006\336\310\031\035 +\210\100\317\175\106\035\377\036\307\341\316\377\043\333\306\372 +\215\125\116\251\002\347\107\021\106\076\364\375\275\173\051\046 +\273\251\141\142\067\050\266\055\052\366\020\206\144\311\160\247 +\322\255\267\051\160\171\352\074\332\143\045\237\375\150\267\060 +\354\160\373\165\212\267\155\140\147\262\036\310\271\351\330\250 +\157\002\213\147\015\115\046\127\161\332\040\374\301\112\120\215 +\261\050\272 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Starfield Services Root Certificate Authority - G2" +# Issuer: CN=Starfield Services Root Certificate Authority - G2,O="Starfield Technologies, Inc.",L=Scottsdale,ST=Arizona,C=US +# Serial Number: 0 (0x0) +# Subject: CN=Starfield Services Root Certificate Authority - G2,O="Starfield Technologies, Inc.",L=Scottsdale,ST=Arizona,C=US +# Not Valid Before: Tue Sep 01 00:00:00 2009 +# Not Valid After : Thu Dec 31 23:59:59 2037 +# Fingerprint (SHA-256): 56:8D:69:05:A2:C8:87:08:A4:B3:02:51:90:ED:CF:ED:B1:97:4A:60:6A:13:C6:E5:29:0F:CB:2A:E6:3E:DA:B5 +# Fingerprint (SHA1): 92:5A:8F:8D:2C:6D:04:E0:66:5F:59:6A:FF:22:D8:63:E8:25:6F:3F +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Starfield Services Root Certificate Authority - G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\222\132\217\215\054\155\004\340\146\137\131\152\377\042\330\143 +\350\045\157\077 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\027\065\164\257\173\141\034\353\364\371\074\342\356\100\371\242 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\230\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\020\060\016\006\003\125\004\010\023\007\101\162\151\172\157 +\156\141\061\023\060\021\006\003\125\004\007\023\012\123\143\157 +\164\164\163\144\141\154\145\061\045\060\043\006\003\125\004\012 +\023\034\123\164\141\162\146\151\145\154\144\040\124\145\143\150 +\156\157\154\157\147\151\145\163\054\040\111\156\143\056\061\073 +\060\071\006\003\125\004\003\023\062\123\164\141\162\146\151\145 +\154\144\040\123\145\162\166\151\143\145\163\040\122\157\157\164 +\040\103\145\162\164\151\146\151\143\141\164\145\040\101\165\164 +\150\157\162\151\164\171\040\055\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "AffirmTrust Commercial" +# +# Issuer: CN=AffirmTrust Commercial,O=AffirmTrust,C=US +# Serial Number:77:77:06:27:26:a9:b1:7c +# Subject: CN=AffirmTrust Commercial,O=AffirmTrust,C=US +# Not Valid Before: Fri Jan 29 14:06:06 2010 +# Not Valid After : Tue Dec 31 14:06:06 2030 +# Fingerprint (SHA-256): 03:76:AB:1D:54:C5:F9:80:3C:E4:B2:E2:01:A0:EE:7E:EF:7B:57:B6:36:E8:A9:3C:9B:8D:48:60:C9:6F:5F:A7 +# Fingerprint (SHA1): F9:B5:B6:32:45:5F:9C:BE:EC:57:5F:80:DC:E9:6E:2C:C7:B2:78:B7 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AffirmTrust Commercial" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\037\060\035\006\003\125\004\003\014\026 +\101\146\146\151\162\155\124\162\165\163\164\040\103\157\155\155 +\145\162\143\151\141\154 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\037\060\035\006\003\125\004\003\014\026 +\101\146\146\151\162\155\124\162\165\163\164\040\103\157\155\155 +\145\162\143\151\141\154 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\167\167\006\047\046\251\261\174 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\114\060\202\002\064\240\003\002\001\002\002\010\167 +\167\006\047\046\251\261\174\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\060\104\061\013\060\011\006\003\125\004 +\006\023\002\125\123\061\024\060\022\006\003\125\004\012\014\013 +\101\146\146\151\162\155\124\162\165\163\164\061\037\060\035\006 +\003\125\004\003\014\026\101\146\146\151\162\155\124\162\165\163 +\164\040\103\157\155\155\145\162\143\151\141\154\060\036\027\015 +\061\060\060\061\062\071\061\064\060\066\060\066\132\027\015\063 +\060\061\062\063\061\061\064\060\066\060\066\132\060\104\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\024\060\022\006 +\003\125\004\012\014\013\101\146\146\151\162\155\124\162\165\163 +\164\061\037\060\035\006\003\125\004\003\014\026\101\146\146\151 +\162\155\124\162\165\163\164\040\103\157\155\155\145\162\143\151 +\141\154\060\202\001\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202 +\001\001\000\366\033\117\147\007\053\241\025\365\006\042\313\037 +\001\262\343\163\105\006\104\111\054\273\111\045\024\326\316\303 +\267\253\054\117\306\101\062\224\127\372\022\247\133\016\342\217 +\037\036\206\031\247\252\265\055\271\137\015\212\302\257\205\065 +\171\062\055\273\034\142\067\362\261\133\112\075\312\315\161\137 +\351\102\276\224\350\310\336\371\042\110\144\306\345\253\306\053 +\155\255\005\360\372\325\013\317\232\345\360\120\244\213\073\107 +\245\043\133\172\172\370\063\077\270\357\231\227\343\040\301\326 +\050\211\317\224\373\271\105\355\343\100\027\021\324\164\360\013 +\061\342\053\046\152\233\114\127\256\254\040\076\272\105\172\005 +\363\275\233\151\025\256\175\116\040\143\304\065\166\072\007\002 +\311\067\375\307\107\356\350\361\166\035\163\025\362\227\244\265 +\310\172\171\331\102\252\053\177\134\376\316\046\117\243\146\201 +\065\257\104\272\124\036\034\060\062\145\235\346\074\223\136\120 +\116\172\343\072\324\156\314\032\373\371\322\067\256\044\052\253 +\127\003\042\050\015\111\165\177\267\050\332\165\277\216\343\334 +\016\171\061\002\003\001\000\001\243\102\060\100\060\035\006\003 +\125\035\016\004\026\004\024\235\223\306\123\213\136\312\257\077 +\237\036\017\345\231\225\274\044\366\224\217\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\015\006\011 +\052\206\110\206\367\015\001\001\013\005\000\003\202\001\001\000 +\130\254\364\004\016\315\300\015\377\012\375\324\272\026\137\051 +\275\173\150\231\130\111\322\264\035\067\115\177\047\175\106\006 +\135\103\306\206\056\076\163\262\046\175\117\223\251\266\304\052 +\232\253\041\227\024\261\336\214\323\253\211\025\330\153\044\324 +\361\026\256\330\244\134\324\177\121\216\355\030\001\261\223\143 +\275\274\370\141\200\232\236\261\316\102\160\342\251\175\006\045 +\175\047\241\376\157\354\263\036\044\332\343\113\125\032\000\073 +\065\264\073\331\327\135\060\375\201\023\211\362\302\006\053\355 +\147\304\216\311\103\262\134\153\025\211\002\274\142\374\116\362 +\265\063\252\262\157\323\012\242\120\343\366\073\350\056\104\302 +\333\146\070\251\063\126\110\361\155\033\063\215\015\214\077\140 +\067\235\323\312\155\176\064\176\015\237\162\166\213\033\237\162 +\375\122\065\101\105\002\226\057\034\262\232\163\111\041\261\111 +\107\105\107\264\357\152\064\021\311\115\232\314\131\267\326\002 +\236\132\116\145\265\224\256\033\337\051\260\026\361\277\000\236 +\007\072\027\144\265\004\265\043\041\231\012\225\073\227\174\357 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +# For Server Distrust After: Sat Nov 30 23:59:59 2024 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\061\061\063\060\062\063\065\071\065\071\132 +END +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "AffirmTrust Commercial" +# Issuer: CN=AffirmTrust Commercial,O=AffirmTrust,C=US +# Serial Number:77:77:06:27:26:a9:b1:7c +# Subject: CN=AffirmTrust Commercial,O=AffirmTrust,C=US +# Not Valid Before: Fri Jan 29 14:06:06 2010 +# Not Valid After : Tue Dec 31 14:06:06 2030 +# Fingerprint (SHA-256): 03:76:AB:1D:54:C5:F9:80:3C:E4:B2:E2:01:A0:EE:7E:EF:7B:57:B6:36:E8:A9:3C:9B:8D:48:60:C9:6F:5F:A7 +# Fingerprint (SHA1): F9:B5:B6:32:45:5F:9C:BE:EC:57:5F:80:DC:E9:6E:2C:C7:B2:78:B7 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AffirmTrust Commercial" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\371\265\266\062\105\137\234\276\354\127\137\200\334\351\156\054 +\307\262\170\267 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\202\222\272\133\357\315\212\157\246\075\125\371\204\366\326\267 +END +CKA_ISSUER MULTILINE_OCTAL +\060\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\037\060\035\006\003\125\004\003\014\026 +\101\146\146\151\162\155\124\162\165\163\164\040\103\157\155\155 +\145\162\143\151\141\154 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\167\167\006\047\046\251\261\174 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "AffirmTrust Networking" +# +# Issuer: CN=AffirmTrust Networking,O=AffirmTrust,C=US +# Serial Number:7c:4f:04:39:1c:d4:99:2d +# Subject: CN=AffirmTrust Networking,O=AffirmTrust,C=US +# Not Valid Before: Fri Jan 29 14:08:24 2010 +# Not Valid After : Tue Dec 31 14:08:24 2030 +# Fingerprint (SHA-256): 0A:81:EC:5A:92:97:77:F1:45:90:4A:F3:8D:5D:50:9F:66:B5:E2:C5:8F:CD:B5:31:05:8B:0E:17:F3:F0:B4:1B +# Fingerprint (SHA1): 29:36:21:02:8B:20:ED:02:F5:66:C5:32:D1:D6:ED:90:9F:45:00:2F +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AffirmTrust Networking" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\037\060\035\006\003\125\004\003\014\026 +\101\146\146\151\162\155\124\162\165\163\164\040\116\145\164\167 +\157\162\153\151\156\147 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\037\060\035\006\003\125\004\003\014\026 +\101\146\146\151\162\155\124\162\165\163\164\040\116\145\164\167 +\157\162\153\151\156\147 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\174\117\004\071\034\324\231\055 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\114\060\202\002\064\240\003\002\001\002\002\010\174 +\117\004\071\034\324\231\055\060\015\006\011\052\206\110\206\367 +\015\001\001\005\005\000\060\104\061\013\060\011\006\003\125\004 +\006\023\002\125\123\061\024\060\022\006\003\125\004\012\014\013 +\101\146\146\151\162\155\124\162\165\163\164\061\037\060\035\006 +\003\125\004\003\014\026\101\146\146\151\162\155\124\162\165\163 +\164\040\116\145\164\167\157\162\153\151\156\147\060\036\027\015 +\061\060\060\061\062\071\061\064\060\070\062\064\132\027\015\063 +\060\061\062\063\061\061\064\060\070\062\064\132\060\104\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\024\060\022\006 +\003\125\004\012\014\013\101\146\146\151\162\155\124\162\165\163 +\164\061\037\060\035\006\003\125\004\003\014\026\101\146\146\151 +\162\155\124\162\165\163\164\040\116\145\164\167\157\162\153\151 +\156\147\060\202\001\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202 +\001\001\000\264\204\314\063\027\056\153\224\154\153\141\122\240 +\353\243\317\171\224\114\345\224\200\231\313\125\144\104\145\217 +\147\144\342\006\343\134\067\111\366\057\233\204\204\036\055\362 +\140\235\060\116\314\204\205\342\054\317\036\236\376\066\253\063 +\167\065\104\330\065\226\032\075\066\350\172\016\330\325\107\241 +\152\151\213\331\374\273\072\256\171\132\325\364\326\161\273\232 +\220\043\153\232\267\210\164\207\014\036\137\271\236\055\372\253 +\123\053\334\273\166\076\223\114\010\010\214\036\242\043\034\324 +\152\255\042\272\231\001\056\155\145\313\276\044\146\125\044\113 +\100\104\261\033\327\341\302\205\300\336\020\077\075\355\270\374 +\361\361\043\123\334\277\145\227\157\331\371\100\161\215\175\275 +\225\324\316\276\240\136\047\043\336\375\246\320\046\016\000\051 +\353\074\106\360\075\140\277\077\120\322\334\046\101\121\236\024 +\067\102\004\243\160\127\250\033\207\355\055\372\173\356\214\012 +\343\251\146\211\031\313\101\371\335\104\066\141\317\342\167\106 +\310\175\366\364\222\201\066\375\333\064\361\162\176\363\014\026 +\275\264\025\002\003\001\000\001\243\102\060\100\060\035\006\003 +\125\035\016\004\026\004\024\007\037\322\347\234\332\302\156\242 +\100\264\260\172\120\020\120\164\304\310\275\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\015\006\011 +\052\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000 +\211\127\262\026\172\250\302\375\326\331\233\233\064\302\234\264 +\062\024\115\247\244\337\354\276\247\276\370\103\333\221\067\316 +\264\062\056\120\125\032\065\116\166\103\161\040\357\223\167\116 +\025\160\056\207\303\301\035\155\334\313\265\047\324\054\126\321 +\122\123\072\104\322\163\310\304\033\005\145\132\142\222\234\356 +\101\215\061\333\347\064\352\131\041\325\001\172\327\144\270\144 +\071\315\311\355\257\355\113\003\110\247\240\231\001\200\334\145 +\243\066\256\145\131\110\117\202\113\310\145\361\127\035\345\131 +\056\012\077\154\330\321\365\345\011\264\154\124\000\012\340\025 +\115\207\165\155\267\130\226\132\335\155\322\000\240\364\233\110 +\276\303\067\244\272\066\340\174\207\205\227\032\025\242\336\056 +\242\133\275\257\030\371\220\120\315\160\131\370\047\147\107\313 +\307\240\007\072\175\321\054\135\154\031\072\146\265\175\375\221 +\157\202\261\276\010\223\333\024\107\361\242\067\307\105\236\074 +\307\167\257\144\250\223\337\366\151\203\202\140\362\111\102\064 +\355\132\000\124\205\034\026\066\222\014\134\372\246\255\277\333 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +# For Server Distrust After: Sat Nov 30 23:59:59 2024 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\061\061\063\060\062\063\065\071\065\071\132 +END +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "AffirmTrust Networking" +# Issuer: CN=AffirmTrust Networking,O=AffirmTrust,C=US +# Serial Number:7c:4f:04:39:1c:d4:99:2d +# Subject: CN=AffirmTrust Networking,O=AffirmTrust,C=US +# Not Valid Before: Fri Jan 29 14:08:24 2010 +# Not Valid After : Tue Dec 31 14:08:24 2030 +# Fingerprint (SHA-256): 0A:81:EC:5A:92:97:77:F1:45:90:4A:F3:8D:5D:50:9F:66:B5:E2:C5:8F:CD:B5:31:05:8B:0E:17:F3:F0:B4:1B +# Fingerprint (SHA1): 29:36:21:02:8B:20:ED:02:F5:66:C5:32:D1:D6:ED:90:9F:45:00:2F +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AffirmTrust Networking" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\051\066\041\002\213\040\355\002\365\146\305\062\321\326\355\220 +\237\105\000\057 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\102\145\312\276\001\232\232\114\251\214\101\111\315\300\325\177 +END +CKA_ISSUER MULTILINE_OCTAL +\060\104\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\037\060\035\006\003\125\004\003\014\026 +\101\146\146\151\162\155\124\162\165\163\164\040\116\145\164\167 +\157\162\153\151\156\147 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\174\117\004\071\034\324\231\055 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "AffirmTrust Premium" +# +# Issuer: CN=AffirmTrust Premium,O=AffirmTrust,C=US +# Serial Number:6d:8c:14:46:b1:a6:0a:ee +# Subject: CN=AffirmTrust Premium,O=AffirmTrust,C=US +# Not Valid Before: Fri Jan 29 14:10:36 2010 +# Not Valid After : Mon Dec 31 14:10:36 2040 +# Fingerprint (SHA-256): 70:A7:3F:7F:37:6B:60:07:42:48:90:45:34:B1:14:82:D5:BF:0E:69:8E:CC:49:8D:F5:25:77:EB:F2:E9:3B:9A +# Fingerprint (SHA1): D8:A6:33:2C:E0:03:6F:B1:85:F6:63:4F:7D:6A:06:65:26:32:28:27 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AffirmTrust Premium" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\101\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\034\060\032\006\003\125\004\003\014\023 +\101\146\146\151\162\155\124\162\165\163\164\040\120\162\145\155 +\151\165\155 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\101\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\034\060\032\006\003\125\004\003\014\023 +\101\146\146\151\162\155\124\162\165\163\164\040\120\162\145\155 +\151\165\155 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\155\214\024\106\261\246\012\356 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\106\060\202\003\056\240\003\002\001\002\002\010\155 +\214\024\106\261\246\012\356\060\015\006\011\052\206\110\206\367 +\015\001\001\014\005\000\060\101\061\013\060\011\006\003\125\004 +\006\023\002\125\123\061\024\060\022\006\003\125\004\012\014\013 +\101\146\146\151\162\155\124\162\165\163\164\061\034\060\032\006 +\003\125\004\003\014\023\101\146\146\151\162\155\124\162\165\163 +\164\040\120\162\145\155\151\165\155\060\036\027\015\061\060\060 +\061\062\071\061\064\061\060\063\066\132\027\015\064\060\061\062 +\063\061\061\064\061\060\063\066\132\060\101\061\013\060\011\006 +\003\125\004\006\023\002\125\123\061\024\060\022\006\003\125\004 +\012\014\013\101\146\146\151\162\155\124\162\165\163\164\061\034 +\060\032\006\003\125\004\003\014\023\101\146\146\151\162\155\124 +\162\165\163\164\040\120\162\145\155\151\165\155\060\202\002\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\002\017\000\060\202\002\012\002\202\002\001\000\304\022\337 +\251\137\376\101\335\335\365\237\212\343\366\254\341\074\170\232 +\274\330\360\177\172\240\063\052\334\215\040\133\256\055\157\347 +\223\331\066\160\152\150\317\216\121\243\205\133\147\004\240\020 +\044\157\135\050\202\301\227\127\330\110\051\023\266\341\276\221 +\115\337\205\014\123\030\232\036\044\242\117\217\360\242\205\013 +\313\364\051\177\322\244\130\356\046\115\311\252\250\173\232\331 +\372\070\336\104\127\025\345\370\214\310\331\110\342\015\026\047 +\035\036\310\203\205\045\267\272\252\125\101\314\003\042\113\055 +\221\215\213\346\211\257\146\307\351\377\053\351\074\254\332\322 +\263\303\341\150\234\211\370\172\000\126\336\364\125\225\154\373 +\272\144\335\142\213\337\013\167\062\353\142\314\046\232\233\273 +\252\142\203\114\264\006\172\060\310\051\277\355\006\115\227\271 +\034\304\061\053\325\137\274\123\022\027\234\231\127\051\146\167 +\141\041\061\007\056\045\111\235\030\362\356\363\053\161\214\265 +\272\071\007\111\167\374\357\056\222\220\005\215\055\057\167\173 +\357\103\277\065\273\232\330\371\163\247\054\362\320\127\356\050 +\116\046\137\217\220\150\011\057\270\370\334\006\351\056\232\076 +\121\247\321\042\304\012\247\070\110\154\263\371\377\175\253\206 +\127\343\272\326\205\170\167\272\103\352\110\177\366\330\276\043 +\155\036\277\321\066\154\130\134\361\356\244\031\124\032\365\003 +\322\166\346\341\214\275\074\263\323\110\113\342\310\370\177\222 +\250\166\106\234\102\145\076\244\036\301\007\003\132\106\055\270 +\227\363\267\325\262\125\041\357\272\334\114\000\227\373\024\225 +\047\063\277\350\103\107\106\322\010\231\026\140\073\232\176\322 +\346\355\070\352\354\001\036\074\110\126\111\011\307\114\067\000 +\236\210\016\300\163\341\157\146\351\162\107\060\076\020\345\013 +\003\311\232\102\000\154\305\224\176\141\304\212\337\177\202\032 +\013\131\304\131\062\167\263\274\140\151\126\071\375\264\006\173 +\054\326\144\066\331\275\110\355\204\037\176\245\042\217\052\270 +\102\364\202\267\324\123\220\170\116\055\032\375\201\157\104\327 +\073\001\164\226\102\340\000\342\056\153\352\305\356\162\254\273 +\277\376\352\252\250\370\334\366\262\171\212\266\147\002\003\001 +\000\001\243\102\060\100\060\035\006\003\125\035\016\004\026\004 +\024\235\300\147\246\014\042\331\046\365\105\253\246\145\122\021 +\047\330\105\254\143\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\015\006\011\052\206\110\206\367\015 +\001\001\014\005\000\003\202\002\001\000\263\127\115\020\142\116 +\072\344\254\352\270\034\257\062\043\310\263\111\132\121\234\166 +\050\215\171\252\127\106\027\325\365\122\366\267\104\350\010\104 +\277\030\204\322\013\200\315\305\022\375\000\125\005\141\207\101 +\334\265\044\236\074\304\330\310\373\160\236\057\170\226\203\040 +\066\336\174\017\151\023\210\245\165\066\230\010\246\306\337\254 +\316\343\130\326\267\076\336\272\363\353\064\100\330\242\201\365 +\170\077\057\325\245\374\331\242\324\136\004\016\027\255\376\101 +\360\345\262\162\372\104\202\063\102\350\055\130\367\126\214\142 +\077\272\102\260\234\014\134\176\056\145\046\134\123\117\000\262 +\170\176\241\015\231\055\215\270\035\216\242\304\260\375\140\320 +\060\244\216\310\004\142\251\304\355\065\336\172\227\355\016\070 +\136\222\057\223\160\245\251\234\157\247\175\023\035\176\306\010 +\110\261\136\147\353\121\010\045\351\346\045\153\122\051\221\234 +\322\071\163\010\127\336\231\006\264\133\235\020\006\341\302\000 +\250\270\034\112\002\012\024\320\301\101\312\373\214\065\041\175 +\202\070\362\251\124\221\031\065\223\224\155\152\072\305\262\320 +\273\211\206\223\350\233\311\017\072\247\172\270\241\360\170\106 +\372\374\067\057\345\212\204\363\337\376\004\331\241\150\240\057 +\044\342\011\225\006\325\225\312\341\044\226\353\174\366\223\005 +\273\355\163\351\055\321\165\071\327\347\044\333\330\116\137\103 +\217\236\320\024\071\277\125\160\110\231\127\061\264\234\356\112 +\230\003\226\060\037\140\006\356\033\043\376\201\140\043\032\107 +\142\205\245\314\031\064\200\157\263\254\032\343\237\360\173\110 +\255\325\001\331\147\266\251\162\223\352\055\146\265\262\270\344 +\075\074\262\357\114\214\352\353\007\277\253\065\232\125\206\274 +\030\246\265\250\136\264\203\154\153\151\100\323\237\334\361\303 +\151\153\271\341\155\011\364\361\252\120\166\012\172\175\172\027 +\241\125\226\102\231\061\011\335\140\021\215\005\060\176\346\216 +\106\321\235\024\332\307\027\344\005\226\214\304\044\265\033\317 +\024\007\262\100\370\243\236\101\206\274\004\320\153\226\310\052 +\200\064\375\277\357\006\243\335\130\305\205\075\076\217\376\236 +\051\340\266\270\011\150\031\034\030\103 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +# For Server Distrust After: Sat Nov 30 23:59:59 2024 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\061\061\063\060\062\063\065\071\065\071\132 +END +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "AffirmTrust Premium" +# Issuer: CN=AffirmTrust Premium,O=AffirmTrust,C=US +# Serial Number:6d:8c:14:46:b1:a6:0a:ee +# Subject: CN=AffirmTrust Premium,O=AffirmTrust,C=US +# Not Valid Before: Fri Jan 29 14:10:36 2010 +# Not Valid After : Mon Dec 31 14:10:36 2040 +# Fingerprint (SHA-256): 70:A7:3F:7F:37:6B:60:07:42:48:90:45:34:B1:14:82:D5:BF:0E:69:8E:CC:49:8D:F5:25:77:EB:F2:E9:3B:9A +# Fingerprint (SHA1): D8:A6:33:2C:E0:03:6F:B1:85:F6:63:4F:7D:6A:06:65:26:32:28:27 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AffirmTrust Premium" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\330\246\063\054\340\003\157\261\205\366\143\117\175\152\006\145 +\046\062\050\047 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\304\135\016\110\266\254\050\060\116\012\274\371\070\026\207\127 +END +CKA_ISSUER MULTILINE_OCTAL +\060\101\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\034\060\032\006\003\125\004\003\014\023 +\101\146\146\151\162\155\124\162\165\163\164\040\120\162\145\155 +\151\165\155 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\155\214\024\106\261\246\012\356 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "AffirmTrust Premium ECC" +# +# Issuer: CN=AffirmTrust Premium ECC,O=AffirmTrust,C=US +# Serial Number:74:97:25:8a:c7:3f:7a:54 +# Subject: CN=AffirmTrust Premium ECC,O=AffirmTrust,C=US +# Not Valid Before: Fri Jan 29 14:20:24 2010 +# Not Valid After : Mon Dec 31 14:20:24 2040 +# Fingerprint (SHA-256): BD:71:FD:F6:DA:97:E4:CF:62:D1:64:7A:DD:25:81:B0:7D:79:AD:F8:39:7E:B4:EC:BA:9C:5E:84:88:82:14:23 +# Fingerprint (SHA1): B8:23:6B:00:2F:1D:16:86:53:01:55:6C:11:A4:37:CA:EB:FF:C3:BB +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AffirmTrust Premium ECC" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\040\060\036\006\003\125\004\003\014\027 +\101\146\146\151\162\155\124\162\165\163\164\040\120\162\145\155 +\151\165\155\040\105\103\103 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\040\060\036\006\003\125\004\003\014\027 +\101\146\146\151\162\155\124\162\165\163\164\040\120\162\145\155 +\151\165\155\040\105\103\103 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\164\227\045\212\307\077\172\124 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\001\376\060\202\001\205\240\003\002\001\002\002\010\164 +\227\045\212\307\077\172\124\060\012\006\010\052\206\110\316\075 +\004\003\003\060\105\061\013\060\011\006\003\125\004\006\023\002 +\125\123\061\024\060\022\006\003\125\004\012\014\013\101\146\146 +\151\162\155\124\162\165\163\164\061\040\060\036\006\003\125\004 +\003\014\027\101\146\146\151\162\155\124\162\165\163\164\040\120 +\162\145\155\151\165\155\040\105\103\103\060\036\027\015\061\060 +\060\061\062\071\061\064\062\060\062\064\132\027\015\064\060\061 +\062\063\061\061\064\062\060\062\064\132\060\105\061\013\060\011 +\006\003\125\004\006\023\002\125\123\061\024\060\022\006\003\125 +\004\012\014\013\101\146\146\151\162\155\124\162\165\163\164\061 +\040\060\036\006\003\125\004\003\014\027\101\146\146\151\162\155 +\124\162\165\163\164\040\120\162\145\155\151\165\155\040\105\103 +\103\060\166\060\020\006\007\052\206\110\316\075\002\001\006\005 +\053\201\004\000\042\003\142\000\004\015\060\136\033\025\235\003 +\320\241\171\065\267\072\074\222\172\312\025\034\315\142\363\234 +\046\134\007\075\345\124\372\243\326\314\022\352\364\024\137\350 +\216\031\253\057\056\110\346\254\030\103\170\254\320\067\303\275 +\262\315\054\346\107\342\032\346\143\270\075\056\057\170\304\117 +\333\364\017\244\150\114\125\162\153\225\035\116\030\102\225\170 +\314\067\074\221\342\233\145\053\051\243\102\060\100\060\035\006 +\003\125\035\016\004\026\004\024\232\257\051\172\300\021\065\065 +\046\121\060\000\303\152\376\100\325\256\326\074\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\012\006 +\010\052\206\110\316\075\004\003\003\003\147\000\060\144\002\060 +\027\011\363\207\210\120\132\257\310\300\102\277\107\137\365\154 +\152\206\340\304\047\164\344\070\123\327\005\177\033\064\343\306 +\057\263\312\011\074\067\235\327\347\270\106\361\375\241\342\161 +\002\060\102\131\207\103\324\121\337\272\323\011\062\132\316\210 +\176\127\075\234\137\102\153\365\007\055\265\360\202\223\371\131 +\157\256\144\372\130\345\213\036\343\143\276\265\201\315\157\002 +\214\171 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +# For Server Distrust After: Sat Nov 30 23:59:59 2024 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\061\061\063\060\062\063\065\071\065\071\132 +END +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "AffirmTrust Premium ECC" +# Issuer: CN=AffirmTrust Premium ECC,O=AffirmTrust,C=US +# Serial Number:74:97:25:8a:c7:3f:7a:54 +# Subject: CN=AffirmTrust Premium ECC,O=AffirmTrust,C=US +# Not Valid Before: Fri Jan 29 14:20:24 2010 +# Not Valid After : Mon Dec 31 14:20:24 2040 +# Fingerprint (SHA-256): BD:71:FD:F6:DA:97:E4:CF:62:D1:64:7A:DD:25:81:B0:7D:79:AD:F8:39:7E:B4:EC:BA:9C:5E:84:88:82:14:23 +# Fingerprint (SHA1): B8:23:6B:00:2F:1D:16:86:53:01:55:6C:11:A4:37:CA:EB:FF:C3:BB +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AffirmTrust Premium ECC" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\270\043\153\000\057\035\026\206\123\001\125\154\021\244\067\312 +\353\377\303\273 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\144\260\011\125\317\261\325\231\342\276\023\253\246\135\352\115 +END +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\024\060\022\006\003\125\004\012\014\013\101\146\146\151\162\155 +\124\162\165\163\164\061\040\060\036\006\003\125\004\003\014\027 +\101\146\146\151\162\155\124\162\165\163\164\040\120\162\145\155 +\151\165\155\040\105\103\103 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\164\227\045\212\307\077\172\124 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certum Trusted Network CA" +# +# Issuer: CN=Certum Trusted Network CA,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL +# Serial Number: 279744 (0x444c0) +# Subject: CN=Certum Trusted Network CA,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL +# Not Valid Before: Wed Oct 22 12:07:37 2008 +# Not Valid After : Mon Dec 31 12:07:37 2029 +# Fingerprint (SHA-256): 5C:58:46:8D:55:F5:8E:49:7E:74:39:82:D2:B5:00:10:B6:D1:65:37:4A:CF:83:A7:D4:A3:2D:B7:68:C4:40:8E +# Fingerprint (SHA1): 07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum Trusted Network CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\176\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\042\060\040\006\003\125\004\012\023\031\125\156\151\172\145\164 +\157\040\124\145\143\150\156\157\154\157\147\151\145\163\040\123 +\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145 +\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\061\042\060\040 +\006\003\125\004\003\023\031\103\145\162\164\165\155\040\124\162 +\165\163\164\145\144\040\116\145\164\167\157\162\153\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\176\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\042\060\040\006\003\125\004\012\023\031\125\156\151\172\145\164 +\157\040\124\145\143\150\156\157\154\157\147\151\145\163\040\123 +\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145 +\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\061\042\060\040 +\006\003\125\004\003\023\031\103\145\162\164\165\155\040\124\162 +\165\163\164\145\144\040\116\145\164\167\157\162\153\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\004\104\300 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\273\060\202\002\243\240\003\002\001\002\002\003\004 +\104\300\060\015\006\011\052\206\110\206\367\015\001\001\005\005 +\000\060\176\061\013\060\011\006\003\125\004\006\023\002\120\114 +\061\042\060\040\006\003\125\004\012\023\031\125\156\151\172\145 +\164\157\040\124\145\143\150\156\157\154\157\147\151\145\163\040 +\123\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103 +\145\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\061\042\060 +\040\006\003\125\004\003\023\031\103\145\162\164\165\155\040\124 +\162\165\163\164\145\144\040\116\145\164\167\157\162\153\040\103 +\101\060\036\027\015\060\070\061\060\062\062\061\062\060\067\063 +\067\132\027\015\062\071\061\062\063\061\061\062\060\067\063\067 +\132\060\176\061\013\060\011\006\003\125\004\006\023\002\120\114 +\061\042\060\040\006\003\125\004\012\023\031\125\156\151\172\145 +\164\157\040\124\145\143\150\156\157\154\157\147\151\145\163\040 +\123\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103 +\145\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\061\042\060 +\040\006\003\125\004\003\023\031\103\145\162\164\165\155\040\124 +\162\165\163\164\145\144\040\116\145\164\167\157\162\153\040\103 +\101\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001 +\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001 +\001\000\343\373\175\243\162\272\302\360\311\024\207\365\153\001 +\116\341\156\100\007\272\155\047\135\177\367\133\055\263\132\307 +\121\137\253\244\062\246\141\207\266\156\017\206\322\060\002\227 +\370\327\151\127\241\030\071\135\152\144\171\306\001\131\254\074 +\061\112\070\174\322\004\322\113\050\350\040\137\073\007\242\314 +\115\163\333\363\256\117\307\126\325\132\247\226\211\372\363\253 +\150\324\043\206\131\047\317\011\047\274\254\156\162\203\034\060 +\162\337\340\242\351\322\341\164\165\031\275\052\236\173\025\124 +\004\033\327\103\071\255\125\050\305\342\032\273\364\300\344\256 +\070\111\063\314\166\205\237\071\105\322\244\236\362\022\214\121 +\370\174\344\055\177\365\254\137\353\026\237\261\055\321\272\314 +\221\102\167\114\045\311\220\070\157\333\360\314\373\216\036\227 +\131\076\325\140\116\346\005\050\355\111\171\023\113\272\110\333 +\057\371\162\323\071\312\376\037\330\064\162\365\264\100\317\061 +\001\303\354\336\021\055\027\135\037\270\120\321\136\031\247\151 +\336\007\063\050\312\120\225\371\247\124\313\124\206\120\105\251 +\371\111\002\003\001\000\001\243\102\060\100\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003 +\125\035\016\004\026\004\024\010\166\315\313\007\377\044\366\305 +\315\355\273\220\274\342\204\067\106\165\367\060\016\006\003\125 +\035\017\001\001\377\004\004\003\002\001\006\060\015\006\011\052 +\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000\246 +\250\255\042\316\001\075\246\243\377\142\320\110\235\213\136\162 +\260\170\104\343\334\034\257\011\375\043\110\372\275\052\304\271 +\125\004\265\020\243\215\047\336\013\202\143\320\356\336\014\067 +\171\101\133\042\262\260\232\101\134\246\160\340\324\320\167\313 +\043\323\000\340\154\126\057\341\151\015\015\331\252\277\041\201 +\120\331\006\245\250\377\225\067\320\252\376\342\263\365\231\055 +\105\204\212\345\102\011\327\164\002\057\367\211\330\231\351\274 +\047\324\107\215\272\015\106\034\167\317\024\244\034\271\244\061 +\304\234\050\164\003\064\377\063\031\046\245\351\015\164\267\076 +\227\306\166\350\047\226\243\146\335\341\256\362\101\133\312\230 +\126\203\163\160\344\206\032\322\061\101\272\057\276\055\023\132 +\166\157\116\350\116\201\016\077\133\003\042\240\022\276\146\130 +\021\112\313\003\304\264\052\052\055\226\027\340\071\124\274\110 +\323\166\047\235\232\055\006\246\311\354\071\322\253\333\237\232 +\013\047\002\065\051\261\100\225\347\371\350\234\125\210\031\106 +\326\267\064\365\176\316\071\232\331\070\361\121\367\117\054 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certum Trusted Network CA" +# Issuer: CN=Certum Trusted Network CA,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL +# Serial Number: 279744 (0x444c0) +# Subject: CN=Certum Trusted Network CA,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL +# Not Valid Before: Wed Oct 22 12:07:37 2008 +# Not Valid After : Mon Dec 31 12:07:37 2029 +# Fingerprint (SHA-256): 5C:58:46:8D:55:F5:8E:49:7E:74:39:82:D2:B5:00:10:B6:D1:65:37:4A:CF:83:A7:D4:A3:2D:B7:68:C4:40:8E +# Fingerprint (SHA1): 07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum Trusted Network CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\007\340\062\340\040\267\054\077\031\057\006\050\242\131\072\031 +\247\017\006\236 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\325\351\201\100\305\030\151\374\106\054\211\165\142\017\252\170 +END +CKA_ISSUER MULTILINE_OCTAL +\060\176\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\042\060\040\006\003\125\004\012\023\031\125\156\151\172\145\164 +\157\040\124\145\143\150\156\157\154\157\147\151\145\163\040\123 +\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145 +\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\061\042\060\040 +\006\003\125\004\003\023\031\103\145\162\164\165\155\040\124\162 +\165\163\164\145\144\040\116\145\164\167\157\162\153\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\004\104\300 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "TWCA Root Certification Authority" +# +# Issuer: CN=TWCA Root Certification Authority,OU=Root CA,O=TAIWAN-CA,C=TW +# Serial Number: 1 (0x1) +# Subject: CN=TWCA Root Certification Authority,OU=Root CA,O=TAIWAN-CA,C=TW +# Not Valid Before: Thu Aug 28 07:24:33 2008 +# Not Valid After : Tue Dec 31 15:59:59 2030 +# Fingerprint (SHA-256): BF:D8:8F:E1:10:1C:41:AE:3E:80:1B:F8:BE:56:35:0E:E9:BA:D1:A6:B9:BD:51:5E:DC:5C:6D:5B:87:11:AC:44 +# Fingerprint (SHA1): CF:9E:87:6D:D3:EB:FC:42:26:97:A3:B5:A3:7A:A0:76:A9:06:23:48 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TWCA Root Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\014\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\014\007\122\157 +\157\164\040\103\101\061\052\060\050\006\003\125\004\003\014\041 +\124\127\103\101\040\122\157\157\164\040\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164 +\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\014\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\014\007\122\157 +\157\164\040\103\101\061\052\060\050\006\003\125\004\003\014\041 +\124\127\103\101\040\122\157\157\164\040\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164 +\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\173\060\202\002\143\240\003\002\001\002\002\001\001 +\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060 +\137\061\013\060\011\006\003\125\004\006\023\002\124\127\061\022 +\060\020\006\003\125\004\012\014\011\124\101\111\127\101\116\055 +\103\101\061\020\060\016\006\003\125\004\013\014\007\122\157\157 +\164\040\103\101\061\052\060\050\006\003\125\004\003\014\041\124 +\127\103\101\040\122\157\157\164\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +\060\036\027\015\060\070\060\070\062\070\060\067\062\064\063\063 +\132\027\015\063\060\061\062\063\061\061\065\065\071\065\071\132 +\060\137\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\014\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\014\007\122\157 +\157\164\040\103\101\061\052\060\050\006\003\125\004\003\014\041 +\124\127\103\101\040\122\157\157\164\040\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164 +\171\060\202\001\042\060\015\006\011\052\206\110\206\367\015\001 +\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202\001 +\001\000\260\176\162\270\244\003\224\346\247\336\011\070\221\112 +\021\100\207\247\174\131\144\024\173\265\021\020\335\376\277\325 +\300\273\126\342\205\045\364\065\162\017\370\123\320\101\341\104 +\001\302\264\034\303\061\102\026\107\205\063\042\166\262\012\157 +\017\345\045\120\117\205\206\276\277\230\056\020\147\036\276\021 +\005\206\005\220\304\131\320\174\170\020\260\200\134\267\341\307 +\053\165\313\174\237\256\265\321\235\043\067\143\247\334\102\242 +\055\222\004\033\120\301\173\270\076\033\311\126\004\213\057\122 +\233\255\251\126\351\301\377\255\251\130\207\060\266\201\367\227 +\105\374\031\127\073\053\157\344\107\364\231\105\376\035\361\370 +\227\243\210\035\067\034\134\217\340\166\045\232\120\370\240\124 +\377\104\220\166\043\322\062\306\303\253\006\277\374\373\277\363 +\255\175\222\142\002\133\051\323\065\243\223\232\103\144\140\135 +\262\372\062\377\073\004\257\115\100\152\371\307\343\357\043\375 +\153\313\345\017\213\070\015\356\012\374\376\017\230\237\060\061 +\335\154\122\145\371\213\201\276\042\341\034\130\003\272\221\033 +\211\007\002\003\001\000\001\243\102\060\100\060\016\006\003\125 +\035\017\001\001\377\004\004\003\002\001\006\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003 +\125\035\016\004\026\004\024\152\070\133\046\215\336\213\132\362 +\117\172\124\203\031\030\343\010\065\246\272\060\015\006\011\052 +\206\110\206\367\015\001\001\005\005\000\003\202\001\001\000\074 +\325\167\075\332\337\211\272\207\014\010\124\152\040\120\222\276 +\260\101\075\271\046\144\203\012\057\350\100\300\227\050\047\202 +\060\112\311\223\377\152\347\246\000\177\211\102\232\326\021\345 +\123\316\057\314\362\332\005\304\376\342\120\304\072\206\175\314 +\332\176\020\011\073\222\065\052\123\262\376\353\053\005\331\154 +\135\346\320\357\323\152\146\236\025\050\205\172\350\202\000\254 +\036\247\011\151\126\102\323\150\121\030\276\124\232\277\104\101 +\272\111\276\040\272\151\134\356\270\167\315\316\154\037\255\203 +\226\030\175\016\265\024\071\204\361\050\351\055\243\236\173\036 +\172\162\132\203\263\171\157\357\264\374\320\012\245\130\117\106 +\337\373\155\171\131\362\204\042\122\256\017\314\373\174\073\347 +\152\312\107\141\303\172\370\323\222\004\037\270\040\204\341\066 +\124\026\307\100\336\073\212\163\334\337\306\011\114\337\354\332 +\377\324\123\102\241\311\362\142\035\042\203\074\227\305\371\031 +\142\047\254\145\042\327\323\074\306\345\216\262\123\314\111\316 +\274\060\376\173\016\063\220\373\355\322\024\221\037\007\257 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "TWCA Root Certification Authority" +# Issuer: CN=TWCA Root Certification Authority,OU=Root CA,O=TAIWAN-CA,C=TW +# Serial Number: 1 (0x1) +# Subject: CN=TWCA Root Certification Authority,OU=Root CA,O=TAIWAN-CA,C=TW +# Not Valid Before: Thu Aug 28 07:24:33 2008 +# Not Valid After : Tue Dec 31 15:59:59 2030 +# Fingerprint (SHA-256): BF:D8:8F:E1:10:1C:41:AE:3E:80:1B:F8:BE:56:35:0E:E9:BA:D1:A6:B9:BD:51:5E:DC:5C:6D:5B:87:11:AC:44 +# Fingerprint (SHA1): CF:9E:87:6D:D3:EB:FC:42:26:97:A3:B5:A3:7A:A0:76:A9:06:23:48 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TWCA Root Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\317\236\207\155\323\353\374\102\046\227\243\265\243\172\240\166 +\251\006\043\110 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\252\010\217\366\371\173\267\362\261\247\036\233\352\352\275\171 +END +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\014\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\014\007\122\157 +\157\164\040\103\101\061\052\060\050\006\003\125\004\003\014\041 +\124\127\103\101\040\122\157\157\164\040\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164 +\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Explicitly Distrust DigiNotar Root CA" +# +# Issuer: E=info@diginotar.nl,CN=DigiNotar Root CA,O=DigiNotar,C=NL +# Serial Number:0f:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff +# Subject: E=info@diginotar.nl,CN=DigiNotar Root CA,O=DigiNotar,C=NL +# Not Valid Before: Fri Jul 27 17:19:37 2007 +# Not Valid After : Mon Mar 31 18:19:22 2025 +# Fingerprint (MD5): 0A:A4:D5:CC:BA:B4:FB:A3:59:E3:E6:01:DD:53:D9:4E +# Fingerprint (SHA1): C1:77:CB:4B:E0:B4:26:8E:F5:C7:CF:45:99:22:B9:B0:CE:BA:21:2F +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Explicitly Distrust DigiNotar Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061 +\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157 +\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151 +\147\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061 +\040\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021 +\151\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156 +\154 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061 +\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157 +\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151 +\147\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061 +\040\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021 +\151\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156 +\154 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\017\377\377\377\377\377\377\377\377\377\377\377\377\377 +\377\377 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\212\060\202\003\162\240\003\002\001\002\002\020\017 +\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\060 +\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060\137 +\061\013\060\011\006\003\125\004\006\023\002\116\114\061\022\060 +\020\006\003\125\004\012\023\011\104\151\147\151\116\157\164\141 +\162\061\032\060\030\006\003\125\004\003\023\021\104\151\147\151 +\116\157\164\141\162\040\122\157\157\164\040\103\101\061\040\060 +\036\006\011\052\206\110\206\367\015\001\011\001\026\021\151\156 +\146\157\100\144\151\147\151\156\157\164\141\162\056\156\154\060 +\036\027\015\060\067\060\067\062\067\061\067\061\071\063\067\132 +\027\015\062\065\060\063\063\061\061\070\061\071\062\062\132\060 +\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061\022 +\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157\164 +\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151\147 +\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061\040 +\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021\151 +\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156\154 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\254\260\130\301\000\275\330\041\010\013\053\232\376\156\126 +\060\005\237\033\167\220\020\101\134\303\015\207\021\167\216\201 +\361\312\174\351\214\152\355\070\164\065\273\332\337\371\273\300 +\011\067\264\226\163\201\175\063\032\230\071\367\223\157\225\177 +\075\271\261\165\207\272\121\110\350\213\160\076\225\004\305\330 +\266\303\026\331\210\260\261\207\035\160\332\206\264\017\024\213 +\172\317\020\321\164\066\242\022\173\167\206\112\171\346\173\337 +\002\021\150\245\116\206\256\064\130\233\044\023\170\126\042\045 +\036\001\213\113\121\161\373\202\314\131\226\151\210\132\150\123 +\305\271\015\002\067\313\113\274\146\112\220\176\052\013\005\007 +\355\026\137\125\220\165\330\106\311\033\203\342\010\276\361\043 +\314\231\035\326\052\017\203\040\025\130\047\202\056\372\342\042 +\302\111\261\271\001\201\152\235\155\235\100\167\150\166\116\041 +\052\155\204\100\205\116\166\231\174\202\363\363\267\002\131\324 +\046\001\033\216\337\255\123\006\321\256\030\335\342\262\072\313 +\327\210\070\216\254\133\051\271\031\323\230\371\030\003\317\110 +\202\206\146\013\033\151\017\311\353\070\210\172\046\032\005\114 +\222\327\044\324\226\362\254\122\055\243\107\325\122\366\077\376 +\316\204\006\160\246\252\076\242\362\266\126\064\030\127\242\344 +\201\155\347\312\360\152\323\307\221\153\002\203\101\174\025\357 +\153\232\144\136\343\320\074\345\261\353\173\135\206\373\313\346 +\167\111\315\243\145\334\367\271\234\270\344\013\137\223\317\314 +\060\032\062\034\316\034\143\225\245\371\352\341\164\213\236\351 +\053\251\060\173\240\030\037\016\030\013\345\133\251\323\321\154 +\036\007\147\217\221\113\251\212\274\322\146\252\223\001\210\262 +\221\372\061\134\325\246\301\122\010\011\315\012\143\242\323\042 +\246\350\241\331\071\006\227\365\156\215\002\220\214\024\173\077 +\200\315\033\234\272\304\130\162\043\257\266\126\237\306\172\102 +\063\051\007\077\202\311\346\037\005\015\315\114\050\066\213\323 +\310\076\034\306\210\357\136\356\211\144\351\035\353\332\211\176 +\062\246\151\321\335\314\210\237\321\320\311\146\041\334\006\147 +\305\224\172\232\155\142\114\175\314\340\144\200\262\236\107\216 +\243\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125 +\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125 +\035\016\004\026\004\024\210\150\277\340\216\065\304\073\070\153 +\142\367\050\073\204\201\310\014\327\115\060\015\006\011\052\206 +\110\206\367\015\001\001\005\005\000\003\202\002\001\000\073\002 +\215\313\074\060\350\156\240\255\362\163\263\137\236\045\023\004 +\005\323\366\343\213\273\013\171\316\123\336\344\226\305\321\257 +\163\274\325\303\320\100\125\174\100\177\315\033\137\011\325\362 +\174\237\150\035\273\135\316\172\071\302\214\326\230\173\305\203 +\125\250\325\175\100\312\340\036\367\211\136\143\135\241\023\302 +\135\212\266\212\174\000\363\043\303\355\205\137\161\166\360\150 +\143\252\105\041\071\110\141\170\066\334\361\103\223\324\045\307 +\362\200\145\341\123\002\165\121\374\172\072\357\067\253\204\050 +\127\014\330\324\324\231\126\154\343\242\376\131\204\264\061\350 +\063\370\144\224\224\121\227\253\071\305\113\355\332\335\200\013 +\157\174\051\015\304\216\212\162\015\347\123\024\262\140\101\075 +\204\221\061\150\075\047\104\333\345\336\364\372\143\105\310\114 +\076\230\365\077\101\272\116\313\067\015\272\146\230\361\335\313 +\237\134\367\124\066\202\153\054\274\023\141\227\102\370\170\273 +\314\310\242\237\312\360\150\275\153\035\262\337\215\157\007\235 +\332\216\147\307\107\036\312\271\277\052\102\221\267\143\123\146 +\361\102\243\341\364\132\115\130\153\265\344\244\063\255\134\160 +\035\334\340\362\353\163\024\221\232\003\301\352\000\145\274\007 +\374\317\022\021\042\054\256\240\275\072\340\242\052\330\131\351 +\051\323\030\065\244\254\021\137\031\265\265\033\377\042\112\134 +\306\172\344\027\357\040\251\247\364\077\255\212\247\232\004\045 +\235\016\312\067\346\120\375\214\102\051\004\232\354\271\317\113 +\162\275\342\010\066\257\043\057\142\345\312\001\323\160\333\174 +\202\043\054\026\061\014\306\066\007\220\172\261\037\147\130\304 +\073\130\131\211\260\214\214\120\263\330\206\313\150\243\304\012 +\347\151\113\040\316\301\036\126\113\225\251\043\150\330\060\330 +\303\353\260\125\121\315\345\375\053\270\365\273\021\237\123\124 +\366\064\031\214\171\011\066\312\141\027\045\027\013\202\230\163 +\014\167\164\303\325\015\307\250\022\114\307\247\124\161\107\056 +\054\032\175\311\343\053\073\110\336\047\204\247\143\066\263\175 +\217\240\144\071\044\015\075\173\207\257\146\134\164\033\113\163 +\262\345\214\360\206\231\270\345\305\337\204\301\267\353 +END + +# Trust for Certificate "Explicitly Distrust DigiNotar Root CA" +# Issuer: E=info@diginotar.nl,CN=DigiNotar Root CA,O=DigiNotar,C=NL +# Serial Number:0f:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff +# Subject: E=info@diginotar.nl,CN=DigiNotar Root CA,O=DigiNotar,C=NL +# Not Valid Before: Fri Jul 27 17:19:37 2007 +# Not Valid After : Mon Mar 31 18:19:22 2025 +# Fingerprint (MD5): 0A:A4:D5:CC:BA:B4:FB:A3:59:E3:E6:01:DD:53:D9:4E +# Fingerprint (SHA1): C1:77:CB:4B:E0:B4:26:8E:F5:C7:CF:45:99:22:B9:B0:CE:BA:21:2F +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Explicitly Distrust DigiNotar Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\301\167\313\113\340\264\046\216\365\307\317\105\231\042\271\260 +\316\272\041\057 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\012\244\325\314\272\264\373\243\131\343\346\001\335\123\331\116 +END +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061 +\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157 +\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151 +\147\151\116\157\164\141\162\040\122\157\157\164\040\103\101\061 +\040\060\036\006\011\052\206\110\206\367\015\001\011\001\026\021 +\151\156\146\157\100\144\151\147\151\156\157\164\141\162\056\156 +\154 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\017\377\377\377\377\377\377\377\377\377\377\377\377\377 +\377\377 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_NOT_TRUSTED +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_NOT_TRUSTED +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_NOT_TRUSTED +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Security Communication RootCA2" +# +# Issuer: OU=Security Communication RootCA2,O="SECOM Trust Systems CO.,LTD.",C=JP +# Serial Number: 0 (0x0) +# Subject: OU=Security Communication RootCA2,O="SECOM Trust Systems CO.,LTD.",C=JP +# Not Valid Before: Fri May 29 05:00:39 2009 +# Not Valid After : Tue May 29 05:00:39 2029 +# Fingerprint (SHA-256): 51:3B:2C:EC:B8:10:D4:CD:E5:DD:85:39:1A:DF:C6:C2:DD:60:D8:7B:B7:36:D2:B5:21:48:4A:A4:7A:0E:BE:F6 +# Fingerprint (SHA1): 5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Security Communication RootCA2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\135\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\047\060\045\006\003\125\004\013\023 +\036\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\122\157\157\164\103\101\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\135\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\047\060\045\006\003\125\004\013\023 +\036\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\122\157\157\164\103\101\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\167\060\202\002\137\240\003\002\001\002\002\001\000 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\135\061\013\060\011\006\003\125\004\006\023\002\112\120\061\045 +\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040\124 +\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117\056 +\054\114\124\104\056\061\047\060\045\006\003\125\004\013\023\036 +\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156\151 +\143\141\164\151\157\156\040\122\157\157\164\103\101\062\060\036 +\027\015\060\071\060\065\062\071\060\065\060\060\063\071\132\027 +\015\062\071\060\065\062\071\060\065\060\060\063\071\132\060\135 +\061\013\060\011\006\003\125\004\006\023\002\112\120\061\045\060 +\043\006\003\125\004\012\023\034\123\105\103\117\115\040\124\162 +\165\163\164\040\123\171\163\164\145\155\163\040\103\117\056\054 +\114\124\104\056\061\047\060\045\006\003\125\004\013\023\036\123 +\145\143\165\162\151\164\171\040\103\157\155\155\165\156\151\143 +\141\164\151\157\156\040\122\157\157\164\103\101\062\060\202\001 +\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000 +\003\202\001\017\000\060\202\001\012\002\202\001\001\000\320\025 +\071\122\261\122\263\272\305\131\202\304\135\122\256\072\103\145 +\200\113\307\362\226\274\333\066\227\326\246\144\214\250\136\360 +\343\012\034\367\337\227\075\113\256\366\135\354\041\265\101\253 +\315\271\176\166\237\276\371\076\066\064\240\073\301\366\061\021 +\105\164\223\075\127\200\305\371\211\231\312\345\253\152\324\265 +\332\101\220\020\301\326\326\102\211\302\277\364\070\022\225\114 +\124\005\367\066\344\105\203\173\024\145\326\334\014\115\321\336 +\176\014\253\073\304\025\276\072\126\246\132\157\166\151\122\251 +\172\271\310\353\152\232\135\122\320\055\012\153\065\026\011\020 +\204\320\152\312\072\006\000\067\107\344\176\127\117\077\213\353 +\147\270\210\252\305\276\123\125\262\221\304\175\271\260\205\031 +\006\170\056\333\141\032\372\205\365\112\221\241\347\026\325\216 +\242\071\337\224\270\160\037\050\077\213\374\100\136\143\203\074 +\203\052\032\231\153\317\336\131\152\073\374\157\026\327\037\375 +\112\020\353\116\202\026\072\254\047\014\123\361\255\325\044\260 +\153\003\120\301\055\074\026\335\104\064\047\032\165\373\002\003 +\001\000\001\243\102\060\100\060\035\006\003\125\035\016\004\026 +\004\024\012\205\251\167\145\005\230\174\100\201\370\017\227\054 +\070\361\012\354\074\317\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\003\202\001\001\000\114\072\243\104\254 +\271\105\261\307\223\176\310\013\012\102\337\144\352\034\356\131 +\154\010\272\211\137\152\312\112\225\236\172\217\007\305\332\105 +\162\202\161\016\072\322\314\157\247\264\241\043\273\366\044\237 +\313\027\376\214\246\316\302\322\333\314\215\374\161\374\003\051 +\301\154\135\063\137\144\266\145\073\211\157\030\166\170\365\334 +\242\110\037\031\077\216\223\353\361\372\027\356\315\116\343\004 +\022\125\326\345\344\335\373\076\005\174\342\035\136\306\247\274 +\227\117\150\072\365\351\056\012\103\266\257\127\134\142\150\174 +\267\375\243\212\204\240\254\142\276\053\011\207\064\360\152\001 +\273\233\051\126\074\376\000\067\317\043\154\361\116\252\266\164 +\106\022\154\221\356\064\325\354\232\221\347\104\276\220\061\162 +\325\111\002\366\002\345\364\037\353\174\331\226\125\251\377\354 +\212\371\231\107\377\065\132\002\252\004\313\212\133\207\161\051 +\221\275\244\264\172\015\275\232\365\127\043\000\007\041\027\077 +\112\071\321\005\111\013\247\266\067\201\245\135\214\252\063\136 +\201\050\174\247\175\047\353\000\256\215\067 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Security Communication RootCA2" +# Issuer: OU=Security Communication RootCA2,O="SECOM Trust Systems CO.,LTD.",C=JP +# Serial Number: 0 (0x0) +# Subject: OU=Security Communication RootCA2,O="SECOM Trust Systems CO.,LTD.",C=JP +# Not Valid Before: Fri May 29 05:00:39 2009 +# Not Valid After : Tue May 29 05:00:39 2029 +# Fingerprint (SHA-256): 51:3B:2C:EC:B8:10:D4:CD:E5:DD:85:39:1A:DF:C6:C2:DD:60:D8:7B:B7:36:D2:B5:21:48:4A:A4:7A:0E:BE:F6 +# Fingerprint (SHA1): 5F:3B:8C:F2:F8:10:B3:7D:78:B4:CE:EC:19:19:C3:73:34:B9:C7:74 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Security Communication RootCA2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\137\073\214\362\370\020\263\175\170\264\316\354\031\031\303\163 +\064\271\307\164 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\154\071\175\244\016\125\131\262\077\326\101\261\022\120\336\103 +END +CKA_ISSUER MULTILINE_OCTAL +\060\135\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\047\060\045\006\003\125\004\013\023 +\036\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\122\157\157\164\103\101\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Actalis Authentication Root CA" +# +# Issuer: CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT +# Serial Number:57:0a:11:97:42:c4:e3:cc +# Subject: CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT +# Not Valid Before: Thu Sep 22 11:22:02 2011 +# Not Valid After : Sun Sep 22 11:22:02 2030 +# Fingerprint (SHA-256): 55:92:60:84:EC:96:3A:64:B9:6E:2A:BE:01:CE:0B:A8:6A:64:FB:FE:BC:C7:AA:B5:AF:C1:55:B3:7F:D7:60:66 +# Fingerprint (SHA1): F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:AC +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Actalis Authentication Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\153\061\013\060\011\006\003\125\004\006\023\002\111\124\061 +\016\060\014\006\003\125\004\007\014\005\115\151\154\141\156\061 +\043\060\041\006\003\125\004\012\014\032\101\143\164\141\154\151 +\163\040\123\056\160\056\101\056\057\060\063\063\065\070\065\062 +\060\071\066\067\061\047\060\045\006\003\125\004\003\014\036\101 +\143\164\141\154\151\163\040\101\165\164\150\145\156\164\151\143 +\141\164\151\157\156\040\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\153\061\013\060\011\006\003\125\004\006\023\002\111\124\061 +\016\060\014\006\003\125\004\007\014\005\115\151\154\141\156\061 +\043\060\041\006\003\125\004\012\014\032\101\143\164\141\154\151 +\163\040\123\056\160\056\101\056\057\060\063\063\065\070\065\062 +\060\071\066\067\061\047\060\045\006\003\125\004\003\014\036\101 +\143\164\141\154\151\163\040\101\165\164\150\145\156\164\151\143 +\141\164\151\157\156\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\127\012\021\227\102\304\343\314 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\273\060\202\003\243\240\003\002\001\002\002\010\127 +\012\021\227\102\304\343\314\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\060\153\061\013\060\011\006\003\125\004 +\006\023\002\111\124\061\016\060\014\006\003\125\004\007\014\005 +\115\151\154\141\156\061\043\060\041\006\003\125\004\012\014\032 +\101\143\164\141\154\151\163\040\123\056\160\056\101\056\057\060 +\063\063\065\070\065\062\060\071\066\067\061\047\060\045\006\003 +\125\004\003\014\036\101\143\164\141\154\151\163\040\101\165\164 +\150\145\156\164\151\143\141\164\151\157\156\040\122\157\157\164 +\040\103\101\060\036\027\015\061\061\060\071\062\062\061\061\062 +\062\060\062\132\027\015\063\060\060\071\062\062\061\061\062\062 +\060\062\132\060\153\061\013\060\011\006\003\125\004\006\023\002 +\111\124\061\016\060\014\006\003\125\004\007\014\005\115\151\154 +\141\156\061\043\060\041\006\003\125\004\012\014\032\101\143\164 +\141\154\151\163\040\123\056\160\056\101\056\057\060\063\063\065 +\070\065\062\060\071\066\067\061\047\060\045\006\003\125\004\003 +\014\036\101\143\164\141\154\151\163\040\101\165\164\150\145\156 +\164\151\143\141\164\151\157\156\040\122\157\157\164\040\103\101 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\247\306\304\245\051\244\054\357\345\030\305\260\120\243\157 +\121\073\237\012\132\311\302\110\070\012\302\034\240\030\177\221 +\265\207\271\100\077\335\035\150\037\010\203\325\055\036\210\240 +\370\217\126\217\155\231\002\222\220\026\325\137\010\154\211\327 +\341\254\274\040\302\261\340\203\121\212\151\115\000\226\132\157 +\057\300\104\176\243\016\344\221\315\130\356\334\373\307\036\105 +\107\335\047\271\010\001\237\246\041\035\365\101\055\057\114\375 +\050\255\340\212\255\042\264\126\145\216\206\124\217\223\103\051 +\336\071\106\170\243\060\043\272\315\360\175\023\127\300\135\322 +\203\153\110\114\304\253\237\200\132\133\072\275\311\247\042\077 +\200\047\063\133\016\267\212\014\135\007\067\010\313\154\322\172 +\107\042\104\065\305\314\314\056\216\335\052\355\267\175\146\015 +\137\141\121\042\125\033\343\106\343\343\075\320\065\142\232\333 +\257\024\310\133\241\314\211\033\341\060\046\374\240\233\037\201 +\247\107\037\004\353\243\071\222\006\237\231\323\277\323\352\117 +\120\234\031\376\226\207\036\074\145\366\243\030\044\203\206\020 +\347\124\076\250\072\166\044\117\201\041\305\343\017\002\370\223 +\224\107\040\273\376\324\016\323\150\271\335\304\172\204\202\343 +\123\124\171\335\333\234\322\362\007\233\056\266\274\076\355\205 +\155\357\045\021\362\227\032\102\141\367\112\227\350\213\261\020 +\007\372\145\201\262\242\071\317\367\074\377\030\373\306\361\132 +\213\131\342\002\254\173\222\320\116\024\117\131\105\366\014\136 +\050\137\260\350\077\105\317\317\257\233\157\373\204\323\167\132 +\225\157\254\224\204\236\356\274\300\112\217\112\223\370\104\041 +\342\061\105\141\120\116\020\330\343\065\174\114\031\264\336\005 +\277\243\006\237\310\265\315\344\037\327\027\006\015\172\225\164 +\125\015\150\032\374\020\033\142\144\235\155\340\225\240\303\224 +\007\127\015\024\346\275\005\373\270\237\346\337\213\342\306\347 +\176\226\366\123\305\200\064\120\050\130\360\022\120\161\027\060 +\272\346\170\143\274\364\262\255\233\053\262\376\341\071\214\136 +\272\013\040\224\336\173\203\270\377\343\126\215\267\021\351\073 +\214\362\261\301\135\235\244\013\114\053\331\262\030\365\265\237 +\113\002\003\001\000\001\243\143\060\141\060\035\006\003\125\035 +\016\004\026\004\024\122\330\210\072\310\237\170\146\355\211\363 +\173\070\160\224\311\002\002\066\320\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\037\006\003\125\035 +\043\004\030\060\026\200\024\122\330\210\072\310\237\170\146\355 +\211\363\173\070\160\224\311\002\002\066\320\060\016\006\003\125 +\035\017\001\001\377\004\004\003\002\001\006\060\015\006\011\052 +\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000\013 +\173\162\207\300\140\246\111\114\210\130\346\035\210\367\024\144 +\110\246\330\130\012\016\117\023\065\337\065\035\324\355\006\061 +\310\201\076\152\325\335\073\032\062\356\220\075\021\322\056\364 +\216\303\143\056\043\146\260\147\276\157\266\300\023\071\140\252 +\242\064\045\223\165\122\336\247\235\255\016\207\211\122\161\152 +\026\074\031\035\203\370\232\051\145\276\364\077\232\331\360\363 +\132\207\041\161\200\115\313\340\070\233\077\273\372\340\060\115 +\317\206\323\145\020\031\030\321\227\002\261\053\162\102\150\254 +\240\275\116\132\332\030\277\153\230\201\320\375\232\276\136\025 +\110\315\021\025\271\300\051\134\264\350\210\367\076\066\256\267 +\142\375\036\142\336\160\170\020\034\110\133\332\274\244\070\272 +\147\355\125\076\136\127\337\324\003\100\114\201\244\322\117\143 +\247\011\102\011\024\374\000\251\302\200\163\117\056\300\100\331 +\021\173\110\352\172\002\300\323\353\050\001\046\130\164\301\300 +\163\042\155\223\225\375\071\175\273\052\343\366\202\343\054\227 +\137\116\037\221\224\372\376\054\243\330\166\032\270\115\262\070 +\117\233\372\035\110\140\171\046\342\363\375\251\320\232\350\160 +\217\111\172\326\345\275\012\016\333\055\363\215\277\353\343\244 +\175\313\307\225\161\350\332\243\174\305\302\370\164\222\004\033 +\206\254\244\042\123\100\266\254\376\114\166\317\373\224\062\300 +\065\237\166\077\156\345\220\156\240\246\046\242\270\054\276\321 +\053\205\375\247\150\310\272\001\053\261\154\164\035\270\163\225 +\347\356\267\307\045\360\000\114\000\262\176\266\013\213\034\363 +\300\120\236\045\271\340\010\336\066\146\377\067\245\321\273\124 +\144\054\311\047\265\113\222\176\145\377\323\055\341\271\116\274 +\177\244\101\041\220\101\167\246\071\037\352\236\343\237\320\146 +\157\005\354\252\166\176\277\153\026\240\353\265\307\374\222\124 +\057\053\021\047\045\067\170\114\121\152\260\363\314\130\135\024 +\361\152\110\025\377\302\007\266\261\215\017\216\134\120\106\263 +\075\277\001\230\117\262\131\124\107\076\064\173\170\155\126\223 +\056\163\352\146\050\170\315\035\024\277\240\217\057\056\270\056 +\216\362\024\212\314\351\265\174\373\154\235\014\245\341\226 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Actalis Authentication Root CA" +# Issuer: CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT +# Serial Number:57:0a:11:97:42:c4:e3:cc +# Subject: CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT +# Not Valid Before: Thu Sep 22 11:22:02 2011 +# Not Valid After : Sun Sep 22 11:22:02 2030 +# Fingerprint (SHA-256): 55:92:60:84:EC:96:3A:64:B9:6E:2A:BE:01:CE:0B:A8:6A:64:FB:FE:BC:C7:AA:B5:AF:C1:55:B3:7F:D7:60:66 +# Fingerprint (SHA1): F3:73:B3:87:06:5A:28:84:8A:F2:F3:4A:CE:19:2B:DD:C7:8E:9C:AC +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Actalis Authentication Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\363\163\263\207\006\132\050\204\212\362\363\112\316\031\053\335 +\307\216\234\254 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\151\301\015\117\007\243\033\303\376\126\075\004\274\021\366\246 +END +CKA_ISSUER MULTILINE_OCTAL +\060\153\061\013\060\011\006\003\125\004\006\023\002\111\124\061 +\016\060\014\006\003\125\004\007\014\005\115\151\154\141\156\061 +\043\060\041\006\003\125\004\012\014\032\101\143\164\141\154\151 +\163\040\123\056\160\056\101\056\057\060\063\063\065\070\065\062 +\060\071\066\067\061\047\060\045\006\003\125\004\003\014\036\101 +\143\164\141\154\151\163\040\101\165\164\150\145\156\164\151\143 +\141\164\151\157\156\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\127\012\021\227\102\304\343\314 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Buypass Class 2 Root CA" +# +# Issuer: CN=Buypass Class 2 Root CA,O=Buypass AS-983163327,C=NO +# Serial Number: 2 (0x2) +# Subject: CN=Buypass Class 2 Root CA,O=Buypass AS-983163327,C=NO +# Not Valid Before: Tue Oct 26 08:38:03 2010 +# Not Valid After : Fri Oct 26 08:38:03 2040 +# Fingerprint (SHA-256): 9A:11:40:25:19:7C:5B:B9:5D:94:E6:3D:55:CD:43:79:08:47:B6:46:B2:3C:DF:11:AD:A4:A0:0E:FF:15:FB:48 +# Fingerprint (SHA1): 49:0A:75:74:DE:87:0A:47:FE:58:EE:F6:C7:6B:EB:C6:0B:12:40:99 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Buypass Class 2 Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061 +\035\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163 +\163\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040 +\060\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163 +\040\103\154\141\163\163\040\062\040\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061 +\035\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163 +\163\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040 +\060\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163 +\040\103\154\141\163\163\040\062\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\002 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\131\060\202\003\101\240\003\002\001\002\002\001\002 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061\035 +\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163\163 +\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040\060 +\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163\040 +\103\154\141\163\163\040\062\040\122\157\157\164\040\103\101\060 +\036\027\015\061\060\061\060\062\066\060\070\063\070\060\063\132 +\027\015\064\060\061\060\062\066\060\070\063\070\060\063\132\060 +\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061\035 +\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163\163 +\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040\060 +\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163\040 +\103\154\141\163\163\040\062\040\122\157\157\164\040\103\101\060 +\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001 +\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000 +\327\307\136\367\301\007\324\167\373\103\041\364\364\365\151\344 +\356\062\001\333\243\206\037\344\131\015\272\347\165\203\122\353 +\352\034\141\025\110\273\035\007\312\214\256\260\334\226\235\352 +\303\140\222\206\202\050\163\234\126\006\377\113\144\360\014\052 +\067\111\265\345\317\014\174\356\361\112\273\163\060\145\363\325 +\057\203\266\176\343\347\365\236\253\140\371\323\361\235\222\164 +\212\344\034\226\254\133\200\351\265\364\061\207\243\121\374\307 +\176\241\157\216\123\167\324\227\301\125\063\222\076\030\057\165 +\324\255\206\111\313\225\257\124\006\154\330\006\023\215\133\377 +\341\046\031\131\300\044\272\201\161\171\220\104\120\150\044\224 +\137\270\263\021\361\051\101\141\243\101\313\043\066\325\301\361 +\062\120\020\116\177\364\206\223\354\204\323\216\274\113\277\134 +\001\116\007\075\334\024\212\224\012\244\352\163\373\013\121\350 +\023\007\030\372\016\361\053\321\124\025\175\074\341\367\264\031 +\102\147\142\136\167\340\242\125\354\266\331\151\027\325\072\257 +\104\355\112\305\236\344\172\047\174\345\165\327\252\313\045\347 +\337\153\012\333\017\115\223\116\250\240\315\173\056\362\131\001 +\152\267\015\270\007\201\176\213\070\033\070\346\012\127\231\075 +\356\041\350\243\365\014\026\335\213\354\064\216\234\052\034\000 +\025\027\215\150\203\322\160\237\030\010\315\021\150\325\311\153 +\122\315\304\106\217\334\265\363\330\127\163\036\351\224\071\004 +\277\323\336\070\336\264\123\354\151\034\242\176\304\217\344\033 +\160\255\362\242\371\373\367\026\144\146\151\237\111\121\242\342 +\025\030\147\006\112\177\325\154\265\115\263\063\340\141\353\135 +\276\351\230\017\062\327\035\113\074\056\132\001\122\221\011\362 +\337\352\215\330\006\100\143\252\021\344\376\303\067\236\024\122 +\077\364\342\314\362\141\223\321\375\147\153\327\122\256\277\150 +\253\100\103\240\127\065\123\170\360\123\370\141\102\007\144\306 +\327\157\233\114\070\015\143\254\142\257\066\213\242\163\012\015 +\365\041\275\164\252\115\352\162\003\111\333\307\137\035\142\143 +\307\375\335\221\354\063\356\365\155\264\156\060\150\336\310\326 +\046\260\165\136\173\264\007\040\230\241\166\062\270\115\154\117 +\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125\035 +\016\004\026\004\024\311\200\167\340\142\222\202\365\106\234\363 +\272\367\114\303\336\270\243\255\071\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\006\060\015\006\011\052\206\110 +\206\367\015\001\001\013\005\000\003\202\002\001\000\123\137\041 +\365\272\260\072\122\071\054\222\260\154\000\311\357\316\040\357 +\006\362\226\236\351\244\164\177\172\026\374\267\365\266\373\025 +\033\077\253\246\300\162\135\020\261\161\356\274\117\343\255\254 +\003\155\056\161\056\257\304\343\255\243\275\014\021\247\264\377 +\112\262\173\020\020\037\247\127\101\262\300\256\364\054\131\326 +\107\020\210\363\041\121\051\060\312\140\206\257\106\253\035\355 +\072\133\260\224\336\104\343\101\010\242\301\354\035\326\375\117 +\266\326\107\320\024\013\312\346\312\265\173\167\176\101\037\136 +\203\307\266\214\071\226\260\077\226\201\101\157\140\220\342\350 +\371\373\042\161\331\175\263\075\106\277\264\204\257\220\034\017 +\217\022\152\257\357\356\036\172\256\002\112\212\027\053\166\376 +\254\124\211\044\054\117\077\266\262\247\116\214\250\221\227\373 +\051\306\173\134\055\271\313\146\266\267\250\133\022\121\205\265 +\011\176\142\170\160\376\251\152\140\266\035\016\171\014\375\312 +\352\044\200\162\303\227\077\362\167\253\103\042\012\307\353\266 +\014\204\202\054\200\153\101\212\010\300\353\245\153\337\231\022 +\313\212\325\136\200\014\221\340\046\010\066\110\305\372\070\021 +\065\377\045\203\055\362\172\277\332\375\216\376\245\313\105\054 +\037\304\210\123\256\167\016\331\232\166\305\216\054\035\243\272 +\325\354\062\256\300\252\254\367\321\172\115\353\324\007\342\110 +\367\042\216\260\244\237\152\316\216\262\262\140\364\243\042\320 +\043\353\224\132\172\151\335\017\277\100\127\254\153\131\120\331 +\243\231\341\156\376\215\001\171\047\043\025\336\222\235\173\011 +\115\132\347\113\110\060\132\030\346\012\155\346\217\340\322\273 +\346\337\174\156\041\202\301\150\071\115\264\230\130\146\142\314 +\112\220\136\303\372\047\004\261\171\025\164\231\314\276\255\040 +\336\046\140\034\353\126\121\246\243\352\344\243\077\247\377\141 +\334\361\132\115\154\062\043\103\356\254\250\356\356\112\022\011 +\074\135\161\302\276\171\372\302\207\150\035\013\375\134\151\314 +\006\320\232\175\124\231\052\311\071\032\031\257\113\052\103\363 +\143\135\132\130\342\057\343\035\344\251\326\320\012\320\236\277 +\327\201\011\361\311\307\046\015\254\230\026\126\240 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Buypass Class 2 Root CA" +# Issuer: CN=Buypass Class 2 Root CA,O=Buypass AS-983163327,C=NO +# Serial Number: 2 (0x2) +# Subject: CN=Buypass Class 2 Root CA,O=Buypass AS-983163327,C=NO +# Not Valid Before: Tue Oct 26 08:38:03 2010 +# Not Valid After : Fri Oct 26 08:38:03 2040 +# Fingerprint (SHA-256): 9A:11:40:25:19:7C:5B:B9:5D:94:E6:3D:55:CD:43:79:08:47:B6:46:B2:3C:DF:11:AD:A4:A0:0E:FF:15:FB:48 +# Fingerprint (SHA1): 49:0A:75:74:DE:87:0A:47:FE:58:EE:F6:C7:6B:EB:C6:0B:12:40:99 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Buypass Class 2 Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\111\012\165\164\336\207\012\107\376\130\356\366\307\153\353\306 +\013\022\100\231 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\106\247\322\376\105\373\144\132\250\131\220\233\170\104\233\051 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061 +\035\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163 +\163\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040 +\060\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163 +\040\103\154\141\163\163\040\062\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\002 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Buypass Class 3 Root CA" +# +# Issuer: CN=Buypass Class 3 Root CA,O=Buypass AS-983163327,C=NO +# Serial Number: 2 (0x2) +# Subject: CN=Buypass Class 3 Root CA,O=Buypass AS-983163327,C=NO +# Not Valid Before: Tue Oct 26 08:28:58 2010 +# Not Valid After : Fri Oct 26 08:28:58 2040 +# Fingerprint (SHA-256): ED:F7:EB:BC:A2:7A:2A:38:4D:38:7B:7D:40:10:C6:66:E2:ED:B4:84:3E:4C:29:B4:AE:1D:5B:93:32:E6:B2:4D +# Fingerprint (SHA1): DA:FA:F7:FA:66:84:EC:06:8F:14:50:BD:C7:C2:81:A5:BC:A9:64:57 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Buypass Class 3 Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061 +\035\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163 +\163\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040 +\060\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163 +\040\103\154\141\163\163\040\063\040\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061 +\035\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163 +\163\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040 +\060\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163 +\040\103\154\141\163\163\040\063\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\002 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\131\060\202\003\101\240\003\002\001\002\002\001\002 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061\035 +\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163\163 +\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040\060 +\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163\040 +\103\154\141\163\163\040\063\040\122\157\157\164\040\103\101\060 +\036\027\015\061\060\061\060\062\066\060\070\062\070\065\070\132 +\027\015\064\060\061\060\062\066\060\070\062\070\065\070\132\060 +\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061\035 +\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163\163 +\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040\060 +\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163\040 +\103\154\141\163\163\040\063\040\122\157\157\164\040\103\101\060 +\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001 +\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000 +\245\332\012\225\026\120\343\225\362\136\235\166\061\006\062\172 +\233\361\020\166\270\000\232\265\122\066\315\044\107\260\237\030 +\144\274\232\366\372\325\171\330\220\142\114\042\057\336\070\075 +\326\340\250\351\034\054\333\170\021\351\216\150\121\025\162\307 +\363\063\207\344\240\135\013\134\340\127\007\052\060\365\315\304 +\067\167\050\115\030\221\346\277\325\122\375\161\055\160\076\347 +\306\304\212\343\360\050\013\364\166\230\241\213\207\125\262\072 +\023\374\267\076\047\067\216\042\343\250\117\052\357\140\273\075 +\267\071\303\016\001\107\231\135\022\117\333\103\372\127\241\355 +\371\235\276\021\107\046\133\023\230\253\135\026\212\260\067\034 +\127\235\105\377\210\226\066\277\273\312\007\173\157\207\143\327 +\320\062\152\326\135\154\014\361\263\156\071\342\153\061\056\071 +\000\047\024\336\070\300\354\031\146\206\022\350\235\162\026\023 +\144\122\307\251\067\034\375\202\060\355\204\030\035\364\256\134 +\377\160\023\000\353\261\365\063\172\113\326\125\370\005\215\113 +\151\260\365\263\050\066\134\024\304\121\163\115\153\013\361\064 +\007\333\027\071\327\334\050\173\153\365\237\363\056\301\117\027 +\052\020\363\314\312\350\353\375\153\253\056\232\237\055\202\156 +\004\324\122\001\223\055\075\206\374\176\374\337\357\102\035\246 +\153\357\271\040\306\367\275\240\247\225\375\247\346\211\044\330 +\314\214\064\154\342\043\057\331\022\032\041\271\125\221\157\013 +\221\171\031\014\255\100\210\013\160\342\172\322\016\330\150\110 +\273\202\023\071\020\130\351\330\052\007\306\022\333\130\333\322 +\073\125\020\107\005\025\147\142\176\030\143\246\106\077\011\016 +\124\062\136\277\015\142\172\047\357\200\350\333\331\113\006\132 +\067\132\045\320\010\022\167\324\157\011\120\227\075\310\035\303 +\337\214\105\060\126\306\323\144\253\146\363\300\136\226\234\303 +\304\357\303\174\153\213\072\171\177\263\111\317\075\342\211\237 +\240\060\113\205\271\234\224\044\171\217\175\153\251\105\150\017 +\053\320\361\332\034\313\151\270\312\111\142\155\310\320\143\142 +\335\140\017\130\252\217\241\274\005\245\146\242\317\033\166\262 +\204\144\261\114\071\122\300\060\272\360\214\113\002\260\266\267 +\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125\035 +\016\004\026\004\024\107\270\315\377\345\157\356\370\262\354\057 +\116\016\371\045\260\216\074\153\303\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\006\060\015\006\011\052\206\110 +\206\367\015\001\001\013\005\000\003\202\002\001\000\000\040\043 +\101\065\004\220\302\100\142\140\357\342\065\114\327\077\254\342 +\064\220\270\241\157\166\372\026\026\244\110\067\054\351\220\302 +\362\074\370\012\237\330\201\345\273\133\332\045\054\244\247\125 +\161\044\062\366\310\013\362\274\152\370\223\254\262\007\302\137 +\237\333\314\310\212\252\276\152\157\341\111\020\314\061\327\200 +\273\273\310\330\242\016\144\127\352\242\365\302\251\061\025\322 +\040\152\354\374\042\001\050\317\206\270\200\036\251\314\021\245 +\074\362\026\263\107\235\374\322\200\041\304\313\320\107\160\101 +\241\312\203\031\010\054\155\362\135\167\234\212\024\023\324\066 +\034\222\360\345\006\067\334\246\346\220\233\070\217\134\153\033 +\106\206\103\102\137\076\001\007\123\124\135\145\175\367\212\163 +\241\232\124\132\037\051\103\024\047\302\205\017\265\210\173\032 +\073\224\267\035\140\247\265\234\347\051\151\127\132\233\223\172 +\103\060\033\003\327\142\310\100\246\252\374\144\344\112\327\221 +\123\001\250\040\210\156\234\137\104\271\313\140\201\064\354\157 +\323\175\332\110\137\353\264\220\274\055\251\034\013\254\034\325 +\242\150\040\200\004\326\374\261\217\057\273\112\061\015\112\206 +\034\353\342\066\051\046\365\332\330\304\362\165\141\317\176\256 +\166\143\112\172\100\145\223\207\370\036\200\214\206\345\206\326 +\217\016\374\123\054\140\350\026\141\032\242\076\103\173\315\071 +\140\124\152\365\362\211\046\001\150\203\110\242\063\350\311\004 +\221\262\021\064\021\076\352\320\103\031\037\003\223\220\014\377 +\121\075\127\364\101\156\341\313\240\276\353\311\143\315\155\314 +\344\370\066\252\150\235\355\275\135\227\160\104\015\266\016\065 +\334\341\014\135\273\240\121\224\313\176\026\353\021\057\243\222 +\105\310\114\161\331\274\311\231\122\127\106\057\120\317\275\065 +\151\364\075\025\316\006\245\054\017\076\366\201\272\224\273\303 +\273\277\145\170\322\206\171\377\111\073\032\203\014\360\336\170 +\354\310\362\115\114\032\336\202\051\370\301\132\332\355\356\346 +\047\136\350\105\320\235\034\121\250\150\253\104\343\320\213\152 +\343\370\073\273\334\115\327\144\362\121\276\346\252\253\132\351 +\061\356\006\274\163\277\023\142\012\237\307\271\227 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Buypass Class 3 Root CA" +# Issuer: CN=Buypass Class 3 Root CA,O=Buypass AS-983163327,C=NO +# Serial Number: 2 (0x2) +# Subject: CN=Buypass Class 3 Root CA,O=Buypass AS-983163327,C=NO +# Not Valid Before: Tue Oct 26 08:28:58 2010 +# Not Valid After : Fri Oct 26 08:28:58 2040 +# Fingerprint (SHA-256): ED:F7:EB:BC:A2:7A:2A:38:4D:38:7B:7D:40:10:C6:66:E2:ED:B4:84:3E:4C:29:B4:AE:1D:5B:93:32:E6:B2:4D +# Fingerprint (SHA1): DA:FA:F7:FA:66:84:EC:06:8F:14:50:BD:C7:C2:81:A5:BC:A9:64:57 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Buypass Class 3 Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\332\372\367\372\146\204\354\006\217\024\120\275\307\302\201\245 +\274\251\144\127 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\075\073\030\236\054\144\132\350\325\210\316\016\371\067\302\354 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\116\117\061 +\035\060\033\006\003\125\004\012\014\024\102\165\171\160\141\163 +\163\040\101\123\055\071\070\063\061\066\063\063\062\067\061\040 +\060\036\006\003\125\004\003\014\027\102\165\171\160\141\163\163 +\040\103\154\141\163\163\040\063\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\002 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "T-TeleSec GlobalRoot Class 3" +# +# Issuer: CN=T-TeleSec GlobalRoot Class 3,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE +# Serial Number: 1 (0x1) +# Subject: CN=T-TeleSec GlobalRoot Class 3,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE +# Not Valid Before: Wed Oct 01 10:29:56 2008 +# Not Valid After : Sat Oct 01 23:59:59 2033 +# Fingerprint (SHA-256): FD:73:DA:D3:1C:64:4F:F1:B4:3B:EF:0C:CD:DA:96:71:0B:9C:D9:87:5E:CA:7E:31:70:7A:F3:E9:6D:52:2B:BD +# Fingerprint (SHA1): 55:A6:72:3E:CB:F2:EC:CD:C3:23:74:70:19:9D:2A:BE:11:E3:81:D1 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "T-TeleSec GlobalRoot Class 3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\104\105 +\061\053\060\051\006\003\125\004\012\014\042\124\055\123\171\163 +\164\145\155\163\040\105\156\164\145\162\160\162\151\163\145\040 +\123\145\162\166\151\143\145\163\040\107\155\142\110\061\037\060 +\035\006\003\125\004\013\014\026\124\055\123\171\163\164\145\155 +\163\040\124\162\165\163\164\040\103\145\156\164\145\162\061\045 +\060\043\006\003\125\004\003\014\034\124\055\124\145\154\145\123 +\145\143\040\107\154\157\142\141\154\122\157\157\164\040\103\154 +\141\163\163\040\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\104\105 +\061\053\060\051\006\003\125\004\012\014\042\124\055\123\171\163 +\164\145\155\163\040\105\156\164\145\162\160\162\151\163\145\040 +\123\145\162\166\151\143\145\163\040\107\155\142\110\061\037\060 +\035\006\003\125\004\013\014\026\124\055\123\171\163\164\145\155 +\163\040\124\162\165\163\164\040\103\145\156\164\145\162\061\045 +\060\043\006\003\125\004\003\014\034\124\055\124\145\154\145\123 +\145\143\040\107\154\157\142\141\154\122\157\157\164\040\103\154 +\141\163\163\040\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\303\060\202\002\253\240\003\002\001\002\002\001\001 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\201\202\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\053\060\051\006\003\125\004\012\014\042\124\055\123\171\163\164 +\145\155\163\040\105\156\164\145\162\160\162\151\163\145\040\123 +\145\162\166\151\143\145\163\040\107\155\142\110\061\037\060\035 +\006\003\125\004\013\014\026\124\055\123\171\163\164\145\155\163 +\040\124\162\165\163\164\040\103\145\156\164\145\162\061\045\060 +\043\006\003\125\004\003\014\034\124\055\124\145\154\145\123\145 +\143\040\107\154\157\142\141\154\122\157\157\164\040\103\154\141 +\163\163\040\063\060\036\027\015\060\070\061\060\060\061\061\060 +\062\071\065\066\132\027\015\063\063\061\060\060\061\062\063\065 +\071\065\071\132\060\201\202\061\013\060\011\006\003\125\004\006 +\023\002\104\105\061\053\060\051\006\003\125\004\012\014\042\124 +\055\123\171\163\164\145\155\163\040\105\156\164\145\162\160\162 +\151\163\145\040\123\145\162\166\151\143\145\163\040\107\155\142 +\110\061\037\060\035\006\003\125\004\013\014\026\124\055\123\171 +\163\164\145\155\163\040\124\162\165\163\164\040\103\145\156\164 +\145\162\061\045\060\043\006\003\125\004\003\014\034\124\055\124 +\145\154\145\123\145\143\040\107\154\157\142\141\154\122\157\157 +\164\040\103\154\141\163\163\040\063\060\202\001\042\060\015\006 +\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017 +\000\060\202\001\012\002\202\001\001\000\275\165\223\360\142\042 +\157\044\256\340\172\166\254\175\275\331\044\325\270\267\374\315 +\360\102\340\353\170\210\126\136\233\232\124\035\115\014\212\366 +\323\317\160\364\122\265\330\223\004\343\106\206\161\101\112\053 +\360\052\054\125\003\326\110\303\340\071\070\355\362\134\074\077 +\104\274\223\075\141\253\116\315\015\276\360\040\047\130\016\104 +\177\004\032\207\245\327\226\024\066\220\320\111\173\241\165\373 +\032\153\163\261\370\316\251\011\054\362\123\325\303\024\104\270 +\206\245\366\213\053\071\332\243\063\124\331\372\162\032\367\042 +\025\034\210\221\153\177\146\345\303\152\200\260\044\363\337\206 +\105\210\375\031\177\165\207\037\037\261\033\012\163\044\133\271 +\145\340\054\124\310\140\323\146\027\077\341\314\124\063\163\221 +\002\072\246\177\173\166\071\242\037\226\266\070\256\265\310\223 +\164\035\236\271\264\345\140\235\057\126\321\340\353\136\133\114 +\022\160\014\154\104\040\253\021\330\364\031\366\322\234\122\067 +\347\372\266\302\061\073\112\324\024\231\255\307\032\365\135\137 +\372\007\270\174\015\037\326\203\036\263\002\003\001\000\001\243 +\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\035\006\003\125\035\016\004\026\004\024\265 +\003\367\166\073\141\202\152\022\252\030\123\353\003\041\224\277 +\376\316\312\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\003\202\001\001\000\126\075\357\224\325\275\332\163\262 +\130\276\256\220\255\230\047\227\376\001\261\260\122\000\270\115 +\344\033\041\164\033\176\300\356\136\151\052\045\257\134\326\035 +\332\322\171\311\363\227\051\340\206\207\336\004\131\017\361\131 +\324\144\205\113\231\257\045\004\036\311\106\251\227\336\202\262 +\033\160\237\234\366\257\161\061\335\173\005\245\054\323\271\312 +\107\366\312\362\366\347\255\271\110\077\274\026\267\301\155\364 +\352\011\257\354\363\265\347\005\236\246\036\212\123\121\326\223 +\201\314\164\223\366\271\332\246\045\005\164\171\132\176\100\076 +\202\113\046\021\060\156\341\077\101\307\107\000\065\325\365\323 +\367\124\076\201\075\332\111\152\232\263\357\020\075\346\353\157 +\321\310\042\107\313\314\317\001\061\222\331\030\343\042\276\011 +\036\032\076\132\262\344\153\014\124\172\175\103\116\270\211\245 +\173\327\242\075\226\206\314\362\046\064\055\152\222\235\232\032 +\320\060\342\135\116\004\260\137\213\040\176\167\301\075\225\202 +\321\106\232\073\074\170\270\157\241\320\015\144\242\170\036\051 +\116\223\303\244\124\024\133 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "T-TeleSec GlobalRoot Class 3" +# Issuer: CN=T-TeleSec GlobalRoot Class 3,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE +# Serial Number: 1 (0x1) +# Subject: CN=T-TeleSec GlobalRoot Class 3,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE +# Not Valid Before: Wed Oct 01 10:29:56 2008 +# Not Valid After : Sat Oct 01 23:59:59 2033 +# Fingerprint (SHA-256): FD:73:DA:D3:1C:64:4F:F1:B4:3B:EF:0C:CD:DA:96:71:0B:9C:D9:87:5E:CA:7E:31:70:7A:F3:E9:6D:52:2B:BD +# Fingerprint (SHA1): 55:A6:72:3E:CB:F2:EC:CD:C3:23:74:70:19:9D:2A:BE:11:E3:81:D1 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "T-TeleSec GlobalRoot Class 3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\125\246\162\076\313\362\354\315\303\043\164\160\031\235\052\276 +\021\343\201\321 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\312\373\100\250\116\071\222\212\035\376\216\057\304\047\352\357 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\104\105 +\061\053\060\051\006\003\125\004\012\014\042\124\055\123\171\163 +\164\145\155\163\040\105\156\164\145\162\160\162\151\163\145\040 +\123\145\162\166\151\143\145\163\040\107\155\142\110\061\037\060 +\035\006\003\125\004\013\014\026\124\055\123\171\163\164\145\155 +\163\040\124\162\165\163\164\040\103\145\156\164\145\162\061\045 +\060\043\006\003\125\004\003\014\034\124\055\124\145\154\145\123 +\145\143\040\107\154\157\142\141\154\122\157\157\164\040\103\154 +\141\163\163\040\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "D-TRUST Root Class 3 CA 2 2009" +# +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009,O=D-Trust GmbH,C=DE +# Serial Number: 623603 (0x983f3) +# Subject: CN=D-TRUST Root Class 3 CA 2 2009,O=D-Trust GmbH,C=DE +# Not Valid Before: Thu Nov 05 08:35:58 2009 +# Not Valid After : Mon Nov 05 08:35:58 2029 +# Fingerprint (SHA-256): 49:E7:A4:42:AC:F0:EA:62:87:05:00:54:B5:25:64:B6:50:E4:F4:9E:42:E3:48:D6:AA:38:E0:39:E9:57:B1:C1 +# Fingerprint (SHA1): 58:E8:AB:B0:36:15:33:FB:80:F7:9B:1B:6D:29:D3:FF:8D:5F:00:F0 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST Root Class 3 CA 2 2009" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\047\060\045\006\003\125\004\003\014 +\036\104\055\124\122\125\123\124\040\122\157\157\164\040\103\154 +\141\163\163\040\063\040\103\101\040\062\040\062\060\060\071 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\047\060\045\006\003\125\004\003\014 +\036\104\055\124\122\125\123\124\040\122\157\157\164\040\103\154 +\141\163\163\040\063\040\103\101\040\062\040\062\060\060\071 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\011\203\363 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\063\060\202\003\033\240\003\002\001\002\002\003\011 +\203\363\060\015\006\011\052\206\110\206\367\015\001\001\013\005 +\000\060\115\061\013\060\011\006\003\125\004\006\023\002\104\105 +\061\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165 +\163\164\040\107\155\142\110\061\047\060\045\006\003\125\004\003 +\014\036\104\055\124\122\125\123\124\040\122\157\157\164\040\103 +\154\141\163\163\040\063\040\103\101\040\062\040\062\060\060\071 +\060\036\027\015\060\071\061\061\060\065\060\070\063\065\065\070 +\132\027\015\062\071\061\061\060\065\060\070\063\065\065\070\132 +\060\115\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\047\060\045\006\003\125\004\003\014 +\036\104\055\124\122\125\123\124\040\122\157\157\164\040\103\154 +\141\163\163\040\063\040\103\101\040\062\040\062\060\060\071\060 +\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001 +\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000 +\323\262\112\317\172\107\357\165\233\043\372\072\057\326\120\105 +\211\065\072\306\153\333\376\333\000\150\250\340\003\021\035\067 +\120\010\237\115\112\150\224\065\263\123\321\224\143\247\040\126 +\257\336\121\170\354\052\075\363\110\110\120\076\012\337\106\125 +\213\047\155\303\020\115\015\221\122\103\330\207\340\135\116\066 +\265\041\312\137\071\100\004\137\133\176\314\243\306\053\251\100 +\036\331\066\204\326\110\363\222\036\064\106\040\044\301\244\121 +\216\112\032\357\120\077\151\135\031\177\105\303\307\001\217\121 +\311\043\350\162\256\264\274\126\011\177\022\313\034\261\257\051 +\220\012\311\125\314\017\323\264\032\355\107\065\132\112\355\234 +\163\004\041\320\252\275\014\023\265\000\312\046\154\304\153\014 +\224\132\225\224\332\120\232\361\377\245\053\146\061\244\311\070 +\240\337\035\037\270\011\056\363\247\350\147\122\253\225\037\340 +\106\076\330\244\303\312\132\305\061\200\350\110\232\237\224\151 +\376\031\335\330\163\174\201\312\226\336\216\355\263\062\005\145 +\204\064\346\346\375\127\020\265\137\166\277\057\260\020\015\305 +\002\003\001\000\001\243\202\001\032\060\202\001\026\060\017\006 +\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\035 +\006\003\125\035\016\004\026\004\024\375\332\024\304\237\060\336 +\041\275\036\102\071\374\253\143\043\111\340\361\204\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\201\323 +\006\003\125\035\037\004\201\313\060\201\310\060\201\200\240\176 +\240\174\206\172\154\144\141\160\072\057\057\144\151\162\145\143 +\164\157\162\171\056\144\055\164\162\165\163\164\056\156\145\164 +\057\103\116\075\104\055\124\122\125\123\124\045\062\060\122\157 +\157\164\045\062\060\103\154\141\163\163\045\062\060\063\045\062 +\060\103\101\045\062\060\062\045\062\060\062\060\060\071\054\117 +\075\104\055\124\162\165\163\164\045\062\060\107\155\142\110\054 +\103\075\104\105\077\143\145\162\164\151\146\151\143\141\164\145 +\162\145\166\157\143\141\164\151\157\156\154\151\163\164\060\103 +\240\101\240\077\206\075\150\164\164\160\072\057\057\167\167\167 +\056\144\055\164\162\165\163\164\056\156\145\164\057\143\162\154 +\057\144\055\164\162\165\163\164\137\162\157\157\164\137\143\154 +\141\163\163\137\063\137\143\141\137\062\137\062\060\060\071\056 +\143\162\154\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\003\202\001\001\000\177\227\333\060\310\337\244\234\175 +\041\172\200\160\316\024\022\151\210\024\225\140\104\001\254\262 +\351\060\117\233\120\302\146\330\176\215\060\265\160\061\351\342 +\151\307\363\160\333\040\025\206\320\015\360\276\254\001\165\204 +\316\176\237\115\277\267\140\073\234\363\312\035\342\136\150\330 +\243\235\227\345\100\140\322\066\041\376\320\264\270\027\332\164 +\243\177\324\337\260\230\002\254\157\153\153\054\045\044\162\241 +\145\356\045\132\345\346\062\347\362\337\253\111\372\363\220\151 +\043\333\004\331\347\134\130\374\145\324\227\276\314\374\056\012 +\314\045\052\065\004\370\140\221\025\165\075\101\377\043\037\031 +\310\154\353\202\123\004\246\344\114\042\115\215\214\272\316\133 +\163\354\144\124\120\155\321\234\125\373\151\303\066\303\214\274 +\074\205\246\153\012\046\015\340\223\230\140\256\176\306\044\227 +\212\141\137\221\216\146\222\011\207\066\315\213\233\055\076\366 +\121\324\120\324\131\050\275\203\362\314\050\173\123\206\155\330 +\046\210\160\327\352\221\315\076\271\312\300\220\156\132\306\136 +\164\145\327\134\376\243\342 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "D-TRUST Root Class 3 CA 2 2009" +# Issuer: CN=D-TRUST Root Class 3 CA 2 2009,O=D-Trust GmbH,C=DE +# Serial Number: 623603 (0x983f3) +# Subject: CN=D-TRUST Root Class 3 CA 2 2009,O=D-Trust GmbH,C=DE +# Not Valid Before: Thu Nov 05 08:35:58 2009 +# Not Valid After : Mon Nov 05 08:35:58 2029 +# Fingerprint (SHA-256): 49:E7:A4:42:AC:F0:EA:62:87:05:00:54:B5:25:64:B6:50:E4:F4:9E:42:E3:48:D6:AA:38:E0:39:E9:57:B1:C1 +# Fingerprint (SHA1): 58:E8:AB:B0:36:15:33:FB:80:F7:9B:1B:6D:29:D3:FF:8D:5F:00:F0 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST Root Class 3 CA 2 2009" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\130\350\253\260\066\025\063\373\200\367\233\033\155\051\323\377 +\215\137\000\360 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\315\340\045\151\215\107\254\234\211\065\220\367\375\121\075\057 +END +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\047\060\045\006\003\125\004\003\014 +\036\104\055\124\122\125\123\124\040\122\157\157\164\040\103\154 +\141\163\163\040\063\040\103\101\040\062\040\062\060\060\071 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\011\203\363 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "D-TRUST Root Class 3 CA 2 EV 2009" +# +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009,O=D-Trust GmbH,C=DE +# Serial Number: 623604 (0x983f4) +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009,O=D-Trust GmbH,C=DE +# Not Valid Before: Thu Nov 05 08:50:46 2009 +# Not Valid After : Mon Nov 05 08:50:46 2029 +# Fingerprint (SHA-256): EE:C5:49:6B:98:8C:E9:86:25:B9:34:09:2E:EC:29:08:BE:D0:B0:F3:16:C2:D4:73:0C:84:EA:F1:F3:D3:48:81 +# Fingerprint (SHA1): 96:C9:1B:0B:95:B4:10:98:42:FA:D0:D8:22:79:FE:60:FA:B9:16:83 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST Root Class 3 CA 2 EV 2009" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\052\060\050\006\003\125\004\003\014 +\041\104\055\124\122\125\123\124\040\122\157\157\164\040\103\154 +\141\163\163\040\063\040\103\101\040\062\040\105\126\040\062\060 +\060\071 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\052\060\050\006\003\125\004\003\014 +\041\104\055\124\122\125\123\124\040\122\157\157\164\040\103\154 +\141\163\163\040\063\040\103\101\040\062\040\105\126\040\062\060 +\060\071 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\011\203\364 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\103\060\202\003\053\240\003\002\001\002\002\003\011 +\203\364\060\015\006\011\052\206\110\206\367\015\001\001\013\005 +\000\060\120\061\013\060\011\006\003\125\004\006\023\002\104\105 +\061\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165 +\163\164\040\107\155\142\110\061\052\060\050\006\003\125\004\003 +\014\041\104\055\124\122\125\123\124\040\122\157\157\164\040\103 +\154\141\163\163\040\063\040\103\101\040\062\040\105\126\040\062 +\060\060\071\060\036\027\015\060\071\061\061\060\065\060\070\065 +\060\064\066\132\027\015\062\071\061\061\060\065\060\070\065\060 +\064\066\132\060\120\061\013\060\011\006\003\125\004\006\023\002 +\104\105\061\025\060\023\006\003\125\004\012\014\014\104\055\124 +\162\165\163\164\040\107\155\142\110\061\052\060\050\006\003\125 +\004\003\014\041\104\055\124\122\125\123\124\040\122\157\157\164 +\040\103\154\141\163\163\040\063\040\103\101\040\062\040\105\126 +\040\062\060\060\071\060\202\001\042\060\015\006\011\052\206\110 +\206\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001 +\012\002\202\001\001\000\231\361\204\064\160\272\057\267\060\240 +\216\275\174\004\317\276\142\274\231\375\202\227\322\172\012\147 +\226\070\011\366\020\116\225\042\163\231\215\332\025\055\347\005 +\374\031\163\042\267\216\230\000\274\074\075\254\241\154\373\326 +\171\045\113\255\360\314\144\332\210\076\051\270\017\011\323\064 +\335\063\365\142\321\341\315\031\351\356\030\117\114\130\256\342 +\036\326\014\133\025\132\330\072\270\304\030\144\036\343\063\262 +\265\211\167\116\014\277\331\224\153\023\227\157\022\243\376\231 +\251\004\314\025\354\140\150\066\355\010\173\267\365\277\223\355 +\146\061\203\214\306\161\064\207\116\027\352\257\213\221\215\034 +\126\101\256\042\067\136\067\362\035\331\321\055\015\057\151\121 +\247\276\146\246\212\072\052\275\307\032\261\341\024\360\276\072 +\035\271\317\133\261\152\376\264\261\106\040\242\373\036\073\160 +\357\223\230\175\214\163\226\362\305\357\205\160\255\051\046\374 +\036\004\076\034\240\330\017\313\122\203\142\174\356\213\123\225 +\220\251\127\242\352\141\005\330\371\115\304\047\372\156\255\355 +\371\327\121\367\153\245\002\003\001\000\001\243\202\001\044\060 +\202\001\040\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\323 +\224\212\114\142\023\052\031\056\314\257\162\212\175\066\327\232 +\034\334\147\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\201\335\006\003\125\035\037\004\201\325\060\201 +\322\060\201\207\240\201\204\240\201\201\206\177\154\144\141\160 +\072\057\057\144\151\162\145\143\164\157\162\171\056\144\055\164 +\162\165\163\164\056\156\145\164\057\103\116\075\104\055\124\122 +\125\123\124\045\062\060\122\157\157\164\045\062\060\103\154\141 +\163\163\045\062\060\063\045\062\060\103\101\045\062\060\062\045 +\062\060\105\126\045\062\060\062\060\060\071\054\117\075\104\055 +\124\162\165\163\164\045\062\060\107\155\142\110\054\103\075\104 +\105\077\143\145\162\164\151\146\151\143\141\164\145\162\145\166 +\157\143\141\164\151\157\156\154\151\163\164\060\106\240\104\240 +\102\206\100\150\164\164\160\072\057\057\167\167\167\056\144\055 +\164\162\165\163\164\056\156\145\164\057\143\162\154\057\144\055 +\164\162\165\163\164\137\162\157\157\164\137\143\154\141\163\163 +\137\063\137\143\141\137\062\137\145\166\137\062\060\060\071\056 +\143\162\154\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\003\202\001\001\000\064\355\173\132\074\244\224\210\357 +\032\021\165\007\057\263\376\074\372\036\121\046\353\207\366\051 +\336\340\361\324\306\044\011\351\301\317\125\033\264\060\331\316 +\032\376\006\121\246\025\244\055\357\262\113\277\040\050\045\111 +\321\246\066\167\064\350\144\337\122\261\021\307\163\172\315\071 +\236\302\255\214\161\041\362\132\153\257\337\074\116\125\257\262 +\204\145\024\211\271\167\313\052\061\276\317\243\155\317\157\110 +\224\062\106\157\347\161\214\240\246\204\031\067\007\362\003\105 +\011\053\206\165\174\337\137\151\127\000\333\156\330\246\162\042 +\113\120\324\165\230\126\337\267\030\377\103\103\120\256\172\104 +\173\360\171\121\327\103\075\247\323\201\323\360\311\117\271\332 +\306\227\206\320\202\303\344\102\155\376\260\342\144\116\016\046 +\347\100\064\046\265\010\211\327\010\143\143\070\047\165\036\063 +\352\156\250\335\237\231\117\164\115\201\211\200\113\335\232\227 +\051\134\057\276\201\101\271\214\377\352\175\140\006\236\315\327 +\075\323\056\243\025\274\250\346\046\345\157\303\334\270\003\041 +\352\237\026\361\054\124\265 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "D-TRUST Root Class 3 CA 2 EV 2009" +# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009,O=D-Trust GmbH,C=DE +# Serial Number: 623604 (0x983f4) +# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009,O=D-Trust GmbH,C=DE +# Not Valid Before: Thu Nov 05 08:50:46 2009 +# Not Valid After : Mon Nov 05 08:50:46 2029 +# Fingerprint (SHA-256): EE:C5:49:6B:98:8C:E9:86:25:B9:34:09:2E:EC:29:08:BE:D0:B0:F3:16:C2:D4:73:0C:84:EA:F1:F3:D3:48:81 +# Fingerprint (SHA1): 96:C9:1B:0B:95:B4:10:98:42:FA:D0:D8:22:79:FE:60:FA:B9:16:83 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST Root Class 3 CA 2 EV 2009" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\226\311\033\013\225\264\020\230\102\372\320\330\042\171\376\140 +\372\271\026\203 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\252\306\103\054\136\055\315\304\064\300\120\117\021\002\117\266 +END +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\052\060\050\006\003\125\004\003\014 +\041\104\055\124\122\125\123\124\040\122\157\157\164\040\103\154 +\141\163\163\040\063\040\103\101\040\062\040\105\126\040\062\060 +\060\071 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\011\203\364 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "CA Disig Root R2" +# +# Issuer: CN=CA Disig Root R2,O=Disig a.s.,L=Bratislava,C=SK +# Serial Number:00:92:b8:88:db:b0:8a:c1:63 +# Subject: CN=CA Disig Root R2,O=Disig a.s.,L=Bratislava,C=SK +# Not Valid Before: Thu Jul 19 09:15:30 2012 +# Not Valid After : Sat Jul 19 09:15:30 2042 +# Fingerprint (SHA-256): E2:3D:4A:03:6D:7B:70:E9:F5:95:B1:42:20:79:D2:B9:1E:DF:BB:1F:B6:51:A0:63:3E:AA:8A:9D:C5:F8:07:03 +# Fingerprint (SHA1): B5:61:EB:EA:A4:DE:E4:25:4B:69:1A:98:A5:57:47:C2:34:C7:D9:71 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CA Disig Root R2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\122\061\013\060\011\006\003\125\004\006\023\002\123\113\061 +\023\060\021\006\003\125\004\007\023\012\102\162\141\164\151\163 +\154\141\166\141\061\023\060\021\006\003\125\004\012\023\012\104 +\151\163\151\147\040\141\056\163\056\061\031\060\027\006\003\125 +\004\003\023\020\103\101\040\104\151\163\151\147\040\122\157\157 +\164\040\122\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\122\061\013\060\011\006\003\125\004\006\023\002\123\113\061 +\023\060\021\006\003\125\004\007\023\012\102\162\141\164\151\163 +\154\141\166\141\061\023\060\021\006\003\125\004\012\023\012\104 +\151\163\151\147\040\141\056\163\056\061\031\060\027\006\003\125 +\004\003\023\020\103\101\040\104\151\163\151\147\040\122\157\157 +\164\040\122\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\222\270\210\333\260\212\301\143 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\151\060\202\003\121\240\003\002\001\002\002\011\000 +\222\270\210\333\260\212\301\143\060\015\006\011\052\206\110\206 +\367\015\001\001\013\005\000\060\122\061\013\060\011\006\003\125 +\004\006\023\002\123\113\061\023\060\021\006\003\125\004\007\023 +\012\102\162\141\164\151\163\154\141\166\141\061\023\060\021\006 +\003\125\004\012\023\012\104\151\163\151\147\040\141\056\163\056 +\061\031\060\027\006\003\125\004\003\023\020\103\101\040\104\151 +\163\151\147\040\122\157\157\164\040\122\062\060\036\027\015\061 +\062\060\067\061\071\060\071\061\065\063\060\132\027\015\064\062 +\060\067\061\071\060\071\061\065\063\060\132\060\122\061\013\060 +\011\006\003\125\004\006\023\002\123\113\061\023\060\021\006\003 +\125\004\007\023\012\102\162\141\164\151\163\154\141\166\141\061 +\023\060\021\006\003\125\004\012\023\012\104\151\163\151\147\040 +\141\056\163\056\061\031\060\027\006\003\125\004\003\023\020\103 +\101\040\104\151\163\151\147\040\122\157\157\164\040\122\062\060 +\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001 +\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000 +\242\243\304\000\011\326\205\135\055\155\024\366\302\303\163\236 +\065\302\161\125\176\201\373\253\106\120\340\301\174\111\170\346 +\253\171\130\074\332\377\174\034\237\330\227\002\170\076\153\101 +\004\351\101\275\276\003\054\105\366\057\144\324\253\135\243\107 +\075\144\233\351\150\232\306\314\033\077\272\276\262\213\064\002 +\056\230\125\031\374\214\157\252\137\332\114\316\115\003\041\243 +\330\322\064\223\126\226\313\114\014\000\026\074\137\032\315\310 +\307\154\246\255\323\061\247\274\350\345\341\146\326\322\373\003 +\264\101\145\311\020\256\016\005\143\306\200\152\151\060\375\322 +\356\220\357\015\047\337\237\225\163\364\341\045\332\154\026\336 +\101\070\064\352\213\374\321\350\004\024\141\055\101\176\254\307 +\167\116\313\121\124\373\136\222\030\033\004\132\150\306\311\304 +\372\267\023\240\230\267\021\053\267\326\127\314\174\236\027\321 +\313\045\376\206\116\044\056\126\014\170\115\236\001\022\246\053 +\247\001\145\156\174\142\035\204\204\337\352\300\153\265\245\052 +\225\203\303\123\021\014\163\035\013\262\106\220\321\102\072\316 +\100\156\225\255\377\306\224\255\156\227\204\216\175\157\236\212 +\200\015\111\155\163\342\173\222\036\303\363\301\363\353\056\005 +\157\331\033\317\067\166\004\310\264\132\344\027\247\313\335\166 +\037\320\031\166\350\054\005\263\326\234\064\330\226\334\141\207 +\221\005\344\104\010\063\301\332\271\010\145\324\256\262\066\015 +\353\272\070\272\014\345\233\236\353\215\146\335\231\317\326\211 +\101\366\004\222\212\051\051\155\153\072\034\347\165\175\002\161 +\016\363\300\347\275\313\031\335\235\140\262\302\146\140\266\261 +\004\356\311\346\206\271\232\146\100\250\347\021\355\201\105\003 +\213\366\147\131\350\301\006\021\275\335\317\200\002\117\145\100 +\170\134\107\120\310\233\346\037\201\173\344\104\250\133\205\232 +\342\336\132\325\307\371\072\104\146\113\344\062\124\174\344\154 +\234\263\016\075\027\242\262\064\022\326\176\262\250\111\273\321 +\172\050\100\276\242\026\037\337\344\067\037\021\163\373\220\012 +\145\103\242\015\174\370\006\001\125\063\175\260\015\270\364\365 +\256\245\102\127\174\066\021\214\173\136\304\003\235\214\171\235 +\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\006\060\035\006\003\125\035 +\016\004\026\004\024\265\231\370\257\260\224\365\343\040\326\012 +\255\316\116\126\244\056\156\102\355\060\015\006\011\052\206\110 +\206\367\015\001\001\013\005\000\003\202\002\001\000\046\006\136 +\160\347\145\063\310\202\156\331\234\027\072\033\172\146\262\001 +\366\170\073\151\136\057\352\377\116\371\050\303\230\052\141\114 +\264\044\022\212\175\155\021\024\367\234\265\312\346\274\236\047 +\216\114\031\310\251\275\172\300\327\066\016\155\205\162\156\250 +\306\242\155\366\372\163\143\177\274\156\171\010\034\235\212\237 +\032\212\123\246\330\273\331\065\125\261\021\305\251\003\263\126 +\073\271\204\223\042\136\176\301\366\022\122\213\352\054\147\274 +\376\066\114\365\270\317\321\263\111\222\073\323\051\016\231\033 +\226\367\141\270\073\304\053\266\170\154\264\043\157\360\375\323 +\262\136\165\037\231\225\250\254\366\332\341\305\061\173\373\321 +\106\263\322\274\147\264\142\124\272\011\367\143\260\223\242\232 +\371\351\122\056\213\140\022\253\374\365\140\126\357\020\134\213 +\304\032\102\334\203\133\144\016\313\265\274\326\117\301\174\074 +\156\215\023\155\373\173\353\060\320\334\115\257\305\325\266\245 +\114\133\161\311\350\061\276\350\070\006\110\241\032\342\352\322 +\336\022\071\130\032\377\200\016\202\165\346\267\311\007\154\016 +\357\377\070\361\230\161\304\267\177\016\025\320\045\151\275\042 +\235\053\355\005\366\106\107\254\355\300\360\324\073\342\354\356 +\226\133\220\023\116\036\126\072\353\260\357\226\273\226\043\021 +\272\362\103\206\164\144\225\310\050\165\337\035\065\272\322\067 +\203\070\123\070\066\073\317\154\351\371\153\016\320\373\004\350 +\117\167\327\145\001\170\206\014\172\076\041\142\361\177\143\161 +\014\311\237\104\333\250\047\242\165\276\156\201\076\327\300\353 +\033\230\017\160\134\064\262\212\314\300\205\030\353\156\172\263 +\367\132\241\007\277\251\102\222\363\140\042\227\344\024\241\007 +\233\116\166\300\216\175\375\244\045\307\107\355\377\037\163\254 +\314\303\245\351\157\012\216\233\145\302\120\205\265\243\240\123 +\022\314\125\207\141\363\201\256\020\106\141\275\104\041\270\302 +\075\164\317\176\044\065\372\034\007\016\233\075\042\312\357\061 +\057\214\254\022\275\357\100\050\374\051\147\237\262\023\117\146 +\044\304\123\031\351\036\051\025\357\346\155\260\177\055\147\375 +\363\154\033\165\106\243\345\112\027\351\244\327\013 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CA Disig Root R2" +# Issuer: CN=CA Disig Root R2,O=Disig a.s.,L=Bratislava,C=SK +# Serial Number:00:92:b8:88:db:b0:8a:c1:63 +# Subject: CN=CA Disig Root R2,O=Disig a.s.,L=Bratislava,C=SK +# Not Valid Before: Thu Jul 19 09:15:30 2012 +# Not Valid After : Sat Jul 19 09:15:30 2042 +# Fingerprint (SHA-256): E2:3D:4A:03:6D:7B:70:E9:F5:95:B1:42:20:79:D2:B9:1E:DF:BB:1F:B6:51:A0:63:3E:AA:8A:9D:C5:F8:07:03 +# Fingerprint (SHA1): B5:61:EB:EA:A4:DE:E4:25:4B:69:1A:98:A5:57:47:C2:34:C7:D9:71 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CA Disig Root R2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\265\141\353\352\244\336\344\045\113\151\032\230\245\127\107\302 +\064\307\331\161 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\046\001\373\330\047\247\027\232\105\124\070\032\103\001\073\003 +END +CKA_ISSUER MULTILINE_OCTAL +\060\122\061\013\060\011\006\003\125\004\006\023\002\123\113\061 +\023\060\021\006\003\125\004\007\023\012\102\162\141\164\151\163 +\154\141\166\141\061\023\060\021\006\003\125\004\012\023\012\104 +\151\163\151\147\040\141\056\163\056\061\031\060\027\006\003\125 +\004\003\023\020\103\101\040\104\151\163\151\147\040\122\157\157 +\164\040\122\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\222\270\210\333\260\212\301\143 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "ACCVRAIZ1" +# +# Issuer: C=ES,O=ACCV,OU=PKIACCV,CN=ACCVRAIZ1 +# Serial Number:5e:c3:b7:a6:43:7f:a4:e0 +# Subject: C=ES,O=ACCV,OU=PKIACCV,CN=ACCVRAIZ1 +# Not Valid Before: Thu May 05 09:37:37 2011 +# Not Valid After : Tue Dec 31 09:37:37 2030 +# Fingerprint (SHA-256): 9A:6E:C0:12:E1:A7:DA:9D:BE:34:19:4D:47:8A:D7:C0:DB:18:22:FB:07:1D:F1:29:81:49:6E:D1:04:38:41:13 +# Fingerprint (SHA1): 93:05:7A:88:15:C6:4F:CE:88:2F:FA:91:16:52:28:78:BC:53:64:17 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ACCVRAIZ1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\102\061\022\060\020\006\003\125\004\003\014\011\101\103\103 +\126\122\101\111\132\061\061\020\060\016\006\003\125\004\013\014 +\007\120\113\111\101\103\103\126\061\015\060\013\006\003\125\004 +\012\014\004\101\103\103\126\061\013\060\011\006\003\125\004\006 +\023\002\105\123 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\102\061\022\060\020\006\003\125\004\003\014\011\101\103\103 +\126\122\101\111\132\061\061\020\060\016\006\003\125\004\013\014 +\007\120\113\111\101\103\103\126\061\015\060\013\006\003\125\004 +\012\014\004\101\103\103\126\061\013\060\011\006\003\125\004\006 +\023\002\105\123 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\136\303\267\246\103\177\244\340 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\007\323\060\202\005\273\240\003\002\001\002\002\010\136 +\303\267\246\103\177\244\340\060\015\006\011\052\206\110\206\367 +\015\001\001\005\005\000\060\102\061\022\060\020\006\003\125\004 +\003\014\011\101\103\103\126\122\101\111\132\061\061\020\060\016 +\006\003\125\004\013\014\007\120\113\111\101\103\103\126\061\015 +\060\013\006\003\125\004\012\014\004\101\103\103\126\061\013\060 +\011\006\003\125\004\006\023\002\105\123\060\036\027\015\061\061 +\060\065\060\065\060\071\063\067\063\067\132\027\015\063\060\061 +\062\063\061\060\071\063\067\063\067\132\060\102\061\022\060\020 +\006\003\125\004\003\014\011\101\103\103\126\122\101\111\132\061 +\061\020\060\016\006\003\125\004\013\014\007\120\113\111\101\103 +\103\126\061\015\060\013\006\003\125\004\012\014\004\101\103\103 +\126\061\013\060\011\006\003\125\004\006\023\002\105\123\060\202 +\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 +\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\233 +\251\253\277\141\112\227\257\057\227\146\232\164\137\320\331\226 +\375\317\342\344\146\357\037\037\107\063\302\104\243\337\232\336 +\037\265\124\335\025\174\151\065\021\157\273\310\014\216\152\030 +\036\330\217\331\026\274\020\110\066\134\360\143\263\220\132\134 +\044\067\327\243\326\313\011\161\271\361\001\162\204\260\175\333 +\115\200\315\374\323\157\311\370\332\266\016\202\322\105\205\250 +\033\150\250\075\350\364\104\154\275\241\302\313\003\276\214\076 +\023\000\204\337\112\110\300\343\042\012\350\351\067\247\030\114 +\261\011\015\043\126\177\004\115\331\027\204\030\245\310\332\100 +\224\163\353\316\016\127\074\003\201\072\235\012\241\127\103\151 +\254\127\155\171\220\170\345\265\264\073\330\274\114\215\050\241 +\247\243\247\272\002\116\045\321\052\256\355\256\003\042\270\153 +\040\017\060\050\124\225\177\340\356\316\012\146\235\321\100\055 +\156\042\257\235\032\301\005\031\322\157\300\362\237\370\173\263 +\002\102\373\120\251\035\055\223\017\043\253\306\301\017\222\377 +\320\242\025\365\123\011\161\034\377\105\023\204\346\046\136\370 +\340\210\034\012\374\026\266\250\163\006\270\360\143\204\002\240 +\306\132\354\347\164\337\160\256\243\203\045\352\326\307\227\207 +\223\247\306\212\212\063\227\140\067\020\076\227\076\156\051\025 +\326\241\017\321\210\054\022\237\157\252\244\306\102\353\101\242 +\343\225\103\323\001\205\155\216\273\073\363\043\066\307\376\073 +\340\241\045\007\110\253\311\211\164\377\010\217\200\277\300\226 +\145\363\356\354\113\150\275\235\210\303\061\263\100\361\350\317 +\366\070\273\234\344\321\177\324\345\130\233\174\372\324\363\016 +\233\165\221\344\272\122\056\031\176\321\365\315\132\031\374\272 +\006\366\373\122\250\113\231\004\335\370\371\264\213\120\243\116 +\142\211\360\207\044\372\203\102\301\207\372\325\055\051\052\132 +\161\172\144\152\327\047\140\143\015\333\316\111\365\215\037\220 +\211\062\027\370\163\103\270\322\132\223\206\141\326\341\165\012 +\352\171\146\166\210\117\161\353\004\045\326\012\132\172\223\345 +\271\113\027\100\017\261\266\271\365\336\117\334\340\263\254\073 +\021\160\140\204\112\103\156\231\040\300\051\161\012\300\145\002 +\003\001\000\001\243\202\002\313\060\202\002\307\060\175\006\010 +\053\006\001\005\005\007\001\001\004\161\060\157\060\114\006\010 +\053\006\001\005\005\007\060\002\206\100\150\164\164\160\072\057 +\057\167\167\167\056\141\143\143\166\056\145\163\057\146\151\154 +\145\141\144\155\151\156\057\101\162\143\150\151\166\157\163\057 +\143\145\162\164\151\146\151\143\141\144\157\163\057\162\141\151 +\172\141\143\143\166\061\056\143\162\164\060\037\006\010\053\006 +\001\005\005\007\060\001\206\023\150\164\164\160\072\057\057\157 +\143\163\160\056\141\143\143\166\056\145\163\060\035\006\003\125 +\035\016\004\026\004\024\322\207\264\343\337\067\047\223\125\366 +\126\352\201\345\066\314\214\036\077\275\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\037\006\003\125 +\035\043\004\030\060\026\200\024\322\207\264\343\337\067\047\223 +\125\366\126\352\201\345\066\314\214\036\077\275\060\202\001\163 +\006\003\125\035\040\004\202\001\152\060\202\001\146\060\202\001 +\142\006\004\125\035\040\000\060\202\001\130\060\202\001\042\006 +\010\053\006\001\005\005\007\002\002\060\202\001\024\036\202\001 +\020\000\101\000\165\000\164\000\157\000\162\000\151\000\144\000 +\141\000\144\000\040\000\144\000\145\000\040\000\103\000\145\000 +\162\000\164\000\151\000\146\000\151\000\143\000\141\000\143\000 +\151\000\363\000\156\000\040\000\122\000\141\000\355\000\172\000 +\040\000\144\000\145\000\040\000\154\000\141\000\040\000\101\000 +\103\000\103\000\126\000\040\000\050\000\101\000\147\000\145\000 +\156\000\143\000\151\000\141\000\040\000\144\000\145\000\040\000 +\124\000\145\000\143\000\156\000\157\000\154\000\157\000\147\000 +\355\000\141\000\040\000\171\000\040\000\103\000\145\000\162\000 +\164\000\151\000\146\000\151\000\143\000\141\000\143\000\151\000 +\363\000\156\000\040\000\105\000\154\000\145\000\143\000\164\000 +\162\000\363\000\156\000\151\000\143\000\141\000\054\000\040\000 +\103\000\111\000\106\000\040\000\121\000\064\000\066\000\060\000 +\061\000\061\000\065\000\066\000\105\000\051\000\056\000\040\000 +\103\000\120\000\123\000\040\000\145\000\156\000\040\000\150\000 +\164\000\164\000\160\000\072\000\057\000\057\000\167\000\167\000 +\167\000\056\000\141\000\143\000\143\000\166\000\056\000\145\000 +\163\060\060\006\010\053\006\001\005\005\007\002\001\026\044\150 +\164\164\160\072\057\057\167\167\167\056\141\143\143\166\056\145 +\163\057\154\145\147\151\163\154\141\143\151\157\156\137\143\056 +\150\164\155\060\125\006\003\125\035\037\004\116\060\114\060\112 +\240\110\240\106\206\104\150\164\164\160\072\057\057\167\167\167 +\056\141\143\143\166\056\145\163\057\146\151\154\145\141\144\155 +\151\156\057\101\162\143\150\151\166\157\163\057\143\145\162\164 +\151\146\151\143\141\144\157\163\057\162\141\151\172\141\143\143 +\166\061\137\144\145\162\056\143\162\154\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\006\060\027\006\003\125\035 +\021\004\020\060\016\201\014\141\143\143\166\100\141\143\143\166 +\056\145\163\060\015\006\011\052\206\110\206\367\015\001\001\005 +\005\000\003\202\002\001\000\227\061\002\237\347\375\103\147\110 +\104\024\344\051\207\355\114\050\146\320\217\065\332\115\141\267 +\112\227\115\265\333\220\340\005\056\016\306\171\320\362\227\151 +\017\275\004\107\331\276\333\265\051\332\233\331\256\251\231\325 +\323\074\060\223\365\215\241\250\374\006\215\104\364\312\026\225 +\174\063\334\142\213\250\067\370\047\330\011\055\033\357\310\024 +\047\040\251\144\104\377\056\326\165\252\154\115\140\100\031\111 +\103\124\143\332\342\314\272\146\345\117\104\172\133\331\152\201 +\053\100\325\177\371\001\047\130\054\310\355\110\221\174\077\246 +\000\317\304\051\163\021\066\336\206\031\076\235\356\031\212\033 +\325\260\355\216\075\234\052\300\015\330\075\146\343\074\015\275 +\325\224\134\342\342\247\065\033\004\000\366\077\132\215\352\103 +\275\137\211\035\251\301\260\314\231\342\115\000\012\332\311\047 +\133\347\023\220\134\344\365\063\242\125\155\334\340\011\115\057 +\261\046\133\047\165\000\011\304\142\167\051\010\137\236\131\254 +\266\176\255\237\124\060\042\003\301\036\161\144\376\371\070\012 +\226\030\335\002\024\254\043\313\006\034\036\244\175\215\015\336 +\047\101\350\255\332\025\267\260\043\335\053\250\323\332\045\207 +\355\350\125\104\115\210\364\066\176\204\232\170\254\367\016\126 +\111\016\326\063\045\326\204\120\102\154\040\022\035\052\325\276 +\274\362\160\201\244\160\140\276\005\265\233\236\004\104\276\141 +\043\254\351\245\044\214\021\200\224\132\242\242\271\111\322\301 +\334\321\247\355\061\021\054\236\031\246\356\341\125\341\300\352 +\317\015\204\344\027\267\242\174\245\336\125\045\006\356\314\300 +\207\134\100\332\314\225\077\125\340\065\307\270\204\276\264\135 +\315\172\203\001\162\356\207\346\137\035\256\265\205\306\046\337 +\346\301\232\351\036\002\107\237\052\250\155\251\133\317\354\105 +\167\177\230\047\232\062\135\052\343\204\356\305\230\146\057\226 +\040\035\335\330\303\047\327\260\371\376\331\175\315\320\237\217 +\013\024\130\121\237\057\213\303\070\055\336\350\217\326\215\207 +\244\365\126\103\026\231\054\364\244\126\264\064\270\141\067\311 +\302\130\200\033\240\227\241\374\131\215\351\021\366\321\017\113 +\125\064\106\052\213\206\073 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "ACCVRAIZ1" +# Issuer: C=ES,O=ACCV,OU=PKIACCV,CN=ACCVRAIZ1 +# Serial Number:5e:c3:b7:a6:43:7f:a4:e0 +# Subject: C=ES,O=ACCV,OU=PKIACCV,CN=ACCVRAIZ1 +# Not Valid Before: Thu May 05 09:37:37 2011 +# Not Valid After : Tue Dec 31 09:37:37 2030 +# Fingerprint (SHA-256): 9A:6E:C0:12:E1:A7:DA:9D:BE:34:19:4D:47:8A:D7:C0:DB:18:22:FB:07:1D:F1:29:81:49:6E:D1:04:38:41:13 +# Fingerprint (SHA1): 93:05:7A:88:15:C6:4F:CE:88:2F:FA:91:16:52:28:78:BC:53:64:17 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ACCVRAIZ1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\223\005\172\210\025\306\117\316\210\057\372\221\026\122\050\170 +\274\123\144\027 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\320\240\132\356\005\266\011\224\041\241\175\361\262\051\202\002 +END +CKA_ISSUER MULTILINE_OCTAL +\060\102\061\022\060\020\006\003\125\004\003\014\011\101\103\103 +\126\122\101\111\132\061\061\020\060\016\006\003\125\004\013\014 +\007\120\113\111\101\103\103\126\061\015\060\013\006\003\125\004 +\012\014\004\101\103\103\126\061\013\060\011\006\003\125\004\006 +\023\002\105\123 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\136\303\267\246\103\177\244\340 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "TWCA Global Root CA" +# +# Issuer: CN=TWCA Global Root CA,OU=Root CA,O=TAIWAN-CA,C=TW +# Serial Number: 3262 (0xcbe) +# Subject: CN=TWCA Global Root CA,OU=Root CA,O=TAIWAN-CA,C=TW +# Not Valid Before: Wed Jun 27 06:28:33 2012 +# Not Valid After : Tue Dec 31 15:59:59 2030 +# Fingerprint (SHA-256): 59:76:90:07:F7:68:5D:0F:CD:50:87:2F:9F:95:D5:75:5A:5B:2B:45:7D:81:F3:69:2B:61:0A:98:67:2F:0E:1B +# Fingerprint (SHA1): 9C:BB:48:53:F6:A4:F6:D3:52:A4:E8:32:52:55:60:13:F5:AD:AF:65 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TWCA Global Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\034\060\032\006\003\125\004\003\023\023 +\124\127\103\101\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\034\060\032\006\003\125\004\003\023\023 +\124\127\103\101\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\002\014\276 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\101\060\202\003\051\240\003\002\001\002\002\002\014 +\276\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000 +\060\121\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\034\060\032\006\003\125\004\003\023\023 +\124\127\103\101\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101\060\036\027\015\061\062\060\066\062\067\060\066\062 +\070\063\063\132\027\015\063\060\061\062\063\061\061\065\065\071 +\065\071\132\060\121\061\013\060\011\006\003\125\004\006\023\002 +\124\127\061\022\060\020\006\003\125\004\012\023\011\124\101\111 +\127\101\116\055\103\101\061\020\060\016\006\003\125\004\013\023 +\007\122\157\157\164\040\103\101\061\034\060\032\006\003\125\004 +\003\023\023\124\127\103\101\040\107\154\157\142\141\154\040\122 +\157\157\164\040\103\101\060\202\002\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 +\002\012\002\202\002\001\000\260\005\333\310\353\214\304\156\212 +\041\357\216\115\234\161\012\037\122\160\355\155\202\234\227\305 +\327\114\116\105\111\313\100\102\265\022\064\154\031\302\164\244 +\061\137\205\002\227\354\103\063\012\123\322\234\214\216\267\270 +\171\333\053\325\152\362\216\146\304\356\053\001\007\222\324\263 +\320\002\337\120\366\125\257\146\016\313\340\107\140\057\053\062 +\071\065\122\072\050\203\370\173\026\306\030\270\142\326\107\045 +\221\316\360\031\022\115\255\143\365\323\077\165\137\051\360\241 +\060\034\052\240\230\246\025\275\356\375\031\066\360\342\221\103 +\217\372\312\326\020\047\111\114\357\335\301\361\205\160\233\312 +\352\250\132\103\374\155\206\157\163\351\067\105\251\360\066\307 +\314\210\165\036\273\154\006\377\233\153\076\027\354\141\252\161 +\174\306\035\242\367\111\351\025\265\074\326\241\141\365\021\367 +\005\157\035\375\021\276\320\060\007\302\051\260\011\116\046\334 +\343\242\250\221\152\037\302\221\105\210\134\345\230\270\161\245 +\025\031\311\174\165\021\314\160\164\117\055\233\035\221\104\375 +\126\050\240\376\273\206\152\310\372\134\013\130\334\306\113\166 +\310\253\042\331\163\017\245\364\132\002\211\077\117\236\042\202 +\356\242\164\123\052\075\123\047\151\035\154\216\062\054\144\000 +\046\143\141\066\116\243\106\267\077\175\263\055\254\155\220\242 +\225\242\316\317\332\202\347\007\064\031\226\351\270\041\252\051 +\176\246\070\276\216\051\112\041\146\171\037\263\303\265\011\147 +\336\326\324\007\106\363\052\332\346\042\067\140\313\201\266\017 +\240\017\351\310\225\177\277\125\221\005\172\317\075\025\300\157 +\336\011\224\001\203\327\064\033\314\100\245\360\270\233\147\325 +\230\221\073\247\204\170\225\046\244\132\010\370\053\164\264\000 +\004\074\337\270\024\216\350\337\251\215\154\147\222\063\035\300 +\267\322\354\222\310\276\011\277\054\051\005\157\002\153\236\357 +\274\277\052\274\133\300\120\217\101\160\161\207\262\115\267\004 +\251\204\243\062\257\256\356\153\027\213\262\261\376\154\341\220 +\214\210\250\227\110\316\310\115\313\363\006\317\137\152\012\102 +\261\036\036\167\057\216\240\346\222\016\006\374\005\042\322\046 +\341\061\121\175\062\334\017\002\003\001\000\001\243\043\060\041 +\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000 +\003\202\002\001\000\137\064\201\166\357\226\035\325\345\265\331 +\002\143\204\026\301\256\240\160\121\247\367\114\107\065\310\013 +\327\050\075\211\161\331\252\063\101\352\024\033\154\041\000\300 +\154\102\031\176\237\151\133\040\102\337\242\322\332\304\174\227 +\113\215\260\350\254\310\356\245\151\004\231\012\222\246\253\047 +\056\032\115\201\277\204\324\160\036\255\107\376\375\112\235\063 +\340\362\271\304\105\010\041\012\332\151\151\163\162\015\276\064 +\376\224\213\255\303\036\065\327\242\203\357\345\070\307\245\205 +\037\253\317\064\354\077\050\376\014\361\127\206\116\311\125\367 +\034\324\330\245\175\006\172\157\325\337\020\337\201\116\041\145 +\261\266\341\027\171\225\105\006\316\137\314\334\106\211\143\150 +\104\215\223\364\144\160\240\075\235\050\005\303\071\160\270\142 +\173\040\375\344\333\351\010\241\270\236\075\011\307\117\373\054 +\370\223\166\101\336\122\340\341\127\322\235\003\274\167\236\376 +\236\051\136\367\301\121\140\037\336\332\013\262\055\165\267\103 +\110\223\347\366\171\306\204\135\200\131\140\224\374\170\230\217 +\074\223\121\355\100\220\007\337\144\143\044\313\116\161\005\241 +\327\224\032\210\062\361\042\164\042\256\245\246\330\022\151\114 +\140\243\002\356\053\354\324\143\222\013\136\276\057\166\153\243 +\266\046\274\217\003\330\012\362\114\144\106\275\071\142\345\226 +\353\064\143\021\050\314\225\361\255\357\357\334\200\130\110\351 +\113\270\352\145\254\351\374\200\265\265\310\105\371\254\301\237 +\331\271\352\142\210\216\304\361\113\203\022\255\346\213\204\326 +\236\302\353\203\030\237\152\273\033\044\140\063\160\314\354\367 +\062\363\134\331\171\175\357\236\244\376\311\043\303\044\356\025 +\222\261\075\221\117\046\206\275\146\163\044\023\352\244\256\143 +\301\255\175\204\003\074\020\170\206\033\171\343\304\363\362\004 +\225\040\256\043\202\304\263\072\000\142\277\346\066\044\341\127 +\272\307\036\220\165\325\137\077\225\141\053\301\073\315\345\263 +\150\141\320\106\046\251\041\122\151\055\353\056\307\353\167\316 +\246\072\265\003\063\117\166\321\347\134\124\001\135\313\170\364 +\311\014\277\317\022\216\027\055\043\150\224\347\253\376\251\262 +\053\006\320\004\315 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "TWCA Global Root CA" +# Issuer: CN=TWCA Global Root CA,OU=Root CA,O=TAIWAN-CA,C=TW +# Serial Number: 3262 (0xcbe) +# Subject: CN=TWCA Global Root CA,OU=Root CA,O=TAIWAN-CA,C=TW +# Not Valid Before: Wed Jun 27 06:28:33 2012 +# Not Valid After : Tue Dec 31 15:59:59 2030 +# Fingerprint (SHA-256): 59:76:90:07:F7:68:5D:0F:CD:50:87:2F:9F:95:D5:75:5A:5B:2B:45:7D:81:F3:69:2B:61:0A:98:67:2F:0E:1B +# Fingerprint (SHA1): 9C:BB:48:53:F6:A4:F6:D3:52:A4:E8:32:52:55:60:13:F5:AD:AF:65 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TWCA Global Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\234\273\110\123\366\244\366\323\122\244\350\062\122\125\140\023 +\365\255\257\145 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\371\003\176\317\346\236\074\163\172\052\220\007\151\377\053\226 +END +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\034\060\032\006\003\125\004\003\023\023 +\124\127\103\101\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\002\014\276 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "TeliaSonera Root CA v1" +# +# Issuer: CN=TeliaSonera Root CA v1,O=TeliaSonera +# Serial Number:00:95:be:16:a0:f7:2e:46:f1:7b:39:82:72:fa:8b:cd:96 +# Subject: CN=TeliaSonera Root CA v1,O=TeliaSonera +# Not Valid Before: Thu Oct 18 12:00:50 2007 +# Not Valid After : Mon Oct 18 12:00:50 2032 +# Fingerprint (SHA-256): DD:69:36:FE:21:F8:F0:77:C1:23:A1:A5:21:C1:22:24:F7:22:55:B7:3E:03:A7:26:06:93:E8:A2:4B:0F:A3:89 +# Fingerprint (SHA1): 43:13:BB:96:F1:D5:86:9B:C1:4E:6A:92:F6:CF:F6:34:69:87:82:37 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TeliaSonera Root CA v1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\067\061\024\060\022\006\003\125\004\012\014\013\124\145\154 +\151\141\123\157\156\145\162\141\061\037\060\035\006\003\125\004 +\003\014\026\124\145\154\151\141\123\157\156\145\162\141\040\122 +\157\157\164\040\103\101\040\166\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\067\061\024\060\022\006\003\125\004\012\014\013\124\145\154 +\151\141\123\157\156\145\162\141\061\037\060\035\006\003\125\004 +\003\014\026\124\145\154\151\141\123\157\156\145\162\141\040\122 +\157\157\164\040\103\101\040\166\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\225\276\026\240\367\056\106\361\173\071\202\162\372 +\213\315\226 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\070\060\202\003\040\240\003\002\001\002\002\021\000 +\225\276\026\240\367\056\106\361\173\071\202\162\372\213\315\226 +\060\015\006\011\052\206\110\206\367\015\001\001\005\005\000\060 +\067\061\024\060\022\006\003\125\004\012\014\013\124\145\154\151 +\141\123\157\156\145\162\141\061\037\060\035\006\003\125\004\003 +\014\026\124\145\154\151\141\123\157\156\145\162\141\040\122\157 +\157\164\040\103\101\040\166\061\060\036\027\015\060\067\061\060 +\061\070\061\062\060\060\065\060\132\027\015\063\062\061\060\061 +\070\061\062\060\060\065\060\132\060\067\061\024\060\022\006\003 +\125\004\012\014\013\124\145\154\151\141\123\157\156\145\162\141 +\061\037\060\035\006\003\125\004\003\014\026\124\145\154\151\141 +\123\157\156\145\162\141\040\122\157\157\164\040\103\101\040\166 +\061\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001 +\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002 +\001\000\302\276\353\047\360\041\243\363\151\046\125\176\235\305 +\125\026\221\134\375\357\041\277\123\200\172\055\322\221\214\143 +\061\360\354\044\360\303\245\322\162\174\020\155\364\067\267\345 +\346\174\171\352\214\265\202\213\256\110\266\254\000\334\145\165 +\354\052\115\137\301\207\365\040\145\053\201\250\107\076\211\043 +\225\060\026\220\177\350\127\007\110\347\031\256\277\105\147\261 +\067\033\006\052\376\336\371\254\175\203\373\136\272\344\217\227 +\147\276\113\216\215\144\007\127\070\125\151\064\066\075\023\110 +\357\117\342\323\146\036\244\317\032\267\136\066\063\324\264\006 +\275\030\001\375\167\204\120\000\105\365\214\135\350\043\274\176 +\376\065\341\355\120\173\251\060\215\031\323\011\216\150\147\135 +\277\074\227\030\123\273\051\142\305\312\136\162\301\307\226\324 +\333\055\240\264\037\151\003\354\352\342\120\361\014\074\360\254 +\363\123\055\360\034\365\355\154\071\071\163\200\026\310\122\260 +\043\315\340\076\334\335\074\107\240\273\065\212\342\230\150\213 +\276\345\277\162\356\322\372\245\355\022\355\374\230\030\251\046 +\166\334\050\113\020\040\034\323\177\026\167\055\355\157\200\367 +\111\273\123\005\273\135\150\307\324\310\165\026\077\211\132\213 +\367\027\107\324\114\361\322\211\171\076\115\075\230\250\141\336 +\072\036\322\370\136\003\340\301\311\034\214\323\215\115\323\225 +\066\263\067\137\143\143\233\063\024\360\055\046\153\123\174\211 +\214\062\302\156\354\075\041\000\071\311\241\150\342\120\203\056 +\260\072\053\363\066\240\254\057\344\157\141\302\121\011\071\076 +\213\123\271\273\147\332\334\123\271\166\131\066\235\103\345\040 +\340\075\062\140\205\042\121\267\307\063\273\335\025\057\244\170 +\246\007\173\201\106\066\004\206\335\171\065\307\225\054\073\260 +\243\027\065\345\163\037\264\134\131\357\332\352\020\145\173\172 +\320\177\237\263\264\052\067\073\160\213\233\133\271\053\267\354 +\262\121\022\227\123\051\132\324\360\022\020\334\117\002\273\022 +\222\057\142\324\077\151\103\174\015\326\374\130\165\001\210\235 +\130\026\113\336\272\220\377\107\001\211\006\152\366\137\262\220 +\152\263\002\246\002\210\277\263\107\176\052\331\325\372\150\170 +\065\115\002\003\001\000\001\243\077\060\075\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\013\006\003 +\125\035\017\004\004\003\002\001\006\060\035\006\003\125\035\016 +\004\026\004\024\360\217\131\070\000\263\365\217\232\226\014\325 +\353\372\173\252\027\350\023\022\060\015\006\011\052\206\110\206 +\367\015\001\001\005\005\000\003\202\002\001\000\276\344\134\142 +\116\044\364\014\010\377\360\323\014\150\344\223\111\042\077\104 +\047\157\273\155\336\203\146\316\250\314\015\374\365\232\006\345 +\167\024\221\353\235\101\173\231\052\204\345\377\374\041\301\135 +\360\344\037\127\267\165\251\241\137\002\046\377\327\307\367\116 +\336\117\370\367\034\106\300\172\117\100\054\042\065\360\031\261 +\320\153\147\054\260\250\340\300\100\067\065\366\204\134\134\343 +\257\102\170\376\247\311\015\120\352\015\204\166\366\121\357\203 +\123\306\172\377\016\126\111\056\217\172\326\014\346\047\124\343 +\115\012\140\162\142\315\221\007\326\245\277\310\231\153\355\304 +\031\346\253\114\021\070\305\157\061\342\156\111\310\077\166\200 +\046\003\046\051\340\066\366\366\040\123\343\027\160\064\027\235 +\143\150\036\153\354\303\115\206\270\023\060\057\135\106\015\107 +\103\325\033\252\131\016\271\134\215\006\110\255\164\207\137\307 +\374\061\124\101\023\342\307\041\016\236\340\036\015\341\300\173 +\103\205\220\305\212\130\306\145\012\170\127\362\306\043\017\001 +\331\040\113\336\017\373\222\205\165\052\134\163\215\155\173\045 +\221\312\356\105\256\006\113\000\314\323\261\131\120\332\072\210 +\073\051\103\106\136\227\053\124\316\123\157\215\112\347\226\372 +\277\161\016\102\213\174\375\050\240\320\110\312\332\304\201\114 +\273\242\163\223\046\310\353\014\326\046\210\266\300\044\317\273 +\275\133\353\165\175\351\010\216\206\063\054\171\167\011\151\245 +\211\374\263\160\220\207\166\217\323\042\273\102\316\275\163\013 +\040\046\052\320\233\075\160\036\044\154\315\207\166\251\027\226 +\267\317\015\222\373\216\030\251\230\111\321\236\376\140\104\162 +\041\271\031\355\302\365\061\361\071\110\210\220\044\165\124\026 +\255\316\364\370\151\024\144\071\373\243\270\272\160\100\307\047 +\034\277\304\126\123\372\143\145\320\363\034\016\026\365\153\206 +\130\115\030\324\344\015\216\245\235\133\221\334\166\044\120\077 +\306\052\373\331\267\234\265\326\346\320\331\350\031\213\025\161 +\110\255\267\352\330\131\210\324\220\277\026\263\331\351\254\131 +\141\124\310\034\272\312\301\312\341\271\040\114\217\072\223\211 +\245\240\314\277\323\366\165\244\165\226\155\126 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "TeliaSonera Root CA v1" +# Issuer: CN=TeliaSonera Root CA v1,O=TeliaSonera +# Serial Number:00:95:be:16:a0:f7:2e:46:f1:7b:39:82:72:fa:8b:cd:96 +# Subject: CN=TeliaSonera Root CA v1,O=TeliaSonera +# Not Valid Before: Thu Oct 18 12:00:50 2007 +# Not Valid After : Mon Oct 18 12:00:50 2032 +# Fingerprint (SHA-256): DD:69:36:FE:21:F8:F0:77:C1:23:A1:A5:21:C1:22:24:F7:22:55:B7:3E:03:A7:26:06:93:E8:A2:4B:0F:A3:89 +# Fingerprint (SHA1): 43:13:BB:96:F1:D5:86:9B:C1:4E:6A:92:F6:CF:F6:34:69:87:82:37 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TeliaSonera Root CA v1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\103\023\273\226\361\325\206\233\301\116\152\222\366\317\366\064 +\151\207\202\067 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\067\101\111\033\030\126\232\046\365\255\302\146\373\100\245\114 +END +CKA_ISSUER MULTILINE_OCTAL +\060\067\061\024\060\022\006\003\125\004\012\014\013\124\145\154 +\151\141\123\157\156\145\162\141\061\037\060\035\006\003\125\004 +\003\014\026\124\145\154\151\141\123\157\156\145\162\141\040\122 +\157\157\164\040\103\101\040\166\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\225\276\026\240\367\056\106\361\173\071\202\162\372 +\213\315\226 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "T-TeleSec GlobalRoot Class 2" +# +# Issuer: CN=T-TeleSec GlobalRoot Class 2,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE +# Serial Number: 1 (0x1) +# Subject: CN=T-TeleSec GlobalRoot Class 2,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE +# Not Valid Before: Wed Oct 01 10:40:14 2008 +# Not Valid After : Sat Oct 01 23:59:59 2033 +# Fingerprint (SHA-256): 91:E2:F5:78:8D:58:10:EB:A7:BA:58:73:7D:E1:54:8A:8E:CA:CD:01:45:98:BC:0B:14:3E:04:1B:17:05:25:52 +# Fingerprint (SHA1): 59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "T-TeleSec GlobalRoot Class 2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\104\105 +\061\053\060\051\006\003\125\004\012\014\042\124\055\123\171\163 +\164\145\155\163\040\105\156\164\145\162\160\162\151\163\145\040 +\123\145\162\166\151\143\145\163\040\107\155\142\110\061\037\060 +\035\006\003\125\004\013\014\026\124\055\123\171\163\164\145\155 +\163\040\124\162\165\163\164\040\103\145\156\164\145\162\061\045 +\060\043\006\003\125\004\003\014\034\124\055\124\145\154\145\123 +\145\143\040\107\154\157\142\141\154\122\157\157\164\040\103\154 +\141\163\163\040\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\104\105 +\061\053\060\051\006\003\125\004\012\014\042\124\055\123\171\163 +\164\145\155\163\040\105\156\164\145\162\160\162\151\163\145\040 +\123\145\162\166\151\143\145\163\040\107\155\142\110\061\037\060 +\035\006\003\125\004\013\014\026\124\055\123\171\163\164\145\155 +\163\040\124\162\165\163\164\040\103\145\156\164\145\162\061\045 +\060\043\006\003\125\004\003\014\034\124\055\124\145\154\145\123 +\145\143\040\107\154\157\142\141\154\122\157\157\164\040\103\154 +\141\163\163\040\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\303\060\202\002\253\240\003\002\001\002\002\001\001 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\201\202\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\053\060\051\006\003\125\004\012\014\042\124\055\123\171\163\164 +\145\155\163\040\105\156\164\145\162\160\162\151\163\145\040\123 +\145\162\166\151\143\145\163\040\107\155\142\110\061\037\060\035 +\006\003\125\004\013\014\026\124\055\123\171\163\164\145\155\163 +\040\124\162\165\163\164\040\103\145\156\164\145\162\061\045\060 +\043\006\003\125\004\003\014\034\124\055\124\145\154\145\123\145 +\143\040\107\154\157\142\141\154\122\157\157\164\040\103\154\141 +\163\163\040\062\060\036\027\015\060\070\061\060\060\061\061\060 +\064\060\061\064\132\027\015\063\063\061\060\060\061\062\063\065 +\071\065\071\132\060\201\202\061\013\060\011\006\003\125\004\006 +\023\002\104\105\061\053\060\051\006\003\125\004\012\014\042\124 +\055\123\171\163\164\145\155\163\040\105\156\164\145\162\160\162 +\151\163\145\040\123\145\162\166\151\143\145\163\040\107\155\142 +\110\061\037\060\035\006\003\125\004\013\014\026\124\055\123\171 +\163\164\145\155\163\040\124\162\165\163\164\040\103\145\156\164 +\145\162\061\045\060\043\006\003\125\004\003\014\034\124\055\124 +\145\154\145\123\145\143\040\107\154\157\142\141\154\122\157\157 +\164\040\103\154\141\163\163\040\062\060\202\001\042\060\015\006 +\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017 +\000\060\202\001\012\002\202\001\001\000\252\137\332\033\137\350 +\163\221\345\332\134\364\242\346\107\345\363\150\125\140\005\035 +\002\244\263\233\131\363\036\212\257\064\255\374\015\302\331\110 +\031\356\151\217\311\040\374\041\252\007\031\355\260\134\254\145 +\307\137\355\002\174\173\174\055\033\326\272\271\200\302\030\202 +\026\204\372\146\260\010\306\124\043\201\344\315\271\111\077\366 +\117\156\067\110\050\070\017\305\276\347\150\160\375\071\227\115 +\322\307\230\221\120\252\304\104\263\043\175\071\107\351\122\142 +\326\022\223\136\267\061\226\102\005\373\166\247\036\243\365\302 +\374\351\172\305\154\251\161\117\352\313\170\274\140\257\307\336 +\364\331\313\276\176\063\245\156\224\203\360\064\372\041\253\352 +\216\162\240\077\244\336\060\133\357\206\115\152\225\133\103\104 +\250\020\025\034\345\001\127\305\230\361\346\006\050\221\252\040 +\305\267\123\046\121\103\262\013\021\225\130\341\300\017\166\331 +\300\215\174\201\363\162\160\236\157\376\032\216\331\137\065\306 +\262\157\064\174\276\110\117\342\132\071\327\330\235\170\236\237 +\206\076\003\136\031\213\104\242\325\307\002\003\001\000\001\243 +\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\035\006\003\125\035\016\004\026\004\024\277 +\131\040\066\000\171\240\240\042\153\214\325\362\141\322\270\054 +\313\202\112\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\003\202\001\001\000\061\003\242\141\013\037\164\350\162 +\066\306\155\371\115\236\372\042\250\341\201\126\317\315\273\237 +\352\253\221\031\070\257\252\174\025\115\363\266\243\215\245\364 +\216\366\104\251\247\350\041\225\255\076\000\142\026\210\360\002 +\272\374\141\043\346\063\233\060\172\153\066\142\173\255\004\043 +\204\130\145\342\333\053\212\347\045\123\067\142\123\137\274\332 +\001\142\051\242\246\047\161\346\072\042\176\301\157\035\225\160 +\040\112\007\064\337\352\377\025\200\345\272\327\172\330\133\165 +\174\005\172\051\107\176\100\250\061\023\167\315\100\073\264\121 +\107\172\056\021\343\107\021\336\235\146\320\213\325\124\146\372 +\203\125\352\174\302\051\211\033\351\157\263\316\342\005\204\311 +\057\076\170\205\142\156\311\137\301\170\143\164\130\300\110\030 +\014\231\071\353\244\314\032\265\171\132\215\025\234\330\024\015 +\366\172\007\127\307\042\203\005\055\074\233\045\046\075\030\263 +\251\103\174\310\310\253\144\217\016\243\277\234\033\235\060\333 +\332\320\031\056\252\074\361\373\063\200\166\344\315\255\031\117 +\005\047\216\023\241\156\302 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "T-TeleSec GlobalRoot Class 2" +# Issuer: CN=T-TeleSec GlobalRoot Class 2,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE +# Serial Number: 1 (0x1) +# Subject: CN=T-TeleSec GlobalRoot Class 2,OU=T-Systems Trust Center,O=T-Systems Enterprise Services GmbH,C=DE +# Not Valid Before: Wed Oct 01 10:40:14 2008 +# Not Valid After : Sat Oct 01 23:59:59 2033 +# Fingerprint (SHA-256): 91:E2:F5:78:8D:58:10:EB:A7:BA:58:73:7D:E1:54:8A:8E:CA:CD:01:45:98:BC:0B:14:3E:04:1B:17:05:25:52 +# Fingerprint (SHA1): 59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "T-TeleSec GlobalRoot Class 2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\131\015\055\175\210\117\100\056\141\176\245\142\062\027\145\317 +\027\330\224\351 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\053\233\236\344\173\154\037\000\162\032\314\301\167\171\337\152 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\104\105 +\061\053\060\051\006\003\125\004\012\014\042\124\055\123\171\163 +\164\145\155\163\040\105\156\164\145\162\160\162\151\163\145\040 +\123\145\162\166\151\143\145\163\040\107\155\142\110\061\037\060 +\035\006\003\125\004\013\014\026\124\055\123\171\163\164\145\155 +\163\040\124\162\165\163\164\040\103\145\156\164\145\162\061\045 +\060\043\006\003\125\004\003\014\034\124\055\124\145\154\145\123 +\145\143\040\107\154\157\142\141\154\122\157\157\164\040\103\154 +\141\163\163\040\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Atos TrustedRoot 2011" +# +# Issuer: C=DE,O=Atos,CN=Atos TrustedRoot 2011 +# Serial Number:5c:33:cb:62:2c:5f:b3:32 +# Subject: C=DE,O=Atos,CN=Atos TrustedRoot 2011 +# Not Valid Before: Thu Jul 07 14:58:30 2011 +# Not Valid After : Tue Dec 31 23:59:59 2030 +# Fingerprint (SHA-256): F3:56:BE:A2:44:B7:A9:1E:B3:5D:53:CA:9A:D7:86:4A:CE:01:8E:2D:35:D5:F8:F9:6D:DF:68:A6:F4:1A:A4:74 +# Fingerprint (SHA1): 2B:B1:F5:3E:55:0C:1D:C5:F1:D4:E6:B7:6A:46:4B:55:06:02:AC:21 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot 2011" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\074\061\036\060\034\006\003\125\004\003\014\025\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\062\060 +\061\061\061\015\060\013\006\003\125\004\012\014\004\101\164\157 +\163\061\013\060\011\006\003\125\004\006\023\002\104\105 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\074\061\036\060\034\006\003\125\004\003\014\025\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\062\060 +\061\061\061\015\060\013\006\003\125\004\012\014\004\101\164\157 +\163\061\013\060\011\006\003\125\004\006\023\002\104\105 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\134\063\313\142\054\137\263\062 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\167\060\202\002\137\240\003\002\001\002\002\010\134 +\063\313\142\054\137\263\062\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\060\074\061\036\060\034\006\003\125\004 +\003\014\025\101\164\157\163\040\124\162\165\163\164\145\144\122 +\157\157\164\040\062\060\061\061\061\015\060\013\006\003\125\004 +\012\014\004\101\164\157\163\061\013\060\011\006\003\125\004\006 +\023\002\104\105\060\036\027\015\061\061\060\067\060\067\061\064 +\065\070\063\060\132\027\015\063\060\061\062\063\061\062\063\065 +\071\065\071\132\060\074\061\036\060\034\006\003\125\004\003\014 +\025\101\164\157\163\040\124\162\165\163\164\145\144\122\157\157 +\164\040\062\060\061\061\061\015\060\013\006\003\125\004\012\014 +\004\101\164\157\163\061\013\060\011\006\003\125\004\006\023\002 +\104\105\060\202\001\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\001\017\000\060\202\001\012\002\202 +\001\001\000\225\205\073\227\157\052\073\056\073\317\246\363\051 +\065\276\317\030\254\076\252\331\370\115\240\076\032\107\271\274 +\232\337\362\376\314\076\107\350\172\226\302\044\216\065\364\251 +\014\374\202\375\155\301\162\142\047\275\352\153\353\347\212\314 +\124\076\220\120\317\200\324\225\373\350\265\202\324\024\305\266 +\251\125\045\127\333\261\120\366\260\140\144\131\172\151\317\003 +\267\157\015\276\312\076\157\164\162\352\252\060\052\163\142\276 +\111\221\141\310\021\376\016\003\052\367\152\040\334\002\025\015 +\136\025\152\374\343\202\301\265\305\235\144\011\154\243\131\230 +\007\047\307\033\226\053\141\164\161\154\103\361\367\065\211\020 +\340\236\354\125\241\067\042\242\207\004\005\054\107\175\264\034 +\271\142\051\146\050\312\267\341\223\365\244\224\003\231\271\160 +\205\265\346\110\352\215\120\374\331\336\314\157\007\016\335\013 +\162\235\200\060\026\007\225\077\050\016\375\305\165\117\123\326 +\164\232\264\044\056\216\002\221\317\166\305\233\036\125\164\234 +\170\041\261\360\055\361\013\237\302\325\226\030\037\360\124\042 +\172\214\007\002\003\001\000\001\243\175\060\173\060\035\006\003 +\125\035\016\004\026\004\024\247\245\006\261\054\246\011\140\356 +\321\227\351\160\256\274\073\031\154\333\041\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\037\006\003 +\125\035\043\004\030\060\026\200\024\247\245\006\261\054\246\011 +\140\356\321\227\351\160\256\274\073\031\154\333\041\060\030\006 +\003\125\035\040\004\021\060\017\060\015\006\013\053\006\001\004 +\001\260\055\003\004\001\001\060\016\006\003\125\035\017\001\001 +\377\004\004\003\002\001\206\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\003\202\001\001\000\046\167\064\333\224 +\110\206\052\101\235\054\076\006\220\140\304\214\254\013\124\270 +\037\271\173\323\007\071\344\372\076\173\262\075\116\355\237\043 +\275\227\363\153\134\357\356\375\100\246\337\241\223\241\012\206 +\254\357\040\320\171\001\275\170\367\031\330\044\061\064\004\001 +\246\272\025\232\303\047\334\330\117\017\314\030\143\377\231\017 +\016\221\153\165\026\341\041\374\330\046\307\107\267\246\317\130 +\162\161\176\272\341\115\225\107\073\311\257\155\241\264\301\354 +\211\366\264\017\070\265\342\144\334\045\317\246\333\353\232\134 +\231\241\305\010\336\375\346\332\325\326\132\105\014\304\267\302 +\265\024\357\264\021\377\016\025\265\365\365\333\306\275\353\132 +\247\360\126\042\251\074\145\124\306\025\250\275\206\236\315\203 +\226\150\172\161\201\211\341\013\341\352\021\033\150\010\314\151 +\236\354\236\101\236\104\062\046\172\342\207\012\161\075\353\344 +\132\244\322\333\305\315\306\336\140\177\271\363\117\104\222\357 +\052\267\030\076\247\031\331\013\175\261\067\101\102\260\272\140 +\035\362\376\011\021\260\360\207\173\247\235 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Atos TrustedRoot 2011" +# Issuer: C=DE,O=Atos,CN=Atos TrustedRoot 2011 +# Serial Number:5c:33:cb:62:2c:5f:b3:32 +# Subject: C=DE,O=Atos,CN=Atos TrustedRoot 2011 +# Not Valid Before: Thu Jul 07 14:58:30 2011 +# Not Valid After : Tue Dec 31 23:59:59 2030 +# Fingerprint (SHA-256): F3:56:BE:A2:44:B7:A9:1E:B3:5D:53:CA:9A:D7:86:4A:CE:01:8E:2D:35:D5:F8:F9:6D:DF:68:A6:F4:1A:A4:74 +# Fingerprint (SHA1): 2B:B1:F5:3E:55:0C:1D:C5:F1:D4:E6:B7:6A:46:4B:55:06:02:AC:21 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot 2011" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\053\261\365\076\125\014\035\305\361\324\346\267\152\106\113\125 +\006\002\254\041 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\256\271\304\062\113\254\177\135\146\314\167\224\273\052\167\126 +END +CKA_ISSUER MULTILINE_OCTAL +\060\074\061\036\060\034\006\003\125\004\003\014\025\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\062\060 +\061\061\061\015\060\013\006\003\125\004\012\014\004\101\164\157 +\163\061\013\060\011\006\003\125\004\006\023\002\104\105 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\134\063\313\142\054\137\263\062 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "QuoVadis Root CA 1 G3" +# +# Issuer: CN=QuoVadis Root CA 1 G3,O=QuoVadis Limited,C=BM +# Serial Number:78:58:5f:2e:ad:2c:19:4b:e3:37:07:35:34:13:28:b5:96:d4:65:93 +# Subject: CN=QuoVadis Root CA 1 G3,O=QuoVadis Limited,C=BM +# Not Valid Before: Thu Jan 12 17:27:44 2012 +# Not Valid After : Sun Jan 12 17:27:44 2042 +# Fingerprint (SHA-256): 8A:86:6F:D1:B2:76:B5:7E:57:8E:92:1C:65:82:8A:2B:ED:58:E9:F2:F2:88:05:41:34:B7:F1:F4:BF:C9:CC:74 +# Fingerprint (SHA1): 1B:8E:EA:57:96:29:1A:C9:39:EA:B8:0A:81:1A:73:73:C0:93:79:67 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 1 G3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\036\060\034\006\003 +\125\004\003\023\025\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\061\040\107\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\036\060\034\006\003 +\125\004\003\023\025\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\061\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\170\130\137\056\255\054\031\113\343\067\007\065\064\023 +\050\265\226\324\145\223 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\140\060\202\003\110\240\003\002\001\002\002\024\170 +\130\137\056\255\054\031\113\343\067\007\065\064\023\050\265\226 +\324\145\223\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\110\061\013\060\011\006\003\125\004\006\023\002\102 +\115\061\031\060\027\006\003\125\004\012\023\020\121\165\157\126 +\141\144\151\163\040\114\151\155\151\164\145\144\061\036\060\034 +\006\003\125\004\003\023\025\121\165\157\126\141\144\151\163\040 +\122\157\157\164\040\103\101\040\061\040\107\063\060\036\027\015 +\061\062\060\061\061\062\061\067\062\067\064\064\132\027\015\064 +\062\060\061\061\062\061\067\062\067\064\064\132\060\110\061\013 +\060\011\006\003\125\004\006\023\002\102\115\061\031\060\027\006 +\003\125\004\012\023\020\121\165\157\126\141\144\151\163\040\114 +\151\155\151\164\145\144\061\036\060\034\006\003\125\004\003\023 +\025\121\165\157\126\141\144\151\163\040\122\157\157\164\040\103 +\101\040\061\040\107\063\060\202\002\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 +\002\012\002\202\002\001\000\240\276\120\020\216\351\362\154\100 +\264\004\234\205\271\061\312\334\055\344\021\251\004\074\033\125 +\301\347\130\060\035\044\264\303\357\205\336\214\054\341\301\075 +\337\202\346\117\255\107\207\154\354\133\111\301\112\325\273\217 +\354\207\254\177\202\232\206\354\075\003\231\122\001\322\065\236 +\254\332\360\123\311\146\074\324\254\002\001\332\044\323\073\250 +\002\106\257\244\034\343\370\163\130\166\267\366\016\220\015\265 +\360\317\314\372\371\306\114\345\303\206\060\012\215\027\176\065 +\353\305\337\273\016\234\300\215\207\343\210\070\205\147\372\076 +\307\253\340\023\234\005\030\230\317\223\365\261\222\264\374\043 +\323\317\325\304\047\111\340\236\074\233\010\243\213\135\052\041 +\340\374\071\252\123\332\175\176\317\032\011\123\274\135\005\004 +\317\241\112\217\213\166\202\015\241\370\322\307\024\167\133\220 +\066\007\201\233\076\006\372\122\136\143\305\246\000\376\245\351 +\122\033\122\265\222\071\162\003\011\142\275\260\140\026\156\246 +\335\045\302\003\146\335\363\004\321\100\342\116\213\206\364\157 +\345\203\240\047\204\136\004\301\365\220\275\060\075\304\357\250 +\151\274\070\233\244\244\226\321\142\332\151\300\001\226\256\313 +\304\121\064\352\014\252\377\041\216\131\217\112\134\344\141\232 +\247\322\351\052\170\215\121\075\072\025\356\242\131\216\251\134 +\336\305\371\220\042\345\210\105\161\335\221\231\154\172\237\075 +\075\230\174\136\366\276\026\150\240\136\256\013\043\374\132\017 +\252\042\166\055\311\241\020\035\344\323\104\043\220\210\237\306 +\052\346\327\365\232\263\130\036\057\060\211\010\033\124\242\265 +\230\043\354\010\167\034\225\135\141\321\313\211\234\137\242\112 +\221\232\357\041\252\111\026\010\250\275\141\050\061\311\164\255 +\205\366\331\305\261\213\321\345\020\062\115\137\213\040\072\074 +\111\037\063\205\131\015\333\313\011\165\103\151\163\373\153\161 +\175\360\337\304\114\175\306\243\056\310\225\171\313\163\242\216 +\116\115\044\373\136\344\004\276\162\033\246\047\055\111\132\231 +\172\327\134\011\040\267\177\224\271\117\361\015\034\136\210\102 +\033\021\267\347\221\333\236\154\364\152\337\214\006\230\003\255 +\314\050\357\245\107\363\123\002\003\001\000\001\243\102\060\100 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 +\006\060\035\006\003\125\035\016\004\026\004\024\243\227\326\363 +\136\242\020\341\253\105\237\074\027\144\074\356\001\160\234\314 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003 +\202\002\001\000\030\372\133\165\374\076\172\307\137\167\307\312 +\337\317\137\303\022\304\100\135\324\062\252\270\152\327\325\025 +\025\106\230\043\245\346\220\133\030\231\114\343\255\102\243\202 +\061\066\210\315\351\373\304\004\226\110\213\001\307\215\001\317 +\133\063\006\226\106\146\164\035\117\355\301\266\271\264\015\141 +\314\143\176\327\056\167\214\226\034\052\043\150\153\205\127\166 +\160\063\023\376\341\117\246\043\167\030\372\032\214\350\275\145 +\311\317\077\364\311\027\334\353\307\274\300\004\056\055\106\057 +\151\146\303\033\217\376\354\076\323\312\224\277\166\012\045\015 +\251\173\002\034\251\320\073\137\013\300\201\072\075\144\341\277 +\247\055\116\275\115\304\330\051\306\042\030\320\305\254\162\002 +\202\077\252\072\242\072\042\227\061\335\010\143\303\165\024\271 +\140\050\055\133\150\340\026\251\146\202\043\121\365\353\123\330 +\061\233\173\351\267\235\113\353\210\026\317\371\135\070\212\111 +\060\217\355\361\353\031\364\167\032\061\030\115\147\124\154\057 +\157\145\371\333\075\354\041\354\136\364\364\213\312\140\145\124 +\321\161\144\364\371\246\243\201\063\066\063\161\360\244\170\137 +\116\255\203\041\336\064\111\215\350\131\254\235\362\166\132\066 +\362\023\364\257\340\011\307\141\052\154\367\340\235\256\273\206 +\112\050\157\056\356\264\171\315\220\063\303\263\166\372\365\360 +\154\235\001\220\372\236\220\366\234\162\317\107\332\303\037\344 +\065\040\123\362\124\321\337\141\203\246\002\342\045\070\336\205 +\062\055\136\163\220\122\135\102\304\316\075\113\341\371\031\204 +\035\325\242\120\314\101\373\101\024\303\275\326\311\132\243\143 +\146\002\200\275\005\072\073\107\234\354\000\046\114\365\210\121 +\277\250\043\177\030\007\260\013\355\213\046\241\144\323\141\112 +\353\134\237\336\263\257\147\003\263\037\335\155\135\151\150\151 +\253\136\072\354\174\151\274\307\073\205\116\236\025\271\264\025 +\117\303\225\172\130\327\311\154\351\154\271\363\051\143\136\264 +\054\360\055\075\355\132\145\340\251\133\100\302\110\231\201\155 +\236\037\006\052\074\022\264\213\017\233\242\044\360\246\215\326 +\172\340\113\266\144\226\143\225\204\302\112\315\034\056\044\207 +\063\140\345\303 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "QuoVadis Root CA 1 G3" +# Issuer: CN=QuoVadis Root CA 1 G3,O=QuoVadis Limited,C=BM +# Serial Number:78:58:5f:2e:ad:2c:19:4b:e3:37:07:35:34:13:28:b5:96:d4:65:93 +# Subject: CN=QuoVadis Root CA 1 G3,O=QuoVadis Limited,C=BM +# Not Valid Before: Thu Jan 12 17:27:44 2012 +# Not Valid After : Sun Jan 12 17:27:44 2042 +# Fingerprint (SHA-256): 8A:86:6F:D1:B2:76:B5:7E:57:8E:92:1C:65:82:8A:2B:ED:58:E9:F2:F2:88:05:41:34:B7:F1:F4:BF:C9:CC:74 +# Fingerprint (SHA1): 1B:8E:EA:57:96:29:1A:C9:39:EA:B8:0A:81:1A:73:73:C0:93:79:67 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 1 G3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\033\216\352\127\226\051\032\311\071\352\270\012\201\032\163\163 +\300\223\171\147 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\244\274\133\077\376\067\232\372\144\360\342\372\005\075\013\253 +END +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\036\060\034\006\003 +\125\004\003\023\025\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\061\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\170\130\137\056\255\054\031\113\343\067\007\065\064\023 +\050\265\226\324\145\223 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "QuoVadis Root CA 2 G3" +# +# Issuer: CN=QuoVadis Root CA 2 G3,O=QuoVadis Limited,C=BM +# Serial Number:44:57:34:24:5b:81:89:9b:35:f2:ce:b8:2b:3b:5b:a7:26:f0:75:28 +# Subject: CN=QuoVadis Root CA 2 G3,O=QuoVadis Limited,C=BM +# Not Valid Before: Thu Jan 12 18:59:32 2012 +# Not Valid After : Sun Jan 12 18:59:32 2042 +# Fingerprint (SHA-256): 8F:E4:FB:0A:F9:3A:4D:0D:67:DB:0B:EB:B2:3E:37:C7:1B:F3:25:DC:BC:DD:24:0E:A0:4D:AF:58:B4:7E:18:40 +# Fingerprint (SHA1): 09:3C:61:F3:8B:8B:DC:7D:55:DF:75:38:02:05:00:E1:25:F5:C8:36 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 2 G3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\036\060\034\006\003 +\125\004\003\023\025\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\062\040\107\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\036\060\034\006\003 +\125\004\003\023\025\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\062\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\104\127\064\044\133\201\211\233\065\362\316\270\053\073 +\133\247\046\360\165\050 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\140\060\202\003\110\240\003\002\001\002\002\024\104 +\127\064\044\133\201\211\233\065\362\316\270\053\073\133\247\046 +\360\165\050\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\110\061\013\060\011\006\003\125\004\006\023\002\102 +\115\061\031\060\027\006\003\125\004\012\023\020\121\165\157\126 +\141\144\151\163\040\114\151\155\151\164\145\144\061\036\060\034 +\006\003\125\004\003\023\025\121\165\157\126\141\144\151\163\040 +\122\157\157\164\040\103\101\040\062\040\107\063\060\036\027\015 +\061\062\060\061\061\062\061\070\065\071\063\062\132\027\015\064 +\062\060\061\061\062\061\070\065\071\063\062\132\060\110\061\013 +\060\011\006\003\125\004\006\023\002\102\115\061\031\060\027\006 +\003\125\004\012\023\020\121\165\157\126\141\144\151\163\040\114 +\151\155\151\164\145\144\061\036\060\034\006\003\125\004\003\023 +\025\121\165\157\126\141\144\151\163\040\122\157\157\164\040\103 +\101\040\062\040\107\063\060\202\002\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 +\002\012\002\202\002\001\000\241\256\045\262\001\030\334\127\210 +\077\106\353\371\257\342\353\043\161\342\232\321\141\146\041\137 +\252\257\047\121\345\156\033\026\324\055\175\120\260\123\167\275 +\170\072\140\342\144\002\233\174\206\233\326\032\216\255\377\037 +\025\177\325\225\036\022\313\346\024\204\004\301\337\066\263\026 +\237\212\343\311\333\230\064\316\330\063\027\050\106\374\247\311 +\360\322\264\325\115\011\162\111\371\362\207\343\251\332\175\241 +\175\153\262\072\045\251\155\122\104\254\370\276\156\373\334\246 +\163\221\220\141\246\003\024\040\362\347\207\243\210\255\255\240 +\214\377\246\013\045\122\045\347\026\001\325\313\270\065\201\014 +\243\073\360\341\341\374\132\135\316\200\161\155\370\111\253\076 +\073\272\270\327\200\001\373\245\353\133\263\305\136\140\052\061 +\240\257\067\350\040\072\237\250\062\054\014\314\011\035\323\236 +\216\135\274\114\230\356\305\032\150\173\354\123\246\351\024\065 +\243\337\315\200\237\014\110\373\034\364\361\277\112\270\372\325 +\214\161\112\307\037\255\376\101\232\263\203\135\362\204\126\357 +\245\127\103\316\051\255\214\253\125\277\304\373\133\001\335\043 +\041\241\130\000\216\303\320\152\023\355\023\343\022\053\200\334 +\147\346\225\262\315\036\042\156\052\370\101\324\362\312\024\007 +\215\212\125\022\306\151\365\270\206\150\057\123\136\260\322\252 +\041\301\230\346\060\343\147\125\307\233\156\254\031\250\125\246 +\105\006\320\043\072\333\353\145\135\052\021\021\360\073\117\312 +\155\364\064\304\161\344\377\000\132\366\134\256\043\140\205\163 +\361\344\020\261\045\256\325\222\273\023\301\014\340\071\332\264 +\071\127\265\253\065\252\162\041\073\203\065\347\061\337\172\041 +\156\270\062\010\175\035\062\221\025\112\142\162\317\343\167\241 +\274\325\021\033\166\001\147\010\340\101\013\303\353\025\156\370 +\244\031\331\242\253\257\342\047\122\126\053\002\212\054\024\044 +\371\277\102\002\277\046\310\306\217\340\156\070\175\123\055\345 +\355\230\263\225\143\150\177\371\065\364\337\210\305\140\065\222 +\300\174\151\034\141\225\026\320\353\336\013\257\076\004\020\105 +\145\130\120\070\257\110\362\131\266\026\362\074\015\220\002\306 +\160\056\001\255\074\025\327\002\003\001\000\001\243\102\060\100 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 +\006\060\035\006\003\125\035\016\004\026\004\024\355\347\157\166 +\132\277\140\354\111\133\306\245\167\273\162\026\161\233\304\075 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003 +\202\002\001\000\221\337\200\077\103\011\176\161\302\367\353\263 +\210\217\341\121\262\274\075\165\371\050\135\310\274\231\233\173 +\135\252\345\312\341\012\367\350\262\323\237\335\147\061\176\272 +\001\252\307\152\101\073\220\324\010\134\262\140\152\220\360\310 +\316\003\142\371\213\355\373\156\052\334\006\115\074\051\017\211 +\026\212\130\114\110\017\350\204\141\352\074\162\246\167\344\102 +\256\210\243\103\130\171\176\256\312\245\123\015\251\075\160\275 +\040\031\141\244\154\070\374\103\062\341\301\107\377\370\354\361 +\021\042\062\226\234\302\366\133\151\226\173\040\014\103\101\232 +\133\366\131\031\210\336\125\210\067\121\013\170\134\012\036\243 +\102\375\307\235\210\017\300\362\170\002\044\124\223\257\211\207 +\210\311\112\200\035\352\320\156\076\141\056\066\273\065\016\047 +\226\375\146\064\073\141\162\163\361\026\134\107\006\124\111\000 +\172\130\022\260\012\357\205\375\261\270\063\165\152\223\034\022 +\346\140\136\157\035\177\311\037\043\313\204\141\237\036\202\104 +\371\137\255\142\125\044\232\122\230\355\121\347\241\176\227\072 +\346\057\037\021\332\123\200\054\205\236\253\065\020\333\042\137 +\152\305\136\227\123\362\062\002\011\060\243\130\360\015\001\325 +\162\306\261\174\151\173\303\365\066\105\314\141\156\136\114\224 +\305\136\256\350\016\136\213\277\367\315\340\355\241\016\033\063 +\356\124\030\376\017\276\357\176\204\153\103\343\160\230\333\135 +\165\262\015\131\007\205\025\043\071\326\361\337\251\046\017\326 +\110\307\263\246\042\365\063\067\132\225\107\237\173\272\030\025 +\157\377\326\024\144\203\111\322\012\147\041\333\017\065\143\140 +\050\042\343\261\225\203\315\205\246\335\057\017\347\147\122\156 +\273\057\205\174\365\112\163\347\305\076\300\275\041\022\005\077 +\374\267\003\111\002\133\310\045\346\342\124\070\365\171\207\214 +\035\123\262\116\205\173\006\070\307\054\370\370\260\162\215\045 +\345\167\122\364\003\034\110\246\120\137\210\040\060\156\362\202 +\103\253\075\227\204\347\123\373\041\301\117\017\042\232\206\270 +\131\052\366\107\075\031\210\055\350\205\341\236\354\205\010\152 +\261\154\064\311\035\354\110\053\073\170\355\146\304\216\171\151 +\203\336\177\214 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "QuoVadis Root CA 2 G3" +# Issuer: CN=QuoVadis Root CA 2 G3,O=QuoVadis Limited,C=BM +# Serial Number:44:57:34:24:5b:81:89:9b:35:f2:ce:b8:2b:3b:5b:a7:26:f0:75:28 +# Subject: CN=QuoVadis Root CA 2 G3,O=QuoVadis Limited,C=BM +# Not Valid Before: Thu Jan 12 18:59:32 2012 +# Not Valid After : Sun Jan 12 18:59:32 2042 +# Fingerprint (SHA-256): 8F:E4:FB:0A:F9:3A:4D:0D:67:DB:0B:EB:B2:3E:37:C7:1B:F3:25:DC:BC:DD:24:0E:A0:4D:AF:58:B4:7E:18:40 +# Fingerprint (SHA1): 09:3C:61:F3:8B:8B:DC:7D:55:DF:75:38:02:05:00:E1:25:F5:C8:36 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 2 G3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\011\074\141\363\213\213\334\175\125\337\165\070\002\005\000\341 +\045\365\310\066 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\257\014\206\156\277\100\055\177\013\076\022\120\272\022\075\006 +END +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\036\060\034\006\003 +\125\004\003\023\025\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\062\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\104\127\064\044\133\201\211\233\065\362\316\270\053\073 +\133\247\046\360\165\050 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "QuoVadis Root CA 3 G3" +# +# Issuer: CN=QuoVadis Root CA 3 G3,O=QuoVadis Limited,C=BM +# Serial Number:2e:f5:9b:02:28:a7:db:7a:ff:d5:a3:a9:ee:bd:03:a0:cf:12:6a:1d +# Subject: CN=QuoVadis Root CA 3 G3,O=QuoVadis Limited,C=BM +# Not Valid Before: Thu Jan 12 20:26:32 2012 +# Not Valid After : Sun Jan 12 20:26:32 2042 +# Fingerprint (SHA-256): 88:EF:81:DE:20:2E:B0:18:45:2E:43:F8:64:72:5C:EA:5F:BD:1F:C2:D9:D2:05:73:07:09:C5:D8:B8:69:0F:46 +# Fingerprint (SHA1): 48:12:BD:92:3C:A8:C4:39:06:E7:30:6D:27:96:E6:A4:CF:22:2E:7D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 3 G3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\036\060\034\006\003 +\125\004\003\023\025\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\063\040\107\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\036\060\034\006\003 +\125\004\003\023\025\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\063\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\056\365\233\002\050\247\333\172\377\325\243\251\356\275 +\003\240\317\022\152\035 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\140\060\202\003\110\240\003\002\001\002\002\024\056 +\365\233\002\050\247\333\172\377\325\243\251\356\275\003\240\317 +\022\152\035\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\110\061\013\060\011\006\003\125\004\006\023\002\102 +\115\061\031\060\027\006\003\125\004\012\023\020\121\165\157\126 +\141\144\151\163\040\114\151\155\151\164\145\144\061\036\060\034 +\006\003\125\004\003\023\025\121\165\157\126\141\144\151\163\040 +\122\157\157\164\040\103\101\040\063\040\107\063\060\036\027\015 +\061\062\060\061\061\062\062\060\062\066\063\062\132\027\015\064 +\062\060\061\061\062\062\060\062\066\063\062\132\060\110\061\013 +\060\011\006\003\125\004\006\023\002\102\115\061\031\060\027\006 +\003\125\004\012\023\020\121\165\157\126\141\144\151\163\040\114 +\151\155\151\164\145\144\061\036\060\034\006\003\125\004\003\023 +\025\121\165\157\126\141\144\151\163\040\122\157\157\164\040\103 +\101\040\063\040\107\063\060\202\002\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 +\002\012\002\202\002\001\000\263\313\016\020\147\216\352\024\227 +\247\062\052\012\126\066\177\150\114\307\263\157\072\043\024\221 +\377\031\177\245\312\254\356\263\166\235\172\351\213\033\253\153 +\061\333\372\013\123\114\257\305\245\032\171\074\212\114\377\254 +\337\045\336\116\331\202\062\013\104\336\312\333\214\254\243\156 +\026\203\073\246\144\113\062\211\373\026\026\070\176\353\103\342 +\323\164\112\302\142\012\163\012\335\111\263\127\322\260\012\205 +\235\161\074\336\243\313\300\062\363\001\071\040\103\033\065\321 +\123\263\261\356\305\223\151\202\076\026\265\050\106\241\336\352 +\211\011\355\103\270\005\106\212\206\365\131\107\276\033\157\001 +\041\020\271\375\251\322\050\312\020\071\011\312\023\066\317\234 +\255\255\100\164\171\053\002\077\064\377\372\040\151\175\323\356 +\141\365\272\263\347\060\320\067\043\206\162\141\105\051\110\131 +\150\157\167\246\056\201\276\007\115\157\257\316\304\105\023\221 +\024\160\006\217\037\237\370\207\151\261\016\357\303\211\031\353 +\352\034\141\374\172\154\212\334\326\003\013\236\046\272\022\335 +\324\124\071\253\046\243\063\352\165\201\332\055\315\017\117\344 +\003\321\357\025\227\033\153\220\305\002\220\223\146\002\041\261 +\107\336\213\232\112\200\271\125\217\265\242\057\300\326\063\147 +\332\176\304\247\264\004\104\353\107\373\346\130\271\367\014\360 +\173\053\261\300\160\051\303\100\142\055\073\110\151\334\043\074 +\110\353\173\011\171\251\155\332\250\060\230\317\200\162\003\210 +\246\133\106\256\162\171\174\010\003\041\145\256\267\341\034\245 +\261\052\242\061\336\146\004\367\300\164\350\161\336\377\075\131 +\314\226\046\022\213\205\225\127\032\253\153\165\013\104\075\021 +\050\074\173\141\267\342\217\147\117\345\354\074\114\140\200\151 +\127\070\036\001\133\215\125\350\307\337\300\314\167\043\064\111 +\165\174\366\230\021\353\055\336\355\101\056\024\005\002\177\340 +\376\040\353\065\347\021\254\042\316\127\075\336\311\060\155\020 +\003\205\315\361\377\214\026\265\301\262\076\210\154\140\177\220 +\117\225\367\366\055\255\001\071\007\004\372\165\200\175\277\111 +\120\355\357\311\304\174\034\353\200\176\333\266\320\335\023\376 +\311\323\234\327\262\227\251\002\003\001\000\001\243\102\060\100 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 +\006\060\035\006\003\125\035\016\004\026\004\024\306\027\320\274 +\250\352\002\103\362\033\006\231\135\053\220\040\271\327\234\344 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003 +\202\002\001\000\064\141\331\126\265\022\207\125\115\335\243\065 +\061\106\273\244\007\162\274\137\141\142\350\245\373\013\067\261 +\074\266\263\372\051\235\177\002\365\244\311\250\223\267\172\161 +\050\151\217\163\341\122\220\332\325\276\072\345\267\166\152\126 +\200\041\337\135\346\351\072\236\345\076\366\242\151\307\052\012 +\260\030\107\334\040\160\175\122\243\076\131\174\301\272\311\310 +\025\100\141\312\162\326\160\254\322\267\360\034\344\206\051\360 +\316\357\150\143\320\265\040\212\025\141\232\176\206\230\264\311 +\302\166\373\314\272\060\026\314\243\141\306\164\023\345\153\357 +\243\025\352\003\376\023\213\144\344\323\301\322\350\204\373\111 +\321\020\115\171\146\353\252\375\364\215\061\036\160\024\255\334 +\336\147\023\114\201\025\141\274\267\331\221\167\161\031\201\140 +\273\360\130\245\265\234\013\367\217\042\125\047\300\113\001\155 +\073\231\015\324\035\233\143\147\057\320\356\015\312\146\274\224 +\117\246\255\355\374\356\143\254\127\077\145\045\317\262\206\217 +\320\010\377\270\166\024\156\336\345\047\354\253\170\265\123\271 +\266\077\350\040\371\322\250\276\141\106\312\207\214\204\363\371 +\361\240\150\233\042\036\201\046\233\020\004\221\161\300\006\037 +\334\240\323\271\126\247\343\230\055\177\203\235\337\214\053\234 +\062\216\062\224\360\001\074\042\052\237\103\302\056\303\230\071 +\007\070\173\374\136\000\102\037\363\062\046\171\203\204\366\345 +\360\301\121\022\300\013\036\004\043\014\124\245\114\057\111\305 +\112\321\266\156\140\015\153\374\153\213\205\044\144\267\211\016 +\253\045\107\133\074\317\176\111\275\307\351\012\306\332\367\176 +\016\027\010\323\110\227\320\161\222\360\017\071\076\064\152\034 +\175\330\362\042\256\273\151\364\063\264\246\110\125\321\017\016 +\046\350\354\266\013\055\247\205\065\315\375\131\310\237\321\315 +\076\132\051\064\271\075\204\316\261\145\324\131\221\221\126\165 +\041\301\167\236\371\172\341\140\235\323\255\004\030\364\174\353 +\136\223\217\123\112\042\051\370\110\053\076\115\206\254\133\177 +\313\006\231\131\140\330\130\145\225\215\104\321\367\177\176\047 +\177\175\256\200\365\007\114\266\076\234\161\124\231\004\113\375 +\130\371\230\364 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "QuoVadis Root CA 3 G3" +# Issuer: CN=QuoVadis Root CA 3 G3,O=QuoVadis Limited,C=BM +# Serial Number:2e:f5:9b:02:28:a7:db:7a:ff:d5:a3:a9:ee:bd:03:a0:cf:12:6a:1d +# Subject: CN=QuoVadis Root CA 3 G3,O=QuoVadis Limited,C=BM +# Not Valid Before: Thu Jan 12 20:26:32 2012 +# Not Valid After : Sun Jan 12 20:26:32 2042 +# Fingerprint (SHA-256): 88:EF:81:DE:20:2E:B0:18:45:2E:43:F8:64:72:5C:EA:5F:BD:1F:C2:D9:D2:05:73:07:09:C5:D8:B8:69:0F:46 +# Fingerprint (SHA1): 48:12:BD:92:3C:A8:C4:39:06:E7:30:6D:27:96:E6:A4:CF:22:2E:7D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "QuoVadis Root CA 3 G3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\110\022\275\222\074\250\304\071\006\347\060\155\047\226\346\244 +\317\042\056\175 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\337\175\271\255\124\157\150\241\337\211\127\003\227\103\260\327 +END +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\102\115\061 +\031\060\027\006\003\125\004\012\023\020\121\165\157\126\141\144 +\151\163\040\114\151\155\151\164\145\144\061\036\060\034\006\003 +\125\004\003\023\025\121\165\157\126\141\144\151\163\040\122\157 +\157\164\040\103\101\040\063\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\056\365\233\002\050\247\333\172\377\325\243\251\356\275 +\003\240\317\022\152\035 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert Assured ID Root G2" +# +# Issuer: CN=DigiCert Assured ID Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:0b:93:1c:3a:d6:39:67:ea:67:23:bf:c3:af:9a:f4:4b +# Subject: CN=DigiCert Assured ID Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): 7D:05:EB:B6:82:33:9F:8C:94:51:EE:09:4E:EB:FE:FA:79:53:A1:14:ED:B2:F4:49:49:45:2F:AB:7D:2F:C1:85 +# Fingerprint (SHA1): A1:4B:48:D9:43:EE:0A:0E:40:90:4F:3C:E0:A4:C0:91:93:51:5D:3F +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Assured ID Root G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151 +\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040 +\122\157\157\164\040\107\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151 +\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040 +\122\157\157\164\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\013\223\034\072\326\071\147\352\147\043\277\303\257\232 +\364\113 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\226\060\202\002\176\240\003\002\001\002\002\020\013 +\223\034\072\326\071\147\352\147\043\277\303\257\232\364\113\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\145 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060 +\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164 +\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167 +\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061 +\044\060\042\006\003\125\004\003\023\033\104\151\147\151\103\145 +\162\164\040\101\163\163\165\162\145\144\040\111\104\040\122\157 +\157\164\040\107\062\060\036\027\015\061\063\060\070\060\061\061 +\062\060\060\060\060\132\027\015\063\070\060\061\061\065\061\062 +\060\060\060\060\132\060\145\061\013\060\011\006\003\125\004\006 +\023\002\125\123\061\025\060\023\006\003\125\004\012\023\014\104 +\151\147\151\103\145\162\164\040\111\156\143\061\031\060\027\006 +\003\125\004\013\023\020\167\167\167\056\144\151\147\151\143\145 +\162\164\056\143\157\155\061\044\060\042\006\003\125\004\003\023 +\033\104\151\147\151\103\145\162\164\040\101\163\163\165\162\145 +\144\040\111\104\040\122\157\157\164\040\107\062\060\202\001\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\001\017\000\060\202\001\012\002\202\001\001\000\331\347\050 +\057\122\077\066\162\111\210\223\064\363\370\152\036\061\124\200 +\237\255\124\101\265\107\337\226\250\324\257\200\055\271\012\317 +\165\375\211\245\175\044\372\343\042\014\053\274\225\027\013\063 +\277\031\115\101\006\220\000\275\014\115\020\376\007\265\347\034 +\156\042\125\061\145\227\275\323\027\322\036\142\363\333\352\154 +\120\214\077\204\014\226\317\267\313\003\340\312\155\241\024\114 +\033\211\335\355\000\260\122\174\257\221\154\261\070\023\321\351 +\022\010\300\000\260\034\053\021\332\167\160\066\233\256\316\171 +\207\334\202\160\346\011\164\160\125\151\257\243\150\237\277\335 +\266\171\263\362\235\160\051\125\364\253\377\225\141\363\311\100 +\157\035\321\276\223\273\323\210\052\273\235\277\162\132\126\161 +\073\077\324\363\321\012\376\050\357\243\356\331\231\257\003\323 +\217\140\267\362\222\241\261\275\211\211\037\060\315\303\246\056 +\142\063\256\026\002\167\104\132\347\201\012\074\247\104\056\171 +\270\077\004\274\134\240\207\341\033\257\121\216\315\354\054\372 +\370\376\155\360\072\174\252\213\344\147\225\061\215\002\003\001 +\000\001\243\102\060\100\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\016\006\003\125\035\017\001\001 +\377\004\004\003\002\001\206\060\035\006\003\125\035\016\004\026 +\004\024\316\303\112\271\231\125\362\270\333\140\277\251\176\275 +\126\265\227\066\247\326\060\015\006\011\052\206\110\206\367\015 +\001\001\013\005\000\003\202\001\001\000\312\245\125\214\343\310 +\101\156\151\047\247\165\021\357\074\206\066\157\322\235\306\170 +\070\035\151\226\242\222\151\056\070\154\233\175\004\324\211\245 +\261\061\067\212\311\041\314\253\154\315\213\034\232\326\277\110 +\322\062\146\301\212\300\363\057\072\357\300\343\324\221\206\321 +\120\343\003\333\163\167\157\112\071\123\355\336\046\307\265\175 +\257\053\102\321\165\142\343\112\053\002\307\120\113\340\151\342 +\226\154\016\104\146\020\104\217\255\005\353\370\171\254\246\033 +\350\067\064\235\123\311\141\252\242\122\257\112\160\026\206\302 +\072\310\261\023\160\066\330\317\356\364\012\064\325\133\114\375 +\007\234\242\272\331\001\162\134\363\115\301\335\016\261\034\015 +\304\143\276\255\364\024\373\211\354\242\101\016\114\314\310\127 +\100\320\156\003\252\315\014\216\211\231\231\154\360\074\060\257 +\070\337\157\274\243\276\051\040\047\253\164\377\023\042\170\336 +\227\122\125\036\203\265\124\040\003\356\256\300\117\126\336\067 +\314\303\177\252\004\047\273\323\167\270\142\333\027\174\234\050 +\042\023\163\154\317\046\365\212\051\347 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert Assured ID Root G2" +# Issuer: CN=DigiCert Assured ID Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:0b:93:1c:3a:d6:39:67:ea:67:23:bf:c3:af:9a:f4:4b +# Subject: CN=DigiCert Assured ID Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): 7D:05:EB:B6:82:33:9F:8C:94:51:EE:09:4E:EB:FE:FA:79:53:A1:14:ED:B2:F4:49:49:45:2F:AB:7D:2F:C1:85 +# Fingerprint (SHA1): A1:4B:48:D9:43:EE:0A:0E:40:90:4F:3C:E0:A4:C0:91:93:51:5D:3F +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Assured ID Root G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\241\113\110\331\103\356\012\016\100\220\117\074\340\244\300\221 +\223\121\135\077 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\222\070\271\370\143\044\202\145\054\127\063\346\376\201\217\235 +END +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151 +\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040 +\122\157\157\164\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\013\223\034\072\326\071\147\352\147\043\277\303\257\232 +\364\113 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert Assured ID Root G3" +# +# Issuer: CN=DigiCert Assured ID Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:0b:a1:5a:fa:1d:df:a0:b5:49:44:af:cd:24:a0:6c:ec +# Subject: CN=DigiCert Assured ID Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): 7E:37:CB:8B:4C:47:09:0C:AB:36:55:1B:A6:F4:5D:B8:40:68:0F:BA:16:6A:95:2D:B1:00:71:7F:43:05:3F:C2 +# Fingerprint (SHA1): F5:17:A2:4F:9A:48:C6:C9:F8:A2:00:26:9F:DC:0F:48:2C:AB:30:89 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Assured ID Root G3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151 +\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040 +\122\157\157\164\040\107\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151 +\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040 +\122\157\157\164\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\013\241\132\372\035\337\240\265\111\104\257\315\044\240 +\154\354 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\106\060\202\001\315\240\003\002\001\002\002\020\013 +\241\132\372\035\337\240\265\111\104\257\315\044\240\154\354\060 +\012\006\010\052\206\110\316\075\004\003\003\060\145\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\025\060\023\006\003 +\125\004\012\023\014\104\151\147\151\103\145\162\164\040\111\156 +\143\061\031\060\027\006\003\125\004\013\023\020\167\167\167\056 +\144\151\147\151\143\145\162\164\056\143\157\155\061\044\060\042 +\006\003\125\004\003\023\033\104\151\147\151\103\145\162\164\040 +\101\163\163\165\162\145\144\040\111\104\040\122\157\157\164\040 +\107\063\060\036\027\015\061\063\060\070\060\061\061\062\060\060 +\060\060\132\027\015\063\070\060\061\061\065\061\062\060\060\060 +\060\132\060\145\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\025\060\023\006\003\125\004\012\023\014\104\151\147\151 +\103\145\162\164\040\111\156\143\061\031\060\027\006\003\125\004 +\013\023\020\167\167\167\056\144\151\147\151\143\145\162\164\056 +\143\157\155\061\044\060\042\006\003\125\004\003\023\033\104\151 +\147\151\103\145\162\164\040\101\163\163\165\162\145\144\040\111 +\104\040\122\157\157\164\040\107\063\060\166\060\020\006\007\052 +\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142\000 +\004\031\347\274\254\104\145\355\315\270\077\130\373\215\261\127 +\251\104\055\005\025\362\357\013\377\020\164\237\265\142\122\137 +\146\176\037\345\334\033\105\171\013\314\306\123\012\235\215\135 +\002\331\251\131\336\002\132\366\225\052\016\215\070\112\212\111 +\306\274\306\003\070\007\137\125\332\176\011\156\342\177\136\320 +\105\040\017\131\166\020\326\240\044\360\055\336\066\362\154\051 +\071\243\102\060\100\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\206\060\035\006\003\125\035\016\004\026\004 +\024\313\320\275\251\341\230\005\121\241\115\067\242\203\171\316 +\215\035\052\344\204\060\012\006\010\052\206\110\316\075\004\003 +\003\003\147\000\060\144\002\060\045\244\201\105\002\153\022\113 +\165\164\117\310\043\343\160\362\165\162\336\174\211\360\317\221 +\162\141\236\136\020\222\131\126\271\203\307\020\347\070\351\130 +\046\066\175\325\344\064\206\071\002\060\174\066\123\360\060\345 +\142\143\072\231\342\266\243\073\233\064\372\036\332\020\222\161 +\136\221\023\247\335\244\156\222\314\062\326\365\041\146\307\057 +\352\226\143\152\145\105\222\225\001\264 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert Assured ID Root G3" +# Issuer: CN=DigiCert Assured ID Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:0b:a1:5a:fa:1d:df:a0:b5:49:44:af:cd:24:a0:6c:ec +# Subject: CN=DigiCert Assured ID Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): 7E:37:CB:8B:4C:47:09:0C:AB:36:55:1B:A6:F4:5D:B8:40:68:0F:BA:16:6A:95:2D:B1:00:71:7F:43:05:3F:C2 +# Fingerprint (SHA1): F5:17:A2:4F:9A:48:C6:C9:F8:A2:00:26:9F:DC:0F:48:2C:AB:30:89 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Assured ID Root G3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\365\027\242\117\232\110\306\311\370\242\000\046\237\334\017\110 +\054\253\060\211 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\174\177\145\061\014\201\337\215\272\076\231\342\134\255\156\373 +END +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\044\060\042\006\003\125\004\003\023\033\104\151\147\151 +\103\145\162\164\040\101\163\163\165\162\145\144\040\111\104\040 +\122\157\157\164\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\013\241\132\372\035\337\240\265\111\104\257\315\044\240 +\154\354 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert Global Root G2" +# +# Issuer: CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:03:3a:f1:e6:a7:11:a9:a0:bb:28:64:b1:1d:09:fa:e5 +# Subject: CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): CB:3C:CB:B7:60:31:E5:E0:13:8F:8D:D3:9A:23:F9:DE:47:FF:C3:5E:43:C1:14:4C:EA:27:D4:6A:5A:B1:CB:5F +# Fingerprint (SHA1): DF:3C:24:F9:BF:D6:66:76:1B:26:80:73:FE:06:D1:CC:8D:4F:82:A4 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Global Root G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151 +\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164 +\040\107\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151 +\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164 +\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\003\072\361\346\247\021\251\240\273\050\144\261\035\011 +\372\345 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\216\060\202\002\166\240\003\002\001\002\002\020\003 +\072\361\346\247\021\251\240\273\050\144\261\035\011\372\345\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\141 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060 +\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164 +\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167 +\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061 +\040\060\036\006\003\125\004\003\023\027\104\151\147\151\103\145 +\162\164\040\107\154\157\142\141\154\040\122\157\157\164\040\107 +\062\060\036\027\015\061\063\060\070\060\061\061\062\060\060\060 +\060\132\027\015\063\070\060\061\061\065\061\062\060\060\060\060 +\132\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103 +\145\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013 +\023\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143 +\157\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147 +\151\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157 +\164\040\107\062\060\202\001\042\060\015\006\011\052\206\110\206 +\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012 +\002\202\001\001\000\273\067\315\064\334\173\153\311\262\150\220 +\255\112\165\377\106\272\041\012\010\215\365\031\124\311\373\210 +\333\363\256\362\072\211\221\074\172\346\253\006\032\153\317\254 +\055\350\136\011\044\104\272\142\232\176\326\243\250\176\340\124 +\165\040\005\254\120\267\234\143\032\154\060\334\332\037\031\261 +\327\036\336\375\327\340\313\224\203\067\256\354\037\103\116\335 +\173\054\322\275\056\245\057\344\251\270\255\072\324\231\244\266 +\045\351\233\153\000\140\222\140\377\117\041\111\030\367\147\220 +\253\141\006\234\217\362\272\351\264\351\222\062\153\265\363\127 +\350\135\033\315\214\035\253\225\004\225\111\363\065\055\226\343 +\111\155\335\167\343\373\111\113\264\254\125\007\251\217\225\263 +\264\043\273\114\155\105\360\366\251\262\225\060\264\375\114\125 +\214\047\112\127\024\174\202\235\315\163\222\323\026\112\006\014 +\214\120\321\217\036\011\276\027\241\346\041\312\375\203\345\020 +\274\203\245\012\304\147\050\366\163\024\024\075\106\166\303\207 +\024\211\041\064\115\257\017\105\014\246\111\241\272\273\234\305 +\261\063\203\051\205\002\003\001\000\001\243\102\060\100\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060 +\035\006\003\125\035\016\004\026\004\024\116\042\124\040\030\225 +\346\343\156\346\017\372\372\271\022\355\006\027\217\071\060\015 +\006\011\052\206\110\206\367\015\001\001\013\005\000\003\202\001 +\001\000\140\147\050\224\157\016\110\143\353\061\335\352\147\030 +\325\211\175\074\305\213\112\177\351\276\333\053\027\337\260\137 +\163\167\052\062\023\071\201\147\102\204\043\362\105\147\065\354 +\210\277\370\217\260\141\014\064\244\256\040\114\204\306\333\370 +\065\341\166\331\337\246\102\273\307\104\010\206\177\066\164\044 +\132\332\154\015\024\131\065\275\362\111\335\266\037\311\263\015 +\107\052\075\231\057\273\134\273\265\324\040\341\231\137\123\106 +\025\333\150\233\360\363\060\325\076\061\342\215\204\236\343\212 +\332\332\226\076\065\023\245\137\360\371\160\120\160\107\101\021 +\127\031\116\300\217\256\006\304\225\023\027\057\033\045\237\165 +\362\261\216\231\241\157\023\261\101\161\376\210\052\310\117\020 +\040\125\327\363\024\105\345\340\104\364\352\207\225\062\223\016 +\376\123\106\372\054\235\377\213\042\271\113\331\011\105\244\336 +\244\270\232\130\335\033\175\122\237\216\131\103\210\201\244\236 +\046\325\157\255\335\015\306\067\175\355\003\222\033\345\167\137 +\166\356\074\215\304\135\126\133\242\331\146\156\263\065\067\345 +\062\266 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert Global Root G2" +# Issuer: CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:03:3a:f1:e6:a7:11:a9:a0:bb:28:64:b1:1d:09:fa:e5 +# Subject: CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): CB:3C:CB:B7:60:31:E5:E0:13:8F:8D:D3:9A:23:F9:DE:47:FF:C3:5E:43:C1:14:4C:EA:27:D4:6A:5A:B1:CB:5F +# Fingerprint (SHA1): DF:3C:24:F9:BF:D6:66:76:1B:26:80:73:FE:06:D1:CC:8D:4F:82:A4 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Global Root G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\337\074\044\371\277\326\146\166\033\046\200\163\376\006\321\314 +\215\117\202\244 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\344\246\212\310\124\254\122\102\106\012\375\162\110\033\052\104 +END +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151 +\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164 +\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\003\072\361\346\247\021\251\240\273\050\144\261\035\011 +\372\345 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert Global Root G3" +# +# Issuer: CN=DigiCert Global Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:05:55:56:bc:f2:5e:a4:35:35:c3:a4:0f:d5:ab:45:72 +# Subject: CN=DigiCert Global Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): 31:AD:66:48:F8:10:41:38:C7:38:F3:9E:A4:32:01:33:39:3E:3A:18:CC:02:29:6E:F9:7C:2A:C9:EF:67:31:D0 +# Fingerprint (SHA1): 7E:04:DE:89:6A:3E:66:6D:00:E6:87:D3:3F:FA:D9:3B:E8:3D:34:9E +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Global Root G3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151 +\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164 +\040\107\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151 +\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164 +\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\125\126\274\362\136\244\065\065\303\244\017\325\253 +\105\162 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\077\060\202\001\305\240\003\002\001\002\002\020\005 +\125\126\274\362\136\244\065\065\303\244\017\325\253\105\162\060 +\012\006\010\052\206\110\316\075\004\003\003\060\141\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\025\060\023\006\003 +\125\004\012\023\014\104\151\147\151\103\145\162\164\040\111\156 +\143\061\031\060\027\006\003\125\004\013\023\020\167\167\167\056 +\144\151\147\151\143\145\162\164\056\143\157\155\061\040\060\036 +\006\003\125\004\003\023\027\104\151\147\151\103\145\162\164\040 +\107\154\157\142\141\154\040\122\157\157\164\040\107\063\060\036 +\027\015\061\063\060\070\060\061\061\062\060\060\060\060\132\027 +\015\063\070\060\061\061\065\061\062\060\060\060\060\132\060\141 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060 +\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164 +\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167 +\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061 +\040\060\036\006\003\125\004\003\023\027\104\151\147\151\103\145 +\162\164\040\107\154\157\142\141\154\040\122\157\157\164\040\107 +\063\060\166\060\020\006\007\052\206\110\316\075\002\001\006\005 +\053\201\004\000\042\003\142\000\004\335\247\331\273\212\270\013 +\373\013\177\041\322\360\276\276\163\363\063\135\032\274\064\352 +\336\306\233\274\320\225\366\360\314\320\013\272\141\133\121\106 +\176\236\055\237\356\216\143\014\027\354\007\160\365\317\204\056 +\100\203\234\350\077\101\155\073\255\323\244\024\131\066\170\235 +\003\103\356\020\023\154\162\336\256\210\247\241\153\265\103\316 +\147\334\043\377\003\034\243\342\076\243\102\060\100\060\017\006 +\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060\035 +\006\003\125\035\016\004\026\004\024\263\333\110\244\371\241\305 +\330\256\066\101\314\021\143\151\142\051\274\113\306\060\012\006 +\010\052\206\110\316\075\004\003\003\003\150\000\060\145\002\061 +\000\255\274\362\154\077\022\112\321\055\071\303\012\011\227\163 +\364\210\066\214\210\047\273\346\210\215\120\205\247\143\371\236 +\062\336\146\223\017\361\314\261\011\217\335\154\253\372\153\177 +\240\002\060\071\146\133\302\144\215\270\236\120\334\250\325\111 +\242\355\307\334\321\111\177\027\001\270\310\206\217\116\214\210 +\053\250\232\251\212\305\321\000\275\370\124\342\232\345\133\174 +\263\047\027 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert Global Root G3" +# Issuer: CN=DigiCert Global Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:05:55:56:bc:f2:5e:a4:35:35:c3:a4:0f:d5:ab:45:72 +# Subject: CN=DigiCert Global Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): 31:AD:66:48:F8:10:41:38:C7:38:F3:9E:A4:32:01:33:39:3E:3A:18:CC:02:29:6E:F9:7C:2A:C9:EF:67:31:D0 +# Fingerprint (SHA1): 7E:04:DE:89:6A:3E:66:6D:00:E6:87:D3:3F:FA:D9:3B:E8:3D:34:9E +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Global Root G3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\176\004\336\211\152\076\146\155\000\346\207\323\077\372\331\073 +\350\075\064\236 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\365\135\244\120\245\373\050\176\036\017\015\314\226\127\126\312 +END +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\040\060\036\006\003\125\004\003\023\027\104\151\147\151 +\103\145\162\164\040\107\154\157\142\141\154\040\122\157\157\164 +\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\125\126\274\362\136\244\065\065\303\244\017\325\253 +\105\162 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert Trusted Root G4" +# +# Issuer: CN=DigiCert Trusted Root G4,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:05:9b:1b:57:9e:8e:21:32:e2:39:07:bd:a7:77:75:5c +# Subject: CN=DigiCert Trusted Root G4,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): 55:2F:7B:DC:F1:A7:AF:9E:6C:E6:72:01:7F:4F:12:AB:F7:72:40:C7:8E:76:1A:C2:03:D1:D9:D2:0A:C8:99:88 +# Fingerprint (SHA1): DD:FB:16:CD:49:31:C9:73:A2:03:7D:3F:C8:3A:4D:7D:77:5D:05:E4 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Trusted Root G4" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\041\060\037\006\003\125\004\003\023\030\104\151\147\151 +\103\145\162\164\040\124\162\165\163\164\145\144\040\122\157\157 +\164\040\107\064 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\041\060\037\006\003\125\004\003\023\030\104\151\147\151 +\103\145\162\164\040\124\162\165\163\164\145\144\040\122\157\157 +\164\040\107\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\233\033\127\236\216\041\062\342\071\007\275\247\167 +\165\134 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\220\060\202\003\170\240\003\002\001\002\002\020\005 +\233\033\127\236\216\041\062\342\071\007\275\247\167\165\134\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\142 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\025\060 +\023\006\003\125\004\012\023\014\104\151\147\151\103\145\162\164 +\040\111\156\143\061\031\060\027\006\003\125\004\013\023\020\167 +\167\167\056\144\151\147\151\143\145\162\164\056\143\157\155\061 +\041\060\037\006\003\125\004\003\023\030\104\151\147\151\103\145 +\162\164\040\124\162\165\163\164\145\144\040\122\157\157\164\040 +\107\064\060\036\027\015\061\063\060\070\060\061\061\062\060\060 +\060\060\132\027\015\063\070\060\061\061\065\061\062\060\060\060 +\060\132\060\142\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\025\060\023\006\003\125\004\012\023\014\104\151\147\151 +\103\145\162\164\040\111\156\143\061\031\060\027\006\003\125\004 +\013\023\020\167\167\167\056\144\151\147\151\143\145\162\164\056 +\143\157\155\061\041\060\037\006\003\125\004\003\023\030\104\151 +\147\151\103\145\162\164\040\124\162\165\163\164\145\144\040\122 +\157\157\164\040\107\064\060\202\002\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 +\002\012\002\202\002\001\000\277\346\220\163\150\336\273\344\135 +\112\074\060\042\060\151\063\354\302\247\045\056\311\041\075\362 +\212\330\131\302\341\051\247\075\130\253\166\232\315\256\173\033 +\204\015\304\060\037\363\033\244\070\026\353\126\306\227\155\035 +\253\262\171\362\312\021\322\344\137\326\005\074\122\017\122\037 +\306\236\025\245\176\276\237\251\127\026\131\125\162\257\150\223 +\160\302\262\272\165\231\152\163\062\224\321\020\104\020\056\337 +\202\363\007\204\346\164\073\155\161\342\055\014\033\356\040\325 +\311\040\035\143\051\055\316\354\136\116\310\223\370\041\141\233 +\064\353\005\306\136\354\133\032\274\353\311\317\315\254\064\100 +\137\261\172\146\356\167\310\110\250\146\127\127\237\124\130\216 +\014\053\267\117\247\060\331\126\356\312\173\135\343\255\311\117 +\136\345\065\347\061\313\332\223\136\334\216\217\200\332\266\221 +\230\100\220\171\303\170\307\266\261\304\265\152\030\070\003\020 +\215\330\324\067\244\056\005\175\210\365\202\076\020\221\160\253 +\125\202\101\062\327\333\004\163\052\156\221\001\174\041\114\324 +\274\256\033\003\165\135\170\146\331\072\061\104\232\063\100\277 +\010\327\132\111\244\302\346\251\240\147\335\244\047\274\241\117 +\071\265\021\130\027\367\044\134\106\217\144\367\301\151\210\166 +\230\166\075\131\135\102\166\207\211\227\151\172\110\360\340\242 +\022\033\146\232\164\312\336\113\036\347\016\143\256\346\324\357 +\222\222\072\236\075\334\000\344\105\045\211\266\232\104\031\053 +\176\300\224\264\322\141\155\353\063\331\305\337\113\004\000\314 +\175\034\225\303\217\367\041\262\262\021\267\273\177\362\325\214 +\160\054\101\140\252\261\143\030\104\225\032\166\142\176\366\200 +\260\373\350\144\246\063\321\211\007\341\275\267\346\103\244\030 +\270\246\167\001\341\017\224\014\041\035\262\124\051\045\211\154 +\345\016\122\121\107\164\276\046\254\266\101\165\336\172\254\137 +\215\077\311\274\323\101\021\022\133\345\020\120\353\061\305\312 +\162\026\042\011\337\174\114\165\077\143\354\041\137\304\040\121 +\153\157\261\253\206\213\117\302\326\105\137\235\040\374\241\036 +\305\300\217\242\261\176\012\046\231\365\344\151\057\230\035\055 +\365\331\251\262\035\345\033\002\003\001\000\001\243\102\060\100 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 +\206\060\035\006\003\125\035\016\004\026\004\024\354\327\343\202 +\322\161\135\144\114\337\056\147\077\347\272\230\256\034\017\117 +\060\015\006\011\052\206\110\206\367\015\001\001\014\005\000\003 +\202\002\001\000\273\141\331\175\251\154\276\027\304\221\033\303 +\241\242\000\215\343\144\150\017\126\317\167\256\160\371\375\232 +\112\231\271\311\170\134\014\014\137\344\346\024\051\126\013\066 +\111\135\104\143\340\255\234\226\030\146\033\043\015\075\171\351 +\155\153\326\124\370\322\074\301\103\100\256\035\120\365\122\374 +\220\073\273\230\231\151\153\307\301\247\250\150\244\047\334\235 +\371\047\256\060\205\271\366\147\115\072\076\217\131\071\042\123 +\104\353\310\135\003\312\355\120\172\175\142\041\012\200\310\163 +\146\321\240\005\140\137\350\245\264\247\257\250\367\155\065\234 +\174\132\212\326\242\070\231\363\170\213\364\115\322\040\013\336 +\004\356\214\233\107\201\162\015\300\024\062\357\060\131\056\256 +\340\161\362\126\344\152\227\157\222\120\155\226\215\150\172\232 +\262\066\024\172\006\362\044\271\011\021\120\327\010\261\270\211 +\172\204\043\141\102\051\345\243\315\242\040\101\327\321\234\144 +\331\352\046\241\213\024\327\114\031\262\120\101\161\075\077\115 +\160\043\206\014\112\334\201\322\314\062\224\204\015\010\011\227 +\034\117\300\356\153\040\164\060\322\340\071\064\020\205\041\025 +\001\010\350\125\062\336\161\111\331\050\027\120\115\346\276\115 +\321\165\254\320\312\373\101\270\103\245\252\323\303\005\104\117 +\054\066\233\342\372\342\105\270\043\123\154\006\157\147\125\177 +\106\265\114\077\156\050\132\171\046\322\244\250\142\227\322\036 +\342\355\112\213\274\033\375\107\112\015\337\147\146\176\262\133 +\101\320\073\344\364\073\364\004\143\351\357\302\124\000\121\240 +\212\052\311\316\170\314\325\352\207\004\030\263\316\257\111\210 +\257\363\222\231\266\263\346\141\017\322\205\000\347\120\032\344 +\033\225\235\031\241\271\234\261\233\261\000\036\357\320\017\117 +\102\154\311\012\274\356\103\372\072\161\245\310\115\046\245\065 +\375\211\135\274\205\142\035\062\322\240\053\124\355\232\127\301 +\333\372\020\317\031\267\213\112\033\217\001\266\047\225\123\350 +\266\211\155\133\274\150\324\043\350\213\121\242\126\371\360\246 +\200\240\326\036\263\274\017\017\123\165\051\252\352\023\167\344 +\336\214\201\041\255\007\020\107\021\255\207\075\007\321\165\274 +\317\363\146\176 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert Trusted Root G4" +# Issuer: CN=DigiCert Trusted Root G4,OU=www.digicert.com,O=DigiCert Inc,C=US +# Serial Number:05:9b:1b:57:9e:8e:21:32:e2:39:07:bd:a7:77:75:5c +# Subject: CN=DigiCert Trusted Root G4,OU=www.digicert.com,O=DigiCert Inc,C=US +# Not Valid Before: Thu Aug 01 12:00:00 2013 +# Not Valid After : Fri Jan 15 12:00:00 2038 +# Fingerprint (SHA-256): 55:2F:7B:DC:F1:A7:AF:9E:6C:E6:72:01:7F:4F:12:AB:F7:72:40:C7:8E:76:1A:C2:03:D1:D9:D2:0A:C8:99:88 +# Fingerprint (SHA1): DD:FB:16:CD:49:31:C9:73:A2:03:7D:3F:C8:3A:4D:7D:77:5D:05:E4 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert Trusted Root G4" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\335\373\026\315\111\061\311\163\242\003\175\077\310\072\115\175 +\167\135\005\344 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\170\362\374\252\140\037\057\264\353\311\067\272\123\056\165\111 +END +CKA_ISSUER MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\025\060\023\006\003\125\004\012\023\014\104\151\147\151\103\145 +\162\164\040\111\156\143\061\031\060\027\006\003\125\004\013\023 +\020\167\167\167\056\144\151\147\151\143\145\162\164\056\143\157 +\155\061\041\060\037\006\003\125\004\003\023\030\104\151\147\151 +\103\145\162\164\040\124\162\165\163\164\145\144\040\122\157\157 +\164\040\107\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\233\033\127\236\216\041\062\342\071\007\275\247\167 +\165\134 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "COMODO RSA Certification Authority" +# +# Issuer: CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Serial Number:4c:aa:f9:ca:db:63:6f:e0:1f:f7:4e:d8:5b:03:86:9d +# Subject: CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Not Valid Before: Tue Jan 19 00:00:00 2010 +# Not Valid After : Mon Jan 18 23:59:59 2038 +# Fingerprint (SHA-256): 52:F0:E1:C4:E5:8E:C6:29:29:1B:60:31:7F:07:46:71:B8:5D:7E:A8:0D:5B:07:27:34:63:53:4B:32:B4:02:34 +# Fingerprint (SHA1): AF:E5:D2:44:A8:D1:19:42:30:FF:47:9F:E2:F8:97:BB:CD:7A:8C:B4 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "COMODO RSA Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\205\061\013\060\011\006\003\125\004\006\023\002\107\102 +\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164 +\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060 +\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061 +\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117 +\040\103\101\040\114\151\155\151\164\145\144\061\053\060\051\006 +\003\125\004\003\023\042\103\117\115\117\104\117\040\122\123\101 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101 +\165\164\150\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\205\061\013\060\011\006\003\125\004\006\023\002\107\102 +\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164 +\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060 +\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061 +\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117 +\040\103\101\040\114\151\155\151\164\145\144\061\053\060\051\006 +\003\125\004\003\023\042\103\117\115\117\104\117\040\122\123\101 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101 +\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\114\252\371\312\333\143\157\340\037\367\116\330\133\003 +\206\235 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\330\060\202\003\300\240\003\002\001\002\002\020\114 +\252\371\312\333\143\157\340\037\367\116\330\133\003\206\235\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\201 +\205\061\013\060\011\006\003\125\004\006\023\002\107\102\061\033 +\060\031\006\003\125\004\010\023\022\107\162\145\141\164\145\162 +\040\115\141\156\143\150\145\163\164\145\162\061\020\060\016\006 +\003\125\004\007\023\007\123\141\154\146\157\162\144\061\032\060 +\030\006\003\125\004\012\023\021\103\117\115\117\104\117\040\103 +\101\040\114\151\155\151\164\145\144\061\053\060\051\006\003\125 +\004\003\023\042\103\117\115\117\104\117\040\122\123\101\040\103 +\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164 +\150\157\162\151\164\171\060\036\027\015\061\060\060\061\061\071 +\060\060\060\060\060\060\132\027\015\063\070\060\061\061\070\062 +\063\065\071\065\071\132\060\201\205\061\013\060\011\006\003\125 +\004\006\023\002\107\102\061\033\060\031\006\003\125\004\010\023 +\022\107\162\145\141\164\145\162\040\115\141\156\143\150\145\163 +\164\145\162\061\020\060\016\006\003\125\004\007\023\007\123\141 +\154\146\157\162\144\061\032\060\030\006\003\125\004\012\023\021 +\103\117\115\117\104\117\040\103\101\040\114\151\155\151\164\145 +\144\061\053\060\051\006\003\125\004\003\023\042\103\117\115\117 +\104\117\040\122\123\101\040\103\145\162\164\151\146\151\143\141 +\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060\202 +\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 +\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\221 +\350\124\222\322\012\126\261\254\015\044\335\305\317\104\147\164 +\231\053\067\243\175\043\160\000\161\274\123\337\304\372\052\022 +\217\113\177\020\126\275\237\160\162\267\141\177\311\113\017\027 +\247\075\343\260\004\141\356\377\021\227\307\364\206\076\012\372 +\076\134\371\223\346\064\172\331\024\153\347\234\263\205\240\202 +\172\166\257\161\220\327\354\375\015\372\234\154\372\337\260\202 +\364\024\176\371\276\304\246\057\117\177\231\177\265\374\147\103 +\162\275\014\000\326\211\353\153\054\323\355\217\230\034\024\253 +\176\345\343\156\374\330\250\344\222\044\332\103\153\142\270\125 +\375\352\301\274\154\266\213\363\016\215\232\344\233\154\151\231 +\370\170\110\060\105\325\255\341\015\074\105\140\374\062\226\121 +\047\274\147\303\312\056\266\153\352\106\307\307\040\240\261\037 +\145\336\110\010\272\244\116\251\362\203\106\067\204\353\350\314 +\201\110\103\147\116\162\052\233\134\275\114\033\050\212\134\042 +\173\264\253\230\331\356\340\121\203\303\011\106\116\155\076\231 +\372\225\027\332\174\063\127\101\074\215\121\355\013\266\134\257 +\054\143\032\337\127\310\077\274\351\135\304\233\257\105\231\342 +\243\132\044\264\272\251\126\075\317\157\252\377\111\130\276\360 +\250\377\364\270\255\351\067\373\272\270\364\013\072\371\350\103 +\102\036\211\330\204\313\023\361\331\273\341\211\140\270\214\050 +\126\254\024\035\234\012\347\161\353\317\016\335\075\251\226\241 +\110\275\074\367\257\265\015\042\114\300\021\201\354\126\073\366 +\323\242\342\133\267\262\004\042\122\225\200\223\151\350\216\114 +\145\361\221\003\055\160\164\002\352\213\147\025\051\151\122\002 +\273\327\337\120\152\125\106\277\240\243\050\141\177\160\320\303 +\242\252\054\041\252\107\316\050\234\006\105\166\277\202\030\047 +\264\325\256\264\313\120\346\153\364\114\206\161\060\351\246\337 +\026\206\340\330\377\100\335\373\320\102\210\177\243\063\072\056 +\134\036\101\021\201\143\316\030\161\153\053\354\246\212\267\061 +\134\072\152\107\340\303\171\131\326\040\032\257\362\152\230\252 +\162\274\127\112\322\113\235\273\020\374\260\114\101\345\355\035 +\075\136\050\235\234\314\277\263\121\332\247\107\345\204\123\002 +\003\001\000\001\243\102\060\100\060\035\006\003\125\035\016\004 +\026\004\024\273\257\176\002\075\372\246\361\074\204\216\255\356 +\070\230\354\331\062\062\324\060\016\006\003\125\035\017\001\001 +\377\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\015\006\011\052\206\110\206 +\367\015\001\001\014\005\000\003\202\002\001\000\012\361\325\106 +\204\267\256\121\273\154\262\115\101\024\000\223\114\234\313\345 +\300\124\317\240\045\216\002\371\375\260\242\015\365\040\230\074 +\023\055\254\126\242\260\326\176\021\222\351\056\272\236\056\232 +\162\261\275\031\104\154\141\065\242\232\264\026\022\151\132\214 +\341\327\076\244\032\350\057\003\364\256\141\035\020\033\052\244 +\213\172\305\376\005\246\341\300\326\310\376\236\256\217\053\272 +\075\231\370\330\163\011\130\106\156\246\234\364\327\047\323\225 +\332\067\203\162\034\323\163\340\242\107\231\003\070\135\325\111 +\171\000\051\034\307\354\233\040\034\007\044\151\127\170\262\071 +\374\072\204\240\265\234\174\215\277\056\223\142\047\267\071\332 +\027\030\256\275\074\011\150\377\204\233\074\325\326\013\003\343 +\127\236\024\367\321\353\117\310\275\207\043\267\266\111\103\171 +\205\134\272\353\222\013\241\306\350\150\250\114\026\261\032\231 +\012\350\123\054\222\273\241\011\030\165\014\145\250\173\313\043 +\267\032\302\050\205\303\033\377\320\053\142\357\244\173\011\221 +\230\147\214\024\001\315\150\006\152\143\041\165\003\200\210\212 +\156\201\306\205\362\251\244\055\347\364\245\044\020\107\203\312 +\315\364\215\171\130\261\006\233\347\032\052\331\235\001\327\224 +\175\355\003\112\312\360\333\350\251\001\076\365\126\231\311\036 +\216\111\075\273\345\011\271\340\117\111\222\075\026\202\100\314 +\314\131\306\346\072\355\022\056\151\074\154\225\261\375\252\035 +\173\177\206\276\036\016\062\106\373\373\023\217\165\177\114\213 +\113\106\143\376\000\064\100\160\301\303\271\241\335\246\160\342 +\004\263\101\274\351\200\221\352\144\234\172\341\042\003\251\234 +\156\157\016\145\117\154\207\207\136\363\156\240\371\165\245\233 +\100\350\123\262\047\235\112\271\300\167\041\215\377\207\362\336 +\274\214\357\027\337\267\111\013\321\362\156\060\013\032\016\116 +\166\355\021\374\365\351\126\262\175\277\307\155\012\223\214\245 +\320\300\266\035\276\072\116\224\242\327\156\154\013\302\212\174 +\372\040\363\304\344\345\315\015\250\313\221\222\261\174\205\354 +\265\024\151\146\016\202\347\315\316\310\055\246\121\177\041\301 +\065\123\205\006\112\135\237\255\273\033\137\164 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "COMODO RSA Certification Authority" +# Issuer: CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Serial Number:4c:aa:f9:ca:db:63:6f:e0:1f:f7:4e:d8:5b:03:86:9d +# Subject: CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB +# Not Valid Before: Tue Jan 19 00:00:00 2010 +# Not Valid After : Mon Jan 18 23:59:59 2038 +# Fingerprint (SHA-256): 52:F0:E1:C4:E5:8E:C6:29:29:1B:60:31:7F:07:46:71:B8:5D:7E:A8:0D:5B:07:27:34:63:53:4B:32:B4:02:34 +# Fingerprint (SHA1): AF:E5:D2:44:A8:D1:19:42:30:FF:47:9F:E2:F8:97:BB:CD:7A:8C:B4 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "COMODO RSA Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\257\345\322\104\250\321\031\102\060\377\107\237\342\370\227\273 +\315\172\214\264 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\033\061\260\161\100\066\314\024\066\221\255\304\076\375\354\030 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\205\061\013\060\011\006\003\125\004\006\023\002\107\102 +\061\033\060\031\006\003\125\004\010\023\022\107\162\145\141\164 +\145\162\040\115\141\156\143\150\145\163\164\145\162\061\020\060 +\016\006\003\125\004\007\023\007\123\141\154\146\157\162\144\061 +\032\060\030\006\003\125\004\012\023\021\103\117\115\117\104\117 +\040\103\101\040\114\151\155\151\164\145\144\061\053\060\051\006 +\003\125\004\003\023\042\103\117\115\117\104\117\040\122\123\101 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101 +\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\114\252\371\312\333\143\157\340\037\367\116\330\133\003 +\206\235 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "USERTrust RSA Certification Authority" +# +# Issuer: CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US +# Serial Number:01:fd:6d:30:fc:a3:ca:51:a8:1b:bc:64:0e:35:03:2d +# Subject: CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US +# Not Valid Before: Mon Feb 01 00:00:00 2010 +# Not Valid After : Mon Jan 18 23:59:59 2038 +# Fingerprint (SHA-256): E7:93:C9:B0:2F:D8:AA:13:E2:1C:31:22:8A:CC:B0:81:19:64:3B:74:9C:89:89:64:B1:74:6D:46:C3:D4:CB:D2 +# Fingerprint (SHA1): 2B:8F:1B:57:33:0D:BB:A2:D0:7A:6C:51:F7:0E:E9:0D:DA:B9:AD:8E +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "USERTrust RSA Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\210\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\023\060\021\006\003\125\004\010\023\012\116\145\167\040\112 +\145\162\163\145\171\061\024\060\022\006\003\125\004\007\023\013 +\112\145\162\163\145\171\040\103\151\164\171\061\036\060\034\006 +\003\125\004\012\023\025\124\150\145\040\125\123\105\122\124\122 +\125\123\124\040\116\145\164\167\157\162\153\061\056\060\054\006 +\003\125\004\003\023\045\125\123\105\122\124\162\165\163\164\040 +\122\123\101\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\210\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\023\060\021\006\003\125\004\010\023\012\116\145\167\040\112 +\145\162\163\145\171\061\024\060\022\006\003\125\004\007\023\013 +\112\145\162\163\145\171\040\103\151\164\171\061\036\060\034\006 +\003\125\004\012\023\025\124\150\145\040\125\123\105\122\124\122 +\125\123\124\040\116\145\164\167\157\162\153\061\056\060\054\006 +\003\125\004\003\023\045\125\123\105\122\124\162\165\163\164\040 +\122\123\101\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\001\375\155\060\374\243\312\121\250\033\274\144\016\065 +\003\055 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\336\060\202\003\306\240\003\002\001\002\002\020\001 +\375\155\060\374\243\312\121\250\033\274\144\016\065\003\055\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\201 +\210\061\013\060\011\006\003\125\004\006\023\002\125\123\061\023 +\060\021\006\003\125\004\010\023\012\116\145\167\040\112\145\162 +\163\145\171\061\024\060\022\006\003\125\004\007\023\013\112\145 +\162\163\145\171\040\103\151\164\171\061\036\060\034\006\003\125 +\004\012\023\025\124\150\145\040\125\123\105\122\124\122\125\123 +\124\040\116\145\164\167\157\162\153\061\056\060\054\006\003\125 +\004\003\023\045\125\123\105\122\124\162\165\163\164\040\122\123 +\101\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040 +\101\165\164\150\157\162\151\164\171\060\036\027\015\061\060\060 +\062\060\061\060\060\060\060\060\060\132\027\015\063\070\060\061 +\061\070\062\063\065\071\065\071\132\060\201\210\061\013\060\011 +\006\003\125\004\006\023\002\125\123\061\023\060\021\006\003\125 +\004\010\023\012\116\145\167\040\112\145\162\163\145\171\061\024 +\060\022\006\003\125\004\007\023\013\112\145\162\163\145\171\040 +\103\151\164\171\061\036\060\034\006\003\125\004\012\023\025\124 +\150\145\040\125\123\105\122\124\122\125\123\124\040\116\145\164 +\167\157\162\153\061\056\060\054\006\003\125\004\003\023\045\125 +\123\105\122\124\162\165\163\164\040\122\123\101\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171\060\202\002\042\060\015\006\011\052\206\110\206 +\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002\012 +\002\202\002\001\000\200\022\145\027\066\016\303\333\010\263\320 +\254\127\015\166\355\315\047\323\114\255\120\203\141\342\252\040 +\115\011\055\144\011\334\316\211\237\314\075\251\354\366\317\301 +\334\361\323\261\326\173\067\050\021\053\107\332\071\306\274\072 +\031\264\137\246\275\175\235\243\143\102\266\166\362\251\073\053 +\221\370\342\157\320\354\026\040\220\011\076\342\350\164\311\030 +\264\221\324\142\144\333\177\243\006\361\210\030\152\220\042\074 +\274\376\023\360\207\024\173\366\344\037\216\324\344\121\306\021 +\147\106\010\121\313\206\024\124\077\274\063\376\176\154\234\377 +\026\235\030\275\121\216\065\246\247\146\310\162\147\333\041\146 +\261\324\233\170\003\300\120\072\350\314\360\334\274\236\114\376 +\257\005\226\065\037\127\132\267\377\316\371\075\267\054\266\366 +\124\335\310\347\022\072\115\256\114\212\267\134\232\264\267\040 +\075\312\177\042\064\256\176\073\150\146\001\104\347\001\116\106 +\123\233\063\140\367\224\276\123\067\220\163\103\363\062\303\123 +\357\333\252\376\164\116\151\307\153\214\140\223\336\304\307\014 +\337\341\062\256\314\223\073\121\170\225\147\213\356\075\126\376 +\014\320\151\017\033\017\363\045\046\153\063\155\367\156\107\372 +\163\103\345\176\016\245\146\261\051\174\062\204\143\125\211\304 +\015\301\223\124\060\031\023\254\323\175\067\247\353\135\072\154 +\065\134\333\101\327\022\332\251\111\013\337\330\200\212\011\223 +\142\216\265\146\317\045\210\315\204\270\261\077\244\071\017\331 +\002\236\353\022\114\225\174\363\153\005\251\136\026\203\314\270 +\147\342\350\023\235\314\133\202\323\114\263\355\133\377\336\345 +\163\254\043\073\055\000\277\065\125\164\011\111\330\111\130\032 +\177\222\066\346\121\222\016\363\046\175\034\115\027\274\311\354 +\103\046\320\277\101\137\100\251\104\104\364\231\347\127\207\236 +\120\037\127\124\250\076\375\164\143\057\261\120\145\011\346\130 +\102\056\103\032\114\264\360\045\107\131\372\004\036\223\324\046 +\106\112\120\201\262\336\276\170\267\374\147\025\341\311\127\204 +\036\017\143\326\351\142\272\326\137\125\056\352\134\306\050\010 +\004\045\071\270\016\053\251\362\114\227\034\007\077\015\122\365 +\355\357\057\202\017\002\003\001\000\001\243\102\060\100\060\035 +\006\003\125\035\016\004\026\004\024\123\171\277\132\252\053\112 +\317\124\200\341\330\233\300\235\362\262\003\146\313\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\017\006 +\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\015 +\006\011\052\206\110\206\367\015\001\001\014\005\000\003\202\002 +\001\000\134\324\174\015\317\367\001\175\101\231\145\014\163\305 +\122\237\313\370\317\231\006\177\033\332\103\025\237\236\002\125 +\127\226\024\361\122\074\047\207\224\050\355\037\072\001\067\242 +\166\374\123\120\300\204\233\306\153\116\272\214\041\117\242\216 +\125\142\221\363\151\025\330\274\210\343\304\252\013\375\357\250 +\351\113\125\052\006\040\155\125\170\051\031\356\137\060\134\113 +\044\021\125\377\044\232\156\136\052\053\356\013\115\237\177\367 +\001\070\224\024\225\103\007\011\373\140\251\356\034\253\022\214 +\240\232\136\247\230\152\131\155\213\077\010\373\310\321\105\257 +\030\025\144\220\022\017\163\050\056\305\342\044\116\374\130\354 +\360\364\105\376\042\263\353\057\216\322\331\105\141\005\301\227 +\157\250\166\162\217\213\214\066\257\277\015\005\316\161\215\346 +\246\157\037\154\246\161\142\305\330\320\203\162\014\361\147\021 +\211\014\234\023\114\162\064\337\274\325\161\337\252\161\335\341 +\271\154\214\074\022\135\145\332\275\127\022\266\103\153\377\345 +\336\115\146\021\121\317\231\256\354\027\266\350\161\221\214\336 +\111\376\335\065\161\242\025\047\224\034\317\141\343\046\273\157 +\243\147\045\041\135\346\335\035\013\056\150\033\073\202\257\354 +\203\147\205\324\230\121\164\261\271\231\200\211\377\177\170\031 +\134\171\112\140\056\222\100\256\114\067\052\054\311\307\142\310 +\016\135\367\066\133\312\340\045\045\001\264\335\032\007\234\167 +\000\077\320\334\325\354\075\324\372\273\077\314\205\326\157\177 +\251\055\337\271\002\367\365\227\232\265\065\332\303\147\260\207 +\112\251\050\236\043\216\377\134\047\153\341\260\117\363\007\356 +\000\056\324\131\207\313\122\101\225\352\364\107\327\356\144\101 +\125\174\215\131\002\225\335\142\235\302\271\356\132\050\164\204 +\245\233\267\220\307\014\007\337\365\211\066\164\062\326\050\301 +\260\260\013\340\234\114\303\034\326\374\343\151\265\107\106\201 +\057\242\202\253\323\143\104\160\304\215\377\055\063\272\255\217 +\173\265\160\210\256\076\031\317\100\050\330\374\310\220\273\135 +\231\042\365\122\346\130\305\037\210\061\103\356\210\035\327\306 +\216\074\103\152\035\247\030\336\175\075\026\361\142\371\312\220 +\250\375 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "USERTrust RSA Certification Authority" +# Issuer: CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US +# Serial Number:01:fd:6d:30:fc:a3:ca:51:a8:1b:bc:64:0e:35:03:2d +# Subject: CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US +# Not Valid Before: Mon Feb 01 00:00:00 2010 +# Not Valid After : Mon Jan 18 23:59:59 2038 +# Fingerprint (SHA-256): E7:93:C9:B0:2F:D8:AA:13:E2:1C:31:22:8A:CC:B0:81:19:64:3B:74:9C:89:89:64:B1:74:6D:46:C3:D4:CB:D2 +# Fingerprint (SHA1): 2B:8F:1B:57:33:0D:BB:A2:D0:7A:6C:51:F7:0E:E9:0D:DA:B9:AD:8E +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "USERTrust RSA Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\053\217\033\127\063\015\273\242\320\172\154\121\367\016\351\015 +\332\271\255\216 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\033\376\151\321\221\267\031\063\243\162\250\017\341\125\345\265 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\210\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\023\060\021\006\003\125\004\010\023\012\116\145\167\040\112 +\145\162\163\145\171\061\024\060\022\006\003\125\004\007\023\013 +\112\145\162\163\145\171\040\103\151\164\171\061\036\060\034\006 +\003\125\004\012\023\025\124\150\145\040\125\123\105\122\124\122 +\125\123\124\040\116\145\164\167\157\162\153\061\056\060\054\006 +\003\125\004\003\023\045\125\123\105\122\124\162\165\163\164\040 +\122\123\101\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\001\375\155\060\374\243\312\121\250\033\274\144\016\065 +\003\055 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "USERTrust ECC Certification Authority" +# +# Issuer: CN=USERTrust ECC Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US +# Serial Number:5c:8b:99:c5:5a:94:c5:d2:71:56:de:cd:89:80:cc:26 +# Subject: CN=USERTrust ECC Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US +# Not Valid Before: Mon Feb 01 00:00:00 2010 +# Not Valid After : Mon Jan 18 23:59:59 2038 +# Fingerprint (SHA-256): 4F:F4:60:D5:4B:9C:86:DA:BF:BC:FC:57:12:E0:40:0D:2B:ED:3F:BC:4D:4F:BD:AA:86:E0:6A:DC:D2:A9:AD:7A +# Fingerprint (SHA1): D1:CB:CA:5D:B2:D5:2A:7F:69:3B:67:4D:E5:F0:5A:1D:0C:95:7D:F0 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "USERTrust ECC Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\210\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\023\060\021\006\003\125\004\010\023\012\116\145\167\040\112 +\145\162\163\145\171\061\024\060\022\006\003\125\004\007\023\013 +\112\145\162\163\145\171\040\103\151\164\171\061\036\060\034\006 +\003\125\004\012\023\025\124\150\145\040\125\123\105\122\124\122 +\125\123\124\040\116\145\164\167\157\162\153\061\056\060\054\006 +\003\125\004\003\023\045\125\123\105\122\124\162\165\163\164\040 +\105\103\103\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\210\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\023\060\021\006\003\125\004\010\023\012\116\145\167\040\112 +\145\162\163\145\171\061\024\060\022\006\003\125\004\007\023\013 +\112\145\162\163\145\171\040\103\151\164\171\061\036\060\034\006 +\003\125\004\012\023\025\124\150\145\040\125\123\105\122\124\122 +\125\123\124\040\116\145\164\167\157\162\153\061\056\060\054\006 +\003\125\004\003\023\045\125\123\105\122\124\162\165\163\164\040 +\105\103\103\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\134\213\231\305\132\224\305\322\161\126\336\315\211\200 +\314\046 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\217\060\202\002\025\240\003\002\001\002\002\020\134 +\213\231\305\132\224\305\322\161\126\336\315\211\200\314\046\060 +\012\006\010\052\206\110\316\075\004\003\003\060\201\210\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\023\060\021\006 +\003\125\004\010\023\012\116\145\167\040\112\145\162\163\145\171 +\061\024\060\022\006\003\125\004\007\023\013\112\145\162\163\145 +\171\040\103\151\164\171\061\036\060\034\006\003\125\004\012\023 +\025\124\150\145\040\125\123\105\122\124\122\125\123\124\040\116 +\145\164\167\157\162\153\061\056\060\054\006\003\125\004\003\023 +\045\125\123\105\122\124\162\165\163\164\040\105\103\103\040\103 +\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164 +\150\157\162\151\164\171\060\036\027\015\061\060\060\062\060\061 +\060\060\060\060\060\060\132\027\015\063\070\060\061\061\070\062 +\063\065\071\065\071\132\060\201\210\061\013\060\011\006\003\125 +\004\006\023\002\125\123\061\023\060\021\006\003\125\004\010\023 +\012\116\145\167\040\112\145\162\163\145\171\061\024\060\022\006 +\003\125\004\007\023\013\112\145\162\163\145\171\040\103\151\164 +\171\061\036\060\034\006\003\125\004\012\023\025\124\150\145\040 +\125\123\105\122\124\122\125\123\124\040\116\145\164\167\157\162 +\153\061\056\060\054\006\003\125\004\003\023\045\125\123\105\122 +\124\162\165\163\164\040\105\103\103\040\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164 +\171\060\166\060\020\006\007\052\206\110\316\075\002\001\006\005 +\053\201\004\000\042\003\142\000\004\032\254\124\132\251\371\150 +\043\347\172\325\044\157\123\306\132\330\113\253\306\325\266\321 +\346\163\161\256\335\234\326\014\141\375\333\240\211\003\270\005 +\024\354\127\316\356\135\077\342\041\263\316\367\324\212\171\340 +\243\203\176\055\227\320\141\304\361\231\334\045\221\143\253\177 +\060\243\264\160\342\307\241\063\234\363\277\056\134\123\261\137 +\263\175\062\177\212\064\343\171\171\243\102\060\100\060\035\006 +\003\125\035\016\004\026\004\024\072\341\011\206\324\317\031\302 +\226\166\164\111\166\334\340\065\306\143\143\232\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\012\006 +\010\052\206\110\316\075\004\003\003\003\150\000\060\145\002\060 +\066\147\241\026\010\334\344\227\000\101\035\116\276\341\143\001 +\317\073\252\102\021\144\240\235\224\071\002\021\171\134\173\035 +\372\144\271\356\026\102\263\277\212\302\011\304\354\344\261\115 +\002\061\000\351\052\141\107\214\122\112\113\116\030\160\366\326 +\104\326\156\365\203\272\155\130\275\044\331\126\110\352\357\304 +\242\106\201\210\152\072\106\321\251\233\115\311\141\332\321\135 +\127\152\030 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "USERTrust ECC Certification Authority" +# Issuer: CN=USERTrust ECC Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US +# Serial Number:5c:8b:99:c5:5a:94:c5:d2:71:56:de:cd:89:80:cc:26 +# Subject: CN=USERTrust ECC Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US +# Not Valid Before: Mon Feb 01 00:00:00 2010 +# Not Valid After : Mon Jan 18 23:59:59 2038 +# Fingerprint (SHA-256): 4F:F4:60:D5:4B:9C:86:DA:BF:BC:FC:57:12:E0:40:0D:2B:ED:3F:BC:4D:4F:BD:AA:86:E0:6A:DC:D2:A9:AD:7A +# Fingerprint (SHA1): D1:CB:CA:5D:B2:D5:2A:7F:69:3B:67:4D:E5:F0:5A:1D:0C:95:7D:F0 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "USERTrust ECC Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\321\313\312\135\262\325\052\177\151\073\147\115\345\360\132\035 +\014\225\175\360 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\372\150\274\331\265\177\255\375\311\035\006\203\050\314\044\301 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\210\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\023\060\021\006\003\125\004\010\023\012\116\145\167\040\112 +\145\162\163\145\171\061\024\060\022\006\003\125\004\007\023\013 +\112\145\162\163\145\171\040\103\151\164\171\061\036\060\034\006 +\003\125\004\012\023\025\124\150\145\040\125\123\105\122\124\122 +\125\123\124\040\116\145\164\167\157\162\153\061\056\060\054\006 +\003\125\004\003\023\045\125\123\105\122\124\162\165\163\164\040 +\105\103\103\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\134\213\231\305\132\224\305\322\161\126\336\315\211\200 +\314\046 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GlobalSign ECC Root CA - R5" +# +# Issuer: CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R5 +# Serial Number:60:59:49:e0:26:2e:bb:55:f9:0a:77:8a:71:f9:4a:d8:6c +# Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R5 +# Not Valid Before: Tue Nov 13 00:00:00 2012 +# Not Valid After : Tue Jan 19 03:14:07 2038 +# Fingerprint (SHA-256): 17:9F:BC:14:8A:3D:D0:0F:D2:4E:A1:34:58:CC:43:BF:A7:F5:9C:81:82:D7:83:A5:13:F6:EB:EC:10:0C:89:24 +# Fingerprint (SHA1): 1F:24:C6:30:CD:A4:18:EF:20:69:FF:AD:4F:DD:5F:46:3A:1B:69:AA +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign ECC Root CA - R5" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\120\061\044\060\042\006\003\125\004\013\023\033\107\154\157 +\142\141\154\123\151\147\156\040\105\103\103\040\122\157\157\164 +\040\103\101\040\055\040\122\065\061\023\060\021\006\003\125\004 +\012\023\012\107\154\157\142\141\154\123\151\147\156\061\023\060 +\021\006\003\125\004\003\023\012\107\154\157\142\141\154\123\151 +\147\156 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\044\060\042\006\003\125\004\013\023\033\107\154\157 +\142\141\154\123\151\147\156\040\105\103\103\040\122\157\157\164 +\040\103\101\040\055\040\122\065\061\023\060\021\006\003\125\004 +\012\023\012\107\154\157\142\141\154\123\151\147\156\061\023\060 +\021\006\003\125\004\003\023\012\107\154\157\142\141\154\123\151 +\147\156 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\140\131\111\340\046\056\273\125\371\012\167\212\161\371 +\112\330\154 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\036\060\202\001\244\240\003\002\001\002\002\021\140 +\131\111\340\046\056\273\125\371\012\167\212\161\371\112\330\154 +\060\012\006\010\052\206\110\316\075\004\003\003\060\120\061\044 +\060\042\006\003\125\004\013\023\033\107\154\157\142\141\154\123 +\151\147\156\040\105\103\103\040\122\157\157\164\040\103\101\040 +\055\040\122\065\061\023\060\021\006\003\125\004\012\023\012\107 +\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125 +\004\003\023\012\107\154\157\142\141\154\123\151\147\156\060\036 +\027\015\061\062\061\061\061\063\060\060\060\060\060\060\132\027 +\015\063\070\060\061\061\071\060\063\061\064\060\067\132\060\120 +\061\044\060\042\006\003\125\004\013\023\033\107\154\157\142\141 +\154\123\151\147\156\040\105\103\103\040\122\157\157\164\040\103 +\101\040\055\040\122\065\061\023\060\021\006\003\125\004\012\023 +\012\107\154\157\142\141\154\123\151\147\156\061\023\060\021\006 +\003\125\004\003\023\012\107\154\157\142\141\154\123\151\147\156 +\060\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053 +\201\004\000\042\003\142\000\004\107\105\016\226\373\175\135\277 +\351\071\321\041\370\237\013\266\325\173\036\222\072\110\131\034 +\360\142\061\055\300\172\050\376\032\247\134\263\266\314\227\347 +\105\324\130\372\321\167\155\103\242\300\207\145\064\012\037\172 +\335\353\074\063\241\305\235\115\244\157\101\225\070\177\311\036 +\204\353\321\236\111\222\207\224\207\014\072\205\112\146\237\235 +\131\223\115\227\141\006\206\112\243\102\060\100\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\035\006 +\003\125\035\016\004\026\004\024\075\346\051\110\233\352\007\312 +\041\104\112\046\336\156\336\322\203\320\237\131\060\012\006\010 +\052\206\110\316\075\004\003\003\003\150\000\060\145\002\061\000 +\345\151\022\311\156\333\306\061\272\011\101\341\227\370\373\375 +\232\342\175\022\311\355\174\144\323\313\005\045\213\126\331\240 +\347\136\135\116\013\203\234\133\166\051\240\011\046\041\152\142 +\002\060\161\322\265\217\134\352\073\341\170\011\205\250\165\222 +\073\310\134\375\110\357\015\164\042\250\010\342\156\305\111\316 +\307\014\274\247\141\151\361\367\073\341\052\313\371\053\363\146 +\220\067 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GlobalSign ECC Root CA - R5" +# Issuer: CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R5 +# Serial Number:60:59:49:e0:26:2e:bb:55:f9:0a:77:8a:71:f9:4a:d8:6c +# Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R5 +# Not Valid Before: Tue Nov 13 00:00:00 2012 +# Not Valid After : Tue Jan 19 03:14:07 2038 +# Fingerprint (SHA-256): 17:9F:BC:14:8A:3D:D0:0F:D2:4E:A1:34:58:CC:43:BF:A7:F5:9C:81:82:D7:83:A5:13:F6:EB:EC:10:0C:89:24 +# Fingerprint (SHA1): 1F:24:C6:30:CD:A4:18:EF:20:69:FF:AD:4F:DD:5F:46:3A:1B:69:AA +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign ECC Root CA - R5" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\037\044\306\060\315\244\030\357\040\151\377\255\117\335\137\106 +\072\033\151\252 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\237\255\073\034\002\036\212\272\027\164\070\201\014\242\274\010 +END +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\044\060\042\006\003\125\004\013\023\033\107\154\157 +\142\141\154\123\151\147\156\040\105\103\103\040\122\157\157\164 +\040\103\101\040\055\040\122\065\061\023\060\021\006\003\125\004 +\012\023\012\107\154\157\142\141\154\123\151\147\156\061\023\060 +\021\006\003\125\004\003\023\012\107\154\157\142\141\154\123\151 +\147\156 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\140\131\111\340\046\056\273\125\371\012\167\212\161\371 +\112\330\154 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Staat der Nederlanden Root CA - G3" +# +# Issuer: CN=Staat der Nederlanden Root CA - G3,O=Staat der Nederlanden,C=NL +# Serial Number: 10003001 (0x98a239) +# Subject: CN=Staat der Nederlanden Root CA - G3,O=Staat der Nederlanden,C=NL +# Not Valid Before: Thu Nov 14 11:28:42 2013 +# Not Valid After : Mon Nov 13 23:00:00 2028 +# Fingerprint (SHA-256): 3C:4F:B0:B9:5A:B8:B3:00:32:F4:32:B8:6F:53:5F:E1:72:C1:85:D0:FD:39:86:58:37:CF:36:18:7F:A6:F4:28 +# Fingerprint (SHA1): D8:EB:6B:41:51:92:59:E0:F3:E7:85:00:C0:3D:B6:88:97:C9:EE:FC +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Staat der Nederlanden Root CA - G3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\116\114\061 +\036\060\034\006\003\125\004\012\014\025\123\164\141\141\164\040 +\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\061 +\053\060\051\006\003\125\004\003\014\042\123\164\141\141\164\040 +\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\040 +\122\157\157\164\040\103\101\040\055\040\107\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\116\114\061 +\036\060\034\006\003\125\004\012\014\025\123\164\141\141\164\040 +\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\061 +\053\060\051\006\003\125\004\003\014\042\123\164\141\141\164\040 +\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\040 +\122\157\157\164\040\103\101\040\055\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\000\230\242\071 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\164\060\202\003\134\240\003\002\001\002\002\004\000 +\230\242\071\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\132\061\013\060\011\006\003\125\004\006\023\002\116 +\114\061\036\060\034\006\003\125\004\012\014\025\123\164\141\141 +\164\040\144\145\162\040\116\145\144\145\162\154\141\156\144\145 +\156\061\053\060\051\006\003\125\004\003\014\042\123\164\141\141 +\164\040\144\145\162\040\116\145\144\145\162\154\141\156\144\145 +\156\040\122\157\157\164\040\103\101\040\055\040\107\063\060\036 +\027\015\061\063\061\061\061\064\061\061\062\070\064\062\132\027 +\015\062\070\061\061\061\063\062\063\060\060\060\060\132\060\132 +\061\013\060\011\006\003\125\004\006\023\002\116\114\061\036\060 +\034\006\003\125\004\012\014\025\123\164\141\141\164\040\144\145 +\162\040\116\145\144\145\162\154\141\156\144\145\156\061\053\060 +\051\006\003\125\004\003\014\042\123\164\141\141\164\040\144\145 +\162\040\116\145\144\145\162\154\141\156\144\145\156\040\122\157 +\157\164\040\103\101\040\055\040\107\063\060\202\002\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 +\017\000\060\202\002\012\002\202\002\001\000\276\062\242\124\017 +\160\373\054\134\131\353\154\304\244\121\350\205\052\263\314\112 +\064\362\260\137\363\016\307\034\075\123\036\210\010\150\330\157 +\075\255\302\236\314\202\147\007\047\207\150\161\072\237\165\226 +\042\106\005\260\355\255\307\133\236\052\336\234\374\072\306\225 +\247\365\027\147\030\347\057\111\010\014\134\317\346\314\064\355 +\170\373\120\261\334\153\062\360\242\376\266\074\344\354\132\227 +\307\077\036\160\010\060\240\334\305\263\155\157\320\202\162\021 +\253\322\201\150\131\202\027\267\170\222\140\372\314\336\077\204 +\353\215\070\063\220\012\162\043\372\065\314\046\161\061\321\162 +\050\222\331\133\043\155\146\265\155\007\102\353\246\063\316\222 +\333\300\366\154\143\170\315\312\116\075\265\345\122\233\361\276 +\073\346\124\140\260\146\036\011\253\007\376\124\211\021\102\321 +\367\044\272\140\170\032\230\367\311\021\375\026\301\065\032\124 +\165\357\103\323\345\256\116\316\347\173\303\306\116\141\121\113 +\253\232\105\113\241\037\101\275\110\123\025\161\144\013\206\263 +\345\056\276\316\244\033\301\051\204\242\265\313\010\043\166\103 +\042\044\037\027\004\324\156\234\306\374\177\053\146\032\354\212 +\345\326\317\115\365\143\011\267\025\071\326\173\254\353\343\174 +\351\116\374\165\102\310\355\130\225\014\006\102\242\234\367\344 +\160\263\337\162\157\132\067\100\211\330\205\244\327\361\013\336 +\103\031\324\112\130\054\214\212\071\236\277\204\207\361\026\073 +\066\014\351\323\264\312\154\031\101\122\011\241\035\260\152\277 +\202\357\160\121\041\062\334\005\166\214\313\367\144\344\003\120 +\257\214\221\147\253\305\362\356\130\330\336\276\367\347\061\317 +\154\311\073\161\301\325\210\265\145\274\300\350\027\027\007\022 +\265\134\322\253\040\223\264\346\202\203\160\066\305\315\243\215 +\255\213\354\243\301\103\207\346\103\342\064\276\225\213\065\355 +\007\071\332\250\035\172\237\066\236\022\260\014\145\022\220\025 +\140\331\046\100\104\343\126\140\245\020\324\152\074\375\101\334 +\016\132\107\266\357\227\141\165\117\331\376\307\262\035\324\355 +\135\111\263\251\152\313\146\204\023\325\134\240\334\337\156\167 +\006\321\161\165\310\127\157\257\017\167\133\002\003\001\000\001 +\243\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\035\006\003\125\035\016\004\026\004\024 +\124\255\372\307\222\127\256\312\065\234\056\022\373\344\272\135 +\040\334\224\127\060\015\006\011\052\206\110\206\367\015\001\001 +\013\005\000\003\202\002\001\000\060\231\235\005\062\310\136\016 +\073\230\001\072\212\244\347\007\367\172\370\347\232\337\120\103 +\123\227\052\075\312\074\107\230\056\341\025\173\361\222\363\141 +\332\220\045\026\145\300\237\124\135\016\003\073\133\167\002\234 +\204\266\015\230\137\064\335\073\143\302\303\050\201\302\234\051 +\056\051\342\310\303\001\362\063\352\052\252\314\011\010\367\145 +\147\306\315\337\323\266\053\247\275\314\321\016\160\137\270\043 +\321\313\221\116\012\364\310\172\345\331\143\066\301\324\337\374 +\042\227\367\140\135\352\051\057\130\262\275\130\275\215\226\117 +\020\165\277\110\173\075\121\207\241\074\164\042\302\374\007\177 +\200\334\304\254\376\152\301\160\060\260\351\216\151\342\054\151 +\201\224\011\272\335\376\115\300\203\214\224\130\300\106\040\257 +\234\037\002\370\065\125\111\057\106\324\300\360\240\226\002\017 +\063\305\161\363\236\043\175\224\267\375\072\323\011\203\006\041 +\375\140\075\256\062\300\322\356\215\246\360\347\264\202\174\012 +\314\160\311\171\200\370\376\114\367\065\204\031\212\061\373\012 +\331\327\177\233\360\242\232\153\303\005\112\355\101\140\024\060 +\321\252\021\102\156\323\043\002\004\013\306\145\335\335\122\167 +\332\201\153\262\250\372\001\070\271\226\352\052\154\147\227\211 +\224\236\274\341\124\325\344\152\170\357\112\275\053\232\075\100 +\176\306\300\165\322\156\373\150\060\354\354\213\235\371\111\065 +\232\032\054\331\263\225\071\325\036\222\367\246\271\145\057\345 +\075\155\072\110\114\010\334\344\050\022\050\276\175\065\134\352 +\340\026\176\023\033\152\327\076\327\236\374\055\165\262\301\024 +\325\043\003\333\133\157\013\076\170\057\015\336\063\215\026\267 +\110\347\203\232\201\017\173\301\103\115\125\004\027\070\112\121 +\325\131\242\211\164\323\237\276\036\113\327\306\155\267\210\044 +\157\140\221\244\202\205\133\126\101\274\320\104\253\152\023\276 +\321\054\130\267\022\063\130\262\067\143\334\023\365\224\035\077 +\100\121\365\117\365\072\355\310\305\353\302\036\035\026\225\172 +\307\176\102\161\223\156\113\025\267\060\337\252\355\127\205\110 +\254\035\152\335\071\151\344\341\171\170\276\316\005\277\241\014 +\367\200\173\041\147\047\060\131 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Staat der Nederlanden Root CA - G3" +# Issuer: CN=Staat der Nederlanden Root CA - G3,O=Staat der Nederlanden,C=NL +# Serial Number: 10003001 (0x98a239) +# Subject: CN=Staat der Nederlanden Root CA - G3,O=Staat der Nederlanden,C=NL +# Not Valid Before: Thu Nov 14 11:28:42 2013 +# Not Valid After : Mon Nov 13 23:00:00 2028 +# Fingerprint (SHA-256): 3C:4F:B0:B9:5A:B8:B3:00:32:F4:32:B8:6F:53:5F:E1:72:C1:85:D0:FD:39:86:58:37:CF:36:18:7F:A6:F4:28 +# Fingerprint (SHA1): D8:EB:6B:41:51:92:59:E0:F3:E7:85:00:C0:3D:B6:88:97:C9:EE:FC +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Staat der Nederlanden Root CA - G3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\330\353\153\101\121\222\131\340\363\347\205\000\300\075\266\210 +\227\311\356\374 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\013\106\147\007\333\020\057\031\214\065\120\140\321\013\364\067 +END +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\116\114\061 +\036\060\034\006\003\125\004\012\014\025\123\164\141\141\164\040 +\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\061 +\053\060\051\006\003\125\004\003\014\042\123\164\141\141\164\040 +\144\145\162\040\116\145\144\145\162\154\141\156\144\145\156\040 +\122\157\157\164\040\103\101\040\055\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\000\230\242\071 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "IdenTrust Commercial Root CA 1" +# +# Issuer: CN=IdenTrust Commercial Root CA 1,O=IdenTrust,C=US +# Serial Number:0a:01:42:80:00:00:01:45:23:c8:44:b5:00:00:00:02 +# Subject: CN=IdenTrust Commercial Root CA 1,O=IdenTrust,C=US +# Not Valid Before: Thu Jan 16 18:12:23 2014 +# Not Valid After : Mon Jan 16 18:12:23 2034 +# Fingerprint (SHA-256): 5D:56:49:9B:E4:D2:E0:8B:CF:CA:D0:8A:3E:38:72:3D:50:50:3B:DE:70:69:48:E4:2F:55:60:30:19:E5:28:AE +# Fingerprint (SHA1): DF:71:7E:AA:4A:D9:4E:C9:55:84:99:60:2D:48:DE:5F:BC:F0:3A:25 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "IdenTrust Commercial Root CA 1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\112\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\111\144\145\156\124\162 +\165\163\164\061\047\060\045\006\003\125\004\003\023\036\111\144 +\145\156\124\162\165\163\164\040\103\157\155\155\145\162\143\151 +\141\154\040\122\157\157\164\040\103\101\040\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\112\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\111\144\145\156\124\162 +\165\163\164\061\047\060\045\006\003\125\004\003\023\036\111\144 +\145\156\124\162\165\163\164\040\103\157\155\155\145\162\143\151 +\141\154\040\122\157\157\164\040\103\101\040\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\012\001\102\200\000\000\001\105\043\310\104\265\000\000 +\000\002 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\140\060\202\003\110\240\003\002\001\002\002\020\012 +\001\102\200\000\000\001\105\043\310\104\265\000\000\000\002\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\112 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022\060 +\020\006\003\125\004\012\023\011\111\144\145\156\124\162\165\163 +\164\061\047\060\045\006\003\125\004\003\023\036\111\144\145\156 +\124\162\165\163\164\040\103\157\155\155\145\162\143\151\141\154 +\040\122\157\157\164\040\103\101\040\061\060\036\027\015\061\064 +\060\061\061\066\061\070\061\062\062\063\132\027\015\063\064\060 +\061\061\066\061\070\061\062\062\063\132\060\112\061\013\060\011 +\006\003\125\004\006\023\002\125\123\061\022\060\020\006\003\125 +\004\012\023\011\111\144\145\156\124\162\165\163\164\061\047\060 +\045\006\003\125\004\003\023\036\111\144\145\156\124\162\165\163 +\164\040\103\157\155\155\145\162\143\151\141\154\040\122\157\157 +\164\040\103\101\040\061\060\202\002\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 +\002\012\002\202\002\001\000\247\120\031\336\077\231\075\324\063 +\106\361\157\121\141\202\262\251\117\217\147\211\135\204\331\123 +\335\014\050\331\327\360\377\256\225\103\162\231\371\265\135\174 +\212\301\102\341\061\120\164\321\201\015\174\315\233\041\253\103 +\342\254\255\136\206\156\363\011\212\037\132\062\275\242\353\224 +\371\350\134\012\354\377\230\322\257\161\263\264\123\237\116\207 +\357\222\274\275\354\117\062\060\210\113\027\136\127\304\123\302 +\366\002\227\215\331\142\053\277\044\037\142\215\337\303\270\051 +\113\111\170\074\223\140\210\042\374\231\332\066\310\302\242\324 +\054\124\000\147\065\156\163\277\002\130\360\244\335\345\260\242 +\046\172\312\340\066\245\031\026\365\375\267\357\256\077\100\365 +\155\132\004\375\316\064\312\044\334\164\043\033\135\063\023\022 +\135\304\001\045\366\060\335\002\135\237\340\325\107\275\264\353 +\033\241\273\111\111\330\237\133\002\363\212\344\044\220\344\142 +\117\117\301\257\213\016\164\027\250\321\162\210\152\172\001\111 +\314\264\106\171\306\027\261\332\230\036\007\131\372\165\041\205 +\145\335\220\126\316\373\253\245\140\235\304\235\371\122\260\213 +\275\207\371\217\053\043\012\043\166\073\367\063\341\311\000\363 +\151\371\113\242\340\116\274\176\223\071\204\007\367\104\160\176 +\376\007\132\345\261\254\321\030\314\362\065\345\111\111\010\312 +\126\311\075\373\017\030\175\213\073\301\023\302\115\217\311\117 +\016\067\351\037\241\016\152\337\142\056\313\065\006\121\171\054 +\310\045\070\364\372\113\247\211\134\234\322\343\015\071\206\112 +\164\174\325\131\207\302\077\116\014\134\122\364\075\367\122\202 +\361\352\243\254\375\111\064\032\050\363\101\210\072\023\356\350 +\336\377\231\035\137\272\313\350\036\362\271\120\140\300\061\323 +\163\345\357\276\240\355\063\013\164\276\040\040\304\147\154\360 +\010\003\172\125\200\177\106\116\226\247\364\036\076\341\366\330 +\011\341\063\144\053\143\327\062\136\237\371\300\173\017\170\157 +\227\274\223\232\371\234\022\220\170\172\200\207\025\327\162\164 +\234\125\164\170\261\272\341\156\160\004\272\117\240\272\150\303 +\173\377\061\360\163\075\075\224\052\261\013\101\016\240\376\115 +\210\145\153\171\063\264\327\002\003\001\000\001\243\102\060\100 +\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\035\006\003\125\035\016\004\026\004\024\355\104\031\300 +\323\360\006\213\356\244\173\276\102\347\046\124\310\216\066\166 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003 +\202\002\001\000\015\256\220\062\366\246\113\174\104\166\031\141 +\036\047\050\315\136\124\357\045\274\343\010\220\371\051\327\256 +\150\010\341\224\000\130\357\056\056\176\123\122\214\266\134\007 +\352\210\272\231\213\120\224\327\202\200\337\141\011\000\223\255 +\015\024\346\316\301\362\067\224\170\260\137\234\263\242\163\270 +\217\005\223\070\315\215\076\260\270\373\300\317\261\362\354\055 +\055\033\314\354\252\232\263\252\140\202\033\055\073\303\204\075 +\127\212\226\036\234\165\270\323\060\315\140\010\203\220\323\216 +\124\361\115\146\300\135\164\003\100\243\356\205\176\302\037\167 +\234\006\350\301\247\030\135\122\225\355\311\335\045\236\155\372 +\251\355\243\072\064\320\131\173\332\355\120\363\065\277\355\353 +\024\115\061\307\140\364\332\361\207\234\342\110\342\306\305\067 +\373\006\020\372\165\131\146\061\107\051\332\166\232\034\351\202 +\256\357\232\271\121\367\210\043\232\151\225\142\074\345\125\200 +\066\327\124\002\377\361\271\135\316\324\043\157\330\105\204\112 +\133\145\357\211\014\335\024\247\040\313\030\245\045\264\015\371 +\001\360\242\322\364\000\310\164\216\241\052\110\216\145\333\023 +\304\342\045\027\175\353\276\207\133\027\040\124\121\223\112\123 +\003\013\354\135\312\063\355\142\375\105\307\057\133\334\130\240 +\200\071\346\372\327\376\023\024\246\355\075\224\112\102\164\324 +\303\167\131\163\315\217\106\276\125\070\357\372\350\221\062\352 +\227\130\004\042\336\070\303\314\274\155\311\063\072\152\012\151 +\077\240\310\352\162\217\214\143\206\043\275\155\074\226\236\225 +\340\111\114\252\242\271\052\033\234\066\201\170\355\303\350\106 +\342\046\131\104\165\036\331\165\211\121\315\020\204\235\141\140 +\313\135\371\227\042\115\216\230\346\343\177\366\133\273\256\315 +\312\112\201\153\136\013\363\121\341\164\053\351\176\047\247\331 +\231\111\116\370\245\200\333\045\017\034\143\142\212\311\063\147 +\153\074\020\203\306\255\336\250\315\026\216\215\360\007\067\161 +\237\362\253\374\101\365\301\213\354\000\067\135\011\345\116\200 +\357\372\261\134\070\006\245\033\112\341\334\070\055\074\334\253 +\037\220\032\325\112\234\356\321\160\154\314\356\364\127\370\030 +\272\204\156\207 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "IdenTrust Commercial Root CA 1" +# Issuer: CN=IdenTrust Commercial Root CA 1,O=IdenTrust,C=US +# Serial Number:0a:01:42:80:00:00:01:45:23:c8:44:b5:00:00:00:02 +# Subject: CN=IdenTrust Commercial Root CA 1,O=IdenTrust,C=US +# Not Valid Before: Thu Jan 16 18:12:23 2014 +# Not Valid After : Mon Jan 16 18:12:23 2034 +# Fingerprint (SHA-256): 5D:56:49:9B:E4:D2:E0:8B:CF:CA:D0:8A:3E:38:72:3D:50:50:3B:DE:70:69:48:E4:2F:55:60:30:19:E5:28:AE +# Fingerprint (SHA1): DF:71:7E:AA:4A:D9:4E:C9:55:84:99:60:2D:48:DE:5F:BC:F0:3A:25 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "IdenTrust Commercial Root CA 1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\337\161\176\252\112\331\116\311\125\204\231\140\055\110\336\137 +\274\360\072\045 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\263\076\167\163\165\356\240\323\343\176\111\143\111\131\273\307 +END +CKA_ISSUER MULTILINE_OCTAL +\060\112\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\111\144\145\156\124\162 +\165\163\164\061\047\060\045\006\003\125\004\003\023\036\111\144 +\145\156\124\162\165\163\164\040\103\157\155\155\145\162\143\151 +\141\154\040\122\157\157\164\040\103\101\040\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\012\001\102\200\000\000\001\105\043\310\104\265\000\000 +\000\002 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "IdenTrust Public Sector Root CA 1" +# +# Issuer: CN=IdenTrust Public Sector Root CA 1,O=IdenTrust,C=US +# Serial Number:0a:01:42:80:00:00:01:45:23:cf:46:7c:00:00:00:02 +# Subject: CN=IdenTrust Public Sector Root CA 1,O=IdenTrust,C=US +# Not Valid Before: Thu Jan 16 17:53:32 2014 +# Not Valid After : Mon Jan 16 17:53:32 2034 +# Fingerprint (SHA-256): 30:D0:89:5A:9A:44:8A:26:20:91:63:55:22:D1:F5:20:10:B5:86:7A:CA:E1:2C:78:EF:95:8F:D4:F4:38:9F:2F +# Fingerprint (SHA1): BA:29:41:60:77:98:3F:F4:F3:EF:F2:31:05:3B:2E:EA:6D:4D:45:FD +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "IdenTrust Public Sector Root CA 1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\111\144\145\156\124\162 +\165\163\164\061\052\060\050\006\003\125\004\003\023\041\111\144 +\145\156\124\162\165\163\164\040\120\165\142\154\151\143\040\123 +\145\143\164\157\162\040\122\157\157\164\040\103\101\040\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\111\144\145\156\124\162 +\165\163\164\061\052\060\050\006\003\125\004\003\023\041\111\144 +\145\156\124\162\165\163\164\040\120\165\142\154\151\143\040\123 +\145\143\164\157\162\040\122\157\157\164\040\103\101\040\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\012\001\102\200\000\000\001\105\043\317\106\174\000\000 +\000\002 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\146\060\202\003\116\240\003\002\001\002\002\020\012 +\001\102\200\000\000\001\105\043\317\106\174\000\000\000\002\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\115 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022\060 +\020\006\003\125\004\012\023\011\111\144\145\156\124\162\165\163 +\164\061\052\060\050\006\003\125\004\003\023\041\111\144\145\156 +\124\162\165\163\164\040\120\165\142\154\151\143\040\123\145\143 +\164\157\162\040\122\157\157\164\040\103\101\040\061\060\036\027 +\015\061\064\060\061\061\066\061\067\065\063\063\062\132\027\015 +\063\064\060\061\061\066\061\067\065\063\063\062\132\060\115\061 +\013\060\011\006\003\125\004\006\023\002\125\123\061\022\060\020 +\006\003\125\004\012\023\011\111\144\145\156\124\162\165\163\164 +\061\052\060\050\006\003\125\004\003\023\041\111\144\145\156\124 +\162\165\163\164\040\120\165\142\154\151\143\040\123\145\143\164 +\157\162\040\122\157\157\164\040\103\101\040\061\060\202\002\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\002\017\000\060\202\002\012\002\202\002\001\000\266\042\224 +\374\244\110\257\350\107\153\012\373\047\166\344\362\077\212\073 +\172\112\054\061\052\214\215\260\251\303\061\153\250\167\166\204 +\046\266\254\201\102\015\010\353\125\130\273\172\370\274\145\175 +\362\240\155\213\250\107\351\142\166\036\021\356\010\024\321\262 +\104\026\364\352\320\372\036\057\136\333\313\163\101\256\274\000 +\260\112\053\100\262\254\341\073\113\302\055\235\344\241\233\354 +\032\072\036\360\010\263\320\344\044\065\007\237\234\264\311\122 +\155\333\007\312\217\265\133\360\203\363\117\307\055\245\310\255 +\313\225\040\244\061\050\127\130\132\344\215\033\232\253\236\015 +\014\362\012\063\071\042\071\012\227\056\363\123\167\271\104\105 +\375\204\313\066\040\201\131\055\232\157\155\110\110\141\312\114 +\337\123\321\257\122\274\104\237\253\057\153\203\162\357\165\200 +\332\006\063\033\135\310\332\143\306\115\315\254\146\061\315\321 +\336\076\207\020\066\341\271\244\172\357\140\120\262\313\312\246 +\126\340\067\257\253\064\023\071\045\350\071\146\344\230\172\252 +\022\230\234\131\146\206\076\255\361\260\312\076\006\017\173\360 +\021\113\067\240\104\155\173\313\250\214\161\364\325\265\221\066 +\314\360\025\306\053\336\121\027\261\227\114\120\075\261\225\131 +\174\005\175\055\041\325\000\277\001\147\242\136\173\246\134\362 +\367\042\361\220\015\223\333\252\104\121\146\314\175\166\003\353 +\152\250\052\070\031\227\166\015\153\212\141\371\274\366\356\166 +\375\160\053\335\051\074\370\012\036\133\102\034\213\126\057\125 +\033\034\241\056\265\307\026\346\370\252\074\222\216\151\266\001 +\301\265\206\235\211\017\013\070\224\124\350\352\334\236\075\045 +\274\123\046\355\325\253\071\252\305\100\114\124\253\262\264\331 +\331\370\327\162\333\034\274\155\275\145\137\357\210\065\052\146 +\057\356\366\263\145\360\063\215\174\230\101\151\106\017\103\034 +\151\372\233\265\320\141\152\315\312\113\331\114\220\106\253\025 +\131\241\107\124\051\056\203\050\137\034\302\242\253\162\027\000 +\006\216\105\354\213\342\063\075\177\332\031\104\344\142\162\303 +\337\042\306\362\126\324\335\137\225\162\355\155\137\367\110\003 +\133\375\305\052\240\366\163\043\204\020\033\001\347\002\003\001 +\000\001\243\102\060\100\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026 +\004\024\343\161\340\236\330\247\102\331\333\161\221\153\224\223 +\353\303\243\321\024\243\060\015\006\011\052\206\110\206\367\015 +\001\001\013\005\000\003\202\002\001\000\107\372\335\012\260\021 +\221\070\255\115\135\367\345\016\227\124\031\202\110\207\124\214 +\252\144\231\330\132\376\210\001\305\130\245\231\261\043\124\043 +\267\152\035\040\127\345\001\142\101\027\323\011\333\165\313\156 +\124\220\165\376\032\237\201\012\302\335\327\367\011\320\133\162 +\025\344\036\011\152\075\063\363\041\232\346\025\176\255\121\325 +\015\020\355\175\102\300\217\356\300\232\010\325\101\326\134\016 +\041\151\156\200\141\016\025\300\270\317\305\111\022\122\314\276 +\072\314\324\056\070\005\336\065\375\037\157\270\200\150\230\075 +\115\240\312\100\145\322\163\174\365\213\331\012\225\077\330\077 +\043\155\032\321\052\044\031\331\205\263\027\357\170\156\251\130 +\321\043\323\307\023\355\162\045\177\135\261\163\160\320\177\006 +\227\011\204\051\200\141\035\372\136\377\163\254\240\343\211\270 +\034\161\025\306\336\061\177\022\334\341\155\233\257\347\350\237 +\165\170\114\253\106\073\232\316\277\005\030\135\115\025\074\026 +\232\031\120\004\232\262\232\157\145\213\122\137\074\130\004\050 +\045\300\146\141\061\176\271\340\165\271\032\250\201\326\162\027 +\263\305\003\061\065\021\170\170\242\340\351\060\214\177\200\337 +\130\337\074\272\047\226\342\200\064\155\343\230\323\144\047\254 +\110\176\050\167\134\306\045\141\045\370\205\014\145\372\304\062 +\057\245\230\005\344\370\013\147\026\026\306\202\270\062\031\371 +\371\271\171\334\037\315\353\257\253\016\335\033\333\105\344\172 +\347\002\342\225\135\374\151\360\123\151\141\225\165\171\013\136 +\125\346\070\034\224\251\131\063\236\310\161\164\171\177\121\211 +\266\310\152\270\060\310\152\070\303\156\236\341\067\026\352\005 +\142\114\133\022\107\355\247\264\263\130\126\307\111\363\177\022 +\150\011\061\161\360\155\370\116\107\373\326\205\356\305\130\100 +\031\244\035\247\371\113\103\067\334\150\132\117\317\353\302\144 +\164\336\264\025\331\364\124\124\032\057\034\327\227\161\124\220 +\216\331\040\235\123\053\177\253\217\342\352\060\274\120\067\357 +\361\107\265\175\174\054\004\354\150\235\264\111\104\020\364\162 +\113\034\144\347\374\346\153\220\335\151\175\151\375\000\126\245 +\267\254\266\255\267\312\076\001\357\234 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "IdenTrust Public Sector Root CA 1" +# Issuer: CN=IdenTrust Public Sector Root CA 1,O=IdenTrust,C=US +# Serial Number:0a:01:42:80:00:00:01:45:23:cf:46:7c:00:00:00:02 +# Subject: CN=IdenTrust Public Sector Root CA 1,O=IdenTrust,C=US +# Not Valid Before: Thu Jan 16 17:53:32 2014 +# Not Valid After : Mon Jan 16 17:53:32 2034 +# Fingerprint (SHA-256): 30:D0:89:5A:9A:44:8A:26:20:91:63:55:22:D1:F5:20:10:B5:86:7A:CA:E1:2C:78:EF:95:8F:D4:F4:38:9F:2F +# Fingerprint (SHA1): BA:29:41:60:77:98:3F:F4:F3:EF:F2:31:05:3B:2E:EA:6D:4D:45:FD +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "IdenTrust Public Sector Root CA 1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\272\051\101\140\167\230\077\364\363\357\362\061\005\073\056\352 +\155\115\105\375 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\067\006\245\260\374\211\235\272\364\153\214\032\144\315\325\272 +END +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\111\144\145\156\124\162 +\165\163\164\061\052\060\050\006\003\125\004\003\023\041\111\144 +\145\156\124\162\165\163\164\040\120\165\142\154\151\143\040\123 +\145\143\164\157\162\040\122\157\157\164\040\103\101\040\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\012\001\102\200\000\000\001\105\043\317\106\174\000\000 +\000\002 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Entrust Root Certification Authority - G2" +# +# Issuer: CN=Entrust Root Certification Authority - G2,OU="(c) 2009 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Serial Number: 1246989352 (0x4a538c28) +# Subject: CN=Entrust Root Certification Authority - G2,OU="(c) 2009 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Not Valid Before: Tue Jul 07 17:25:54 2009 +# Not Valid After : Sat Dec 07 17:55:54 2030 +# Fingerprint (SHA-256): 43:DF:57:74:B0:3E:7F:EF:5F:E4:0D:93:1A:7B:ED:F1:BB:2E:6B:42:73:8C:4E:6D:38:41:10:3D:3A:A7:F3:39 +# Fingerprint (SHA1): 8C:F4:27:FD:79:0C:3A:D1:66:06:8D:E8:1E:57:EF:BB:93:22:72:D4 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust Root Certification Authority - G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\276\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\060\071\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\062\060 +\060\006\003\125\004\003\023\051\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107 +\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\276\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\060\071\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\062\060 +\060\006\003\125\004\003\023\051\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107 +\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\112\123\214\050 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\076\060\202\003\046\240\003\002\001\002\002\004\112 +\123\214\050\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\201\276\061\013\060\011\006\003\125\004\006\023\002 +\125\123\061\026\060\024\006\003\125\004\012\023\015\105\156\164 +\162\165\163\164\054\040\111\156\143\056\061\050\060\046\006\003 +\125\004\013\023\037\123\145\145\040\167\167\167\056\145\156\164 +\162\165\163\164\056\156\145\164\057\154\145\147\141\154\055\164 +\145\162\155\163\061\071\060\067\006\003\125\004\013\023\060\050 +\143\051\040\062\060\060\071\040\105\156\164\162\165\163\164\054 +\040\111\156\143\056\040\055\040\146\157\162\040\141\165\164\150 +\157\162\151\172\145\144\040\165\163\145\040\157\156\154\171\061 +\062\060\060\006\003\125\004\003\023\051\105\156\164\162\165\163 +\164\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141 +\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040\055 +\040\107\062\060\036\027\015\060\071\060\067\060\067\061\067\062 +\065\065\064\132\027\015\063\060\061\062\060\067\061\067\065\065 +\065\064\132\060\201\276\061\013\060\011\006\003\125\004\006\023 +\002\125\123\061\026\060\024\006\003\125\004\012\023\015\105\156 +\164\162\165\163\164\054\040\111\156\143\056\061\050\060\046\006 +\003\125\004\013\023\037\123\145\145\040\167\167\167\056\145\156 +\164\162\165\163\164\056\156\145\164\057\154\145\147\141\154\055 +\164\145\162\155\163\061\071\060\067\006\003\125\004\013\023\060 +\050\143\051\040\062\060\060\071\040\105\156\164\162\165\163\164 +\054\040\111\156\143\056\040\055\040\146\157\162\040\141\165\164 +\150\157\162\151\172\145\144\040\165\163\145\040\157\156\154\171 +\061\062\060\060\006\003\125\004\003\023\051\105\156\164\162\165 +\163\164\040\122\157\157\164\040\103\145\162\164\151\146\151\143 +\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040 +\055\040\107\062\060\202\001\042\060\015\006\011\052\206\110\206 +\367\015\001\001\001\005\000\003\202\001\017\000\060\202\001\012 +\002\202\001\001\000\272\204\266\162\333\236\014\153\342\231\351 +\060\001\247\166\352\062\270\225\101\032\311\332\141\116\130\162 +\317\376\366\202\171\277\163\141\006\012\245\047\330\263\137\323 +\105\116\034\162\326\116\062\362\162\212\017\367\203\031\320\152 +\200\200\000\105\036\260\307\347\232\277\022\127\047\034\243\150 +\057\012\207\275\152\153\016\136\145\363\034\167\325\324\205\215 +\160\041\264\263\062\347\213\242\325\206\071\002\261\270\322\107 +\316\344\311\111\304\073\247\336\373\124\175\127\276\360\350\156 +\302\171\262\072\013\125\342\120\230\026\062\023\134\057\170\126 +\301\302\224\263\362\132\344\047\232\237\044\327\306\354\320\233 +\045\202\343\314\302\304\105\305\214\227\172\006\153\052\021\237 +\251\012\156\110\073\157\333\324\021\031\102\367\217\007\277\365 +\123\137\234\076\364\027\054\346\151\254\116\062\114\142\167\352 +\267\350\345\273\064\274\031\213\256\234\121\347\267\176\265\123 +\261\063\042\345\155\317\160\074\032\372\342\233\147\266\203\364 +\215\245\257\142\114\115\340\130\254\144\064\022\003\370\266\215 +\224\143\044\244\161\002\003\001\000\001\243\102\060\100\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\035\006\003\125\035\016\004\026\004\024\152\162\046\172\320\036 +\357\175\347\073\151\121\324\154\215\237\220\022\146\253\060\015 +\006\011\052\206\110\206\367\015\001\001\013\005\000\003\202\001 +\001\000\171\237\035\226\306\266\171\077\042\215\207\323\207\003 +\004\140\152\153\232\056\131\211\163\021\254\103\321\365\023\377 +\215\071\053\300\362\275\117\160\214\251\057\352\027\304\013\124 +\236\324\033\226\230\063\074\250\255\142\242\000\166\253\131\151 +\156\006\035\176\304\271\104\215\230\257\022\324\141\333\012\031 +\106\107\363\353\367\143\301\100\005\100\245\322\267\364\265\232 +\066\277\251\210\166\210\004\125\004\053\234\207\177\032\067\074 +\176\055\245\032\330\324\211\136\312\275\254\075\154\330\155\257 +\325\363\166\017\315\073\210\070\042\235\154\223\232\304\075\277 +\202\033\145\077\246\017\135\252\374\345\262\025\312\265\255\306 +\274\075\320\204\350\352\006\162\260\115\071\062\170\277\076\021 +\234\013\244\235\232\041\363\360\233\013\060\170\333\301\334\207 +\103\376\274\143\232\312\305\302\034\311\307\215\377\073\022\130 +\010\346\266\075\354\172\054\116\373\203\226\316\014\074\151\207 +\124\163\244\163\302\223\377\121\020\254\025\124\001\330\374\005 +\261\211\241\177\164\203\232\111\327\334\116\173\212\110\157\213 +\105\366 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +# For Server Distrust After: Sat Nov 30 23:59:59 2024 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\061\061\063\060\062\063\065\071\065\071\132 +END +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Entrust Root Certification Authority - G2" +# Issuer: CN=Entrust Root Certification Authority - G2,OU="(c) 2009 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Serial Number: 1246989352 (0x4a538c28) +# Subject: CN=Entrust Root Certification Authority - G2,OU="(c) 2009 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Not Valid Before: Tue Jul 07 17:25:54 2009 +# Not Valid After : Sat Dec 07 17:55:54 2030 +# Fingerprint (SHA-256): 43:DF:57:74:B0:3E:7F:EF:5F:E4:0D:93:1A:7B:ED:F1:BB:2E:6B:42:73:8C:4E:6D:38:41:10:3D:3A:A7:F3:39 +# Fingerprint (SHA1): 8C:F4:27:FD:79:0C:3A:D1:66:06:8D:E8:1E:57:EF:BB:93:22:72:D4 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust Root Certification Authority - G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\214\364\047\375\171\014\072\321\146\006\215\350\036\127\357\273 +\223\042\162\324 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\113\342\311\221\226\145\014\364\016\132\223\222\240\012\376\262 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\276\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\060\071\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\062\060 +\060\006\003\125\004\003\023\051\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107 +\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\112\123\214\050 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Entrust Root Certification Authority - EC1" +# +# Issuer: CN=Entrust Root Certification Authority - EC1,OU="(c) 2012 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Serial Number:00:a6:8b:79:29:00:00:00:00:50:d0:91:f9 +# Subject: CN=Entrust Root Certification Authority - EC1,OU="(c) 2012 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Not Valid Before: Tue Dec 18 15:25:36 2012 +# Not Valid After : Fri Dec 18 15:55:36 2037 +# Fingerprint (SHA-256): 02:ED:0E:B2:8C:14:DA:45:16:5C:56:67:91:70:0D:64:51:D7:FB:56:F0:B2:AB:1D:3B:8E:B0:70:E5:6E:DF:F5 +# Fingerprint (SHA1): 20:D8:06:40:DF:9B:25:F5:12:25:3A:11:EA:F7:59:8A:EB:14:B5:47 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust Root Certification Authority - EC1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\277\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\061\062\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\063\060 +\061\006\003\125\004\003\023\052\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\105 +\103\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\277\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\061\062\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\063\060 +\061\006\003\125\004\003\023\052\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\105 +\103\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\000\246\213\171\051\000\000\000\000\120\320\221\371 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\371\060\202\002\200\240\003\002\001\002\002\015\000 +\246\213\171\051\000\000\000\000\120\320\221\371\060\012\006\010 +\052\206\110\316\075\004\003\003\060\201\277\061\013\060\011\006 +\003\125\004\006\023\002\125\123\061\026\060\024\006\003\125\004 +\012\023\015\105\156\164\162\165\163\164\054\040\111\156\143\056 +\061\050\060\046\006\003\125\004\013\023\037\123\145\145\040\167 +\167\167\056\145\156\164\162\165\163\164\056\156\145\164\057\154 +\145\147\141\154\055\164\145\162\155\163\061\071\060\067\006\003 +\125\004\013\023\060\050\143\051\040\062\060\061\062\040\105\156 +\164\162\165\163\164\054\040\111\156\143\056\040\055\040\146\157 +\162\040\141\165\164\150\157\162\151\172\145\144\040\165\163\145 +\040\157\156\154\171\061\063\060\061\006\003\125\004\003\023\052 +\105\156\164\162\165\163\164\040\122\157\157\164\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171\040\055\040\105\103\061\060\036\027\015\061\062 +\061\062\061\070\061\065\062\065\063\066\132\027\015\063\067\061 +\062\061\070\061\065\065\065\063\066\132\060\201\277\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\026\060\024\006\003 +\125\004\012\023\015\105\156\164\162\165\163\164\054\040\111\156 +\143\056\061\050\060\046\006\003\125\004\013\023\037\123\145\145 +\040\167\167\167\056\145\156\164\162\165\163\164\056\156\145\164 +\057\154\145\147\141\154\055\164\145\162\155\163\061\071\060\067 +\006\003\125\004\013\023\060\050\143\051\040\062\060\061\062\040 +\105\156\164\162\165\163\164\054\040\111\156\143\056\040\055\040 +\146\157\162\040\141\165\164\150\157\162\151\172\145\144\040\165 +\163\145\040\157\156\154\171\061\063\060\061\006\003\125\004\003 +\023\052\105\156\164\162\165\163\164\040\122\157\157\164\040\103 +\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164 +\150\157\162\151\164\171\040\055\040\105\103\061\060\166\060\020 +\006\007\052\206\110\316\075\002\001\006\005\053\201\004\000\042 +\003\142\000\004\204\023\311\320\272\155\101\173\342\154\320\353 +\125\137\146\002\032\044\364\133\211\151\107\343\270\302\175\361 +\362\002\305\237\240\366\133\325\213\006\031\206\117\123\020\155 +\007\044\047\241\240\370\325\107\031\141\114\175\312\223\047\352 +\164\014\357\157\226\011\376\143\354\160\135\066\255\147\167\256 +\311\235\174\125\104\072\242\143\121\037\365\343\142\324\251\107 +\007\076\314\040\243\102\060\100\060\016\006\003\125\035\017\001 +\001\377\004\004\003\002\001\006\060\017\006\003\125\035\023\001 +\001\377\004\005\060\003\001\001\377\060\035\006\003\125\035\016 +\004\026\004\024\267\143\347\032\335\215\351\010\246\125\203\244 +\340\152\120\101\145\021\102\111\060\012\006\010\052\206\110\316 +\075\004\003\003\003\147\000\060\144\002\060\141\171\330\345\102 +\107\337\034\256\123\231\027\266\157\034\175\341\277\021\224\321 +\003\210\165\344\215\211\244\212\167\106\336\155\141\357\002\365 +\373\265\337\314\376\116\377\376\251\346\247\002\060\133\231\327 +\205\067\006\265\173\010\375\353\047\213\112\224\371\341\372\247 +\216\046\010\350\174\222\150\155\163\330\157\046\254\041\002\270 +\231\267\046\101\133\045\140\256\320\110\032\356\006 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +# For Server Distrust After: Sat Nov 30 23:59:59 2024 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\061\061\063\060\062\063\065\071\065\071\132 +END +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Entrust Root Certification Authority - EC1" +# Issuer: CN=Entrust Root Certification Authority - EC1,OU="(c) 2012 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Serial Number:00:a6:8b:79:29:00:00:00:00:50:d0:91:f9 +# Subject: CN=Entrust Root Certification Authority - EC1,OU="(c) 2012 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Not Valid Before: Tue Dec 18 15:25:36 2012 +# Not Valid After : Fri Dec 18 15:55:36 2037 +# Fingerprint (SHA-256): 02:ED:0E:B2:8C:14:DA:45:16:5C:56:67:91:70:0D:64:51:D7:FB:56:F0:B2:AB:1D:3B:8E:B0:70:E5:6E:DF:F5 +# Fingerprint (SHA1): 20:D8:06:40:DF:9B:25:F5:12:25:3A:11:EA:F7:59:8A:EB:14:B5:47 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust Root Certification Authority - EC1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\040\330\006\100\337\233\045\365\022\045\072\021\352\367\131\212 +\353\024\265\107 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\266\176\035\360\130\305\111\154\044\073\075\355\230\030\355\274 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\277\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\061\062\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\063\060 +\061\006\003\125\004\003\023\052\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\105 +\103\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\000\246\213\171\051\000\000\000\000\120\320\221\371 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "CFCA EV ROOT" +# +# Issuer: CN=CFCA EV ROOT,O=China Financial Certification Authority,C=CN +# Serial Number: 407555286 (0x184accd6) +# Subject: CN=CFCA EV ROOT,O=China Financial Certification Authority,C=CN +# Not Valid Before: Wed Aug 08 03:07:01 2012 +# Not Valid After : Mon Dec 31 03:07:01 2029 +# Fingerprint (SHA-256): 5C:C3:D7:8E:4E:1D:5E:45:54:7A:04:E6:87:3E:64:F9:0C:F9:53:6D:1C:CC:2E:F8:00:F3:55:C4:C5:FD:70:FD +# Fingerprint (SHA1): E2:B8:29:4B:55:84:AB:6B:58:C2:90:46:6C:AC:3F:B8:39:8F:84:83 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CFCA EV ROOT" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\126\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\060\060\056\006\003\125\004\012\014\047\103\150\151\156\141\040 +\106\151\156\141\156\143\151\141\154\040\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164 +\171\061\025\060\023\006\003\125\004\003\014\014\103\106\103\101 +\040\105\126\040\122\117\117\124 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\126\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\060\060\056\006\003\125\004\012\014\047\103\150\151\156\141\040 +\106\151\156\141\156\143\151\141\154\040\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164 +\171\061\025\060\023\006\003\125\004\003\014\014\103\106\103\101 +\040\105\126\040\122\117\117\124 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\030\112\314\326 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\215\060\202\003\165\240\003\002\001\002\002\004\030 +\112\314\326\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\126\061\013\060\011\006\003\125\004\006\023\002\103 +\116\061\060\060\056\006\003\125\004\012\014\047\103\150\151\156 +\141\040\106\151\156\141\156\143\151\141\154\040\103\145\162\164 +\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162 +\151\164\171\061\025\060\023\006\003\125\004\003\014\014\103\106 +\103\101\040\105\126\040\122\117\117\124\060\036\027\015\061\062 +\060\070\060\070\060\063\060\067\060\061\132\027\015\062\071\061 +\062\063\061\060\063\060\067\060\061\132\060\126\061\013\060\011 +\006\003\125\004\006\023\002\103\116\061\060\060\056\006\003\125 +\004\012\014\047\103\150\151\156\141\040\106\151\156\141\156\143 +\151\141\154\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\061\025\060\023\006 +\003\125\004\003\014\014\103\106\103\101\040\105\126\040\122\117 +\117\124\060\202\002\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202 +\002\001\000\327\135\153\315\020\077\037\005\131\325\005\115\067 +\261\016\354\230\053\216\025\035\372\223\113\027\202\041\161\020 +\122\327\121\144\160\026\302\125\151\115\216\025\155\237\277\014 +\033\302\340\243\147\326\014\254\317\042\256\257\167\124\052\113 +\114\212\123\122\172\303\356\056\336\263\161\045\301\351\135\075 +\356\241\057\243\367\052\074\311\043\035\152\253\035\241\247\361 +\363\354\240\325\104\317\025\317\162\057\035\143\227\350\231\371 +\375\223\244\124\200\114\122\324\122\253\056\111\337\220\315\270 +\137\276\077\336\241\312\115\040\324\045\350\204\051\123\267\261 +\210\037\377\372\332\220\237\012\251\055\101\077\261\361\030\051 +\356\026\131\054\064\111\032\250\006\327\250\210\322\003\162\172 +\062\342\352\150\115\156\054\226\145\173\312\131\372\362\342\335 +\356\060\054\373\314\106\254\304\143\353\157\177\066\053\064\163 +\022\224\177\337\314\046\236\361\162\135\120\145\131\217\151\263 +\207\136\062\157\303\030\212\265\225\217\260\172\067\336\132\105 +\073\307\066\341\357\147\321\071\323\227\133\163\142\031\110\055 +\207\034\006\373\164\230\040\111\163\360\005\322\033\261\240\243 +\267\033\160\323\210\151\271\132\326\070\364\142\334\045\213\170 +\277\370\350\176\270\134\311\225\117\137\247\055\271\040\153\317 +\153\335\365\015\364\202\267\364\262\146\056\020\050\366\227\132 +\173\226\026\217\001\031\055\154\156\177\071\130\006\144\203\001 +\203\203\303\115\222\335\062\306\207\244\067\351\026\316\252\055 +\150\257\012\201\145\072\160\301\233\255\115\155\124\312\052\055 +\113\205\033\263\200\346\160\105\015\153\136\065\360\177\073\270 +\234\344\004\160\211\022\045\223\332\012\231\042\140\152\143\140 +\116\166\006\230\116\275\203\255\035\130\212\045\205\322\307\145 +\036\055\216\306\337\266\306\341\177\212\004\041\025\051\164\360 +\076\234\220\235\014\056\361\212\076\132\252\014\011\036\307\325 +\074\243\355\227\303\036\064\372\070\371\010\016\343\300\135\053 +\203\321\126\152\311\266\250\124\123\056\170\062\147\075\202\177 +\164\320\373\341\266\005\140\271\160\333\216\013\371\023\130\157 +\161\140\020\122\020\271\301\101\011\357\162\037\147\061\170\377 +\226\005\215\002\003\001\000\001\243\143\060\141\060\037\006\003 +\125\035\043\004\030\060\026\200\024\343\376\055\375\050\320\013 +\265\272\266\242\304\277\006\252\005\214\223\373\057\060\017\006 +\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060\035 +\006\003\125\035\016\004\026\004\024\343\376\055\375\050\320\013 +\265\272\266\242\304\277\006\252\005\214\223\373\057\060\015\006 +\011\052\206\110\206\367\015\001\001\013\005\000\003\202\002\001 +\000\045\306\272\153\353\207\313\336\202\071\226\075\360\104\247 +\153\204\163\003\336\235\053\117\272\040\177\274\170\262\317\227 +\260\033\234\363\327\171\056\365\110\266\322\373\027\210\346\323 +\172\077\355\123\023\320\342\057\152\171\313\000\043\050\346\036 +\067\127\065\211\204\302\166\117\064\066\255\147\303\316\101\006 +\210\305\367\356\330\032\270\326\013\177\120\377\223\252\027\113 +\214\354\355\122\140\262\244\006\352\116\353\364\153\031\375\353 +\365\032\340\045\052\232\334\307\101\066\367\310\164\005\204\071 +\225\071\326\013\073\244\047\372\010\330\134\036\370\004\140\122 +\021\050\050\003\377\357\123\146\000\245\112\064\026\146\174\375 +\011\244\256\236\147\032\157\101\013\153\006\023\233\217\206\161 +\005\264\057\215\211\146\063\051\166\124\232\021\370\047\372\262 +\077\221\340\316\015\033\363\060\032\255\277\042\135\033\323\277 +\045\005\115\341\222\032\177\231\237\074\104\223\312\324\100\111 +\154\200\207\327\004\072\303\062\122\065\016\126\370\245\335\175 +\304\213\015\021\037\123\313\036\262\027\266\150\167\132\340\324 +\313\310\007\256\365\072\056\216\067\267\320\001\113\103\051\167 +\214\071\227\217\202\132\370\121\345\211\240\030\347\150\177\135 +\012\056\373\243\107\016\075\246\043\172\306\001\307\217\310\136 +\277\155\200\126\276\212\044\272\063\352\237\341\062\021\236\361 +\322\117\200\366\033\100\257\070\236\021\120\171\163\022\022\315 +\346\154\235\054\210\162\074\060\201\006\221\042\352\131\255\332 +\031\056\042\302\215\271\214\207\340\146\274\163\043\137\041\144 +\143\200\110\365\240\074\030\075\224\310\110\101\035\100\272\136 +\376\376\126\071\241\310\317\136\236\031\144\106\020\332\027\221 +\267\005\200\254\213\231\222\175\347\242\330\007\013\066\047\347 +\110\171\140\212\303\327\023\134\370\162\100\337\112\313\317\231 +\000\012\000\013\021\225\332\126\105\003\210\012\237\147\320\325 +\171\261\250\215\100\155\015\302\172\100\372\363\137\144\107\222 +\313\123\271\273\131\316\117\375\320\025\123\001\330\337\353\331 +\346\166\357\320\043\273\073\251\171\263\325\002\051\315\211\243 +\226\017\112\065\347\116\102\300\165\315\007\317\346\054\353\173 +\056 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CFCA EV ROOT" +# Issuer: CN=CFCA EV ROOT,O=China Financial Certification Authority,C=CN +# Serial Number: 407555286 (0x184accd6) +# Subject: CN=CFCA EV ROOT,O=China Financial Certification Authority,C=CN +# Not Valid Before: Wed Aug 08 03:07:01 2012 +# Not Valid After : Mon Dec 31 03:07:01 2029 +# Fingerprint (SHA-256): 5C:C3:D7:8E:4E:1D:5E:45:54:7A:04:E6:87:3E:64:F9:0C:F9:53:6D:1C:CC:2E:F8:00:F3:55:C4:C5:FD:70:FD +# Fingerprint (SHA1): E2:B8:29:4B:55:84:AB:6B:58:C2:90:46:6C:AC:3F:B8:39:8F:84:83 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CFCA EV ROOT" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\342\270\051\113\125\204\253\153\130\302\220\106\154\254\077\270 +\071\217\204\203 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\164\341\266\355\046\172\172\104\060\063\224\253\173\047\201\060 +END +CKA_ISSUER MULTILINE_OCTAL +\060\126\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\060\060\056\006\003\125\004\012\014\047\103\150\151\156\141\040 +\106\151\156\141\156\143\151\141\154\040\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164 +\171\061\025\060\023\006\003\125\004\003\014\014\103\106\103\101 +\040\105\126\040\122\117\117\124 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\030\112\314\326 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "OISTE WISeKey Global Root GB CA" +# +# Issuer: CN=OISTE WISeKey Global Root GB CA,OU=OISTE Foundation Endorsed,O=WISeKey,C=CH +# Serial Number:76:b1:20:52:74:f0:85:87:46:b3:f8:23:1a:f6:c2:c0 +# Subject: CN=OISTE WISeKey Global Root GB CA,OU=OISTE Foundation Endorsed,O=WISeKey,C=CH +# Not Valid Before: Mon Dec 01 15:00:32 2014 +# Not Valid After : Thu Dec 01 15:10:31 2039 +# Fingerprint (SHA-256): 6B:9C:08:E8:6E:B0:F7:67:CF:AD:65:CD:98:B6:21:49:E5:49:4A:67:F5:84:5E:7B:D1:ED:01:9F:27:B8:6B:D6 +# Fingerprint (SHA1): 0F:F9:40:76:18:D3:D7:6A:4B:98:F0:A8:35:9E:0C:FD:27:AC:CC:ED +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "OISTE WISeKey Global Root GB CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\155\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113\145 +\171\061\042\060\040\006\003\125\004\013\023\031\117\111\123\124 +\105\040\106\157\165\156\144\141\164\151\157\156\040\105\156\144 +\157\162\163\145\144\061\050\060\046\006\003\125\004\003\023\037 +\117\111\123\124\105\040\127\111\123\145\113\145\171\040\107\154 +\157\142\141\154\040\122\157\157\164\040\107\102\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\155\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113\145 +\171\061\042\060\040\006\003\125\004\013\023\031\117\111\123\124 +\105\040\106\157\165\156\144\141\164\151\157\156\040\105\156\144 +\157\162\163\145\144\061\050\060\046\006\003\125\004\003\023\037 +\117\111\123\124\105\040\127\111\123\145\113\145\171\040\107\154 +\157\142\141\154\040\122\157\157\164\040\107\102\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\261\040\122\164\360\205\207\106\263\370\043\032\366 +\302\300 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\265\060\202\002\235\240\003\002\001\002\002\020\166 +\261\040\122\164\360\205\207\106\263\370\043\032\366\302\300\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\155 +\061\013\060\011\006\003\125\004\006\023\002\103\110\061\020\060 +\016\006\003\125\004\012\023\007\127\111\123\145\113\145\171\061 +\042\060\040\006\003\125\004\013\023\031\117\111\123\124\105\040 +\106\157\165\156\144\141\164\151\157\156\040\105\156\144\157\162 +\163\145\144\061\050\060\046\006\003\125\004\003\023\037\117\111 +\123\124\105\040\127\111\123\145\113\145\171\040\107\154\157\142 +\141\154\040\122\157\157\164\040\107\102\040\103\101\060\036\027 +\015\061\064\061\062\060\061\061\065\060\060\063\062\132\027\015 +\063\071\061\062\060\061\061\065\061\060\063\061\132\060\155\061 +\013\060\011\006\003\125\004\006\023\002\103\110\061\020\060\016 +\006\003\125\004\012\023\007\127\111\123\145\113\145\171\061\042 +\060\040\006\003\125\004\013\023\031\117\111\123\124\105\040\106 +\157\165\156\144\141\164\151\157\156\040\105\156\144\157\162\163 +\145\144\061\050\060\046\006\003\125\004\003\023\037\117\111\123 +\124\105\040\127\111\123\145\113\145\171\040\107\154\157\142\141 +\154\040\122\157\157\164\040\107\102\040\103\101\060\202\001\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\001\017\000\060\202\001\012\002\202\001\001\000\330\027\267 +\034\112\044\052\326\227\261\312\342\036\373\175\070\357\230\365 +\262\071\230\116\047\270\021\135\173\322\045\224\210\202\025\046 +\152\033\061\273\250\133\041\041\053\330\017\116\237\132\361\261 +\132\344\171\326\062\043\053\341\123\314\231\105\134\173\117\255 +\274\277\207\112\013\113\227\132\250\366\110\354\175\173\015\315 +\041\006\337\236\025\375\101\212\110\267\040\364\241\172\033\127 +\324\135\120\377\272\147\330\043\231\037\310\077\343\336\377\157 +\133\167\261\153\156\270\311\144\367\341\312\101\106\016\051\161 +\320\271\043\374\311\201\137\116\367\157\337\277\204\255\163\144 +\273\267\102\216\151\366\324\166\035\176\235\247\270\127\212\121 +\147\162\327\324\250\270\225\124\100\163\003\366\352\364\353\376 +\050\102\167\077\235\043\033\262\266\075\200\024\007\114\056\117 +\367\325\012\026\015\275\146\103\067\176\043\103\171\303\100\206 +\365\114\051\332\216\232\255\015\245\004\207\210\036\205\343\351 +\123\325\233\310\213\003\143\170\353\340\031\112\156\273\057\153 +\063\144\130\223\255\151\277\217\033\357\202\110\307\002\003\001 +\000\001\243\121\060\117\060\013\006\003\125\035\017\004\004\003 +\002\001\206\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\065 +\017\310\066\143\136\342\243\354\371\073\146\025\316\121\122\343 +\221\232\075\060\020\006\011\053\006\001\004\001\202\067\025\001 +\004\003\002\001\000\060\015\006\011\052\206\110\206\367\015\001 +\001\013\005\000\003\202\001\001\000\100\114\373\207\262\231\201 +\220\176\235\305\260\260\046\315\210\173\053\062\215\156\270\041 +\161\130\227\175\256\067\024\257\076\347\367\232\342\175\366\161 +\230\231\004\252\103\164\170\243\343\111\141\076\163\214\115\224 +\340\371\161\304\266\026\016\123\170\037\326\242\207\057\002\071 +\201\051\074\257\025\230\041\060\376\050\220\000\214\321\341\313 +\372\136\310\375\370\020\106\073\242\170\102\221\027\164\125\012 +\336\120\147\115\146\321\247\377\375\331\300\265\250\243\212\316 +\146\365\017\103\315\247\053\127\173\143\106\152\252\056\122\330 +\364\355\341\155\255\051\220\170\110\272\341\043\252\243\211\354 +\265\253\226\300\264\113\242\035\227\236\172\362\156\100\161\337 +\150\361\145\115\316\174\005\337\123\145\251\245\360\261\227\004 +\160\025\106\003\230\324\322\277\124\264\240\130\175\122\157\332 +\126\046\142\324\330\333\211\061\157\034\360\042\302\323\142\034 +\065\315\114\151\025\124\032\220\230\336\353\036\137\312\167\307 +\313\216\075\103\151\234\232\130\320\044\073\337\033\100\226\176 +\065\255\201\307\116\161\272\210\023 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "OISTE WISeKey Global Root GB CA" +# Issuer: CN=OISTE WISeKey Global Root GB CA,OU=OISTE Foundation Endorsed,O=WISeKey,C=CH +# Serial Number:76:b1:20:52:74:f0:85:87:46:b3:f8:23:1a:f6:c2:c0 +# Subject: CN=OISTE WISeKey Global Root GB CA,OU=OISTE Foundation Endorsed,O=WISeKey,C=CH +# Not Valid Before: Mon Dec 01 15:00:32 2014 +# Not Valid After : Thu Dec 01 15:10:31 2039 +# Fingerprint (SHA-256): 6B:9C:08:E8:6E:B0:F7:67:CF:AD:65:CD:98:B6:21:49:E5:49:4A:67:F5:84:5E:7B:D1:ED:01:9F:27:B8:6B:D6 +# Fingerprint (SHA1): 0F:F9:40:76:18:D3:D7:6A:4B:98:F0:A8:35:9E:0C:FD:27:AC:CC:ED +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "OISTE WISeKey Global Root GB CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\017\371\100\166\030\323\327\152\113\230\360\250\065\236\014\375 +\047\254\314\355 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\244\353\271\141\050\056\267\057\230\260\065\046\220\231\121\035 +END +CKA_ISSUER MULTILINE_OCTAL +\060\155\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113\145 +\171\061\042\060\040\006\003\125\004\013\023\031\117\111\123\124 +\105\040\106\157\165\156\144\141\164\151\157\156\040\105\156\144 +\157\162\163\145\144\061\050\060\046\006\003\125\004\003\023\037 +\117\111\123\124\105\040\127\111\123\145\113\145\171\040\107\154 +\157\142\141\154\040\122\157\157\164\040\107\102\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\261\040\122\164\360\205\207\106\263\370\043\032\366 +\302\300 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SZAFIR ROOT CA2" +# +# Issuer: CN=SZAFIR ROOT CA2,O=Krajowa Izba Rozliczeniowa S.A.,C=PL +# Serial Number:3e:8a:5d:07:ec:55:d2:32:d5:b7:e3:b6:5f:01:eb:2d:dc:e4:d6:e4 +# Subject: CN=SZAFIR ROOT CA2,O=Krajowa Izba Rozliczeniowa S.A.,C=PL +# Not Valid Before: Mon Oct 19 07:43:30 2015 +# Not Valid After : Fri Oct 19 07:43:30 2035 +# Fingerprint (SHA-256): A1:33:9D:33:28:1A:0B:56:E5:57:D3:D3:2B:1C:E7:F9:36:7E:B0:94:BD:5F:A7:2A:7E:50:04:C8:DE:D7:CA:FE +# Fingerprint (SHA1): E2:52:FA:95:3F:ED:DB:24:60:BD:6E:28:F3:9C:CC:CF:5E:B3:3F:DE +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SZAFIR ROOT CA2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\050\060\046\006\003\125\004\012\014\037\113\162\141\152\157\167 +\141\040\111\172\142\141\040\122\157\172\154\151\143\172\145\156 +\151\157\167\141\040\123\056\101\056\061\030\060\026\006\003\125 +\004\003\014\017\123\132\101\106\111\122\040\122\117\117\124\040 +\103\101\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\050\060\046\006\003\125\004\012\014\037\113\162\141\152\157\167 +\141\040\111\172\142\141\040\122\157\172\154\151\143\172\145\156 +\151\157\167\141\040\123\056\101\056\061\030\060\026\006\003\125 +\004\003\014\017\123\132\101\106\111\122\040\122\117\117\124\040 +\103\101\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\076\212\135\007\354\125\322\062\325\267\343\266\137\001 +\353\055\334\344\326\344 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\162\060\202\002\132\240\003\002\001\002\002\024\076 +\212\135\007\354\125\322\062\325\267\343\266\137\001\353\055\334 +\344\326\344\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\121\061\013\060\011\006\003\125\004\006\023\002\120 +\114\061\050\060\046\006\003\125\004\012\014\037\113\162\141\152 +\157\167\141\040\111\172\142\141\040\122\157\172\154\151\143\172 +\145\156\151\157\167\141\040\123\056\101\056\061\030\060\026\006 +\003\125\004\003\014\017\123\132\101\106\111\122\040\122\117\117 +\124\040\103\101\062\060\036\027\015\061\065\061\060\061\071\060 +\067\064\063\063\060\132\027\015\063\065\061\060\061\071\060\067 +\064\063\063\060\132\060\121\061\013\060\011\006\003\125\004\006 +\023\002\120\114\061\050\060\046\006\003\125\004\012\014\037\113 +\162\141\152\157\167\141\040\111\172\142\141\040\122\157\172\154 +\151\143\172\145\156\151\157\167\141\040\123\056\101\056\061\030 +\060\026\006\003\125\004\003\014\017\123\132\101\106\111\122\040 +\122\117\117\124\040\103\101\062\060\202\001\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000 +\060\202\001\012\002\202\001\001\000\267\274\076\120\250\113\315 +\100\265\316\141\347\226\312\264\241\332\014\042\260\372\265\173 +\166\000\167\214\013\317\175\250\206\314\046\121\344\040\075\205 +\014\326\130\343\347\364\052\030\235\332\321\256\046\356\353\123 +\334\364\220\326\023\112\014\220\074\303\364\332\322\216\015\222 +\072\334\261\261\377\070\336\303\272\055\137\200\271\002\275\112 +\235\033\017\264\303\302\301\147\003\335\334\033\234\075\263\260 +\336\000\036\250\064\107\273\232\353\376\013\024\275\066\204\332 +\015\040\277\372\133\313\251\026\040\255\071\140\356\057\165\266 +\347\227\234\371\076\375\176\115\157\115\057\357\210\015\152\372 +\335\361\075\156\040\245\240\022\264\115\160\271\316\327\162\073 +\211\223\247\200\204\034\047\111\162\111\265\377\073\225\236\301 +\314\310\001\354\350\016\212\012\226\347\263\246\207\345\326\371 +\005\053\015\227\100\160\074\272\254\165\132\234\325\115\235\002 +\012\322\113\233\146\113\106\007\027\145\255\237\154\210\000\334 +\042\211\340\341\144\324\147\274\061\171\141\074\273\312\101\315 +\134\152\000\310\074\070\216\130\257\002\003\001\000\001\243\102 +\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\035\006\003\125\035\016\004\026\004\024\056\026 +\251\112\030\265\313\314\365\157\120\363\043\137\370\135\347\254 +\360\310\060\015\006\011\052\206\110\206\367\015\001\001\013\005 +\000\003\202\001\001\000\265\163\370\003\334\131\133\035\166\351 +\243\052\173\220\050\262\115\300\063\117\252\232\261\324\270\344 +\047\377\251\226\231\316\106\340\155\174\114\242\070\244\006\160 +\360\364\101\021\354\077\107\215\077\162\207\371\073\375\244\157 +\053\123\000\340\377\071\271\152\007\016\353\035\034\366\242\162 +\220\313\202\075\021\202\213\322\273\237\052\257\041\346\143\206 +\235\171\031\357\367\273\014\065\220\303\212\355\117\017\365\314 +\022\331\244\076\273\240\374\040\225\137\117\046\057\021\043\203 +\116\165\007\017\277\233\321\264\035\351\020\004\376\312\140\217 +\242\114\270\255\317\341\220\017\315\256\012\307\135\173\267\120 +\322\324\141\372\325\025\333\327\237\207\121\124\353\245\343\353 +\311\205\240\045\040\067\373\216\316\014\064\204\341\074\201\262 +\167\116\103\245\210\137\206\147\241\075\346\264\134\141\266\076 +\333\376\267\050\305\242\007\256\265\312\312\215\052\022\357\227 +\355\302\060\244\311\052\172\373\363\115\043\033\231\063\064\240 +\056\365\251\013\077\324\135\341\317\204\237\342\031\302\137\212 +\326\040\036\343\163\267 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SZAFIR ROOT CA2" +# Issuer: CN=SZAFIR ROOT CA2,O=Krajowa Izba Rozliczeniowa S.A.,C=PL +# Serial Number:3e:8a:5d:07:ec:55:d2:32:d5:b7:e3:b6:5f:01:eb:2d:dc:e4:d6:e4 +# Subject: CN=SZAFIR ROOT CA2,O=Krajowa Izba Rozliczeniowa S.A.,C=PL +# Not Valid Before: Mon Oct 19 07:43:30 2015 +# Not Valid After : Fri Oct 19 07:43:30 2035 +# Fingerprint (SHA-256): A1:33:9D:33:28:1A:0B:56:E5:57:D3:D3:2B:1C:E7:F9:36:7E:B0:94:BD:5F:A7:2A:7E:50:04:C8:DE:D7:CA:FE +# Fingerprint (SHA1): E2:52:FA:95:3F:ED:DB:24:60:BD:6E:28:F3:9C:CC:CF:5E:B3:3F:DE +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SZAFIR ROOT CA2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\342\122\372\225\077\355\333\044\140\275\156\050\363\234\314\317 +\136\263\077\336 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\021\144\301\211\260\044\261\214\261\007\176\211\236\121\236\231 +END +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\050\060\046\006\003\125\004\012\014\037\113\162\141\152\157\167 +\141\040\111\172\142\141\040\122\157\172\154\151\143\172\145\156 +\151\157\167\141\040\123\056\101\056\061\030\060\026\006\003\125 +\004\003\014\017\123\132\101\106\111\122\040\122\117\117\124\040 +\103\101\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\076\212\135\007\354\125\322\062\325\267\343\266\137\001 +\353\055\334\344\326\344 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certum Trusted Network CA 2" +# +# Issuer: CN=Certum Trusted Network CA 2,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL +# Serial Number:21:d6:d0:4a:4f:25:0f:c9:32:37:fc:aa:5e:12:8d:e9 +# Subject: CN=Certum Trusted Network CA 2,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL +# Not Valid Before: Thu Oct 06 08:39:56 2011 +# Not Valid After : Sat Oct 06 08:39:56 2046 +# Fingerprint (SHA-256): B6:76:F2:ED:DA:E8:77:5C:D3:6C:B0:F6:3C:D1:D4:60:39:61:F4:9E:62:65:BA:01:3A:2F:03:07:B6:D0:B8:04 +# Fingerprint (SHA1): D3:DD:48:3E:2B:BF:4C:05:E8:AF:10:F5:FA:76:26:CF:D3:DC:30:92 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum Trusted Network CA 2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\200\061\013\060\011\006\003\125\004\006\023\002\120\114 +\061\042\060\040\006\003\125\004\012\023\031\125\156\151\172\145 +\164\157\040\124\145\143\150\156\157\154\157\147\151\145\163\040 +\123\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103 +\145\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\061\044\060 +\042\006\003\125\004\003\023\033\103\145\162\164\165\155\040\124 +\162\165\163\164\145\144\040\116\145\164\167\157\162\153\040\103 +\101\040\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\200\061\013\060\011\006\003\125\004\006\023\002\120\114 +\061\042\060\040\006\003\125\004\012\023\031\125\156\151\172\145 +\164\157\040\124\145\143\150\156\157\154\157\147\151\145\163\040 +\123\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103 +\145\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\061\044\060 +\042\006\003\125\004\003\023\033\103\145\162\164\165\155\040\124 +\162\165\163\164\145\144\040\116\145\164\167\157\162\153\040\103 +\101\040\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\041\326\320\112\117\045\017\311\062\067\374\252\136\022 +\215\351 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\322\060\202\003\272\240\003\002\001\002\002\020\041 +\326\320\112\117\045\017\311\062\067\374\252\136\022\215\351\060 +\015\006\011\052\206\110\206\367\015\001\001\015\005\000\060\201 +\200\061\013\060\011\006\003\125\004\006\023\002\120\114\061\042 +\060\040\006\003\125\004\012\023\031\125\156\151\172\145\164\157 +\040\124\145\143\150\156\157\154\157\147\151\145\163\040\123\056 +\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162 +\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\061\044\060\042\006 +\003\125\004\003\023\033\103\145\162\164\165\155\040\124\162\165 +\163\164\145\144\040\116\145\164\167\157\162\153\040\103\101\040 +\062\060\042\030\017\062\060\061\061\061\060\060\066\060\070\063 +\071\065\066\132\030\017\062\060\064\066\061\060\060\066\060\070 +\063\071\065\066\132\060\201\200\061\013\060\011\006\003\125\004 +\006\023\002\120\114\061\042\060\040\006\003\125\004\012\023\031 +\125\156\151\172\145\164\157\040\124\145\143\150\156\157\154\157 +\147\151\145\163\040\123\056\101\056\061\047\060\045\006\003\125 +\004\013\023\036\103\145\162\164\165\155\040\103\145\162\164\151 +\146\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151 +\164\171\061\044\060\042\006\003\125\004\003\023\033\103\145\162 +\164\165\155\040\124\162\165\163\164\145\144\040\116\145\164\167 +\157\162\153\040\103\101\040\062\060\202\002\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 +\060\202\002\012\002\202\002\001\000\275\371\170\370\346\325\200 +\014\144\235\206\033\226\144\147\077\042\072\036\165\001\175\357 +\373\134\147\214\311\314\134\153\251\221\346\271\102\345\040\113 +\233\332\233\173\271\231\135\331\233\200\113\327\204\100\053\047 +\323\350\272\060\273\076\011\032\247\111\225\357\053\100\044\302 +\227\307\247\356\233\045\357\250\012\000\227\205\132\252\235\334 +\051\311\342\065\007\353\160\115\112\326\301\263\126\270\241\101 +\070\233\321\373\061\177\217\340\137\341\261\077\017\216\026\111 +\140\327\006\215\030\371\252\046\020\253\052\323\320\321\147\215 +\033\106\276\107\060\325\056\162\321\305\143\332\347\143\171\104 +\176\113\143\044\211\206\056\064\077\051\114\122\213\052\247\300 +\342\221\050\211\271\300\133\371\035\331\347\047\255\377\232\002 +\227\301\306\120\222\233\002\054\275\251\271\064\131\012\277\204 +\112\377\337\376\263\237\353\331\236\340\230\043\354\246\153\167 +\026\052\333\314\255\073\034\244\207\334\106\163\136\031\142\150 +\105\127\344\220\202\102\273\102\326\360\141\340\301\243\075\146 +\243\135\364\030\356\210\311\215\027\105\051\231\062\165\002\061 +\356\051\046\310\153\002\346\265\142\105\177\067\025\132\043\150 +\211\324\076\336\116\047\260\360\100\014\274\115\027\313\115\242 +\263\036\320\006\132\335\366\223\317\127\165\231\365\372\206\032 +\147\170\263\277\226\376\064\334\275\347\122\126\345\263\345\165 +\173\327\101\221\005\334\135\151\343\225\015\103\271\374\203\226 +\071\225\173\154\200\132\117\023\162\306\327\175\051\172\104\272 +\122\244\052\325\101\106\011\040\376\042\240\266\133\060\215\274 +\211\014\325\327\160\370\207\122\375\332\357\254\121\056\007\263 +\116\376\320\011\332\160\357\230\372\126\346\155\333\265\127\113 +\334\345\054\045\025\310\236\056\170\116\370\332\234\236\206\054 +\312\127\363\032\345\310\222\213\032\202\226\172\303\274\120\022 +\151\330\016\132\106\213\072\353\046\372\043\311\266\260\201\276 +\102\000\244\370\326\376\060\056\307\322\106\366\345\216\165\375 +\362\314\271\320\207\133\314\006\020\140\273\203\065\267\136\147 +\336\107\354\231\110\361\244\241\025\376\255\214\142\216\071\125 +\117\071\026\271\261\143\235\377\267\002\003\001\000\001\243\102 +\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\035\006\003\125\035\016\004\026\004\024\266\241 +\124\071\002\303\240\077\216\212\274\372\324\370\034\246\321\072 +\016\375\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\006\060\015\006\011\052\206\110\206\367\015\001\001\015\005 +\000\003\202\002\001\000\161\245\016\316\344\351\277\077\070\325 +\211\132\304\002\141\373\114\305\024\027\055\213\117\123\153\020 +\027\374\145\204\307\020\111\220\336\333\307\046\223\210\046\157 +\160\326\002\136\071\240\367\217\253\226\265\245\023\134\201\024 +\155\016\201\202\021\033\212\116\306\117\245\335\142\036\104\337 +\011\131\364\133\167\013\067\351\213\040\306\370\012\116\056\130 +\034\353\063\320\317\206\140\311\332\373\200\057\236\114\140\204 +\170\075\041\144\326\373\101\037\030\017\347\311\165\161\275\275 +\134\336\064\207\076\101\260\016\366\271\326\077\011\023\226\024 +\057\336\232\035\132\271\126\316\065\072\260\137\160\115\136\343 +\051\361\043\050\162\131\266\253\302\214\146\046\034\167\054\046 +\166\065\213\050\247\151\240\371\073\365\043\335\205\020\164\311 +\220\003\126\221\347\257\272\107\324\022\227\021\042\343\242\111 +\224\154\347\267\224\113\272\055\244\332\063\213\114\246\104\377 +\132\074\306\035\144\330\265\061\344\246\074\172\250\127\013\333 +\355\141\032\313\361\316\163\167\143\244\207\157\114\121\070\326 +\344\137\307\237\266\201\052\344\205\110\171\130\136\073\370\333 +\002\202\147\301\071\333\303\164\113\075\066\036\371\051\223\210 +\150\133\250\104\031\041\360\247\350\201\015\054\350\223\066\264 +\067\262\312\260\033\046\172\232\045\037\232\232\200\236\113\052 +\077\373\243\232\376\163\062\161\302\236\306\162\341\212\150\047 +\361\344\017\264\304\114\245\141\223\370\227\020\007\052\060\045 +\251\271\310\161\270\357\150\314\055\176\365\340\176\017\202\250 +\157\266\272\154\203\103\167\315\212\222\027\241\236\133\170\026 +\075\105\342\063\162\335\341\146\312\231\323\311\305\046\375\015 +\150\004\106\256\266\331\233\214\276\031\276\261\306\362\031\343 +\134\002\312\054\330\157\112\007\331\311\065\332\100\165\362\304 +\247\031\157\236\102\020\230\165\346\225\213\140\274\355\305\022 +\327\212\316\325\230\134\126\226\003\305\356\167\006\065\377\317 +\344\356\077\023\141\356\333\332\055\205\360\315\256\235\262\030 +\011\105\303\222\241\162\027\374\107\266\240\013\054\361\304\336 +\103\150\010\152\137\073\360\166\143\373\314\006\054\246\306\342 +\016\265\271\276\044\217 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certum Trusted Network CA 2" +# Issuer: CN=Certum Trusted Network CA 2,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL +# Serial Number:21:d6:d0:4a:4f:25:0f:c9:32:37:fc:aa:5e:12:8d:e9 +# Subject: CN=Certum Trusted Network CA 2,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL +# Not Valid Before: Thu Oct 06 08:39:56 2011 +# Not Valid After : Sat Oct 06 08:39:56 2046 +# Fingerprint (SHA-256): B6:76:F2:ED:DA:E8:77:5C:D3:6C:B0:F6:3C:D1:D4:60:39:61:F4:9E:62:65:BA:01:3A:2F:03:07:B6:D0:B8:04 +# Fingerprint (SHA1): D3:DD:48:3E:2B:BF:4C:05:E8:AF:10:F5:FA:76:26:CF:D3:DC:30:92 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum Trusted Network CA 2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\323\335\110\076\053\277\114\005\350\257\020\365\372\166\046\317 +\323\334\060\222 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\155\106\236\331\045\155\010\043\133\136\164\175\036\047\333\362 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\200\061\013\060\011\006\003\125\004\006\023\002\120\114 +\061\042\060\040\006\003\125\004\012\023\031\125\156\151\172\145 +\164\157\040\124\145\143\150\156\157\154\157\147\151\145\163\040 +\123\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103 +\145\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\061\044\060 +\042\006\003\125\004\003\023\033\103\145\162\164\165\155\040\124 +\162\165\163\164\145\144\040\116\145\164\167\157\162\153\040\103 +\101\040\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\041\326\320\112\117\045\017\311\062\067\374\252\136\022 +\215\351 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Hellenic Academic and Research Institutions RootCA 2015" +# +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015,O=Hellenic Academic and Research Institutions Cert. Authority,L=Athens,C=GR +# Serial Number: 0 (0x0) +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015,O=Hellenic Academic and Research Institutions Cert. Authority,L=Athens,C=GR +# Not Valid Before: Tue Jul 07 10:11:21 2015 +# Not Valid After : Sat Jun 30 10:11:21 2040 +# Fingerprint (SHA-256): A0:40:92:9A:02:CE:53:B4:AC:F4:F2:FF:C6:98:1C:E4:49:6F:75:5E:6D:45:FE:0B:2A:69:2B:CD:52:52:3F:36 +# Fingerprint (SHA1): 01:0C:06:95:A6:98:19:14:FF:BF:5F:C6:B0:B6:95:EA:29:E9:12:A6 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Hellenic Academic and Research Institutions RootCA 2015" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\246\061\013\060\011\006\003\125\004\006\023\002\107\122 +\061\017\060\015\006\003\125\004\007\023\006\101\164\150\145\156 +\163\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154 +\145\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156 +\144\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151 +\164\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165 +\164\150\157\162\151\164\171\061\100\060\076\006\003\125\004\003 +\023\067\110\145\154\154\145\156\151\143\040\101\143\141\144\145 +\155\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150 +\040\111\156\163\164\151\164\165\164\151\157\156\163\040\122\157 +\157\164\103\101\040\062\060\061\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\246\061\013\060\011\006\003\125\004\006\023\002\107\122 +\061\017\060\015\006\003\125\004\007\023\006\101\164\150\145\156 +\163\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154 +\145\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156 +\144\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151 +\164\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165 +\164\150\157\162\151\164\171\061\100\060\076\006\003\125\004\003 +\023\067\110\145\154\154\145\156\151\143\040\101\143\141\144\145 +\155\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150 +\040\111\156\163\164\151\164\165\164\151\157\156\163\040\122\157 +\157\164\103\101\040\062\060\061\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\006\013\060\202\003\363\240\003\002\001\002\002\001\000 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\201\246\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\017\060\015\006\003\125\004\007\023\006\101\164\150\145\156\163 +\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154\145 +\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144 +\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164 +\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165\164 +\150\157\162\151\164\171\061\100\060\076\006\003\125\004\003\023 +\067\110\145\154\154\145\156\151\143\040\101\143\141\144\145\155 +\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150\040 +\111\156\163\164\151\164\165\164\151\157\156\163\040\122\157\157 +\164\103\101\040\062\060\061\065\060\036\027\015\061\065\060\067 +\060\067\061\060\061\061\062\061\132\027\015\064\060\060\066\063 +\060\061\060\061\061\062\061\132\060\201\246\061\013\060\011\006 +\003\125\004\006\023\002\107\122\061\017\060\015\006\003\125\004 +\007\023\006\101\164\150\145\156\163\061\104\060\102\006\003\125 +\004\012\023\073\110\145\154\154\145\156\151\143\040\101\143\141 +\144\145\155\151\143\040\141\156\144\040\122\145\163\145\141\162 +\143\150\040\111\156\163\164\151\164\165\164\151\157\156\163\040 +\103\145\162\164\056\040\101\165\164\150\157\162\151\164\171\061 +\100\060\076\006\003\125\004\003\023\067\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\122\157\157\164\103\101\040\062\060\061 +\065\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001 +\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002 +\001\000\302\370\251\077\033\211\374\074\074\004\135\075\220\066 +\260\221\072\171\074\146\132\357\155\071\001\111\032\264\267\317 +\177\115\043\123\267\220\000\343\023\052\050\246\061\361\221\000 +\343\050\354\256\041\101\316\037\332\375\175\022\133\001\203\017 +\271\260\137\231\341\362\022\203\200\115\006\076\337\254\257\347 +\241\210\153\061\257\360\213\320\030\063\270\333\105\152\064\364 +\002\200\044\050\012\002\025\225\136\166\052\015\231\072\024\133 +\366\313\313\123\274\023\115\001\210\067\224\045\033\102\274\042 +\330\216\243\226\136\072\331\062\333\076\350\360\020\145\355\164 +\341\057\247\174\257\047\064\273\051\175\233\266\317\011\310\345 +\323\012\374\210\145\145\164\012\334\163\034\134\315\100\261\034 +\324\266\204\214\114\120\317\150\216\250\131\256\302\047\116\202 +\242\065\335\024\364\037\377\262\167\325\207\057\252\156\175\044 +\047\347\306\313\046\346\345\376\147\007\143\330\105\015\335\072 +\131\145\071\130\172\222\231\162\075\234\204\136\210\041\270\325 +\364\054\374\331\160\122\117\170\270\275\074\053\213\225\230\365 +\263\321\150\317\040\024\176\114\134\137\347\213\345\365\065\201 +\031\067\327\021\010\267\146\276\323\112\316\203\127\000\072\303 +\201\370\027\313\222\066\135\321\243\330\165\033\341\213\047\352 +\172\110\101\375\105\031\006\255\047\231\116\301\160\107\335\265 +\237\201\123\022\345\261\214\110\135\061\103\027\343\214\306\172 +\143\226\113\051\060\116\204\116\142\031\136\074\316\227\220\245 +\177\001\353\235\340\370\213\211\335\045\230\075\222\266\176\357 +\331\361\121\121\175\055\046\310\151\131\141\340\254\152\270\052 +\066\021\004\172\120\275\062\204\276\057\334\162\325\327\035\026 +\107\344\107\146\040\077\364\226\305\257\216\001\172\245\017\172 +\144\365\015\030\207\331\256\210\325\372\204\301\072\300\151\050 +\055\362\015\150\121\252\343\245\167\306\244\220\016\241\067\213 +\061\043\107\301\011\010\353\156\367\170\233\327\202\374\204\040 +\231\111\031\266\022\106\261\373\105\125\026\251\243\145\254\234 +\007\017\352\153\334\037\056\006\162\354\206\210\022\344\055\333 +\137\005\057\344\360\003\323\046\063\347\200\302\315\102\241\027 +\064\013\002\003\001\000\001\243\102\060\100\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003 +\125\035\016\004\026\004\024\161\025\147\310\310\311\275\165\135 +\162\320\070\030\152\235\363\161\044\124\013\060\015\006\011\052 +\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000\165 +\273\155\124\113\252\020\130\106\064\362\142\327\026\066\135\010 +\136\325\154\310\207\275\264\056\106\362\061\370\174\352\102\265 +\223\026\125\334\241\014\022\240\332\141\176\017\130\130\163\144 +\162\307\350\105\216\334\251\362\046\077\306\171\214\261\123\010 +\063\201\260\126\023\276\346\121\134\330\233\012\117\113\234\126 +\123\002\351\117\366\015\140\352\115\102\125\350\174\033\041\041 +\323\033\072\314\167\362\270\220\361\150\307\371\132\376\372\055 +\364\277\311\365\105\033\316\070\020\052\067\212\171\243\264\343 +\011\154\205\206\223\377\211\226\047\170\201\217\147\343\106\164 +\124\216\331\015\151\342\112\364\115\164\003\377\262\167\355\225 +\147\227\344\261\305\253\277\152\043\350\324\224\342\104\050\142 +\304\113\342\360\330\342\051\153\032\160\176\044\141\223\173\117 +\003\062\045\015\105\044\053\226\264\106\152\277\112\013\367\232 +\217\301\254\032\305\147\363\157\064\322\372\163\143\214\357\026 +\260\250\244\106\052\370\353\022\354\162\264\357\370\053\176\214 +\122\300\213\204\124\371\057\076\343\125\250\334\146\261\331\341 +\137\330\263\214\131\064\131\244\253\117\154\273\037\030\333\165 +\253\330\313\222\315\224\070\141\016\007\006\037\113\106\020\361 +\025\276\215\205\134\073\112\053\201\171\017\264\151\237\111\120 +\227\115\367\016\126\135\300\225\152\302\066\303\033\150\311\365 +\052\334\107\232\276\262\316\305\045\350\372\003\271\332\371\026 +\156\221\204\365\034\050\310\374\046\314\327\034\220\126\247\137 +\157\072\004\274\315\170\211\013\216\017\057\243\252\117\242\033 +\022\075\026\010\100\017\361\106\114\327\252\173\010\301\012\365 +\155\047\336\002\217\312\303\265\053\312\351\353\310\041\123\070 +\245\314\073\330\167\067\060\242\117\331\157\321\362\100\255\101 +\172\027\305\326\112\065\211\267\101\325\174\206\177\125\115\203 +\112\245\163\040\300\072\257\220\361\232\044\216\331\216\161\312 +\173\270\206\332\262\217\231\076\035\023\015\022\021\356\324\253 +\360\351\025\166\002\344\340\337\252\040\036\133\141\205\144\100 +\251\220\227\015\255\123\322\132\035\207\152\000\227\145\142\264 +\276\157\152\247\365\054\102\355\062\255\266\041\236\276\274 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Hellenic Academic and Research Institutions RootCA 2015" +# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015,O=Hellenic Academic and Research Institutions Cert. Authority,L=Athens,C=GR +# Serial Number: 0 (0x0) +# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015,O=Hellenic Academic and Research Institutions Cert. Authority,L=Athens,C=GR +# Not Valid Before: Tue Jul 07 10:11:21 2015 +# Not Valid After : Sat Jun 30 10:11:21 2040 +# Fingerprint (SHA-256): A0:40:92:9A:02:CE:53:B4:AC:F4:F2:FF:C6:98:1C:E4:49:6F:75:5E:6D:45:FE:0B:2A:69:2B:CD:52:52:3F:36 +# Fingerprint (SHA1): 01:0C:06:95:A6:98:19:14:FF:BF:5F:C6:B0:B6:95:EA:29:E9:12:A6 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Hellenic Academic and Research Institutions RootCA 2015" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\001\014\006\225\246\230\031\024\377\277\137\306\260\266\225\352 +\051\351\022\246 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\312\377\342\333\003\331\313\113\351\017\255\204\375\173\030\316 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\246\061\013\060\011\006\003\125\004\006\023\002\107\122 +\061\017\060\015\006\003\125\004\007\023\006\101\164\150\145\156 +\163\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154 +\145\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156 +\144\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151 +\164\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165 +\164\150\157\162\151\164\171\061\100\060\076\006\003\125\004\003 +\023\067\110\145\154\154\145\156\151\143\040\101\143\141\144\145 +\155\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150 +\040\111\156\163\164\151\164\165\164\151\157\156\163\040\122\157 +\157\164\103\101\040\062\060\061\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Hellenic Academic and Research Institutions ECC RootCA 2015" +# +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015,O=Hellenic Academic and Research Institutions Cert. Authority,L=Athens,C=GR +# Serial Number: 0 (0x0) +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015,O=Hellenic Academic and Research Institutions Cert. Authority,L=Athens,C=GR +# Not Valid Before: Tue Jul 07 10:37:12 2015 +# Not Valid After : Sat Jun 30 10:37:12 2040 +# Fingerprint (SHA-256): 44:B5:45:AA:8A:25:E6:5A:73:CA:15:DC:27:FC:36:D2:4C:1C:B9:95:3A:06:65:39:B1:15:82:DC:48:7B:48:33 +# Fingerprint (SHA1): 9F:F1:71:8D:92:D5:9A:F3:7D:74:97:B4:BC:6F:84:68:0B:BA:B6:66 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Hellenic Academic and Research Institutions ECC RootCA 2015" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\252\061\013\060\011\006\003\125\004\006\023\002\107\122 +\061\017\060\015\006\003\125\004\007\023\006\101\164\150\145\156 +\163\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154 +\145\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156 +\144\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151 +\164\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165 +\164\150\157\162\151\164\171\061\104\060\102\006\003\125\004\003 +\023\073\110\145\154\154\145\156\151\143\040\101\143\141\144\145 +\155\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150 +\040\111\156\163\164\151\164\165\164\151\157\156\163\040\105\103 +\103\040\122\157\157\164\103\101\040\062\060\061\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\252\061\013\060\011\006\003\125\004\006\023\002\107\122 +\061\017\060\015\006\003\125\004\007\023\006\101\164\150\145\156 +\163\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154 +\145\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156 +\144\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151 +\164\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165 +\164\150\157\162\151\164\171\061\104\060\102\006\003\125\004\003 +\023\073\110\145\154\154\145\156\151\143\040\101\143\141\144\145 +\155\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150 +\040\111\156\163\164\151\164\165\164\151\157\156\163\040\105\103 +\103\040\122\157\157\164\103\101\040\062\060\061\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\303\060\202\002\112\240\003\002\001\002\002\001\000 +\060\012\006\010\052\206\110\316\075\004\003\002\060\201\252\061 +\013\060\011\006\003\125\004\006\023\002\107\122\061\017\060\015 +\006\003\125\004\007\023\006\101\164\150\145\156\163\061\104\060 +\102\006\003\125\004\012\023\073\110\145\154\154\145\156\151\143 +\040\101\143\141\144\145\155\151\143\040\141\156\144\040\122\145 +\163\145\141\162\143\150\040\111\156\163\164\151\164\165\164\151 +\157\156\163\040\103\145\162\164\056\040\101\165\164\150\157\162 +\151\164\171\061\104\060\102\006\003\125\004\003\023\073\110\145 +\154\154\145\156\151\143\040\101\143\141\144\145\155\151\143\040 +\141\156\144\040\122\145\163\145\141\162\143\150\040\111\156\163 +\164\151\164\165\164\151\157\156\163\040\105\103\103\040\122\157 +\157\164\103\101\040\062\060\061\065\060\036\027\015\061\065\060 +\067\060\067\061\060\063\067\061\062\132\027\015\064\060\060\066 +\063\060\061\060\063\067\061\062\132\060\201\252\061\013\060\011 +\006\003\125\004\006\023\002\107\122\061\017\060\015\006\003\125 +\004\007\023\006\101\164\150\145\156\163\061\104\060\102\006\003 +\125\004\012\023\073\110\145\154\154\145\156\151\143\040\101\143 +\141\144\145\155\151\143\040\141\156\144\040\122\145\163\145\141 +\162\143\150\040\111\156\163\164\151\164\165\164\151\157\156\163 +\040\103\145\162\164\056\040\101\165\164\150\157\162\151\164\171 +\061\104\060\102\006\003\125\004\003\023\073\110\145\154\154\145 +\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144 +\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164 +\165\164\151\157\156\163\040\105\103\103\040\122\157\157\164\103 +\101\040\062\060\061\065\060\166\060\020\006\007\052\206\110\316 +\075\002\001\006\005\053\201\004\000\042\003\142\000\004\222\240 +\101\350\113\202\204\134\342\370\061\021\231\206\144\116\011\045 +\057\235\101\057\012\256\065\117\164\225\262\121\144\153\215\153 +\346\077\160\225\360\005\104\107\246\162\070\120\166\225\002\132 +\216\256\050\236\371\055\116\231\357\054\110\157\114\045\051\350 +\321\161\133\337\035\301\165\067\264\327\372\173\172\102\234\152 +\012\126\132\174\151\013\252\200\011\044\154\176\301\106\243\102 +\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\035\006\003\125\035\016\004\026\004\024\264\042 +\013\202\231\044\001\016\234\273\344\016\375\277\373\227\040\223 +\231\052\060\012\006\010\052\206\110\316\075\004\003\002\003\147 +\000\060\144\002\060\147\316\026\142\070\242\254\142\105\247\251 +\225\044\300\032\047\234\062\073\300\300\325\272\251\347\370\004 +\103\123\205\356\122\041\336\235\365\045\203\076\236\130\113\057 +\327\147\023\016\041\002\060\005\341\165\001\336\150\355\052\037 +\115\114\011\010\015\354\113\255\144\027\050\347\165\316\105\145 +\162\041\027\313\042\101\016\214\023\230\070\232\124\155\233\312 +\342\174\352\002\130\042\221 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Hellenic Academic and Research Institutions ECC RootCA 2015" +# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015,O=Hellenic Academic and Research Institutions Cert. Authority,L=Athens,C=GR +# Serial Number: 0 (0x0) +# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015,O=Hellenic Academic and Research Institutions Cert. Authority,L=Athens,C=GR +# Not Valid Before: Tue Jul 07 10:37:12 2015 +# Not Valid After : Sat Jun 30 10:37:12 2040 +# Fingerprint (SHA-256): 44:B5:45:AA:8A:25:E6:5A:73:CA:15:DC:27:FC:36:D2:4C:1C:B9:95:3A:06:65:39:B1:15:82:DC:48:7B:48:33 +# Fingerprint (SHA1): 9F:F1:71:8D:92:D5:9A:F3:7D:74:97:B4:BC:6F:84:68:0B:BA:B6:66 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Hellenic Academic and Research Institutions ECC RootCA 2015" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\237\361\161\215\222\325\232\363\175\164\227\264\274\157\204\150 +\013\272\266\146 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\201\345\264\027\353\302\365\341\113\015\101\173\111\222\376\357 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\252\061\013\060\011\006\003\125\004\006\023\002\107\122 +\061\017\060\015\006\003\125\004\007\023\006\101\164\150\145\156 +\163\061\104\060\102\006\003\125\004\012\023\073\110\145\154\154 +\145\156\151\143\040\101\143\141\144\145\155\151\143\040\141\156 +\144\040\122\145\163\145\141\162\143\150\040\111\156\163\164\151 +\164\165\164\151\157\156\163\040\103\145\162\164\056\040\101\165 +\164\150\157\162\151\164\171\061\104\060\102\006\003\125\004\003 +\023\073\110\145\154\154\145\156\151\143\040\101\143\141\144\145 +\155\151\143\040\141\156\144\040\122\145\163\145\141\162\143\150 +\040\111\156\163\164\151\164\165\164\151\157\156\163\040\105\103 +\103\040\122\157\157\164\103\101\040\062\060\061\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "ISRG Root X1" +# +# Issuer: CN=ISRG Root X1,O=Internet Security Research Group,C=US +# Serial Number:00:82:10:cf:b0:d2:40:e3:59:44:63:e0:bb:63:82:8b:00 +# Subject: CN=ISRG Root X1,O=Internet Security Research Group,C=US +# Not Valid Before: Thu Jun 04 11:04:38 2015 +# Not Valid After : Mon Jun 04 11:04:38 2035 +# Fingerprint (SHA-256): 96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6 +# Fingerprint (SHA1): CA:BD:2A:79:A1:07:6A:31:F2:1D:25:36:35:CB:03:9D:43:29:A5:E8 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ISRG Root X1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\051\060\047\006\003\125\004\012\023\040\111\156\164\145\162\156 +\145\164\040\123\145\143\165\162\151\164\171\040\122\145\163\145 +\141\162\143\150\040\107\162\157\165\160\061\025\060\023\006\003 +\125\004\003\023\014\111\123\122\107\040\122\157\157\164\040\130 +\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\051\060\047\006\003\125\004\012\023\040\111\156\164\145\162\156 +\145\164\040\123\145\143\165\162\151\164\171\040\122\145\163\145 +\141\162\143\150\040\107\162\157\165\160\061\025\060\023\006\003 +\125\004\003\023\014\111\123\122\107\040\122\157\157\164\040\130 +\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\202\020\317\260\322\100\343\131\104\143\340\273\143 +\202\213\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\153\060\202\003\123\240\003\002\001\002\002\021\000 +\202\020\317\260\322\100\343\131\104\143\340\273\143\202\213\000 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061\051 +\060\047\006\003\125\004\012\023\040\111\156\164\145\162\156\145 +\164\040\123\145\143\165\162\151\164\171\040\122\145\163\145\141 +\162\143\150\040\107\162\157\165\160\061\025\060\023\006\003\125 +\004\003\023\014\111\123\122\107\040\122\157\157\164\040\130\061 +\060\036\027\015\061\065\060\066\060\064\061\061\060\064\063\070 +\132\027\015\063\065\060\066\060\064\061\061\060\064\063\070\132 +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\051\060\047\006\003\125\004\012\023\040\111\156\164\145\162\156 +\145\164\040\123\145\143\165\162\151\164\171\040\122\145\163\145 +\141\162\143\150\040\107\162\157\165\160\061\025\060\023\006\003 +\125\004\003\023\014\111\123\122\107\040\122\157\157\164\040\130 +\061\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001 +\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002 +\001\000\255\350\044\163\364\024\067\363\233\236\053\127\050\034 +\207\276\334\267\337\070\220\214\156\074\346\127\240\170\367\165 +\302\242\376\365\152\156\366\000\117\050\333\336\150\206\154\104 +\223\266\261\143\375\024\022\153\277\037\322\352\061\233\041\176 +\321\063\074\272\110\365\335\171\337\263\270\377\022\361\041\232 +\113\301\212\206\161\151\112\146\146\154\217\176\074\160\277\255 +\051\042\006\363\344\300\346\200\256\342\113\217\267\231\176\224 +\003\237\323\107\227\174\231\110\043\123\350\070\256\117\012\157 +\203\056\321\111\127\214\200\164\266\332\057\320\070\215\173\003 +\160\041\033\165\362\060\074\372\217\256\335\332\143\253\353\026 +\117\302\216\021\113\176\317\013\350\377\265\167\056\364\262\173 +\112\340\114\022\045\014\160\215\003\051\240\341\123\044\354\023 +\331\356\031\277\020\263\112\214\077\211\243\141\121\336\254\207 +\007\224\364\143\161\354\056\342\157\133\230\201\341\211\134\064 +\171\154\166\357\073\220\142\171\346\333\244\232\057\046\305\320 +\020\341\016\336\331\020\216\026\373\267\367\250\367\307\345\002 +\007\230\217\066\010\225\347\342\067\226\015\066\165\236\373\016 +\162\261\035\233\274\003\371\111\005\330\201\335\005\264\052\326 +\101\351\254\001\166\225\012\017\330\337\325\275\022\037\065\057 +\050\027\154\322\230\301\250\011\144\167\156\107\067\272\316\254 +\131\136\150\235\177\162\326\211\305\006\101\051\076\131\076\335 +\046\365\044\311\021\247\132\243\114\100\037\106\241\231\265\247 +\072\121\156\206\073\236\175\162\247\022\005\170\131\355\076\121 +\170\025\013\003\217\215\320\057\005\262\076\173\112\034\113\163 +\005\022\374\306\352\340\120\023\174\103\223\164\263\312\164\347 +\216\037\001\010\320\060\324\133\161\066\264\007\272\301\060\060 +\134\110\267\202\073\230\246\175\140\212\242\243\051\202\314\272 +\275\203\004\033\242\203\003\101\241\326\005\361\033\302\266\360 +\250\174\206\073\106\250\110\052\210\334\166\232\166\277\037\152 +\245\075\031\217\353\070\363\144\336\310\053\015\012\050\377\367 +\333\342\025\102\324\042\320\047\135\341\171\376\030\347\160\210 +\255\116\346\331\213\072\306\335\047\121\156\377\274\144\365\063 +\103\117\002\003\001\000\001\243\102\060\100\060\016\006\003\125 +\035\017\001\001\377\004\004\003\002\001\006\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003 +\125\035\016\004\026\004\024\171\264\131\346\173\266\345\344\001 +\163\200\010\210\310\032\130\366\351\233\156\060\015\006\011\052 +\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000\125 +\037\130\251\274\262\250\120\320\014\261\330\032\151\040\047\051 +\010\254\141\165\134\212\156\370\202\345\151\057\325\366\126\113 +\271\270\163\020\131\323\041\227\176\347\114\161\373\262\322\140 +\255\071\250\013\352\027\041\126\205\361\120\016\131\353\316\340 +\131\351\272\311\025\357\206\235\217\204\200\366\344\351\221\220 +\334\027\233\142\033\105\360\146\225\322\174\157\302\352\073\357 +\037\317\313\326\256\047\361\251\260\310\256\375\175\176\232\372 +\042\004\353\377\331\177\352\221\053\042\261\027\016\217\362\212 +\064\133\130\330\374\001\311\124\271\270\046\314\212\210\063\211 +\114\055\204\074\202\337\356\226\127\005\272\054\273\367\304\267 +\307\116\073\202\276\061\310\042\163\163\222\321\302\200\244\071 +\071\020\063\043\202\114\074\237\206\262\125\230\035\276\051\206 +\214\042\233\236\342\153\073\127\072\202\160\115\334\011\307\211 +\313\012\007\115\154\350\135\216\311\357\316\253\307\273\265\053 +\116\105\326\112\320\046\314\345\162\312\010\152\245\225\343\025 +\241\367\244\355\311\054\137\245\373\377\254\050\002\056\276\327 +\173\273\343\161\173\220\026\323\007\136\106\123\174\067\007\102 +\214\323\304\226\234\325\231\265\052\340\225\032\200\110\256\114 +\071\007\316\314\107\244\122\225\053\272\270\373\255\322\063\123 +\175\345\035\115\155\325\241\261\307\102\157\346\100\047\065\134 +\243\050\267\007\215\347\215\063\220\347\043\237\373\120\234\171 +\154\106\325\264\025\263\226\156\176\233\014\226\072\270\122\055 +\077\326\133\341\373\010\302\204\376\044\250\243\211\332\254\152 +\341\030\052\261\250\103\141\133\323\037\334\073\215\166\362\055 +\350\215\165\337\027\063\154\075\123\373\173\313\101\137\377\334 +\242\320\141\070\341\226\270\254\135\213\067\327\165\325\063\300 +\231\021\256\235\101\301\162\165\204\276\002\101\102\137\147\044 +\110\224\321\233\047\276\007\077\271\270\117\201\164\121\341\172 +\267\355\235\043\342\276\340\325\050\004\023\074\061\003\236\335 +\172\154\217\306\007\030\306\177\336\107\216\077\050\236\004\006 +\317\245\124\064\167\275\354\211\233\351\027\103\337\133\333\137 +\376\216\036\127\242\315\100\235\176\142\042\332\336\030\047 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "ISRG Root X1" +# Issuer: CN=ISRG Root X1,O=Internet Security Research Group,C=US +# Serial Number:00:82:10:cf:b0:d2:40:e3:59:44:63:e0:bb:63:82:8b:00 +# Subject: CN=ISRG Root X1,O=Internet Security Research Group,C=US +# Not Valid Before: Thu Jun 04 11:04:38 2015 +# Not Valid After : Mon Jun 04 11:04:38 2035 +# Fingerprint (SHA-256): 96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6 +# Fingerprint (SHA1): CA:BD:2A:79:A1:07:6A:31:F2:1D:25:36:35:CB:03:9D:43:29:A5:E8 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ISRG Root X1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\312\275\052\171\241\007\152\061\362\035\045\066\065\313\003\235 +\103\051\245\350 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\014\322\371\340\332\027\163\351\355\206\115\245\343\160\347\116 +END +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\051\060\047\006\003\125\004\012\023\040\111\156\164\145\162\156 +\145\164\040\123\145\143\165\162\151\164\171\040\122\145\163\145 +\141\162\143\150\040\107\162\157\165\160\061\025\060\023\006\003 +\125\004\003\023\014\111\123\122\107\040\122\157\157\164\040\130 +\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\202\020\317\260\322\100\343\131\104\143\340\273\143 +\202\213\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "AC RAIZ FNMT-RCM" +# +# Issuer: OU=AC RAIZ FNMT-RCM,O=FNMT-RCM,C=ES +# Serial Number:5d:93:8d:30:67:36:c8:06:1d:1a:c7:54:84:69:07 +# Subject: OU=AC RAIZ FNMT-RCM,O=FNMT-RCM,C=ES +# Not Valid Before: Wed Oct 29 15:59:56 2008 +# Not Valid After : Tue Jan 01 00:00:00 2030 +# Fingerprint (SHA-256): EB:C5:57:0C:29:01:8C:4D:67:B1:AA:12:7B:AF:12:F7:03:B4:61:1E:BC:17:B7:DA:B5:57:38:94:17:9B:93:FA +# Fingerprint (SHA1): EC:50:35:07:B2:15:C4:95:62:19:E2:A8:9A:5B:42:99:2C:4C:2C:20 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AC RAIZ FNMT-RCM" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\073\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\021\060\017\006\003\125\004\012\014\010\106\116\115\124\055\122 +\103\115\061\031\060\027\006\003\125\004\013\014\020\101\103\040 +\122\101\111\132\040\106\116\115\124\055\122\103\115 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\073\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\021\060\017\006\003\125\004\012\014\010\106\116\115\124\055\122 +\103\115\061\031\060\027\006\003\125\004\013\014\020\101\103\040 +\122\101\111\132\040\106\116\115\124\055\122\103\115 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\017\135\223\215\060\147\066\310\006\035\032\307\124\204\151 +\007 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\203\060\202\003\153\240\003\002\001\002\002\017\135 +\223\215\060\147\066\310\006\035\032\307\124\204\151\007\060\015 +\006\011\052\206\110\206\367\015\001\001\013\005\000\060\073\061 +\013\060\011\006\003\125\004\006\023\002\105\123\061\021\060\017 +\006\003\125\004\012\014\010\106\116\115\124\055\122\103\115\061 +\031\060\027\006\003\125\004\013\014\020\101\103\040\122\101\111 +\132\040\106\116\115\124\055\122\103\115\060\036\027\015\060\070 +\061\060\062\071\061\065\065\071\065\066\132\027\015\063\060\060 +\061\060\061\060\060\060\060\060\060\132\060\073\061\013\060\011 +\006\003\125\004\006\023\002\105\123\061\021\060\017\006\003\125 +\004\012\014\010\106\116\115\124\055\122\103\115\061\031\060\027 +\006\003\125\004\013\014\020\101\103\040\122\101\111\132\040\106 +\116\115\124\055\122\103\115\060\202\002\042\060\015\006\011\052 +\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060 +\202\002\012\002\202\002\001\000\272\161\200\172\114\206\156\177 +\310\023\155\300\306\175\034\000\227\217\054\014\043\273\020\232 +\100\251\032\267\207\210\370\233\126\152\373\346\173\216\213\222 +\216\247\045\135\131\021\333\066\056\267\121\027\037\251\010\037 +\004\027\044\130\252\067\112\030\337\345\071\324\127\375\327\301 +\054\221\001\221\342\042\324\003\300\130\374\167\107\354\217\076 +\164\103\272\254\064\215\115\070\166\147\216\260\310\157\060\063 +\130\161\134\264\365\153\156\324\001\120\270\023\176\154\112\243 +\111\321\040\031\356\274\300\051\030\145\247\336\376\357\335\012 +\220\041\347\032\147\222\102\020\230\137\117\060\274\076\034\105 +\264\020\327\150\100\024\300\100\372\347\167\027\172\346\013\217 +\145\133\074\331\232\122\333\265\275\236\106\317\075\353\221\005 +\002\300\226\262\166\114\115\020\226\073\222\372\234\177\017\231 +\337\276\043\065\105\036\002\134\376\265\250\233\231\045\332\136 +\363\042\303\071\365\344\052\056\323\306\037\304\154\252\305\034 +\152\001\005\112\057\322\305\301\250\064\046\135\146\245\322\002 +\041\371\030\267\006\365\116\231\157\250\253\114\121\350\317\120 +\030\305\167\310\071\011\054\111\222\062\231\250\273\027\027\171 +\260\132\305\346\243\304\131\145\107\065\203\136\251\350\065\013 +\231\273\344\315\040\306\233\112\006\071\265\150\374\042\272\356 +\125\214\053\116\352\363\261\343\374\266\231\232\325\102\372\161 +\115\010\317\207\036\152\161\175\371\323\264\351\245\161\201\173 +\302\116\107\226\245\366\166\205\243\050\217\351\200\156\201\123 +\245\155\137\270\110\371\302\371\066\246\056\111\377\270\226\302 +\214\007\263\233\210\130\374\353\033\034\336\055\160\342\227\222 +\060\241\211\343\274\125\250\047\326\113\355\220\255\213\372\143 +\045\131\055\250\065\335\312\227\063\274\345\315\307\235\321\354 +\357\136\016\112\220\006\046\143\255\271\331\065\055\007\272\166 +\145\054\254\127\217\175\364\007\224\327\201\002\226\135\243\007 +\111\325\172\320\127\371\033\347\123\106\165\252\260\171\102\313 +\150\161\010\351\140\275\071\151\316\364\257\303\126\100\307\255 +\122\242\011\344\157\206\107\212\037\353\050\047\135\203\040\257 +\004\311\154\126\232\213\106\365\002\003\001\000\001\243\201\203 +\060\201\200\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\035\006\003\125\035\016\004\026\004\024\367 +\175\305\375\304\350\232\033\167\144\247\365\035\240\314\277\207 +\140\232\155\060\076\006\003\125\035\040\004\067\060\065\060\063 +\006\004\125\035\040\000\060\053\060\051\006\010\053\006\001\005 +\005\007\002\001\026\035\150\164\164\160\072\057\057\167\167\167 +\056\143\145\162\164\056\146\156\155\164\056\145\163\057\144\160 +\143\163\057\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\003\202\002\001\000\007\220\112\337\363\043\116\360\303 +\234\121\145\233\234\042\242\212\014\205\363\163\051\153\115\376 +\001\342\251\014\143\001\277\004\147\245\235\230\137\375\001\023 +\372\354\232\142\351\206\376\266\142\322\156\114\224\373\300\165 +\105\174\145\014\370\262\067\317\254\017\317\215\157\371\031\367 +\217\354\036\362\160\236\360\312\270\357\267\377\166\067\166\133 +\366\156\210\363\257\142\062\042\223\015\072\152\216\024\146\014 +\055\123\164\127\145\036\325\262\335\043\201\073\245\146\043\047 +\147\011\217\341\167\252\103\315\145\121\010\355\121\130\376\346 +\071\371\313\107\204\244\025\361\166\273\244\356\244\073\304\137 +\357\262\063\226\021\030\267\311\145\276\030\341\243\244\334\372 +\030\371\323\274\023\233\071\172\064\272\323\101\373\372\062\212 +\052\267\053\206\013\151\203\070\276\315\212\056\013\160\255\215 +\046\222\356\036\365\001\053\012\331\326\227\233\156\340\250\031 +\034\072\041\213\014\036\100\255\003\347\335\146\176\365\271\040 +\015\003\350\226\371\202\105\324\071\340\240\000\135\327\230\346 +\175\236\147\163\303\232\052\367\253\213\241\072\024\357\064\274 +\122\016\211\230\232\004\100\204\035\176\105\151\223\127\316\353 +\316\370\120\174\117\034\156\004\103\233\371\326\073\043\030\351 +\352\216\321\115\106\215\361\073\344\152\312\272\373\043\267\233 +\372\231\001\051\132\130\132\055\343\371\324\155\016\046\255\301 +\156\064\274\062\370\014\005\372\145\243\333\073\067\203\042\351 +\326\334\162\063\375\135\362\040\275\166\074\043\332\050\367\371 +\033\353\131\144\325\334\137\162\176\040\374\315\211\265\220\147 +\115\142\172\077\116\255\035\303\071\376\172\364\050\026\337\101 +\366\110\200\005\327\017\121\171\254\020\253\324\354\003\146\346 +\152\260\272\061\222\102\100\152\276\072\323\162\341\152\067\125 +\274\254\035\225\267\151\141\362\103\221\164\346\240\323\012\044 +\106\241\010\257\326\332\105\031\226\324\123\035\133\204\171\360 +\300\367\107\357\213\217\305\006\256\235\114\142\235\377\106\004 +\370\323\311\266\020\045\100\165\376\026\252\311\112\140\206\057 +\272\357\060\167\344\124\342\270\204\231\130\200\252\023\213\121 +\072\117\110\366\213\266\263 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "AC RAIZ FNMT-RCM" +# Issuer: OU=AC RAIZ FNMT-RCM,O=FNMT-RCM,C=ES +# Serial Number:5d:93:8d:30:67:36:c8:06:1d:1a:c7:54:84:69:07 +# Subject: OU=AC RAIZ FNMT-RCM,O=FNMT-RCM,C=ES +# Not Valid Before: Wed Oct 29 15:59:56 2008 +# Not Valid After : Tue Jan 01 00:00:00 2030 +# Fingerprint (SHA-256): EB:C5:57:0C:29:01:8C:4D:67:B1:AA:12:7B:AF:12:F7:03:B4:61:1E:BC:17:B7:DA:B5:57:38:94:17:9B:93:FA +# Fingerprint (SHA1): EC:50:35:07:B2:15:C4:95:62:19:E2:A8:9A:5B:42:99:2C:4C:2C:20 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AC RAIZ FNMT-RCM" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\354\120\065\007\262\025\304\225\142\031\342\250\232\133\102\231 +\054\114\054\040 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\342\011\004\264\323\275\321\240\024\375\032\322\107\304\127\035 +END +CKA_ISSUER MULTILINE_OCTAL +\060\073\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\021\060\017\006\003\125\004\012\014\010\106\116\115\124\055\122 +\103\115\061\031\060\027\006\003\125\004\013\014\020\101\103\040 +\122\101\111\132\040\106\116\115\124\055\122\103\115 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\017\135\223\215\060\147\066\310\006\035\032\307\124\204\151 +\007 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Amazon Root CA 1" +# +# Issuer: CN=Amazon Root CA 1,O=Amazon,C=US +# Serial Number:06:6c:9f:cf:99:bf:8c:0a:39:e2:f0:78:8a:43:e6:96:36:5b:ca +# Subject: CN=Amazon Root CA 1,O=Amazon,C=US +# Not Valid Before: Tue May 26 00:00:00 2015 +# Not Valid After : Sun Jan 17 00:00:00 2038 +# Fingerprint (SHA-256): 8E:CD:E6:88:4F:3D:87:B1:12:5B:A3:1A:C3:FC:B1:3D:70:16:DE:7F:57:CC:90:4F:E1:CB:97:C6:AE:98:19:6E +# Fingerprint (SHA1): 8D:A7:F9:65:EC:5E:FC:37:91:0F:1C:6E:59:FD:C1:CC:6A:6E:DE:16 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Amazon Root CA 1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\023\006\154\237\317\231\277\214\012\071\342\360\170\212\103 +\346\226\066\133\312 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\101\060\202\002\051\240\003\002\001\002\002\023\006 +\154\237\317\231\277\214\012\071\342\360\170\212\103\346\226\066 +\133\312\060\015\006\011\052\206\110\206\367\015\001\001\013\005 +\000\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157 +\156\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172 +\157\156\040\122\157\157\164\040\103\101\040\061\060\036\027\015 +\061\065\060\065\062\066\060\060\060\060\060\060\132\027\015\063 +\070\060\061\061\067\060\060\060\060\060\060\132\060\071\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\017\060\015\006 +\003\125\004\012\023\006\101\155\141\172\157\156\061\031\060\027 +\006\003\125\004\003\023\020\101\155\141\172\157\156\040\122\157 +\157\164\040\103\101\040\061\060\202\001\042\060\015\006\011\052 +\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000\060 +\202\001\012\002\202\001\001\000\262\170\200\161\312\170\325\343 +\161\257\107\200\120\164\175\156\330\327\210\166\364\231\150\367 +\130\041\140\371\164\204\001\057\254\002\055\206\323\240\103\172 +\116\262\244\320\066\272\001\276\215\333\110\310\007\027\066\114 +\364\356\210\043\307\076\353\067\365\265\031\370\111\150\260\336 +\327\271\166\070\035\141\236\244\376\202\066\245\345\112\126\344 +\105\341\371\375\264\026\372\164\332\234\233\065\071\057\372\260 +\040\120\006\154\172\320\200\262\246\371\257\354\107\031\217\120 +\070\007\334\242\207\071\130\370\272\325\251\371\110\147\060\226 +\356\224\170\136\157\211\243\121\300\060\206\146\241\105\146\272 +\124\353\243\303\221\371\110\334\377\321\350\060\055\175\055\164 +\160\065\327\210\044\367\236\304\131\156\273\163\207\027\362\062 +\106\050\270\103\372\267\035\252\312\264\362\237\044\016\055\113 +\367\161\134\136\151\377\352\225\002\313\070\212\256\120\070\157 +\333\373\055\142\033\305\307\036\124\341\167\340\147\310\017\234 +\207\043\326\077\100\040\177\040\200\304\200\114\076\073\044\046 +\216\004\256\154\232\310\252\015\002\003\001\000\001\243\102\060 +\100\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\206\060\035\006\003\125\035\016\004\026\004\024\204\030\314 +\205\064\354\274\014\224\224\056\010\131\234\307\262\020\116\012 +\010\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000 +\003\202\001\001\000\230\362\067\132\101\220\241\032\305\166\121 +\050\040\066\043\016\256\346\050\273\252\370\224\256\110\244\060 +\177\033\374\044\215\113\264\310\241\227\366\266\361\172\160\310 +\123\223\314\010\050\343\230\045\317\043\244\371\336\041\323\174 +\205\011\255\116\232\165\072\302\013\152\211\170\166\104\107\030 +\145\154\215\101\216\073\177\232\313\364\265\247\120\327\005\054 +\067\350\003\113\255\351\141\240\002\156\365\362\360\305\262\355 +\133\267\334\372\224\134\167\236\023\245\177\122\255\225\362\370 +\223\073\336\213\134\133\312\132\122\133\140\257\024\367\113\357 +\243\373\237\100\225\155\061\124\374\102\323\307\106\037\043\255 +\331\017\110\160\232\331\165\170\161\321\162\103\064\165\156\127 +\131\302\002\134\046\140\051\317\043\031\026\216\210\103\245\324 +\344\313\010\373\043\021\103\350\103\051\162\142\241\251\135\136 +\010\324\220\256\270\330\316\024\302\320\125\362\206\366\304\223 +\103\167\146\141\300\271\350\101\327\227\170\140\003\156\112\162 +\256\245\321\175\272\020\236\206\154\033\212\271\131\063\370\353 +\304\220\276\361\271 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Amazon Root CA 1" +# Issuer: CN=Amazon Root CA 1,O=Amazon,C=US +# Serial Number:06:6c:9f:cf:99:bf:8c:0a:39:e2:f0:78:8a:43:e6:96:36:5b:ca +# Subject: CN=Amazon Root CA 1,O=Amazon,C=US +# Not Valid Before: Tue May 26 00:00:00 2015 +# Not Valid After : Sun Jan 17 00:00:00 2038 +# Fingerprint (SHA-256): 8E:CD:E6:88:4F:3D:87:B1:12:5B:A3:1A:C3:FC:B1:3D:70:16:DE:7F:57:CC:90:4F:E1:CB:97:C6:AE:98:19:6E +# Fingerprint (SHA1): 8D:A7:F9:65:EC:5E:FC:37:91:0F:1C:6E:59:FD:C1:CC:6A:6E:DE:16 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Amazon Root CA 1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\215\247\371\145\354\136\374\067\221\017\034\156\131\375\301\314 +\152\156\336\026 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\103\306\277\256\354\376\255\057\030\306\210\150\060\374\310\346 +END +CKA_ISSUER MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\023\006\154\237\317\231\277\214\012\071\342\360\170\212\103 +\346\226\066\133\312 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Amazon Root CA 2" +# +# Issuer: CN=Amazon Root CA 2,O=Amazon,C=US +# Serial Number:06:6c:9f:d2:96:35:86:9f:0a:0f:e5:86:78:f8:5b:26:bb:8a:37 +# Subject: CN=Amazon Root CA 2,O=Amazon,C=US +# Not Valid Before: Tue May 26 00:00:00 2015 +# Not Valid After : Sat May 26 00:00:00 2040 +# Fingerprint (SHA-256): 1B:A5:B2:AA:8C:65:40:1A:82:96:01:18:F8:0B:EC:4F:62:30:4D:83:CE:C4:71:3A:19:C3:9C:01:1E:A4:6D:B4 +# Fingerprint (SHA1): 5A:8C:EF:45:D7:A6:98:59:76:7A:8C:8B:44:96:B5:78:CF:47:4B:1A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Amazon Root CA 2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\023\006\154\237\322\226\065\206\237\012\017\345\206\170\370 +\133\046\273\212\067 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\101\060\202\003\051\240\003\002\001\002\002\023\006 +\154\237\322\226\065\206\237\012\017\345\206\170\370\133\046\273 +\212\067\060\015\006\011\052\206\110\206\367\015\001\001\014\005 +\000\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157 +\156\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172 +\157\156\040\122\157\157\164\040\103\101\040\062\060\036\027\015 +\061\065\060\065\062\066\060\060\060\060\060\060\132\027\015\064 +\060\060\065\062\066\060\060\060\060\060\060\132\060\071\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\017\060\015\006 +\003\125\004\012\023\006\101\155\141\172\157\156\061\031\060\027 +\006\003\125\004\003\023\020\101\155\141\172\157\156\040\122\157 +\157\164\040\103\101\040\062\060\202\002\042\060\015\006\011\052 +\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060 +\202\002\012\002\202\002\001\000\255\226\237\055\234\112\114\112 +\201\171\121\231\354\212\313\153\140\121\023\274\115\155\006\374 +\260\010\215\335\031\020\152\307\046\014\065\330\300\157\040\204 +\351\224\261\233\205\003\303\133\333\112\350\310\370\220\166\331 +\133\117\343\114\350\006\066\115\314\232\254\075\014\220\053\222 +\324\006\031\140\254\067\104\171\205\201\202\255\132\067\340\015 +\314\235\246\114\122\166\352\103\235\267\004\321\120\366\125\340 +\325\322\246\111\205\351\067\351\312\176\256\134\225\115\110\232 +\077\256\040\132\155\210\225\331\064\270\122\032\103\220\260\277 +\154\005\271\266\170\267\352\320\344\072\074\022\123\142\377\112 +\362\173\276\065\005\251\022\064\343\363\144\164\142\054\075\000 +\111\132\050\376\062\104\273\207\335\145\047\002\161\073\332\112 +\367\037\332\315\367\041\125\220\117\017\354\256\202\341\237\153 +\331\105\323\273\360\137\207\355\074\054\071\206\332\077\336\354 +\162\125\353\171\243\255\333\335\174\260\272\034\316\374\336\117 +\065\166\317\017\370\170\037\152\066\121\106\047\141\133\351\236 +\317\360\242\125\175\174\045\212\157\057\264\305\317\204\056\053 +\375\015\121\020\154\373\137\033\274\033\176\305\256\073\230\001 +\061\222\377\013\127\364\232\262\271\127\351\253\357\015\166\321 +\360\356\364\316\206\247\340\156\351\264\151\241\337\151\366\063 +\306\151\056\227\023\236\245\207\260\127\020\201\067\311\123\263 +\273\177\366\222\321\234\320\030\364\222\156\332\203\117\246\143 +\231\114\245\373\136\357\041\144\172\040\137\154\144\205\025\313 +\067\351\142\014\013\052\026\334\001\056\062\332\076\113\365\236 +\072\366\027\100\224\357\236\221\010\206\372\276\143\250\132\063 +\354\313\164\103\225\371\154\151\122\066\307\051\157\374\125\003 +\134\037\373\237\275\107\353\347\111\107\225\013\116\211\042\011 +\111\340\365\141\036\361\277\056\212\162\156\200\131\377\127\072 +\371\165\062\243\116\137\354\355\050\142\331\115\163\362\314\201 +\027\140\355\315\353\334\333\247\312\305\176\002\275\362\124\010 +\124\375\264\055\011\054\027\124\112\230\321\124\341\121\147\010 +\322\355\156\176\157\077\322\055\201\131\051\146\313\220\071\225 +\021\036\164\047\376\335\353\257\002\003\001\000\001\243\102\060 +\100\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\206\060\035\006\003\125\035\016\004\026\004\024\260\014\360 +\114\060\364\005\130\002\110\375\063\345\122\257\113\204\343\146 +\122\060\015\006\011\052\206\110\206\367\015\001\001\014\005\000 +\003\202\002\001\000\252\250\200\217\016\170\243\340\242\324\315 +\346\365\230\172\073\352\000\003\260\227\016\223\274\132\250\366 +\054\214\162\207\251\261\374\177\163\375\143\161\170\245\207\131 +\317\060\341\015\020\262\023\132\155\202\365\152\346\200\237\240 +\005\013\150\344\107\153\307\152\337\266\375\167\062\162\345\030 +\372\011\364\240\223\054\135\322\214\165\205\166\145\220\014\003 +\171\267\061\043\143\255\170\203\011\206\150\204\312\377\371\317 +\046\232\222\171\347\315\113\305\347\141\247\027\313\363\251\022 +\223\223\153\247\350\057\123\222\304\140\130\260\314\002\121\030 +\133\205\215\142\131\143\266\255\264\336\232\373\046\367\000\047 +\300\135\125\067\164\231\311\120\177\343\131\056\104\343\054\045 +\356\354\114\062\167\264\237\032\351\113\135\040\305\332\375\034 +\207\026\306\103\350\324\273\046\232\105\160\136\251\013\067\123 +\342\106\173\047\375\340\106\362\211\267\314\102\266\313\050\046 +\156\331\245\311\072\310\101\023\140\367\120\214\025\256\262\155 +\032\025\032\127\170\346\222\052\331\145\220\202\077\154\002\257 +\256\022\072\047\226\066\004\327\035\242\200\143\251\233\361\345 +\272\264\174\024\260\116\311\261\037\164\137\070\366\121\352\233 +\372\054\242\021\324\251\055\047\032\105\261\257\262\116\161\015 +\300\130\106\326\151\006\313\123\313\263\376\153\101\315\101\176 +\175\114\017\174\162\171\172\131\315\136\112\016\254\233\251\230 +\163\171\174\264\364\314\271\270\007\014\262\164\134\270\307\157 +\210\241\220\247\364\252\371\277\147\072\364\032\025\142\036\267 +\237\276\075\261\051\257\147\241\022\362\130\020\031\123\003\060 +\033\270\032\211\366\234\275\227\003\216\243\011\363\035\213\041 +\361\264\337\344\034\321\237\145\002\006\352\134\326\023\263\204 +\357\242\245\134\214\167\051\247\150\300\153\256\100\322\250\264 +\352\315\360\215\113\070\234\031\232\033\050\124\270\211\220\357 +\312\165\201\076\036\362\144\044\307\030\257\116\377\107\236\007 +\366\065\145\244\323\012\126\377\365\027\144\154\357\250\042\045 +\111\223\266\337\000\027\332\130\176\135\356\305\033\260\321\321 +\137\041\020\307\371\363\272\002\012\047\007\305\361\326\307\323 +\340\373\011\140\154 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Amazon Root CA 2" +# Issuer: CN=Amazon Root CA 2,O=Amazon,C=US +# Serial Number:06:6c:9f:d2:96:35:86:9f:0a:0f:e5:86:78:f8:5b:26:bb:8a:37 +# Subject: CN=Amazon Root CA 2,O=Amazon,C=US +# Not Valid Before: Tue May 26 00:00:00 2015 +# Not Valid After : Sat May 26 00:00:00 2040 +# Fingerprint (SHA-256): 1B:A5:B2:AA:8C:65:40:1A:82:96:01:18:F8:0B:EC:4F:62:30:4D:83:CE:C4:71:3A:19:C3:9C:01:1E:A4:6D:B4 +# Fingerprint (SHA1): 5A:8C:EF:45:D7:A6:98:59:76:7A:8C:8B:44:96:B5:78:CF:47:4B:1A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Amazon Root CA 2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\132\214\357\105\327\246\230\131\166\172\214\213\104\226\265\170 +\317\107\113\032 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\310\345\215\316\250\102\342\172\300\052\134\174\236\046\277\146 +END +CKA_ISSUER MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\023\006\154\237\322\226\065\206\237\012\017\345\206\170\370 +\133\046\273\212\067 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Amazon Root CA 3" +# +# Issuer: CN=Amazon Root CA 3,O=Amazon,C=US +# Serial Number:06:6c:9f:d5:74:97:36:66:3f:3b:0b:9a:d9:e8:9e:76:03:f2:4a +# Subject: CN=Amazon Root CA 3,O=Amazon,C=US +# Not Valid Before: Tue May 26 00:00:00 2015 +# Not Valid After : Sat May 26 00:00:00 2040 +# Fingerprint (SHA-256): 18:CE:6C:FE:7B:F1:4E:60:B2:E3:47:B8:DF:E8:68:CB:31:D0:2E:BB:3A:DA:27:15:69:F5:03:43:B4:6D:B3:A4 +# Fingerprint (SHA1): 0D:44:DD:8C:3C:8C:1A:1A:58:75:64:81:E9:0F:2E:2A:FF:B3:D2:6E +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Amazon Root CA 3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\023\006\154\237\325\164\227\066\146\077\073\013\232\331\350 +\236\166\003\362\112 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\001\266\060\202\001\133\240\003\002\001\002\002\023\006 +\154\237\325\164\227\066\146\077\073\013\232\331\350\236\166\003 +\362\112\060\012\006\010\052\206\110\316\075\004\003\002\060\071 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\017\060 +\015\006\003\125\004\012\023\006\101\155\141\172\157\156\061\031 +\060\027\006\003\125\004\003\023\020\101\155\141\172\157\156\040 +\122\157\157\164\040\103\101\040\063\060\036\027\015\061\065\060 +\065\062\066\060\060\060\060\060\060\132\027\015\064\060\060\065 +\062\066\060\060\060\060\060\060\132\060\071\061\013\060\011\006 +\003\125\004\006\023\002\125\123\061\017\060\015\006\003\125\004 +\012\023\006\101\155\141\172\157\156\061\031\060\027\006\003\125 +\004\003\023\020\101\155\141\172\157\156\040\122\157\157\164\040 +\103\101\040\063\060\131\060\023\006\007\052\206\110\316\075\002 +\001\006\010\052\206\110\316\075\003\001\007\003\102\000\004\051 +\227\247\306\101\177\300\015\233\350\001\033\126\306\362\122\245 +\272\055\262\022\350\322\056\327\372\311\305\330\252\155\037\163 +\201\073\073\230\153\071\174\063\245\305\116\206\216\200\027\150 +\142\105\127\175\104\130\035\263\067\345\147\010\353\146\336\243 +\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\206\060\035\006\003\125\035\016\004\026\004\024\253 +\266\333\327\006\236\067\254\060\206\007\221\160\307\234\304\031 +\261\170\300\060\012\006\010\052\206\110\316\075\004\003\002\003 +\111\000\060\106\002\041\000\340\205\222\243\027\267\215\371\053 +\006\245\223\254\032\230\150\141\162\372\341\241\320\373\034\170 +\140\246\103\231\305\270\304\002\041\000\234\002\357\361\224\234 +\263\226\371\353\306\052\370\266\054\376\072\220\024\026\327\214 +\143\044\110\034\337\060\175\325\150\073 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Amazon Root CA 3" +# Issuer: CN=Amazon Root CA 3,O=Amazon,C=US +# Serial Number:06:6c:9f:d5:74:97:36:66:3f:3b:0b:9a:d9:e8:9e:76:03:f2:4a +# Subject: CN=Amazon Root CA 3,O=Amazon,C=US +# Not Valid Before: Tue May 26 00:00:00 2015 +# Not Valid After : Sat May 26 00:00:00 2040 +# Fingerprint (SHA-256): 18:CE:6C:FE:7B:F1:4E:60:B2:E3:47:B8:DF:E8:68:CB:31:D0:2E:BB:3A:DA:27:15:69:F5:03:43:B4:6D:B3:A4 +# Fingerprint (SHA1): 0D:44:DD:8C:3C:8C:1A:1A:58:75:64:81:E9:0F:2E:2A:FF:B3:D2:6E +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Amazon Root CA 3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\015\104\335\214\074\214\032\032\130\165\144\201\351\017\056\052 +\377\263\322\156 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\240\324\357\013\367\265\330\111\225\052\354\365\304\374\201\207 +END +CKA_ISSUER MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\023\006\154\237\325\164\227\066\146\077\073\013\232\331\350 +\236\166\003\362\112 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Amazon Root CA 4" +# +# Issuer: CN=Amazon Root CA 4,O=Amazon,C=US +# Serial Number:06:6c:9f:d7:c1:bb:10:4c:29:43:e5:71:7b:7b:2c:c8:1a:c1:0e +# Subject: CN=Amazon Root CA 4,O=Amazon,C=US +# Not Valid Before: Tue May 26 00:00:00 2015 +# Not Valid After : Sat May 26 00:00:00 2040 +# Fingerprint (SHA-256): E3:5D:28:41:9E:D0:20:25:CF:A6:90:38:CD:62:39:62:45:8D:A5:C6:95:FB:DE:A3:C2:2B:0B:FB:25:89:70:92 +# Fingerprint (SHA1): F6:10:84:07:D6:F8:BB:67:98:0C:C2:E2:44:C2:EB:AE:1C:EF:63:BE +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Amazon Root CA 4" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\064 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\023\006\154\237\327\301\273\020\114\051\103\345\161\173\173 +\054\310\032\301\016 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\001\362\060\202\001\170\240\003\002\001\002\002\023\006 +\154\237\327\301\273\020\114\051\103\345\161\173\173\054\310\032 +\301\016\060\012\006\010\052\206\110\316\075\004\003\003\060\071 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\017\060 +\015\006\003\125\004\012\023\006\101\155\141\172\157\156\061\031 +\060\027\006\003\125\004\003\023\020\101\155\141\172\157\156\040 +\122\157\157\164\040\103\101\040\064\060\036\027\015\061\065\060 +\065\062\066\060\060\060\060\060\060\132\027\015\064\060\060\065 +\062\066\060\060\060\060\060\060\132\060\071\061\013\060\011\006 +\003\125\004\006\023\002\125\123\061\017\060\015\006\003\125\004 +\012\023\006\101\155\141\172\157\156\061\031\060\027\006\003\125 +\004\003\023\020\101\155\141\172\157\156\040\122\157\157\164\040 +\103\101\040\064\060\166\060\020\006\007\052\206\110\316\075\002 +\001\006\005\053\201\004\000\042\003\142\000\004\322\253\212\067 +\117\243\123\015\376\301\212\173\113\250\173\106\113\143\260\142 +\366\055\033\333\010\161\041\322\000\350\143\275\232\047\373\360 +\071\156\135\352\075\245\311\201\252\243\133\040\230\105\135\026 +\333\375\350\020\155\343\234\340\343\275\137\204\142\363\160\144 +\063\240\313\044\057\160\272\210\241\052\240\165\370\201\256\142 +\006\304\201\333\071\156\051\260\036\372\056\134\243\102\060\100 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 +\206\060\035\006\003\125\035\016\004\026\004\024\323\354\307\072 +\145\156\314\341\332\166\232\126\373\234\363\206\155\127\345\201 +\060\012\006\010\052\206\110\316\075\004\003\003\003\150\000\060 +\145\002\060\072\213\041\361\275\176\021\255\320\357\130\226\057 +\326\353\235\176\220\215\053\317\146\125\303\054\343\050\251\160 +\012\107\016\360\067\131\022\377\055\231\224\050\116\052\117\065 +\115\063\132\002\061\000\352\165\000\116\073\304\072\224\022\221 +\311\130\106\235\041\023\162\247\210\234\212\344\114\112\333\226 +\324\254\213\153\153\111\022\123\063\255\327\344\276\044\374\265 +\012\166\324\245\274\020 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Amazon Root CA 4" +# Issuer: CN=Amazon Root CA 4,O=Amazon,C=US +# Serial Number:06:6c:9f:d7:c1:bb:10:4c:29:43:e5:71:7b:7b:2c:c8:1a:c1:0e +# Subject: CN=Amazon Root CA 4,O=Amazon,C=US +# Not Valid Before: Tue May 26 00:00:00 2015 +# Not Valid After : Sat May 26 00:00:00 2040 +# Fingerprint (SHA-256): E3:5D:28:41:9E:D0:20:25:CF:A6:90:38:CD:62:39:62:45:8D:A5:C6:95:FB:DE:A3:C2:2B:0B:FB:25:89:70:92 +# Fingerprint (SHA1): F6:10:84:07:D6:F8:BB:67:98:0C:C2:E2:44:C2:EB:AE:1C:EF:63:BE +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Amazon Root CA 4" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\366\020\204\007\326\370\273\147\230\014\302\342\104\302\353\256 +\034\357\143\276 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\211\274\047\325\353\027\215\006\152\151\325\375\211\107\264\315 +END +CKA_ISSUER MULTILINE_OCTAL +\060\071\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\017\060\015\006\003\125\004\012\023\006\101\155\141\172\157\156 +\061\031\060\027\006\003\125\004\003\023\020\101\155\141\172\157 +\156\040\122\157\157\164\040\103\101\040\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\023\006\154\237\327\301\273\020\114\051\103\345\161\173\173 +\054\310\032\301\016 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "D-TRUST Root CA 3 2013" +# +# Issuer: CN=D-TRUST Root CA 3 2013,O=D-Trust GmbH,C=DE +# Serial Number: 1039788 (0xfddac) +# Subject: CN=D-TRUST Root CA 3 2013,O=D-Trust GmbH,C=DE +# Not Valid Before: Fri Sep 20 08:25:51 2013 +# Not Valid After : Wed Sep 20 08:25:51 2028 +# Fingerprint (SHA-256): A1:A8:6D:04:12:1E:B8:7F:02:7C:66:F5:33:03:C2:8E:57:39:F9:43:FC:84:B3:8A:D6:AF:00:90:35:DD:94:57 +# Fingerprint (SHA1): 6C:7C:CC:E7:D4:AE:51:5F:99:08:CD:3F:F6:E8:C3:78:DF:6F:EF:97 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST Root CA 3 2013" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\037\060\035\006\003\125\004\003\014 +\026\104\055\124\122\125\123\124\040\122\157\157\164\040\103\101 +\040\063\040\062\060\061\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\037\060\035\006\003\125\004\003\014 +\026\104\055\124\122\125\123\124\040\122\157\157\164\040\103\101 +\040\063\040\062\060\061\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\017\335\254 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\016\060\202\002\366\240\003\002\001\002\002\003\017 +\335\254\060\015\006\011\052\206\110\206\367\015\001\001\013\005 +\000\060\105\061\013\060\011\006\003\125\004\006\023\002\104\105 +\061\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165 +\163\164\040\107\155\142\110\061\037\060\035\006\003\125\004\003 +\014\026\104\055\124\122\125\123\124\040\122\157\157\164\040\103 +\101\040\063\040\062\060\061\063\060\036\027\015\061\063\060\071 +\062\060\060\070\062\065\065\061\132\027\015\062\070\060\071\062 +\060\060\070\062\065\065\061\132\060\105\061\013\060\011\006\003 +\125\004\006\023\002\104\105\061\025\060\023\006\003\125\004\012 +\014\014\104\055\124\162\165\163\164\040\107\155\142\110\061\037 +\060\035\006\003\125\004\003\014\026\104\055\124\122\125\123\124 +\040\122\157\157\164\040\103\101\040\063\040\062\060\061\063\060 +\202\001\042\060\015\006\011\052\206\110\206\367\015\001\001\001 +\005\000\003\202\001\017\000\060\202\001\012\002\202\001\001\000 +\304\173\102\222\202\037\354\355\124\230\216\022\300\312\011\337 +\223\156\072\223\134\033\344\020\167\236\116\151\210\154\366\341 +\151\362\366\233\242\141\261\275\007\040\164\230\145\361\214\046 +\010\315\250\065\312\200\066\321\143\155\350\104\172\202\303\154 +\136\336\273\350\066\322\304\150\066\214\237\062\275\204\042\340 +\334\302\356\020\106\071\155\257\223\071\256\207\346\303\274\011 +\311\054\153\147\133\331\233\166\165\114\013\340\273\305\327\274 +\076\171\362\137\276\321\220\127\371\256\366\146\137\061\277\323 +\155\217\247\272\112\363\043\145\273\267\357\243\045\327\012\352 +\130\266\357\210\372\372\171\262\122\130\325\360\254\214\241\121 +\164\051\225\252\121\073\220\062\003\237\034\162\164\220\336\075 +\355\141\322\345\343\375\144\107\345\271\267\112\251\367\037\256 +\226\206\004\254\057\343\244\201\167\267\132\026\377\330\017\077 +\366\267\170\314\244\257\372\133\074\022\133\250\122\211\162\357 +\210\363\325\104\201\206\225\043\237\173\335\274\331\064\357\174 +\224\074\252\300\101\302\343\235\120\032\300\344\031\042\374\263 +\002\003\001\000\001\243\202\001\005\060\202\001\001\060\017\006 +\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\035 +\006\003\125\035\016\004\026\004\024\077\220\310\175\307\025\157 +\363\044\217\251\303\057\113\242\017\041\262\057\347\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\201\276 +\006\003\125\035\037\004\201\266\060\201\263\060\164\240\162\240 +\160\206\156\154\144\141\160\072\057\057\144\151\162\145\143\164 +\157\162\171\056\144\055\164\162\165\163\164\056\156\145\164\057 +\103\116\075\104\055\124\122\125\123\124\045\062\060\122\157\157 +\164\045\062\060\103\101\045\062\060\063\045\062\060\062\060\061 +\063\054\117\075\104\055\124\162\165\163\164\045\062\060\107\155 +\142\110\054\103\075\104\105\077\143\145\162\164\151\146\151\143 +\141\164\145\162\145\166\157\143\141\164\151\157\156\154\151\163 +\164\060\073\240\071\240\067\206\065\150\164\164\160\072\057\057 +\143\162\154\056\144\055\164\162\165\163\164\056\156\145\164\057 +\143\162\154\057\144\055\164\162\165\163\164\137\162\157\157\164 +\137\143\141\137\063\137\062\060\061\063\056\143\162\154\060\015 +\006\011\052\206\110\206\367\015\001\001\013\005\000\003\202\001 +\001\000\016\131\016\130\344\164\110\043\104\317\064\041\265\234 +\024\032\255\232\113\267\263\210\155\134\251\027\160\360\052\237 +\215\173\371\173\205\372\307\071\350\020\010\260\065\053\137\317 +\002\322\323\234\310\013\036\356\005\124\256\067\223\004\011\175 +\154\217\302\164\274\370\034\224\276\061\001\100\055\363\044\040 +\267\204\125\054\134\310\365\164\112\020\031\213\243\307\355\065 +\326\011\110\323\016\300\272\071\250\260\106\002\260\333\306\210 +\131\302\276\374\173\261\053\317\176\142\207\125\226\314\001\157 +\233\147\041\225\065\213\370\020\374\161\033\267\113\067\151\246 +\073\326\354\213\356\301\260\363\045\311\217\222\175\241\352\303 +\312\104\277\046\245\164\222\234\343\164\353\235\164\331\313\115 +\207\330\374\264\151\154\213\240\103\007\140\170\227\351\331\223 +\174\302\106\274\233\067\122\243\355\212\074\023\251\173\123\113 +\111\232\021\005\054\013\156\126\254\037\056\202\154\340\151\147 +\265\016\155\055\331\344\300\025\361\077\372\030\162\341\025\155 +\047\133\055\060\050\053\237\110\232\144\053\231\357\362\165\111 +\137\134 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "D-TRUST Root CA 3 2013" +# Issuer: CN=D-TRUST Root CA 3 2013,O=D-Trust GmbH,C=DE +# Serial Number: 1039788 (0xfddac) +# Subject: CN=D-TRUST Root CA 3 2013,O=D-Trust GmbH,C=DE +# Not Valid Before: Fri Sep 20 08:25:51 2013 +# Not Valid After : Wed Sep 20 08:25:51 2028 +# Fingerprint (SHA-256): A1:A8:6D:04:12:1E:B8:7F:02:7C:66:F5:33:03:C2:8E:57:39:F9:43:FC:84:B3:8A:D6:AF:00:90:35:DD:94:57 +# Fingerprint (SHA1): 6C:7C:CC:E7:D4:AE:51:5F:99:08:CD:3F:F6:E8:C3:78:DF:6F:EF:97 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST Root CA 3 2013" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\154\174\314\347\324\256\121\137\231\010\315\077\366\350\303\170 +\337\157\357\227 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\267\042\146\230\176\326\003\340\301\161\346\165\315\126\105\277 +END +CKA_ISSUER MULTILINE_OCTAL +\060\105\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\014\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\037\060\035\006\003\125\004\003\014 +\026\104\055\124\122\125\123\124\040\122\157\157\164\040\103\101 +\040\063\040\062\060\061\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\003\017\335\254 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +# +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1,OU=Kamu Sertifikasyon Merkezi - Kamu SM,O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK,L=Gebze - Kocaeli,C=TR +# Serial Number: 1 (0x1) +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1,OU=Kamu Sertifikasyon Merkezi - Kamu SM,O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK,L=Gebze - Kocaeli,C=TR +# Not Valid Before: Mon Nov 25 08:25:55 2013 +# Not Valid After : Sun Oct 25 08:25:55 2043 +# Fingerprint (SHA-256): 46:ED:C3:68:90:46:D5:3A:45:3F:B3:10:4A:B8:0D:CA:EC:65:8B:26:60:EA:16:29:DD:7E:86:79:90:64:87:16 +# Fingerprint (SHA1): 31:43:64:9B:EC:CE:27:EC:ED:3A:3F:0B:8F:0D:E4:E8:91:DD:EE:CA +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\322\061\013\060\011\006\003\125\004\006\023\002\124\122 +\061\030\060\026\006\003\125\004\007\023\017\107\145\142\172\145 +\040\055\040\113\157\143\141\145\154\151\061\102\060\100\006\003 +\125\004\012\023\071\124\165\162\153\151\171\145\040\102\151\154 +\151\155\163\145\154\040\166\145\040\124\145\153\156\157\154\157 +\152\151\153\040\101\162\141\163\164\151\162\155\141\040\113\165 +\162\165\155\165\040\055\040\124\125\102\111\124\101\113\061\055 +\060\053\006\003\125\004\013\023\044\113\141\155\165\040\123\145 +\162\164\151\146\151\153\141\163\171\157\156\040\115\145\162\153 +\145\172\151\040\055\040\113\141\155\165\040\123\115\061\066\060 +\064\006\003\125\004\003\023\055\124\125\102\111\124\101\113\040 +\113\141\155\165\040\123\115\040\123\123\114\040\113\157\153\040 +\123\145\162\164\151\146\151\153\141\163\151\040\055\040\123\165 +\162\165\155\040\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\322\061\013\060\011\006\003\125\004\006\023\002\124\122 +\061\030\060\026\006\003\125\004\007\023\017\107\145\142\172\145 +\040\055\040\113\157\143\141\145\154\151\061\102\060\100\006\003 +\125\004\012\023\071\124\165\162\153\151\171\145\040\102\151\154 +\151\155\163\145\154\040\166\145\040\124\145\153\156\157\154\157 +\152\151\153\040\101\162\141\163\164\151\162\155\141\040\113\165 +\162\165\155\165\040\055\040\124\125\102\111\124\101\113\061\055 +\060\053\006\003\125\004\013\023\044\113\141\155\165\040\123\145 +\162\164\151\146\151\153\141\163\171\157\156\040\115\145\162\153 +\145\172\151\040\055\040\113\141\155\165\040\123\115\061\066\060 +\064\006\003\125\004\003\023\055\124\125\102\111\124\101\113\040 +\113\141\155\165\040\123\115\040\123\123\114\040\113\157\153\040 +\123\145\162\164\151\146\151\153\141\163\151\040\055\040\123\165 +\162\165\155\040\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\004\143\060\202\003\113\240\003\002\001\002\002\001\001 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\201\322\061\013\060\011\006\003\125\004\006\023\002\124\122\061 +\030\060\026\006\003\125\004\007\023\017\107\145\142\172\145\040 +\055\040\113\157\143\141\145\154\151\061\102\060\100\006\003\125 +\004\012\023\071\124\165\162\153\151\171\145\040\102\151\154\151 +\155\163\145\154\040\166\145\040\124\145\153\156\157\154\157\152 +\151\153\040\101\162\141\163\164\151\162\155\141\040\113\165\162 +\165\155\165\040\055\040\124\125\102\111\124\101\113\061\055\060 +\053\006\003\125\004\013\023\044\113\141\155\165\040\123\145\162 +\164\151\146\151\153\141\163\171\157\156\040\115\145\162\153\145 +\172\151\040\055\040\113\141\155\165\040\123\115\061\066\060\064 +\006\003\125\004\003\023\055\124\125\102\111\124\101\113\040\113 +\141\155\165\040\123\115\040\123\123\114\040\113\157\153\040\123 +\145\162\164\151\146\151\153\141\163\151\040\055\040\123\165\162 +\165\155\040\061\060\036\027\015\061\063\061\061\062\065\060\070 +\062\065\065\065\132\027\015\064\063\061\060\062\065\060\070\062 +\065\065\065\132\060\201\322\061\013\060\011\006\003\125\004\006 +\023\002\124\122\061\030\060\026\006\003\125\004\007\023\017\107 +\145\142\172\145\040\055\040\113\157\143\141\145\154\151\061\102 +\060\100\006\003\125\004\012\023\071\124\165\162\153\151\171\145 +\040\102\151\154\151\155\163\145\154\040\166\145\040\124\145\153 +\156\157\154\157\152\151\153\040\101\162\141\163\164\151\162\155 +\141\040\113\165\162\165\155\165\040\055\040\124\125\102\111\124 +\101\113\061\055\060\053\006\003\125\004\013\023\044\113\141\155 +\165\040\123\145\162\164\151\146\151\153\141\163\171\157\156\040 +\115\145\162\153\145\172\151\040\055\040\113\141\155\165\040\123 +\115\061\066\060\064\006\003\125\004\003\023\055\124\125\102\111 +\124\101\113\040\113\141\155\165\040\123\115\040\123\123\114\040 +\113\157\153\040\123\145\162\164\151\146\151\153\141\163\151\040 +\055\040\123\165\162\165\155\040\061\060\202\001\042\060\015\006 +\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017 +\000\060\202\001\012\002\202\001\001\000\257\165\060\063\252\273 +\153\323\231\054\022\067\204\331\215\173\227\200\323\156\347\377 +\233\120\225\076\220\225\126\102\327\031\174\046\204\215\222\372 +\001\035\072\017\342\144\070\267\214\274\350\210\371\213\044\253 +\056\243\365\067\344\100\216\030\045\171\203\165\037\073\377\154 +\250\305\306\126\370\264\355\212\104\243\253\154\114\374\035\320 +\334\357\150\275\317\344\252\316\360\125\367\242\064\324\203\153 +\067\174\034\302\376\265\003\354\127\316\274\264\265\305\355\000 +\017\123\067\052\115\364\117\014\203\373\206\317\313\376\214\116 +\275\207\371\247\213\041\127\234\172\337\003\147\211\054\235\227 +\141\247\020\270\125\220\177\016\055\047\070\164\337\347\375\332 +\116\022\343\115\025\042\002\310\340\340\374\017\255\212\327\311 +\124\120\314\073\017\312\026\200\204\320\121\126\303\216\126\177 +\211\042\063\057\346\205\012\275\245\250\033\066\336\323\334\054 +\155\073\307\023\275\131\043\054\346\345\244\367\330\013\355\352 +\220\100\104\250\225\273\223\325\320\200\064\266\106\170\016\037 +\000\223\106\341\356\351\371\354\117\027\002\003\001\000\001\243 +\102\060\100\060\035\006\003\125\035\016\004\026\004\024\145\077 +\307\212\206\306\074\335\074\124\134\065\370\072\355\122\014\107 +\127\310\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\003\202\001\001\000\052\077\341\361\062\216\256\341\230 +\134\113\136\317\153\036\152\011\322\042\251\022\307\136\127\175 +\163\126\144\200\204\172\223\344\011\271\020\315\237\052\047\341 +\000\167\276\110\310\065\250\201\237\344\270\054\311\177\016\260 +\322\113\067\135\352\271\325\013\136\064\275\364\163\051\303\355 +\046\025\234\176\010\123\212\130\215\320\113\050\337\301\263\337 +\040\363\371\343\343\072\337\314\234\224\330\116\117\303\153\027 +\267\367\162\350\255\146\063\265\045\123\253\340\370\114\251\235 +\375\362\015\272\256\271\331\252\306\153\371\223\273\256\253\270 +\227\074\003\032\272\103\306\226\271\105\162\070\263\247\241\226 +\075\221\173\176\300\041\123\114\207\355\362\013\124\225\121\223 +\325\042\245\015\212\361\223\016\076\124\016\260\330\311\116\334 +\362\061\062\126\352\144\371\352\265\235\026\146\102\162\363\177 +\323\261\061\103\374\244\216\027\361\155\043\253\224\146\370\255 +\373\017\010\156\046\055\177\027\007\011\262\214\373\120\300\237 +\226\215\317\266\375\000\235\132\024\232\277\002\104\365\301\302 +\237\042\136\242\017\241\343 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1,OU=Kamu Sertifikasyon Merkezi - Kamu SM,O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK,L=Gebze - Kocaeli,C=TR +# Serial Number: 1 (0x1) +# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1,OU=Kamu Sertifikasyon Merkezi - Kamu SM,O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK,L=Gebze - Kocaeli,C=TR +# Not Valid Before: Mon Nov 25 08:25:55 2013 +# Not Valid After : Sun Oct 25 08:25:55 2043 +# Fingerprint (SHA-256): 46:ED:C3:68:90:46:D5:3A:45:3F:B3:10:4A:B8:0D:CA:EC:65:8B:26:60:EA:16:29:DD:7E:86:79:90:64:87:16 +# Fingerprint (SHA1): 31:43:64:9B:EC:CE:27:EC:ED:3A:3F:0B:8F:0D:E4:E8:91:DD:EE:CA +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\061\103\144\233\354\316\047\354\355\072\077\013\217\015\344\350 +\221\335\356\312 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\334\000\201\334\151\057\076\057\260\073\366\075\132\221\216\111 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\322\061\013\060\011\006\003\125\004\006\023\002\124\122 +\061\030\060\026\006\003\125\004\007\023\017\107\145\142\172\145 +\040\055\040\113\157\143\141\145\154\151\061\102\060\100\006\003 +\125\004\012\023\071\124\165\162\153\151\171\145\040\102\151\154 +\151\155\163\145\154\040\166\145\040\124\145\153\156\157\154\157 +\152\151\153\040\101\162\141\163\164\151\162\155\141\040\113\165 +\162\165\155\165\040\055\040\124\125\102\111\124\101\113\061\055 +\060\053\006\003\125\004\013\023\044\113\141\155\165\040\123\145 +\162\164\151\146\151\153\141\163\171\157\156\040\115\145\162\153 +\145\172\151\040\055\040\113\141\155\165\040\123\115\061\066\060 +\064\006\003\125\004\003\023\055\124\125\102\111\124\101\113\040 +\113\141\155\165\040\123\115\040\123\123\114\040\113\157\153\040 +\123\145\162\164\151\146\151\153\141\163\151\040\055\040\123\165 +\162\165\155\040\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\001\001 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GDCA TrustAUTH R5 ROOT" +# +# Issuer: CN=GDCA TrustAUTH R5 ROOT,O="GUANG DONG CERTIFICATE AUTHORITY CO.,LTD.",C=CN +# Serial Number:7d:09:97:fe:f0:47:ea:7a +# Subject: CN=GDCA TrustAUTH R5 ROOT,O="GUANG DONG CERTIFICATE AUTHORITY CO.,LTD.",C=CN +# Not Valid Before: Wed Nov 26 05:13:15 2014 +# Not Valid After : Mon Dec 31 15:59:59 2040 +# Fingerprint (SHA-256): BF:FF:8F:D0:44:33:48:7D:6A:8A:A6:0C:1A:29:76:7A:9F:C2:BB:B0:5E:42:0F:71:3A:13:B9:92:89:1D:38:93 +# Fingerprint (SHA1): 0F:36:38:5B:81:1A:25:C3:9B:31:4E:83:CA:E9:34:66:70:CC:74:B4 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GDCA TrustAUTH R5 ROOT" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\062\060\060\006\003\125\004\012\014\051\107\125\101\116\107\040 +\104\117\116\107\040\103\105\122\124\111\106\111\103\101\124\105 +\040\101\125\124\110\117\122\111\124\131\040\103\117\056\054\114 +\124\104\056\061\037\060\035\006\003\125\004\003\014\026\107\104 +\103\101\040\124\162\165\163\164\101\125\124\110\040\122\065\040 +\122\117\117\124 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\062\060\060\006\003\125\004\012\014\051\107\125\101\116\107\040 +\104\117\116\107\040\103\105\122\124\111\106\111\103\101\124\105 +\040\101\125\124\110\117\122\111\124\131\040\103\117\056\054\114 +\124\104\056\061\037\060\035\006\003\125\004\003\014\026\107\104 +\103\101\040\124\162\165\163\164\101\125\124\110\040\122\065\040 +\122\117\117\124 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\175\011\227\376\360\107\352\172 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\210\060\202\003\160\240\003\002\001\002\002\010\175 +\011\227\376\360\107\352\172\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\060\142\061\013\060\011\006\003\125\004 +\006\023\002\103\116\061\062\060\060\006\003\125\004\012\014\051 +\107\125\101\116\107\040\104\117\116\107\040\103\105\122\124\111 +\106\111\103\101\124\105\040\101\125\124\110\117\122\111\124\131 +\040\103\117\056\054\114\124\104\056\061\037\060\035\006\003\125 +\004\003\014\026\107\104\103\101\040\124\162\165\163\164\101\125 +\124\110\040\122\065\040\122\117\117\124\060\036\027\015\061\064 +\061\061\062\066\060\065\061\063\061\065\132\027\015\064\060\061 +\062\063\061\061\065\065\071\065\071\132\060\142\061\013\060\011 +\006\003\125\004\006\023\002\103\116\061\062\060\060\006\003\125 +\004\012\014\051\107\125\101\116\107\040\104\117\116\107\040\103 +\105\122\124\111\106\111\103\101\124\105\040\101\125\124\110\117 +\122\111\124\131\040\103\117\056\054\114\124\104\056\061\037\060 +\035\006\003\125\004\003\014\026\107\104\103\101\040\124\162\165 +\163\164\101\125\124\110\040\122\065\040\122\117\117\124\060\202 +\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 +\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\331 +\243\026\360\310\164\164\167\233\357\063\015\073\006\176\125\374 +\265\140\217\166\206\022\102\175\126\146\076\210\202\355\162\143 +\016\236\213\335\064\054\002\121\121\303\031\375\131\124\204\311 +\361\153\263\114\260\351\350\106\135\070\306\242\247\056\021\127 +\272\202\025\242\234\217\155\260\231\112\012\362\353\211\160\143 +\116\171\304\267\133\275\242\135\261\362\101\002\053\255\251\072 +\243\354\171\012\354\137\072\343\375\357\200\074\255\064\233\032 +\253\210\046\173\126\242\202\206\037\353\065\211\203\177\137\256 +\051\116\075\266\156\354\256\301\360\047\233\256\343\364\354\357 +\256\177\367\206\075\162\172\353\245\373\131\116\247\353\225\214 +\042\071\171\341\055\010\217\314\274\221\270\101\367\024\301\043 +\251\303\255\232\105\104\263\262\327\054\315\306\051\342\120\020 +\256\134\313\202\216\027\030\066\175\227\346\210\232\260\115\064 +\011\364\054\271\132\146\052\260\027\233\236\036\166\235\112\146 +\061\101\337\077\373\305\006\357\033\266\176\032\106\066\367\144 +\143\073\343\071\030\043\347\147\165\024\325\165\127\222\067\275 +\276\152\033\046\120\362\066\046\006\220\305\160\001\144\155\166 +\146\341\221\333\156\007\300\141\200\056\262\056\057\214\160\247 +\321\073\074\263\221\344\156\266\304\073\160\362\154\222\227\011 +\315\107\175\030\300\363\273\236\017\326\213\256\007\266\132\017 +\316\013\014\107\247\345\076\270\275\175\307\233\065\240\141\227 +\072\101\165\027\314\053\226\167\052\222\041\036\331\225\166\040 +\147\150\317\015\275\337\326\037\011\152\232\342\314\163\161\244 +\057\175\022\200\267\123\060\106\136\113\124\231\017\147\311\245 +\310\362\040\301\202\354\235\021\337\302\002\373\032\073\321\355 +\040\232\357\145\144\222\020\015\052\342\336\160\361\030\147\202 +\214\141\336\270\274\321\057\234\373\017\320\053\355\033\166\271 +\344\071\125\370\370\241\035\270\252\200\000\114\202\347\262\177 +\011\270\274\060\240\057\015\365\122\236\216\367\222\263\012\000 +\035\000\124\227\006\340\261\007\331\307\017\134\145\175\074\155 +\131\127\344\355\245\215\351\100\123\237\025\113\240\161\366\032 +\041\343\332\160\006\041\130\024\207\205\167\171\252\202\171\002 +\003\001\000\001\243\102\060\100\060\035\006\003\125\035\016\004 +\026\004\024\342\311\100\237\115\316\350\232\241\174\317\016\077 +\145\305\051\210\152\031\121\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\016\006\003\125\035\017\001 +\001\377\004\004\003\002\001\206\060\015\006\011\052\206\110\206 +\367\015\001\001\013\005\000\003\202\002\001\000\321\111\127\340 +\247\314\150\130\272\001\017\053\031\315\215\260\141\105\254\021 +\355\143\120\151\370\037\177\276\026\217\375\235\353\013\252\062 +\107\166\322\147\044\355\275\174\063\062\227\052\307\005\206\146 +\015\027\175\024\025\033\324\353\375\037\232\366\136\227\151\267 +\032\045\244\012\263\221\077\137\066\254\213\354\127\250\076\347 +\201\212\030\127\071\205\164\032\102\307\351\133\023\137\217\371 +\010\351\222\164\215\365\107\322\253\073\326\373\170\146\116\066 +\175\371\351\222\351\004\336\375\111\143\374\155\373\024\161\223 +\147\057\107\112\267\271\377\036\052\163\160\106\060\277\132\362 +\057\171\245\341\215\014\331\371\262\143\067\214\067\145\205\160 +\152\134\133\011\162\271\255\143\074\261\335\370\374\062\277\067 +\206\344\273\216\230\047\176\272\037\026\341\160\021\362\003\337 +\045\142\062\047\046\030\062\204\237\377\000\072\023\272\232\115 +\364\117\270\024\160\042\261\312\053\220\316\051\301\160\364\057 +\235\177\362\220\036\326\132\337\267\106\374\346\206\372\313\340 +\040\166\172\272\246\313\365\174\336\142\245\261\213\356\336\202 +\146\212\116\072\060\037\077\200\313\255\047\272\014\136\327\320 +\261\126\312\167\161\262\265\165\241\120\251\100\103\027\302\050 +\331\317\122\213\133\310\143\324\102\076\240\063\172\106\056\367 +\012\040\106\124\176\152\117\061\361\201\176\102\164\070\145\163 +\047\356\306\174\270\216\327\245\072\327\230\241\234\214\020\125 +\323\333\113\354\100\220\362\315\156\127\322\142\016\174\127\223 +\261\247\155\315\235\203\273\052\347\345\266\073\161\130\255\375 +\321\105\274\132\221\356\123\025\157\323\105\011\165\156\272\220 +\135\036\004\317\067\337\036\250\146\261\214\346\040\152\357\374 +\110\116\164\230\102\257\051\157\056\152\307\373\175\321\146\061 +\042\314\206\000\176\146\203\014\102\364\275\064\222\303\032\352 +\117\312\176\162\115\013\160\214\246\110\273\246\241\024\366\373 +\130\104\231\024\256\252\013\223\151\240\051\045\112\245\313\053 +\335\212\146\007\026\170\025\127\161\033\354\365\107\204\363\236 +\061\067\172\325\177\044\255\344\274\375\375\314\156\203\350\014 +\250\267\101\154\007\335\275\074\206\227\057\322 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GDCA TrustAUTH R5 ROOT" +# Issuer: CN=GDCA TrustAUTH R5 ROOT,O="GUANG DONG CERTIFICATE AUTHORITY CO.,LTD.",C=CN +# Serial Number:7d:09:97:fe:f0:47:ea:7a +# Subject: CN=GDCA TrustAUTH R5 ROOT,O="GUANG DONG CERTIFICATE AUTHORITY CO.,LTD.",C=CN +# Not Valid Before: Wed Nov 26 05:13:15 2014 +# Not Valid After : Mon Dec 31 15:59:59 2040 +# Fingerprint (SHA-256): BF:FF:8F:D0:44:33:48:7D:6A:8A:A6:0C:1A:29:76:7A:9F:C2:BB:B0:5E:42:0F:71:3A:13:B9:92:89:1D:38:93 +# Fingerprint (SHA1): 0F:36:38:5B:81:1A:25:C3:9B:31:4E:83:CA:E9:34:66:70:CC:74:B4 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GDCA TrustAUTH R5 ROOT" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\017\066\070\133\201\032\045\303\233\061\116\203\312\351\064\146 +\160\314\164\264 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\143\314\331\075\064\065\134\157\123\243\342\010\160\110\037\264 +END +CKA_ISSUER MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\062\060\060\006\003\125\004\012\014\051\107\125\101\116\107\040 +\104\117\116\107\040\103\105\122\124\111\106\111\103\101\124\105 +\040\101\125\124\110\117\122\111\124\131\040\103\117\056\054\114 +\124\104\056\061\037\060\035\006\003\125\004\003\014\026\107\104 +\103\101\040\124\162\165\163\164\101\125\124\110\040\122\065\040 +\122\117\117\124 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\175\011\227\376\360\107\352\172 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SSL.com Root Certification Authority RSA" +# +# Issuer: CN=SSL.com Root Certification Authority RSA,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Serial Number:7b:2c:9b:d3:16:80:32:99 +# Subject: CN=SSL.com Root Certification Authority RSA,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Not Valid Before: Fri Feb 12 17:39:39 2016 +# Not Valid After : Tue Feb 12 17:39:39 2041 +# Fingerprint (SHA-256): 85:66:6A:56:2E:E0:BE:5C:E9:25:C1:D8:89:0A:6F:76:A8:7E:C1:6D:4D:7D:5F:29:EA:74:19:CF:20:12:3B:69 +# Fingerprint (SHA1): B7:AB:33:08:D1:EA:44:77:BA:14:80:12:5A:6F:BD:A9:36:49:0C:BB +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com Root Certification Authority RSA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\174\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163\061 +\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164\157 +\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040 +\103\157\162\160\157\162\141\164\151\157\156\061\061\060\057\006 +\003\125\004\003\014\050\123\123\114\056\143\157\155\040\122\157 +\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\101\165\164\150\157\162\151\164\171\040\122\123\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\174\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163\061 +\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164\157 +\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040 +\103\157\162\160\157\162\141\164\151\157\156\061\061\060\057\006 +\003\125\004\003\014\050\123\123\114\056\143\157\155\040\122\157 +\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\101\165\164\150\157\162\151\164\171\040\122\123\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\173\054\233\323\026\200\062\231 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\335\060\202\003\305\240\003\002\001\002\002\010\173 +\054\233\323\026\200\062\231\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\060\174\061\013\060\011\006\003\125\004 +\006\023\002\125\123\061\016\060\014\006\003\125\004\010\014\005 +\124\145\170\141\163\061\020\060\016\006\003\125\004\007\014\007 +\110\157\165\163\164\157\156\061\030\060\026\006\003\125\004\012 +\014\017\123\123\114\040\103\157\162\160\157\162\141\164\151\157 +\156\061\061\060\057\006\003\125\004\003\014\050\123\123\114\056 +\143\157\155\040\122\157\157\164\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +\040\122\123\101\060\036\027\015\061\066\060\062\061\062\061\067 +\063\071\063\071\132\027\015\064\061\060\062\061\062\061\067\063 +\071\063\071\132\060\174\061\013\060\011\006\003\125\004\006\023 +\002\125\123\061\016\060\014\006\003\125\004\010\014\005\124\145 +\170\141\163\061\020\060\016\006\003\125\004\007\014\007\110\157 +\165\163\164\157\156\061\030\060\026\006\003\125\004\012\014\017 +\123\123\114\040\103\157\162\160\157\162\141\164\151\157\156\061 +\061\060\057\006\003\125\004\003\014\050\123\123\114\056\143\157 +\155\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141 +\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040\122 +\123\101\060\202\002\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202 +\002\001\000\371\017\335\243\053\175\313\320\052\376\354\147\205 +\246\347\056\033\272\167\341\343\365\257\244\354\372\112\135\221 +\304\127\107\153\030\167\153\166\362\375\223\344\075\017\302\026 +\236\013\146\303\126\224\236\027\203\205\316\126\357\362\026\375 +\000\142\365\042\011\124\350\145\027\116\101\271\340\117\106\227 +\252\033\310\270\156\142\136\151\261\137\333\052\002\176\374\154 +\312\363\101\330\355\320\350\374\077\141\110\355\260\003\024\035 +\020\016\113\031\340\273\116\354\206\145\377\066\363\136\147\002 +\013\235\206\125\141\375\172\070\355\376\342\031\000\267\157\241 +\120\142\165\164\074\240\372\310\045\222\264\156\172\042\307\370 +\036\241\343\262\335\221\061\253\053\035\004\377\245\112\004\067 +\351\205\244\063\053\375\342\326\125\064\174\031\244\112\150\307 +\262\250\323\267\312\241\223\210\353\301\227\274\214\371\035\331 +\042\204\044\164\307\004\075\152\251\051\223\314\353\270\133\341 +\376\137\045\252\064\130\310\301\043\124\235\033\230\021\303\070 +\234\176\075\206\154\245\017\100\206\174\002\364\134\002\117\050 +\313\256\161\237\017\072\310\063\376\021\045\065\352\374\272\305 +\140\075\331\174\030\325\262\251\323\165\170\003\162\042\312\072 +\303\037\357\054\345\056\251\372\236\054\266\121\106\375\257\003 +\326\352\140\150\352\205\026\066\153\205\351\036\300\263\335\304 +\044\334\200\052\201\101\155\224\076\310\340\311\201\101\000\236 +\136\277\177\305\010\230\242\030\054\102\100\263\371\157\070\047 +\113\116\200\364\075\201\107\340\210\174\352\034\316\265\165\134 +\121\056\034\053\177\032\162\050\347\000\265\321\164\306\327\344 +\237\255\007\223\266\123\065\065\374\067\344\303\366\135\026\276 +\041\163\336\222\012\370\240\143\152\274\226\222\152\076\370\274 +\145\125\233\336\365\015\211\046\004\374\045\032\246\045\151\313 +\302\155\312\174\342\131\137\227\254\353\357\056\310\274\327\033 +\131\074\053\314\362\031\310\223\153\047\143\031\317\374\351\046 +\370\312\161\233\177\223\376\064\147\204\116\231\353\374\263\170 +\011\063\160\272\146\246\166\355\033\163\353\032\245\015\304\042 +\023\040\224\126\012\116\054\154\116\261\375\317\234\011\272\242 +\063\355\207\002\003\001\000\001\243\143\060\141\060\035\006\003 +\125\035\016\004\026\004\024\335\004\011\007\242\365\172\175\122 +\123\022\222\225\356\070\200\045\015\246\131\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\037\006\003 +\125\035\043\004\030\060\026\200\024\335\004\011\007\242\365\172 +\175\122\123\022\222\225\356\070\200\045\015\246\131\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\206\060\015\006 +\011\052\206\110\206\367\015\001\001\013\005\000\003\202\002\001 +\000\040\030\021\224\051\373\046\235\034\036\036\160\141\361\225 +\162\223\161\044\255\150\223\130\216\062\257\033\263\160\003\374 +\045\053\164\205\220\075\170\152\364\271\213\245\227\073\265\030 +\221\273\036\247\371\100\133\221\371\125\231\257\036\021\320\134 +\035\247\146\343\261\224\007\014\062\071\246\352\033\260\171\330 +\035\234\160\104\343\212\335\304\371\225\037\212\070\103\077\001 +\205\245\107\247\075\106\262\274\345\042\150\367\173\234\330\054 +\076\012\041\310\055\063\254\277\305\201\231\061\164\301\165\161 +\305\276\261\360\043\105\364\235\153\374\031\143\235\243\274\004 +\306\030\013\045\273\123\211\017\263\200\120\336\105\356\104\177 +\253\224\170\144\230\323\366\050\335\207\330\160\145\164\373\016 +\271\023\353\247\017\141\251\062\226\314\336\273\355\143\114\030 +\273\251\100\367\240\124\156\040\210\161\165\030\352\172\264\064 +\162\340\043\047\167\134\266\220\352\206\045\100\253\357\063\017 +\313\237\202\276\242\040\373\366\265\055\032\346\302\205\261\164 +\017\373\310\145\002\244\122\001\107\335\111\042\301\277\330\353 +\153\254\176\336\354\143\063\025\267\043\010\217\306\017\215\101 +\132\335\216\305\271\217\345\105\077\170\333\272\322\033\100\261 +\376\161\115\077\340\201\242\272\136\264\354\025\340\223\335\010 +\037\176\341\125\231\013\041\336\223\236\012\373\346\243\111\275 +\066\060\376\347\167\262\240\165\227\265\055\201\210\027\145\040 +\367\332\220\000\237\311\122\314\062\312\065\174\365\075\017\330 +\053\327\365\046\154\311\006\064\226\026\352\160\131\032\062\171 +\171\013\266\210\177\017\122\110\075\277\154\330\242\104\056\321 +\116\267\162\130\323\211\023\225\376\104\253\370\327\213\033\156 +\234\274\054\240\133\325\152\000\257\137\067\341\325\372\020\013 +\230\234\206\347\046\217\316\360\354\156\212\127\013\200\343\116 +\262\300\240\143\141\220\272\125\150\067\164\152\266\222\333\237 +\241\206\042\266\145\047\016\354\266\237\102\140\344\147\302\265 +\332\101\013\304\323\213\141\033\274\372\037\221\053\327\104\007 +\136\272\051\254\331\305\351\357\123\110\132\353\200\361\050\130 +\041\315\260\006\125\373\047\077\123\220\160\251\004\036\127\047 +\271 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SSL.com Root Certification Authority RSA" +# Issuer: CN=SSL.com Root Certification Authority RSA,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Serial Number:7b:2c:9b:d3:16:80:32:99 +# Subject: CN=SSL.com Root Certification Authority RSA,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Not Valid Before: Fri Feb 12 17:39:39 2016 +# Not Valid After : Tue Feb 12 17:39:39 2041 +# Fingerprint (SHA-256): 85:66:6A:56:2E:E0:BE:5C:E9:25:C1:D8:89:0A:6F:76:A8:7E:C1:6D:4D:7D:5F:29:EA:74:19:CF:20:12:3B:69 +# Fingerprint (SHA1): B7:AB:33:08:D1:EA:44:77:BA:14:80:12:5A:6F:BD:A9:36:49:0C:BB +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com Root Certification Authority RSA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\267\253\063\010\321\352\104\167\272\024\200\022\132\157\275\251 +\066\111\014\273 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\206\151\022\300\160\361\354\254\254\302\325\274\245\133\241\051 +END +CKA_ISSUER MULTILINE_OCTAL +\060\174\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163\061 +\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164\157 +\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040 +\103\157\162\160\157\162\141\164\151\157\156\061\061\060\057\006 +\003\125\004\003\014\050\123\123\114\056\143\157\155\040\122\157 +\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\101\165\164\150\157\162\151\164\171\040\122\123\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\173\054\233\323\026\200\062\231 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SSL.com Root Certification Authority ECC" +# +# Issuer: CN=SSL.com Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Serial Number:75:e6:df:cb:c1:68:5b:a8 +# Subject: CN=SSL.com Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Not Valid Before: Fri Feb 12 18:14:03 2016 +# Not Valid After : Tue Feb 12 18:14:03 2041 +# Fingerprint (SHA-256): 34:17:BB:06:CC:60:07:DA:1B:96:1C:92:0B:8A:B4:CE:3F:AD:82:0E:4A:A3:0B:9A:CB:C4:A7:4E:BD:CE:BC:65 +# Fingerprint (SHA1): C3:19:7C:39:24:E6:54:AF:1B:C4:AB:20:95:7A:E2:C3:0E:13:02:6A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com Root Certification Authority ECC" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\174\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163\061 +\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164\157 +\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040 +\103\157\162\160\157\162\141\164\151\157\156\061\061\060\057\006 +\003\125\004\003\014\050\123\123\114\056\143\157\155\040\122\157 +\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\101\165\164\150\157\162\151\164\171\040\105\103\103 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\174\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163\061 +\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164\157 +\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040 +\103\157\162\160\157\162\141\164\151\157\156\061\061\060\057\006 +\003\125\004\003\014\050\123\123\114\056\143\157\155\040\122\157 +\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\101\165\164\150\157\162\151\164\171\040\105\103\103 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\165\346\337\313\301\150\133\250 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\215\060\202\002\024\240\003\002\001\002\002\010\165 +\346\337\313\301\150\133\250\060\012\006\010\052\206\110\316\075 +\004\003\002\060\174\061\013\060\011\006\003\125\004\006\023\002 +\125\123\061\016\060\014\006\003\125\004\010\014\005\124\145\170 +\141\163\061\020\060\016\006\003\125\004\007\014\007\110\157\165 +\163\164\157\156\061\030\060\026\006\003\125\004\012\014\017\123 +\123\114\040\103\157\162\160\157\162\141\164\151\157\156\061\061 +\060\057\006\003\125\004\003\014\050\123\123\114\056\143\157\155 +\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\040\105\103 +\103\060\036\027\015\061\066\060\062\061\062\061\070\061\064\060 +\063\132\027\015\064\061\060\062\061\062\061\070\061\064\060\063 +\132\060\174\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163 +\061\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164 +\157\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114 +\040\103\157\162\160\157\162\141\164\151\157\156\061\061\060\057 +\006\003\125\004\003\014\050\123\123\114\056\143\157\155\040\122 +\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\040\105\103\103\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\105\156\251\120\304\246\043\066\236 +\137\050\215\027\313\226\042\144\077\334\172\216\035\314\010\263 +\242\161\044\272\216\111\271\004\033\107\226\130\253\055\225\310 +\355\236\010\065\310\047\353\211\214\123\130\353\142\212\376\360 +\133\017\153\061\122\143\101\073\211\315\354\354\266\215\031\323 +\064\007\334\273\306\006\177\302\105\225\354\313\177\250\043\340 +\011\351\201\372\363\107\323\243\143\060\141\060\035\006\003\125 +\035\016\004\026\004\024\202\321\205\163\060\347\065\004\323\216 +\002\222\373\345\244\321\304\041\350\315\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\037\006\003\125 +\035\043\004\030\060\026\200\024\202\321\205\163\060\347\065\004 +\323\216\002\222\373\345\244\321\304\041\350\315\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\206\060\012\006\010 +\052\206\110\316\075\004\003\002\003\147\000\060\144\002\060\157 +\347\353\131\021\244\140\317\141\260\226\173\355\005\371\057\023 +\221\334\355\345\374\120\153\021\106\106\263\034\041\000\142\273 +\276\303\347\350\315\007\231\371\015\013\135\162\076\304\252\002 +\060\037\274\272\013\342\060\044\373\174\155\200\125\012\231\076 +\200\015\063\345\146\243\263\243\273\245\325\213\217\011\054\246 +\135\176\342\360\007\010\150\155\322\174\151\156\137\337\345\152 +\145 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SSL.com Root Certification Authority ECC" +# Issuer: CN=SSL.com Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Serial Number:75:e6:df:cb:c1:68:5b:a8 +# Subject: CN=SSL.com Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Not Valid Before: Fri Feb 12 18:14:03 2016 +# Not Valid After : Tue Feb 12 18:14:03 2041 +# Fingerprint (SHA-256): 34:17:BB:06:CC:60:07:DA:1B:96:1C:92:0B:8A:B4:CE:3F:AD:82:0E:4A:A3:0B:9A:CB:C4:A7:4E:BD:CE:BC:65 +# Fingerprint (SHA1): C3:19:7C:39:24:E6:54:AF:1B:C4:AB:20:95:7A:E2:C3:0E:13:02:6A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com Root Certification Authority ECC" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\303\031\174\071\044\346\124\257\033\304\253\040\225\172\342\303 +\016\023\002\152 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\056\332\344\071\177\234\217\067\321\160\237\046\027\121\072\216 +END +CKA_ISSUER MULTILINE_OCTAL +\060\174\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163\061 +\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164\157 +\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040 +\103\157\162\160\157\162\141\164\151\157\156\061\061\060\057\006 +\003\125\004\003\014\050\123\123\114\056\143\157\155\040\122\157 +\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\101\165\164\150\157\162\151\164\171\040\105\103\103 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\165\346\337\313\301\150\133\250 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SSL.com EV Root Certification Authority RSA R2" +# +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Serial Number:56:b6:29:cd:34:bc:78:f6 +# Subject: CN=SSL.com EV Root Certification Authority RSA R2,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Not Valid Before: Wed May 31 18:14:37 2017 +# Not Valid After : Fri May 30 18:14:37 2042 +# Fingerprint (SHA-256): 2E:7B:F1:6C:C2:24:85:A7:BB:E2:AA:86:96:75:07:61:B0:AE:39:BE:3B:2F:E9:D0:CC:6D:4E:F7:34:91:42:5C +# Fingerprint (SHA1): 74:3A:F0:52:9B:D0:32:A0:F4:4A:83:CD:D4:BA:A9:7B:7C:2E:C4:9A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com EV Root Certification Authority RSA R2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163 +\061\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164 +\157\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114 +\040\103\157\162\160\157\162\141\164\151\157\156\061\067\060\065 +\006\003\125\004\003\014\056\123\123\114\056\143\157\155\040\105 +\126\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141 +\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040\122 +\123\101\040\122\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163 +\061\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164 +\157\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114 +\040\103\157\162\160\157\162\141\164\151\157\156\061\067\060\065 +\006\003\125\004\003\014\056\123\123\114\056\143\157\155\040\105 +\126\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141 +\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040\122 +\123\101\040\122\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\126\266\051\315\064\274\170\366 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\353\060\202\003\323\240\003\002\001\002\002\010\126 +\266\051\315\064\274\170\366\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\060\201\202\061\013\060\011\006\003\125 +\004\006\023\002\125\123\061\016\060\014\006\003\125\004\010\014 +\005\124\145\170\141\163\061\020\060\016\006\003\125\004\007\014 +\007\110\157\165\163\164\157\156\061\030\060\026\006\003\125\004 +\012\014\017\123\123\114\040\103\157\162\160\157\162\141\164\151 +\157\156\061\067\060\065\006\003\125\004\003\014\056\123\123\114 +\056\143\157\155\040\105\126\040\122\157\157\164\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171\040\122\123\101\040\122\062\060\036\027\015\061 +\067\060\065\063\061\061\070\061\064\063\067\132\027\015\064\062 +\060\065\063\060\061\070\061\064\063\067\132\060\201\202\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\016\060\014\006 +\003\125\004\010\014\005\124\145\170\141\163\061\020\060\016\006 +\003\125\004\007\014\007\110\157\165\163\164\157\156\061\030\060 +\026\006\003\125\004\012\014\017\123\123\114\040\103\157\162\160 +\157\162\141\164\151\157\156\061\067\060\065\006\003\125\004\003 +\014\056\123\123\114\056\143\157\155\040\105\126\040\122\157\157 +\164\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040 +\101\165\164\150\157\162\151\164\171\040\122\123\101\040\122\062 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\217\066\145\100\341\326\115\300\327\264\351\106\332\153\352 +\063\107\315\114\371\175\175\276\275\055\075\360\333\170\341\206 +\245\331\272\011\127\150\355\127\076\240\320\010\101\203\347\050 +\101\044\037\343\162\025\320\001\032\373\136\160\043\262\313\237 +\071\343\317\305\116\306\222\155\046\306\173\273\263\332\047\235 +\012\206\351\201\067\005\376\360\161\161\354\303\034\351\143\242 +\027\024\235\357\033\147\323\205\125\002\002\326\111\311\314\132 +\341\261\367\157\062\237\311\324\073\210\101\250\234\275\313\253 +\333\155\173\011\037\242\114\162\220\332\053\010\374\317\074\124 +\316\147\017\250\317\135\226\031\013\304\343\162\353\255\321\175 +\035\047\357\222\353\020\277\133\353\073\257\317\200\335\301\322 +\226\004\133\172\176\244\251\074\070\166\244\142\216\240\071\136 +\352\167\317\135\000\131\217\146\054\076\007\242\243\005\046\021 +\151\227\352\205\267\017\226\013\113\310\100\341\120\272\056\212 +\313\367\017\232\042\347\177\232\067\023\315\362\115\023\153\041 +\321\300\314\042\362\241\106\366\104\151\234\312\141\065\007\000 +\157\326\141\010\021\352\272\270\366\351\263\140\345\115\271\354 +\237\024\146\311\127\130\333\315\207\151\370\212\206\022\003\107 +\277\146\023\166\254\167\175\064\044\205\203\315\327\252\234\220 +\032\237\041\054\177\170\267\144\270\330\350\246\364\170\263\125 +\313\204\322\062\304\170\256\243\217\141\335\316\010\123\255\354 +\210\374\025\344\232\015\346\237\032\167\316\114\217\270\024\025 +\075\142\234\206\070\006\000\146\022\344\131\166\132\123\300\002 +\230\242\020\053\150\104\173\216\171\316\063\112\166\252\133\201 +\026\033\265\212\330\320\000\173\136\142\264\011\326\206\143\016 +\246\005\225\111\272\050\213\210\223\262\064\034\330\244\125\156 +\267\034\320\336\231\125\073\043\364\042\340\371\051\146\046\354 +\040\120\167\333\112\013\217\276\345\002\140\160\101\136\324\256 +\120\071\042\024\046\313\262\073\163\164\125\107\007\171\201\071 +\250\060\023\104\345\004\212\256\226\023\045\102\017\271\123\304 +\233\374\315\344\034\336\074\372\253\326\006\112\037\147\246\230 +\060\034\335\054\333\334\030\225\127\146\306\377\134\213\126\365 +\167\002\003\001\000\001\243\143\060\141\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\037\006\003\125 +\035\043\004\030\060\026\200\024\371\140\273\324\343\325\064\366 +\270\365\006\200\045\247\163\333\106\151\250\236\060\035\006\003 +\125\035\016\004\026\004\024\371\140\273\324\343\325\064\366\270 +\365\006\200\045\247\163\333\106\151\250\236\060\016\006\003\125 +\035\017\001\001\377\004\004\003\002\001\206\060\015\006\011\052 +\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000\126 +\263\216\313\012\235\111\216\277\244\304\221\273\146\027\005\121 +\230\165\373\345\120\054\172\236\361\024\372\253\323\212\076\377 +\221\051\217\143\213\330\264\251\124\001\015\276\223\206\057\371 +\112\155\307\136\365\127\371\312\125\034\022\276\107\017\066\305 +\337\152\267\333\165\302\107\045\177\271\361\143\370\150\055\125 +\004\321\362\215\260\244\317\274\074\136\037\170\347\245\240\040 +\160\260\004\305\267\367\162\247\336\042\015\275\063\045\106\214 +\144\222\046\343\076\056\143\226\332\233\214\075\370\030\011\327 +\003\314\175\206\202\340\312\004\007\121\120\327\377\222\325\014 +\357\332\206\237\231\327\353\267\257\150\342\071\046\224\272\150 +\267\277\203\323\352\172\147\075\142\147\256\045\345\162\350\342 +\344\354\256\022\366\113\053\074\237\351\260\100\363\070\124\263 +\375\267\150\310\332\306\217\121\074\262\373\221\334\034\347\233 +\235\341\267\015\162\217\342\244\304\251\170\371\353\024\254\306 +\103\005\302\145\071\050\030\002\303\202\262\235\005\276\145\355 +\226\137\145\164\074\373\011\065\056\173\234\023\375\033\017\135 +\307\155\201\072\126\017\314\073\341\257\002\057\042\254\106\312 +\106\074\240\034\114\326\104\264\136\056\134\025\146\011\341\046 +\051\376\306\122\141\272\261\163\377\303\014\234\345\154\152\224 +\077\024\312\100\026\225\204\363\131\251\254\137\114\141\223\155 +\321\073\314\242\225\014\042\246\147\147\104\056\271\331\322\212 +\101\263\146\013\132\373\175\043\245\362\032\260\377\336\233\203 +\224\056\321\077\337\222\267\221\257\005\073\145\307\240\154\261 +\315\142\022\303\220\033\343\045\316\064\274\157\167\166\261\020 +\303\367\005\032\300\326\257\164\142\110\027\167\222\151\220\141 +\034\336\225\200\164\124\217\030\034\303\363\003\320\277\244\103 +\165\206\123\030\172\012\056\011\034\066\237\221\375\202\212\042 +\113\321\016\120\045\335\313\003\014\027\311\203\000\010\116\065 +\115\212\213\355\360\002\224\146\054\104\177\313\225\047\226\027 +\255\011\060\254\266\161\027\156\213\027\366\034\011\324\055\073 +\230\245\161\323\124\023\331\140\363\365\113\146\117\372\361\356 +\040\022\215\264\254\127\261\105\143\241\254\166\251\302\373 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SSL.com EV Root Certification Authority RSA R2" +# Issuer: CN=SSL.com EV Root Certification Authority RSA R2,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Serial Number:56:b6:29:cd:34:bc:78:f6 +# Subject: CN=SSL.com EV Root Certification Authority RSA R2,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Not Valid Before: Wed May 31 18:14:37 2017 +# Not Valid After : Fri May 30 18:14:37 2042 +# Fingerprint (SHA-256): 2E:7B:F1:6C:C2:24:85:A7:BB:E2:AA:86:96:75:07:61:B0:AE:39:BE:3B:2F:E9:D0:CC:6D:4E:F7:34:91:42:5C +# Fingerprint (SHA1): 74:3A:F0:52:9B:D0:32:A0:F4:4A:83:CD:D4:BA:A9:7B:7C:2E:C4:9A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com EV Root Certification Authority RSA R2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\164\072\360\122\233\320\062\240\364\112\203\315\324\272\251\173 +\174\056\304\232 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\341\036\061\130\032\256\124\123\002\366\027\152\021\173\115\225 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\202\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163 +\061\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164 +\157\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114 +\040\103\157\162\160\157\162\141\164\151\157\156\061\067\060\065 +\006\003\125\004\003\014\056\123\123\114\056\143\157\155\040\105 +\126\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141 +\164\151\157\156\040\101\165\164\150\157\162\151\164\171\040\122 +\123\101\040\122\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\126\266\051\315\064\274\170\366 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SSL.com EV Root Certification Authority ECC" +# +# Issuer: CN=SSL.com EV Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Serial Number:2c:29:9c:5b:16:ed:05:95 +# Subject: CN=SSL.com EV Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Not Valid Before: Fri Feb 12 18:15:23 2016 +# Not Valid After : Tue Feb 12 18:15:23 2041 +# Fingerprint (SHA-256): 22:A2:C1:F7:BD:ED:70:4C:C1:E7:01:B5:F4:08:C3:10:88:0F:E9:56:B5:DE:2A:4A:44:F9:9C:87:3A:25:A7:C8 +# Fingerprint (SHA1): 4C:DD:51:A3:D1:F5:20:32:14:B0:C6:C5:32:23:03:91:C7:46:42:6D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com EV Root Certification Authority ECC" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\177\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163\061 +\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164\157 +\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040 +\103\157\162\160\157\162\141\164\151\157\156\061\064\060\062\006 +\003\125\004\003\014\053\123\123\114\056\143\157\155\040\105\126 +\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\040\105\103 +\103 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\177\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163\061 +\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164\157 +\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040 +\103\157\162\160\157\162\141\164\151\157\156\061\064\060\062\006 +\003\125\004\003\014\053\123\123\114\056\143\157\155\040\105\126 +\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\040\105\103 +\103 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\054\051\234\133\026\355\005\225 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\224\060\202\002\032\240\003\002\001\002\002\010\054 +\051\234\133\026\355\005\225\060\012\006\010\052\206\110\316\075 +\004\003\002\060\177\061\013\060\011\006\003\125\004\006\023\002 +\125\123\061\016\060\014\006\003\125\004\010\014\005\124\145\170 +\141\163\061\020\060\016\006\003\125\004\007\014\007\110\157\165 +\163\164\157\156\061\030\060\026\006\003\125\004\012\014\017\123 +\123\114\040\103\157\162\160\157\162\141\164\151\157\156\061\064 +\060\062\006\003\125\004\003\014\053\123\123\114\056\143\157\155 +\040\105\126\040\122\157\157\164\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +\040\105\103\103\060\036\027\015\061\066\060\062\061\062\061\070 +\061\065\062\063\132\027\015\064\061\060\062\061\062\061\070\061 +\065\062\063\132\060\177\061\013\060\011\006\003\125\004\006\023 +\002\125\123\061\016\060\014\006\003\125\004\010\014\005\124\145 +\170\141\163\061\020\060\016\006\003\125\004\007\014\007\110\157 +\165\163\164\157\156\061\030\060\026\006\003\125\004\012\014\017 +\123\123\114\040\103\157\162\160\157\162\141\164\151\157\156\061 +\064\060\062\006\003\125\004\003\014\053\123\123\114\056\143\157 +\155\040\105\126\040\122\157\157\164\040\103\145\162\164\151\146 +\151\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164 +\171\040\105\103\103\060\166\060\020\006\007\052\206\110\316\075 +\002\001\006\005\053\201\004\000\042\003\142\000\004\252\022\107 +\220\230\033\373\357\303\100\007\203\040\116\361\060\202\242\006 +\321\362\222\206\141\362\366\041\150\312\000\304\307\352\103\000 +\124\206\334\375\037\337\000\270\101\142\134\334\160\026\062\336 +\037\231\324\314\305\007\310\010\037\141\026\007\121\075\175\134 +\007\123\343\065\070\214\337\315\237\331\056\015\112\266\031\056 +\132\160\132\006\355\276\360\241\260\312\320\011\051\243\143\060 +\141\060\035\006\003\125\035\016\004\026\004\024\133\312\136\345 +\336\322\201\252\315\250\055\144\121\266\331\162\233\227\346\117 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\037\006\003\125\035\043\004\030\060\026\200\024\133\312 +\136\345\336\322\201\252\315\250\055\144\121\266\331\162\233\227 +\346\117\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\206\060\012\006\010\052\206\110\316\075\004\003\002\003\150 +\000\060\145\002\061\000\212\346\100\211\067\353\351\325\023\331 +\312\324\153\044\363\260\075\207\106\130\032\354\261\337\157\373 +\126\272\160\153\307\070\314\350\261\214\117\017\367\361\147\166 +\016\203\320\036\121\217\002\060\075\366\043\050\046\114\306\140 +\207\223\046\233\262\065\036\272\326\367\074\321\034\316\372\045 +\074\246\032\201\025\133\363\022\017\154\356\145\212\311\207\250 +\371\007\340\142\232\214\134\112 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SSL.com EV Root Certification Authority ECC" +# Issuer: CN=SSL.com EV Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Serial Number:2c:29:9c:5b:16:ed:05:95 +# Subject: CN=SSL.com EV Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US +# Not Valid Before: Fri Feb 12 18:15:23 2016 +# Not Valid After : Tue Feb 12 18:15:23 2041 +# Fingerprint (SHA-256): 22:A2:C1:F7:BD:ED:70:4C:C1:E7:01:B5:F4:08:C3:10:88:0F:E9:56:B5:DE:2A:4A:44:F9:9C:87:3A:25:A7:C8 +# Fingerprint (SHA1): 4C:DD:51:A3:D1:F5:20:32:14:B0:C6:C5:32:23:03:91:C7:46:42:6D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com EV Root Certification Authority ECC" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\114\335\121\243\321\365\040\062\024\260\306\305\062\043\003\221 +\307\106\102\155 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\131\123\042\145\203\102\001\124\300\316\102\271\132\174\362\220 +END +CKA_ISSUER MULTILINE_OCTAL +\060\177\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\016\060\014\006\003\125\004\010\014\005\124\145\170\141\163\061 +\020\060\016\006\003\125\004\007\014\007\110\157\165\163\164\157 +\156\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040 +\103\157\162\160\157\162\141\164\151\157\156\061\064\060\062\006 +\003\125\004\003\014\053\123\123\114\056\143\157\155\040\105\126 +\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\040\105\103 +\103 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\054\051\234\133\026\355\005\225 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GlobalSign Root CA - R6" +# +# Issuer: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6 +# Serial Number:45:e6:bb:03:83:33:c3:85:65:48:e6:ff:45:51 +# Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6 +# Not Valid Before: Wed Dec 10 00:00:00 2014 +# Not Valid After : Sun Dec 10 00:00:00 2034 +# Fingerprint (SHA-256): 2C:AB:EA:FE:37:D0:6C:A2:2A:BA:73:91:C0:03:3D:25:98:29:52:C4:53:64:73:49:76:3A:3A:B5:AD:6C:CF:69 +# Fingerprint (SHA1): 80:94:64:0E:B5:A7:A1:CA:11:9C:1F:DD:D5:9F:81:02:63:A7:FB:D1 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root CA - R6" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\114\061\040\060\036\006\003\125\004\013\023\027\107\154\157 +\142\141\154\123\151\147\156\040\122\157\157\164\040\103\101\040 +\055\040\122\066\061\023\060\021\006\003\125\004\012\023\012\107 +\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125 +\004\003\023\012\107\154\157\142\141\154\123\151\147\156 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\114\061\040\060\036\006\003\125\004\013\023\027\107\154\157 +\142\141\154\123\151\147\156\040\122\157\157\164\040\103\101\040 +\055\040\122\066\061\023\060\021\006\003\125\004\012\023\012\107 +\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125 +\004\003\023\012\107\154\157\142\141\154\123\151\147\156 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\016\105\346\273\003\203\063\303\205\145\110\346\377\105\121 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\203\060\202\003\153\240\003\002\001\002\002\016\105 +\346\273\003\203\063\303\205\145\110\346\377\105\121\060\015\006 +\011\052\206\110\206\367\015\001\001\014\005\000\060\114\061\040 +\060\036\006\003\125\004\013\023\027\107\154\157\142\141\154\123 +\151\147\156\040\122\157\157\164\040\103\101\040\055\040\122\066 +\061\023\060\021\006\003\125\004\012\023\012\107\154\157\142\141 +\154\123\151\147\156\061\023\060\021\006\003\125\004\003\023\012 +\107\154\157\142\141\154\123\151\147\156\060\036\027\015\061\064 +\061\062\061\060\060\060\060\060\060\060\132\027\015\063\064\061 +\062\061\060\060\060\060\060\060\060\132\060\114\061\040\060\036 +\006\003\125\004\013\023\027\107\154\157\142\141\154\123\151\147 +\156\040\122\157\157\164\040\103\101\040\055\040\122\066\061\023 +\060\021\006\003\125\004\012\023\012\107\154\157\142\141\154\123 +\151\147\156\061\023\060\021\006\003\125\004\003\023\012\107\154 +\157\142\141\154\123\151\147\156\060\202\002\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 +\060\202\002\012\002\202\002\001\000\225\007\350\163\312\146\371 +\354\024\312\173\074\367\015\010\361\264\105\013\054\202\264\110 +\306\353\133\074\256\203\270\101\222\063\024\244\157\177\351\052 +\314\306\260\210\153\305\266\211\321\306\262\377\024\316\121\024 +\041\354\112\335\033\132\306\326\207\356\115\072\025\006\355\144 +\146\013\222\200\312\104\336\163\224\116\363\247\211\177\117\170 +\143\010\310\022\120\155\102\146\057\115\271\171\050\115\122\032 +\212\032\200\267\031\201\016\176\304\212\274\144\114\041\034\103 +\150\327\075\074\212\305\262\146\325\220\232\267\061\006\305\276 +\342\155\062\006\246\036\371\271\353\252\243\270\277\276\202\143 +\120\320\360\030\211\337\344\017\171\365\352\242\037\052\322\160 +\056\173\347\274\223\273\155\123\342\110\174\214\020\007\070\377 +\146\262\167\141\176\340\352\214\074\252\264\244\366\363\225\112 +\022\007\155\375\214\262\211\317\320\240\141\167\310\130\164\260 +\324\043\072\367\135\072\312\242\333\235\011\336\135\104\055\220 +\361\201\315\127\222\372\176\274\120\004\143\064\337\153\223\030 +\276\153\066\262\071\344\254\044\066\267\360\357\266\034\023\127 +\223\266\336\262\370\342\205\267\163\242\270\065\252\105\362\340 +\235\066\241\157\124\212\361\162\126\156\056\210\305\121\102\104 +\025\224\356\243\305\070\226\233\116\116\132\013\107\363\006\066 +\111\167\060\274\161\067\345\246\354\041\010\165\374\346\141\026 +\077\167\325\331\221\227\204\012\154\324\002\115\164\300\024\355 +\375\071\373\203\362\136\024\241\004\260\013\351\376\356\217\341 +\156\013\262\010\263\141\146\011\152\261\006\072\145\226\131\300 +\360\065\375\311\332\050\215\032\021\207\160\201\012\250\232\165 +\035\236\072\206\005\000\236\333\200\326\045\371\334\005\236\047 +\131\114\166\071\133\352\371\245\241\330\203\017\321\377\337\060 +\021\371\205\317\063\110\365\312\155\144\024\054\172\130\117\323 +\113\010\111\305\225\144\032\143\016\171\075\365\263\214\312\130 +\255\234\102\105\171\156\016\207\031\134\124\261\145\266\277\214 +\233\334\023\351\015\157\270\056\334\147\156\311\213\021\265\204 +\024\212\000\031\160\203\171\221\227\221\324\032\047\277\067\036 +\062\007\330\024\143\074\050\114\257\002\003\001\000\001\243\143 +\060\141\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\035\006\003\125\035\016\004\026\004\024\256\154 +\005\243\223\023\342\242\347\342\327\034\326\307\360\177\310\147 +\123\240\060\037\006\003\125\035\043\004\030\060\026\200\024\256 +\154\005\243\223\023\342\242\347\342\327\034\326\307\360\177\310 +\147\123\240\060\015\006\011\052\206\110\206\367\015\001\001\014 +\005\000\003\202\002\001\000\203\045\355\350\321\375\225\122\315 +\236\300\004\240\221\151\346\134\320\204\336\334\255\242\117\350 +\107\170\326\145\230\251\133\250\074\207\174\002\212\321\156\267 +\026\163\346\137\300\124\230\325\164\276\301\315\342\021\221\255 +\043\030\075\335\341\162\104\226\264\225\136\300\173\216\231\170 +\026\103\023\126\127\263\242\263\073\265\167\334\100\162\254\243 +\353\233\065\076\261\010\041\241\347\304\103\067\171\062\276\265 +\347\234\054\114\274\103\051\231\216\060\323\254\041\340\343\035 +\372\330\007\063\166\124\000\042\052\271\115\040\056\160\150\332 +\345\123\374\203\134\323\235\362\377\104\014\104\146\362\322\343 +\275\106\000\032\155\002\272\045\135\215\241\061\121\335\124\106 +\034\115\333\231\226\357\032\034\004\134\246\025\357\170\340\171 +\376\135\333\076\252\114\125\375\232\025\251\157\341\246\373\337 +\160\060\351\303\356\102\106\355\302\223\005\211\372\175\143\173 +\077\320\161\201\174\000\350\230\256\016\170\064\303\045\373\257 +\012\237\040\153\335\073\023\217\022\214\342\101\032\110\172\163 +\240\167\151\307\266\134\177\202\310\036\376\130\033\050\053\250 +\154\255\136\155\300\005\322\173\267\353\200\376\045\067\376\002 +\233\150\254\102\135\303\356\365\314\334\360\120\165\322\066\151 +\234\346\173\004\337\156\006\151\266\336\012\011\110\131\207\353 +\173\024\140\172\144\252\151\103\357\221\307\114\354\030\335\154 +\357\123\055\214\231\341\136\362\162\076\317\124\310\275\147\354 +\244\017\114\105\377\323\271\060\043\007\114\217\020\277\206\226 +\331\231\132\264\231\127\034\244\314\273\025\211\123\272\054\005 +\017\344\304\236\031\261\030\064\325\114\235\272\355\367\037\257 +\044\225\004\170\250\003\273\356\201\345\332\137\174\213\112\241 +\220\164\045\247\263\076\113\310\054\126\275\307\310\357\070\342 +\134\222\360\171\367\234\204\272\164\055\141\001\040\176\176\321 +\362\117\007\131\137\213\055\103\122\353\106\014\224\341\365\146 +\107\171\167\325\124\133\037\255\044\067\313\105\132\116\240\104 +\110\310\330\260\231\305\025\204\011\366\326\111\111\300\145\270 +\346\032\161\156\240\250\361\202\350\105\076\154\326\002\327\012 +\147\203\005\132\311\244\020 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GlobalSign Root CA - R6" +# Issuer: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6 +# Serial Number:45:e6:bb:03:83:33:c3:85:65:48:e6:ff:45:51 +# Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6 +# Not Valid Before: Wed Dec 10 00:00:00 2014 +# Not Valid After : Sun Dec 10 00:00:00 2034 +# Fingerprint (SHA-256): 2C:AB:EA:FE:37:D0:6C:A2:2A:BA:73:91:C0:03:3D:25:98:29:52:C4:53:64:73:49:76:3A:3A:B5:AD:6C:CF:69 +# Fingerprint (SHA1): 80:94:64:0E:B5:A7:A1:CA:11:9C:1F:DD:D5:9F:81:02:63:A7:FB:D1 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root CA - R6" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\200\224\144\016\265\247\241\312\021\234\037\335\325\237\201\002 +\143\247\373\321 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\117\335\007\344\324\042\144\071\036\014\067\102\352\321\306\256 +END +CKA_ISSUER MULTILINE_OCTAL +\060\114\061\040\060\036\006\003\125\004\013\023\027\107\154\157 +\142\141\154\123\151\147\156\040\122\157\157\164\040\103\101\040 +\055\040\122\066\061\023\060\021\006\003\125\004\012\023\012\107 +\154\157\142\141\154\123\151\147\156\061\023\060\021\006\003\125 +\004\003\023\012\107\154\157\142\141\154\123\151\147\156 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\016\105\346\273\003\203\063\303\205\145\110\346\377\105\121 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "OISTE WISeKey Global Root GC CA" +# +# Issuer: CN=OISTE WISeKey Global Root GC CA,OU=OISTE Foundation Endorsed,O=WISeKey,C=CH +# Serial Number:21:2a:56:0c:ae:da:0c:ab:40:45:bf:2b:a2:2d:3a:ea +# Subject: CN=OISTE WISeKey Global Root GC CA,OU=OISTE Foundation Endorsed,O=WISeKey,C=CH +# Not Valid Before: Tue May 09 09:48:34 2017 +# Not Valid After : Fri May 09 09:58:33 2042 +# Fingerprint (SHA-256): 85:60:F9:1C:36:24:DA:BA:95:70:B5:FE:A0:DB:E3:6F:F1:1A:83:23:BE:94:86:85:4F:B3:F3:4A:55:71:19:8D +# Fingerprint (SHA1): E0:11:84:5E:34:DE:BE:88:81:B9:9C:F6:16:26:D1:96:1F:C3:B9:31 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "OISTE WISeKey Global Root GC CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\155\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113\145 +\171\061\042\060\040\006\003\125\004\013\023\031\117\111\123\124 +\105\040\106\157\165\156\144\141\164\151\157\156\040\105\156\144 +\157\162\163\145\144\061\050\060\046\006\003\125\004\003\023\037 +\117\111\123\124\105\040\127\111\123\145\113\145\171\040\107\154 +\157\142\141\154\040\122\157\157\164\040\107\103\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\155\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113\145 +\171\061\042\060\040\006\003\125\004\013\023\031\117\111\123\124 +\105\040\106\157\165\156\144\141\164\151\157\156\040\105\156\144 +\157\162\163\145\144\061\050\060\046\006\003\125\004\003\023\037 +\117\111\123\124\105\040\127\111\123\145\113\145\171\040\107\154 +\157\142\141\154\040\122\157\157\164\040\107\103\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\041\052\126\014\256\332\014\253\100\105\277\053\242\055 +\072\352 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\151\060\202\001\357\240\003\002\001\002\002\020\041 +\052\126\014\256\332\014\253\100\105\277\053\242\055\072\352\060 +\012\006\010\052\206\110\316\075\004\003\003\060\155\061\013\060 +\011\006\003\125\004\006\023\002\103\110\061\020\060\016\006\003 +\125\004\012\023\007\127\111\123\145\113\145\171\061\042\060\040 +\006\003\125\004\013\023\031\117\111\123\124\105\040\106\157\165 +\156\144\141\164\151\157\156\040\105\156\144\157\162\163\145\144 +\061\050\060\046\006\003\125\004\003\023\037\117\111\123\124\105 +\040\127\111\123\145\113\145\171\040\107\154\157\142\141\154\040 +\122\157\157\164\040\107\103\040\103\101\060\036\027\015\061\067 +\060\065\060\071\060\071\064\070\063\064\132\027\015\064\062\060 +\065\060\071\060\071\065\070\063\063\132\060\155\061\013\060\011 +\006\003\125\004\006\023\002\103\110\061\020\060\016\006\003\125 +\004\012\023\007\127\111\123\145\113\145\171\061\042\060\040\006 +\003\125\004\013\023\031\117\111\123\124\105\040\106\157\165\156 +\144\141\164\151\157\156\040\105\156\144\157\162\163\145\144\061 +\050\060\046\006\003\125\004\003\023\037\117\111\123\124\105\040 +\127\111\123\145\113\145\171\040\107\154\157\142\141\154\040\122 +\157\157\164\040\107\103\040\103\101\060\166\060\020\006\007\052 +\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142\000 +\004\114\351\120\300\306\017\162\030\274\330\361\272\263\211\342 +\171\112\243\026\247\153\124\044\333\121\377\352\364\011\044\303 +\013\042\237\313\152\047\202\201\015\322\300\257\061\344\164\202 +\156\312\045\331\214\165\235\361\333\320\232\242\113\041\176\026 +\247\143\220\322\071\324\261\207\170\137\030\226\017\120\033\065 +\067\017\152\306\334\331\023\115\244\216\220\067\346\275\133\061 +\221\243\124\060\122\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004 +\024\110\207\024\254\343\303\236\220\140\072\327\312\211\356\323 +\255\214\264\120\146\060\020\006\011\053\006\001\004\001\202\067 +\025\001\004\003\002\001\000\060\012\006\010\052\206\110\316\075 +\004\003\003\003\150\000\060\145\002\060\046\307\151\133\334\325 +\347\262\347\310\014\214\214\303\335\171\214\033\143\325\311\122 +\224\116\115\202\112\163\036\262\200\204\251\045\300\114\132\155 +\111\051\140\170\023\342\176\110\353\144\002\061\000\333\064\040 +\062\010\377\232\111\002\266\210\336\024\257\135\154\231\161\215 +\032\077\213\327\340\242\066\206\034\007\202\072\166\123\375\302 +\242\355\357\173\260\200\117\130\017\113\123\071\275 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "OISTE WISeKey Global Root GC CA" +# Issuer: CN=OISTE WISeKey Global Root GC CA,OU=OISTE Foundation Endorsed,O=WISeKey,C=CH +# Serial Number:21:2a:56:0c:ae:da:0c:ab:40:45:bf:2b:a2:2d:3a:ea +# Subject: CN=OISTE WISeKey Global Root GC CA,OU=OISTE Foundation Endorsed,O=WISeKey,C=CH +# Not Valid Before: Tue May 09 09:48:34 2017 +# Not Valid After : Fri May 09 09:58:33 2042 +# Fingerprint (SHA-256): 85:60:F9:1C:36:24:DA:BA:95:70:B5:FE:A0:DB:E3:6F:F1:1A:83:23:BE:94:86:85:4F:B3:F3:4A:55:71:19:8D +# Fingerprint (SHA1): E0:11:84:5E:34:DE:BE:88:81:B9:9C:F6:16:26:D1:96:1F:C3:B9:31 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "OISTE WISeKey Global Root GC CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\340\021\204\136\064\336\276\210\201\271\234\366\026\046\321\226 +\037\303\271\061 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\251\326\271\055\057\223\144\370\245\151\312\221\351\150\007\043 +END +CKA_ISSUER MULTILINE_OCTAL +\060\155\061\013\060\011\006\003\125\004\006\023\002\103\110\061 +\020\060\016\006\003\125\004\012\023\007\127\111\123\145\113\145 +\171\061\042\060\040\006\003\125\004\013\023\031\117\111\123\124 +\105\040\106\157\165\156\144\141\164\151\157\156\040\105\156\144 +\157\162\163\145\144\061\050\060\046\006\003\125\004\003\023\037 +\117\111\123\124\105\040\127\111\123\145\113\145\171\040\107\154 +\157\142\141\154\040\122\157\157\164\040\107\103\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\041\052\126\014\256\332\014\253\100\105\277\053\242\055 +\072\352 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "UCA Global G2 Root" +# +# Issuer: CN=UCA Global G2 Root,O=UniTrust,C=CN +# Serial Number:5d:df:b1:da:5a:a3:ed:5d:be:5a:65:20:65:03:90:ef +# Subject: CN=UCA Global G2 Root,O=UniTrust,C=CN +# Not Valid Before: Fri Mar 11 00:00:00 2016 +# Not Valid After : Mon Dec 31 00:00:00 2040 +# Fingerprint (SHA-256): 9B:EA:11:C9:76:FE:01:47:64:C1:BE:56:A6:F9:14:B5:A5:60:31:7A:BD:99:88:39:33:82:E5:16:1A:A0:49:3C +# Fingerprint (SHA1): 28:F9:78:16:19:7A:FF:18:25:18:AA:44:FE:C1:A0:CE:5C:B6:4C:8A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "UCA Global G2 Root" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\021\060\017\006\003\125\004\012\014\010\125\156\151\124\162\165 +\163\164\061\033\060\031\006\003\125\004\003\014\022\125\103\101 +\040\107\154\157\142\141\154\040\107\062\040\122\157\157\164 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\021\060\017\006\003\125\004\012\014\010\125\156\151\124\162\165 +\163\164\061\033\060\031\006\003\125\004\003\014\022\125\103\101 +\040\107\154\157\142\141\154\040\107\062\040\122\157\157\164 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\135\337\261\332\132\243\355\135\276\132\145\040\145\003 +\220\357 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\106\060\202\003\056\240\003\002\001\002\002\020\135 +\337\261\332\132\243\355\135\276\132\145\040\145\003\220\357\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\075 +\061\013\060\011\006\003\125\004\006\023\002\103\116\061\021\060 +\017\006\003\125\004\012\014\010\125\156\151\124\162\165\163\164 +\061\033\060\031\006\003\125\004\003\014\022\125\103\101\040\107 +\154\157\142\141\154\040\107\062\040\122\157\157\164\060\036\027 +\015\061\066\060\063\061\061\060\060\060\060\060\060\132\027\015 +\064\060\061\062\063\061\060\060\060\060\060\060\132\060\075\061 +\013\060\011\006\003\125\004\006\023\002\103\116\061\021\060\017 +\006\003\125\004\012\014\010\125\156\151\124\162\165\163\164\061 +\033\060\031\006\003\125\004\003\014\022\125\103\101\040\107\154 +\157\142\141\154\040\107\062\040\122\157\157\164\060\202\002\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\002\017\000\060\202\002\012\002\202\002\001\000\305\346\053 +\157\174\357\046\005\047\243\201\044\332\157\313\001\371\231\232 +\251\062\302\042\207\141\101\221\073\313\303\150\033\006\305\114 +\251\053\301\147\027\042\035\053\355\371\051\211\223\242\170\275 +\222\153\240\243\015\242\176\312\223\263\246\321\214\065\325\165 +\371\027\366\317\105\305\345\172\354\167\223\240\217\043\256\016 +\032\003\177\276\324\320\355\056\173\253\106\043\133\377\054\346 +\124\172\224\300\052\025\360\311\215\260\172\073\044\341\327\150 +\342\061\074\006\063\106\266\124\021\246\245\057\042\124\052\130 +\015\001\002\361\372\025\121\147\154\300\372\327\266\033\177\321 +\126\210\057\032\072\215\073\273\202\021\340\107\000\320\122\207 +\253\373\206\176\017\044\153\100\235\064\147\274\215\307\055\206 +\157\171\076\216\251\074\027\113\177\260\231\343\260\161\140\334 +\013\365\144\303\316\103\274\155\161\271\322\336\047\133\212\350 +\330\306\256\341\131\175\317\050\055\065\270\225\126\032\361\262 +\130\113\267\022\067\310\174\263\355\113\200\341\215\372\062\043 +\266\157\267\110\225\010\261\104\116\205\214\072\002\124\040\057 +\337\277\127\117\073\072\220\041\327\301\046\065\124\040\354\307 +\077\107\354\357\132\277\113\172\301\255\073\027\120\134\142\330 +\017\113\112\334\053\372\156\274\163\222\315\354\307\120\350\101 +\226\327\251\176\155\330\351\035\217\212\265\271\130\222\272\112 +\222\053\014\126\375\200\353\010\360\136\051\156\033\034\014\257 +\217\223\211\255\333\275\243\236\041\312\211\031\354\337\265\303 +\032\353\026\376\170\066\114\326\156\320\076\027\034\220\027\153 +\046\272\373\172\057\277\021\034\030\016\055\163\003\217\240\345 +\065\240\132\342\114\165\035\161\341\071\070\123\170\100\314\203 +\223\327\012\236\235\133\217\212\344\345\340\110\344\110\262\107 +\315\116\052\165\052\173\362\042\366\311\276\011\221\226\127\172 +\210\210\254\356\160\254\371\334\051\343\014\034\073\022\116\104 +\326\247\116\260\046\310\363\331\032\227\221\150\352\357\215\106 +\006\322\126\105\130\232\074\014\017\203\270\005\045\303\071\317 +\073\244\064\211\267\171\022\057\107\305\347\251\227\151\374\246 +\167\147\265\337\173\361\172\145\025\344\141\126\145\002\003\001 +\000\001\243\102\060\100\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026 +\004\024\201\304\214\314\365\344\060\377\245\014\010\137\214\025 +\147\041\164\001\337\337\060\015\006\011\052\206\110\206\367\015 +\001\001\013\005\000\003\202\002\001\000\023\145\042\365\216\053 +\255\104\344\313\377\271\150\346\303\200\110\075\004\173\372\043 +\057\172\355\066\332\262\316\155\366\346\236\345\137\130\217\313 +\067\062\241\310\145\266\256\070\075\065\033\076\274\073\266\004 +\320\274\371\111\365\233\367\205\305\066\266\313\274\370\310\071 +\325\344\137\007\275\025\124\227\164\312\312\355\117\272\272\144 +\166\237\201\270\204\105\111\114\215\157\242\353\261\314\321\303 +\224\332\104\302\346\342\352\030\350\242\037\047\005\272\327\345 +\326\251\315\335\357\166\230\215\000\016\315\033\372\003\267\216 +\200\130\016\047\077\122\373\224\242\312\136\145\311\326\204\332 +\271\065\161\363\046\300\117\167\346\201\047\322\167\073\232\024 +\157\171\364\366\320\341\323\224\272\320\127\121\275\047\005\015 +\301\375\310\022\060\356\157\215\021\053\010\235\324\324\277\200 +\105\024\232\210\104\332\060\352\264\247\343\356\357\133\202\325 +\076\326\255\170\222\333\134\074\363\330\255\372\270\153\177\304 +\066\050\266\002\025\212\124\054\234\260\027\163\216\320\067\243 +\024\074\230\225\000\014\051\005\133\236\111\111\261\137\307\343 +\313\317\047\145\216\065\027\267\127\310\060\331\101\133\271\024 +\266\350\302\017\224\061\247\224\230\314\152\353\265\341\047\365 +\020\250\001\350\216\022\142\350\210\314\265\177\106\227\300\233 +\020\146\070\032\066\106\137\042\150\075\337\311\306\023\047\253 +\123\006\254\242\074\206\006\145\157\261\176\261\051\104\232\243 +\272\111\151\050\151\217\327\345\137\255\004\206\144\157\032\240 +\014\305\010\142\316\200\243\320\363\354\150\336\276\063\307\027 +\133\177\200\304\114\114\261\246\204\212\303\073\270\011\315\024 +\201\272\030\343\124\127\066\376\333\057\174\107\241\072\063\310 +\371\130\073\104\117\261\312\002\211\004\226\050\150\305\113\270 +\046\211\273\326\063\057\120\325\376\232\211\272\030\062\222\124 +\306\133\340\235\371\136\345\015\042\233\366\332\342\310\041\262 +\142\041\252\206\100\262\056\144\323\137\310\343\176\021\147\105 +\037\005\376\343\242\357\263\250\263\363\175\217\370\014\037\042 +\037\055\160\264\270\001\064\166\060\000\345\043\170\247\126\327 +\120\037\212\373\006\365\302\031\360\320 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "UCA Global G2 Root" +# Issuer: CN=UCA Global G2 Root,O=UniTrust,C=CN +# Serial Number:5d:df:b1:da:5a:a3:ed:5d:be:5a:65:20:65:03:90:ef +# Subject: CN=UCA Global G2 Root,O=UniTrust,C=CN +# Not Valid Before: Fri Mar 11 00:00:00 2016 +# Not Valid After : Mon Dec 31 00:00:00 2040 +# Fingerprint (SHA-256): 9B:EA:11:C9:76:FE:01:47:64:C1:BE:56:A6:F9:14:B5:A5:60:31:7A:BD:99:88:39:33:82:E5:16:1A:A0:49:3C +# Fingerprint (SHA1): 28:F9:78:16:19:7A:FF:18:25:18:AA:44:FE:C1:A0:CE:5C:B6:4C:8A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "UCA Global G2 Root" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\050\371\170\026\031\172\377\030\045\030\252\104\376\301\240\316 +\134\266\114\212 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\200\376\360\304\112\360\134\142\062\237\034\272\170\251\120\370 +END +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\021\060\017\006\003\125\004\012\014\010\125\156\151\124\162\165 +\163\164\061\033\060\031\006\003\125\004\003\014\022\125\103\101 +\040\107\154\157\142\141\154\040\107\062\040\122\157\157\164 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\135\337\261\332\132\243\355\135\276\132\145\040\145\003 +\220\357 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "UCA Extended Validation Root" +# +# Issuer: CN=UCA Extended Validation Root,O=UniTrust,C=CN +# Serial Number:4f:d2:2b:8f:f5:64:c8:33:9e:4f:34:58:66:23:70:60 +# Subject: CN=UCA Extended Validation Root,O=UniTrust,C=CN +# Not Valid Before: Fri Mar 13 00:00:00 2015 +# Not Valid After : Fri Dec 31 00:00:00 2038 +# Fingerprint (SHA-256): D4:3A:F9:B3:54:73:75:5C:96:84:FC:06:D7:D8:CB:70:EE:5C:28:E7:73:FB:29:4E:B4:1E:E7:17:22:92:4D:24 +# Fingerprint (SHA1): A3:A1:B0:6F:24:61:23:4A:E3:36:A5:C2:37:FC:A6:FF:DD:F0:D7:3A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "UCA Extended Validation Root" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\021\060\017\006\003\125\004\012\014\010\125\156\151\124\162\165 +\163\164\061\045\060\043\006\003\125\004\003\014\034\125\103\101 +\040\105\170\164\145\156\144\145\144\040\126\141\154\151\144\141 +\164\151\157\156\040\122\157\157\164 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\021\060\017\006\003\125\004\012\014\010\125\156\151\124\162\165 +\163\164\061\045\060\043\006\003\125\004\003\014\034\125\103\101 +\040\105\170\164\145\156\144\145\144\040\126\141\154\151\144\141 +\164\151\157\156\040\122\157\157\164 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\117\322\053\217\365\144\310\063\236\117\064\130\146\043 +\160\140 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\132\060\202\003\102\240\003\002\001\002\002\020\117 +\322\053\217\365\144\310\063\236\117\064\130\146\043\160\140\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\107 +\061\013\060\011\006\003\125\004\006\023\002\103\116\061\021\060 +\017\006\003\125\004\012\014\010\125\156\151\124\162\165\163\164 +\061\045\060\043\006\003\125\004\003\014\034\125\103\101\040\105 +\170\164\145\156\144\145\144\040\126\141\154\151\144\141\164\151 +\157\156\040\122\157\157\164\060\036\027\015\061\065\060\063\061 +\063\060\060\060\060\060\060\132\027\015\063\070\061\062\063\061 +\060\060\060\060\060\060\132\060\107\061\013\060\011\006\003\125 +\004\006\023\002\103\116\061\021\060\017\006\003\125\004\012\014 +\010\125\156\151\124\162\165\163\164\061\045\060\043\006\003\125 +\004\003\014\034\125\103\101\040\105\170\164\145\156\144\145\144 +\040\126\141\154\151\144\141\164\151\157\156\040\122\157\157\164 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\251\011\007\050\023\002\260\231\340\144\252\036\103\026\172 +\163\261\221\240\165\076\250\372\343\070\000\172\354\211\152\040 +\017\213\305\260\233\063\003\132\206\306\130\206\325\301\205\273 +\117\306\234\100\115\312\276\356\151\226\270\255\201\060\232\174 +\222\005\353\005\053\232\110\320\270\166\076\226\310\040\273\322 +\260\361\217\330\254\105\106\377\252\147\140\264\167\176\152\037 +\074\032\122\172\004\075\007\074\205\015\204\320\037\166\012\367 +\152\024\337\162\343\064\174\127\116\126\001\076\171\361\252\051 +\073\154\372\370\217\155\115\310\065\337\256\353\334\044\356\171 +\105\247\205\266\005\210\336\210\135\045\174\227\144\147\011\331 +\277\132\025\005\206\363\011\036\354\130\062\063\021\363\167\144 +\260\166\037\344\020\065\027\033\362\016\261\154\244\052\243\163 +\374\011\037\036\062\031\123\021\347\331\263\054\056\166\056\241 +\243\336\176\152\210\011\350\362\007\212\370\262\315\020\347\342 +\163\100\223\273\010\321\077\341\374\013\224\263\045\357\174\246 +\327\321\257\237\377\226\232\365\221\173\230\013\167\324\176\350 +\007\322\142\265\225\071\343\363\361\155\017\016\145\204\212\143 +\124\305\200\266\340\236\113\175\107\046\247\001\010\135\321\210 +\236\327\303\062\104\372\202\112\012\150\124\177\070\123\003\314 +\244\000\063\144\121\131\013\243\202\221\172\136\354\026\302\363 +\052\346\142\332\052\333\131\142\020\045\112\052\201\013\107\007 +\103\006\160\207\322\372\223\021\051\172\110\115\353\224\307\160 +\115\257\147\325\121\261\200\040\001\001\264\172\010\246\220\177 +\116\340\357\007\101\207\257\152\245\136\213\373\317\120\262\232 +\124\257\303\211\272\130\055\365\060\230\261\066\162\071\176\111 +\004\375\051\247\114\171\344\005\127\333\224\271\026\123\215\106 +\263\035\225\141\127\126\177\257\360\026\133\141\130\157\066\120 +\021\013\330\254\053\225\026\032\016\037\010\315\066\064\145\020 +\142\146\325\200\137\024\040\137\055\014\240\170\012\150\326\054 +\327\351\157\053\322\112\005\223\374\236\157\153\147\377\210\361 +\116\245\151\112\122\067\005\352\306\026\215\322\304\231\321\202 +\053\073\272\065\165\367\121\121\130\363\310\007\335\344\264\003 +\177\002\003\001\000\001\243\102\060\100\060\035\006\003\125\035 +\016\004\026\004\024\331\164\072\344\060\075\015\367\022\334\176 +\132\005\237\036\064\232\367\341\024\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\206\060\015\006\011\052\206 +\110\206\367\015\001\001\013\005\000\003\202\002\001\000\066\215 +\227\314\102\025\144\051\067\233\046\054\326\373\256\025\151\054 +\153\032\032\367\137\266\371\007\114\131\352\363\311\310\271\256 +\314\272\056\172\334\300\365\260\055\300\073\257\237\160\005\021 +\152\237\045\117\001\051\160\343\345\014\341\352\132\174\334\111 +\273\301\036\052\201\365\026\113\162\221\310\242\061\271\252\332 +\374\235\037\363\135\100\002\023\374\116\034\006\312\263\024\220 +\124\027\031\022\032\361\037\327\014\151\132\366\161\170\364\224 +\175\221\013\216\354\220\124\216\274\157\241\114\253\374\164\144 +\375\161\232\370\101\007\241\315\221\344\074\232\340\233\062\071 +\163\253\052\325\151\310\170\221\046\061\175\342\307\060\361\374 +\024\170\167\022\016\023\364\335\026\224\277\113\147\173\160\123 +\205\312\260\273\363\070\115\054\220\071\300\015\302\135\153\351 +\342\345\325\210\215\326\054\277\253\033\276\265\050\207\022\027 +\164\156\374\175\374\217\320\207\046\260\033\373\271\154\253\342 +\236\075\025\301\073\056\147\002\130\221\237\357\370\102\037\054 +\267\150\365\165\255\317\265\366\377\021\175\302\360\044\245\255 +\323\372\240\074\251\372\135\334\245\240\357\104\244\276\326\350 +\345\344\023\226\027\173\006\076\062\355\307\267\102\274\166\243 +\330\145\070\053\070\065\121\041\016\016\157\056\064\023\100\341 +\053\147\014\155\112\101\060\030\043\132\062\125\231\311\027\340 +\074\336\366\354\171\255\053\130\031\242\255\054\042\032\225\216 +\276\226\220\135\102\127\304\371\024\003\065\053\034\055\121\127 +\010\247\072\336\077\344\310\264\003\163\302\301\046\200\273\013 +\102\037\255\015\257\046\162\332\314\276\263\243\203\130\015\202 +\305\037\106\121\343\234\030\314\215\233\215\354\111\353\165\120 +\325\214\050\131\312\164\064\332\214\013\041\253\036\352\033\345 +\307\375\025\076\300\027\252\373\043\156\046\106\313\372\371\261 +\162\153\151\317\042\204\013\142\017\254\331\031\000\224\242\166 +\074\324\055\232\355\004\236\055\006\142\020\067\122\034\205\162 +\033\047\345\314\306\061\354\067\354\143\131\233\013\035\166\314 +\176\062\232\210\225\010\066\122\273\336\166\137\166\111\111\255 +\177\275\145\040\262\311\301\053\166\030\166\237\126\261 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "UCA Extended Validation Root" +# Issuer: CN=UCA Extended Validation Root,O=UniTrust,C=CN +# Serial Number:4f:d2:2b:8f:f5:64:c8:33:9e:4f:34:58:66:23:70:60 +# Subject: CN=UCA Extended Validation Root,O=UniTrust,C=CN +# Not Valid Before: Fri Mar 13 00:00:00 2015 +# Not Valid After : Fri Dec 31 00:00:00 2038 +# Fingerprint (SHA-256): D4:3A:F9:B3:54:73:75:5C:96:84:FC:06:D7:D8:CB:70:EE:5C:28:E7:73:FB:29:4E:B4:1E:E7:17:22:92:4D:24 +# Fingerprint (SHA1): A3:A1:B0:6F:24:61:23:4A:E3:36:A5:C2:37:FC:A6:FF:DD:F0:D7:3A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "UCA Extended Validation Root" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\243\241\260\157\044\141\043\112\343\066\245\302\067\374\246\377 +\335\360\327\072 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\241\363\137\103\306\064\233\332\277\214\176\005\123\255\226\342 +END +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\021\060\017\006\003\125\004\012\014\010\125\156\151\124\162\165 +\163\164\061\045\060\043\006\003\125\004\003\014\034\125\103\101 +\040\105\170\164\145\156\144\145\144\040\126\141\154\151\144\141 +\164\151\157\156\040\122\157\157\164 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\117\322\053\217\365\144\310\063\236\117\064\130\146\043 +\160\140 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certigna Root CA" +# +# Issuer: CN=Certigna Root CA,OU=0002 48146308100036,O=Dhimyotis,C=FR +# Serial Number:00:ca:e9:1b:89:f1:55:03:0d:a3:e6:41:6d:c4:e3:a6:e1 +# Subject: CN=Certigna Root CA,OU=0002 48146308100036,O=Dhimyotis,C=FR +# Not Valid Before: Tue Oct 01 08:32:27 2013 +# Not Valid After : Sat Oct 01 08:32:27 2033 +# Fingerprint (SHA-256): D4:8D:3D:23:EE:DB:50:A4:59:E5:51:97:60:1C:27:77:4B:9D:7B:18:C9:4D:5A:05:95:11:A1:02:50:B9:31:68 +# Fingerprint (SHA1): 2D:0D:52:14:FF:9E:AD:99:24:01:74:20:47:6E:6C:85:27:27:F5:43 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certigna Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\106\122\061 +\022\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157 +\164\151\163\061\034\060\032\006\003\125\004\013\014\023\060\060 +\060\062\040\064\070\061\064\066\063\060\070\061\060\060\060\063 +\066\061\031\060\027\006\003\125\004\003\014\020\103\145\162\164 +\151\147\156\141\040\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\106\122\061 +\022\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157 +\164\151\163\061\034\060\032\006\003\125\004\013\014\023\060\060 +\060\062\040\064\070\061\064\066\063\060\070\061\060\060\060\063 +\066\061\031\060\027\006\003\125\004\003\014\020\103\145\162\164 +\151\147\156\141\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\312\351\033\211\361\125\003\015\243\346\101\155\304 +\343\246\341 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\006\133\060\202\004\103\240\003\002\001\002\002\021\000 +\312\351\033\211\361\125\003\015\243\346\101\155\304\343\246\341 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\132\061\013\060\011\006\003\125\004\006\023\002\106\122\061\022 +\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157\164 +\151\163\061\034\060\032\006\003\125\004\013\014\023\060\060\060 +\062\040\064\070\061\064\066\063\060\070\061\060\060\060\063\066 +\061\031\060\027\006\003\125\004\003\014\020\103\145\162\164\151 +\147\156\141\040\122\157\157\164\040\103\101\060\036\027\015\061 +\063\061\060\060\061\060\070\063\062\062\067\132\027\015\063\063 +\061\060\060\061\060\070\063\062\062\067\132\060\132\061\013\060 +\011\006\003\125\004\006\023\002\106\122\061\022\060\020\006\003 +\125\004\012\014\011\104\150\151\155\171\157\164\151\163\061\034 +\060\032\006\003\125\004\013\014\023\060\060\060\062\040\064\070 +\061\064\066\063\060\070\061\060\060\060\063\066\061\031\060\027 +\006\003\125\004\003\014\020\103\145\162\164\151\147\156\141\040 +\122\157\157\164\040\103\101\060\202\002\042\060\015\006\011\052 +\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060 +\202\002\012\002\202\002\001\000\315\030\071\145\032\131\261\352 +\144\026\016\214\224\044\225\174\203\323\305\071\046\334\014\357 +\026\127\215\327\330\254\243\102\177\202\312\355\315\133\333\016 +\267\055\355\105\010\027\262\331\263\313\326\027\122\162\050\333 +\216\116\236\212\266\013\371\236\204\232\115\166\336\042\051\134 +\322\263\322\006\076\060\071\251\164\243\222\126\034\241\157\114 +\012\040\155\237\043\172\264\306\332\054\344\035\054\334\263\050 +\320\023\362\114\116\002\111\241\124\100\236\346\345\005\240\055 +\204\310\377\230\154\320\353\212\032\204\010\036\267\150\043\356 +\043\325\160\316\155\121\151\020\356\241\172\302\321\042\061\302 +\202\205\322\362\125\166\120\174\045\172\311\204\134\013\254\335 +\102\116\053\347\202\242\044\211\313\220\262\320\356\043\272\146 +\114\273\142\244\371\123\132\144\173\174\230\372\243\110\236\017 +\225\256\247\030\364\152\354\056\003\105\257\360\164\370\052\315 +\172\135\321\276\104\046\062\051\361\361\365\154\314\176\002\041 +\013\237\157\244\077\276\235\123\342\317\175\251\054\174\130\032 +\227\341\075\067\067\030\146\050\322\100\305\121\212\214\303\055 +\316\123\210\044\130\144\060\026\305\252\340\326\012\246\100\337 +\170\366\365\004\174\151\023\204\274\321\321\247\006\317\001\367 +\150\300\250\127\273\072\141\255\004\214\223\343\255\374\360\333 +\104\155\131\334\111\131\256\254\232\231\066\060\101\173\166\063 +\042\207\243\302\222\206\156\371\160\356\256\207\207\225\033\304 +\172\275\061\363\324\322\345\231\377\276\110\354\165\365\170\026 +\035\246\160\301\177\074\033\241\222\373\317\310\074\326\305\223 +\012\217\365\125\072\166\225\316\131\230\212\011\225\167\062\232 +\203\272\054\004\072\227\275\324\057\276\327\154\233\242\312\175 +\155\046\311\125\325\317\303\171\122\010\011\231\007\044\055\144 +\045\153\246\041\151\233\152\335\164\115\153\227\172\101\275\253 +\027\371\220\027\110\217\066\371\055\325\305\333\356\252\205\105 +\101\372\315\072\105\261\150\346\066\114\233\220\127\354\043\271 +\207\010\302\304\011\361\227\206\052\050\115\342\164\300\332\304 +\214\333\337\342\241\027\131\316\044\131\164\061\332\177\375\060 +\155\331\334\341\152\341\374\137\002\003\001\000\001\243\202\001 +\032\060\202\001\026\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\035\006\003\125\035\016\004\026\004 +\024\030\207\126\340\156\167\356\044\065\074\116\163\232\037\326 +\341\342\171\176\053\060\037\006\003\125\035\043\004\030\060\026 +\200\024\030\207\126\340\156\167\356\044\065\074\116\163\232\037 +\326\341\342\171\176\053\060\104\006\003\125\035\040\004\075\060 +\073\060\071\006\004\125\035\040\000\060\061\060\057\006\010\053 +\006\001\005\005\007\002\001\026\043\150\164\164\160\163\072\057 +\057\167\167\167\167\056\143\145\162\164\151\147\156\141\056\146 +\162\057\141\165\164\157\162\151\164\145\163\057\060\155\006\003 +\125\035\037\004\146\060\144\060\057\240\055\240\053\206\051\150 +\164\164\160\072\057\057\143\162\154\056\143\145\162\164\151\147 +\156\141\056\146\162\057\143\145\162\164\151\147\156\141\162\157 +\157\164\143\141\056\143\162\154\060\061\240\057\240\055\206\053 +\150\164\164\160\072\057\057\143\162\154\056\144\150\151\155\171 +\157\164\151\163\056\143\157\155\057\143\145\162\164\151\147\156 +\141\162\157\157\164\143\141\056\143\162\154\060\015\006\011\052 +\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000\224 +\270\236\117\360\343\225\010\042\347\315\150\101\367\034\125\325 +\174\000\342\055\072\211\135\150\070\057\121\042\013\112\215\313 +\351\273\135\076\273\134\075\261\050\376\344\123\125\023\317\241 +\220\033\002\035\137\146\106\011\063\050\341\015\044\227\160\323 +\020\037\352\144\127\226\273\135\332\347\304\214\117\114\144\106 +\035\134\207\343\131\336\102\321\233\250\176\246\211\335\217\034 +\311\060\202\355\073\234\315\300\351\031\340\152\330\002\165\067 +\253\367\064\050\050\221\362\004\012\117\065\343\140\046\001\372 +\320\021\214\371\021\152\356\257\075\303\120\323\217\137\063\171 +\074\206\250\163\105\220\214\040\266\162\163\027\043\276\007\145 +\345\170\222\015\272\001\300\353\214\034\146\277\254\206\167\001 +\224\015\234\346\351\071\215\037\246\121\214\231\014\071\167\341 +\264\233\372\034\147\127\157\152\152\216\251\053\114\127\171\172 +\127\042\317\315\137\143\106\215\134\131\072\206\370\062\107\142 +\243\147\015\030\221\334\373\246\153\365\110\141\163\043\131\216 +\002\247\274\104\352\364\111\235\361\124\130\371\140\257\332\030 +\244\057\050\105\334\172\240\210\206\135\363\073\347\377\051\065 +\200\374\144\103\224\346\343\034\157\276\255\016\052\143\231\053 +\311\176\205\366\161\350\006\003\225\376\336\217\110\034\132\324 +\222\350\053\356\347\061\333\272\004\152\207\230\347\305\137\357 +\175\247\042\367\001\330\115\371\211\320\016\232\005\131\244\236 +\230\331\157\053\312\160\276\144\302\125\243\364\351\257\303\222 +\051\334\210\026\044\231\074\215\046\230\266\133\267\314\316\267 +\067\007\375\046\331\230\205\044\377\131\043\003\232\355\235\235 +\250\344\136\070\316\327\122\015\157\322\077\155\261\005\153\111 +\316\212\221\106\163\364\366\057\360\250\163\167\016\145\254\241 +\215\146\122\151\176\113\150\014\307\036\067\047\203\245\214\307 +\002\344\024\315\111\001\260\163\263\375\306\220\072\157\322\154 +\355\073\356\354\221\276\242\103\135\213\000\112\146\045\104\160 +\336\100\017\370\174\025\367\242\316\074\327\136\023\214\201\027 +\030\027\321\275\361\167\020\072\324\145\071\301\047\254\127\054 +\045\124\377\242\332\117\212\141\071\136\256\075\112\214\275 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certigna Root CA" +# Issuer: CN=Certigna Root CA,OU=0002 48146308100036,O=Dhimyotis,C=FR +# Serial Number:00:ca:e9:1b:89:f1:55:03:0d:a3:e6:41:6d:c4:e3:a6:e1 +# Subject: CN=Certigna Root CA,OU=0002 48146308100036,O=Dhimyotis,C=FR +# Not Valid Before: Tue Oct 01 08:32:27 2013 +# Not Valid After : Sat Oct 01 08:32:27 2033 +# Fingerprint (SHA-256): D4:8D:3D:23:EE:DB:50:A4:59:E5:51:97:60:1C:27:77:4B:9D:7B:18:C9:4D:5A:05:95:11:A1:02:50:B9:31:68 +# Fingerprint (SHA1): 2D:0D:52:14:FF:9E:AD:99:24:01:74:20:47:6E:6C:85:27:27:F5:43 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certigna Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\055\015\122\024\377\236\255\231\044\001\164\040\107\156\154\205 +\047\047\365\103 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\016\134\060\142\047\353\133\274\327\256\142\272\351\325\337\167 +END +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\106\122\061 +\022\060\020\006\003\125\004\012\014\011\104\150\151\155\171\157 +\164\151\163\061\034\060\032\006\003\125\004\013\014\023\060\060 +\060\062\040\064\070\061\064\066\063\060\070\061\060\060\060\063 +\066\061\031\060\027\006\003\125\004\003\014\020\103\145\162\164 +\151\147\156\141\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\312\351\033\211\361\125\003\015\243\346\101\155\304 +\343\246\341 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "emSign Root CA - G1" +# +# Issuer: CN=emSign Root CA - G1,O=eMudhra Technologies Limited,OU=emSign PKI,C=IN +# Serial Number:31:f5:e4:62:0c:6c:58:ed:d6:d8 +# Subject: CN=emSign Root CA - G1,O=eMudhra Technologies Limited,OU=emSign PKI,C=IN +# Not Valid Before: Sun Feb 18 18:30:00 2018 +# Not Valid After : Wed Feb 18 18:30:00 2043 +# Fingerprint (SHA-256): 40:F6:AF:03:46:A9:9A:A1:CD:1D:55:5A:4E:9C:CE:62:C7:F9:63:46:03:EE:40:66:15:83:3D:C8:C8:D0:03:67 +# Fingerprint (SHA1): 8A:C7:AD:8F:73:AC:4E:C1:B5:75:4D:A5:40:F4:FC:CF:7C:B5:8E:8C +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "emSign Root CA - G1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\147\061\013\060\011\006\003\125\004\006\023\002\111\116\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\045\060\043\006\003\125\004\012\023\034\145 +\115\165\144\150\162\141\040\124\145\143\150\156\157\154\157\147 +\151\145\163\040\114\151\155\151\164\145\144\061\034\060\032\006 +\003\125\004\003\023\023\145\155\123\151\147\156\040\122\157\157 +\164\040\103\101\040\055\040\107\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\147\061\013\060\011\006\003\125\004\006\023\002\111\116\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\045\060\043\006\003\125\004\012\023\034\145 +\115\165\144\150\162\141\040\124\145\143\150\156\157\154\157\147 +\151\145\163\040\114\151\155\151\164\145\144\061\034\060\032\006 +\003\125\004\003\023\023\145\155\123\151\147\156\040\122\157\157 +\164\040\103\101\040\055\040\107\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\012\061\365\344\142\014\154\130\355\326\330 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\224\060\202\002\174\240\003\002\001\002\002\012\061 +\365\344\142\014\154\130\355\326\330\060\015\006\011\052\206\110 +\206\367\015\001\001\013\005\000\060\147\061\013\060\011\006\003 +\125\004\006\023\002\111\116\061\023\060\021\006\003\125\004\013 +\023\012\145\155\123\151\147\156\040\120\113\111\061\045\060\043 +\006\003\125\004\012\023\034\145\115\165\144\150\162\141\040\124 +\145\143\150\156\157\154\157\147\151\145\163\040\114\151\155\151 +\164\145\144\061\034\060\032\006\003\125\004\003\023\023\145\155 +\123\151\147\156\040\122\157\157\164\040\103\101\040\055\040\107 +\061\060\036\027\015\061\070\060\062\061\070\061\070\063\060\060 +\060\132\027\015\064\063\060\062\061\070\061\070\063\060\060\060 +\132\060\147\061\013\060\011\006\003\125\004\006\023\002\111\116 +\061\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147 +\156\040\120\113\111\061\045\060\043\006\003\125\004\012\023\034 +\145\115\165\144\150\162\141\040\124\145\143\150\156\157\154\157 +\147\151\145\163\040\114\151\155\151\164\145\144\061\034\060\032 +\006\003\125\004\003\023\023\145\155\123\151\147\156\040\122\157 +\157\164\040\103\101\040\055\040\107\061\060\202\001\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001 +\017\000\060\202\001\012\002\202\001\001\000\223\113\273\351\146 +\212\356\235\133\325\064\223\320\033\036\303\347\236\270\144\063 +\177\143\170\150\264\315\056\161\165\327\233\040\306\115\051\274 +\266\150\140\212\367\041\232\126\065\132\363\166\275\330\315\232 +\377\223\126\113\245\131\006\241\223\064\051\335\026\064\165\116 +\362\201\264\307\226\116\255\031\025\122\112\376\074\160\165\160 +\315\257\053\253\025\232\063\074\252\263\213\252\315\103\375\365 +\352\160\377\355\317\021\073\224\316\116\062\026\323\043\100\052 +\167\263\257\074\001\054\154\355\231\054\213\331\116\151\230\262 +\367\217\101\260\062\170\141\326\015\137\303\372\242\100\222\035 +\134\027\346\160\076\065\347\242\267\302\142\342\253\244\070\114 +\265\071\065\157\352\003\151\372\072\124\150\205\155\326\362\057 +\103\125\036\221\015\016\330\325\152\244\226\321\023\074\054\170 +\120\350\072\222\322\027\126\345\065\032\100\034\076\215\054\355 +\071\337\102\340\203\101\164\337\243\315\302\206\140\110\150\343 +\151\013\124\000\213\344\166\151\041\015\171\116\064\010\136\024 +\302\314\261\267\255\327\174\160\212\307\205\002\003\001\000\001 +\243\102\060\100\060\035\006\003\125\035\016\004\026\004\024\373 +\357\015\206\236\260\343\335\251\271\361\041\027\177\076\374\360 +\167\053\032\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\015\006\011\052\206\110\206\367\015\001\001 +\013\005\000\003\202\001\001\000\131\377\362\214\365\207\175\161 +\075\243\237\033\133\321\332\370\323\234\153\066\275\233\251\141 +\353\336\026\054\164\075\236\346\165\332\327\272\247\274\102\027 +\347\075\221\353\345\175\335\076\234\361\317\222\254\154\110\314 +\302\042\077\151\073\305\266\025\057\243\065\306\150\052\034\127 +\257\071\357\215\320\065\303\030\014\173\000\126\034\315\213\031 +\164\336\276\017\022\340\320\252\241\077\002\064\261\160\316\235 +\030\326\010\003\011\106\356\140\340\176\266\304\111\004\121\175 +\160\140\274\252\262\377\171\162\172\246\035\075\137\052\370\312 +\342\375\071\267\107\271\353\176\337\004\043\257\372\234\006\007 +\351\373\143\223\200\100\265\306\154\012\061\050\316\014\237\317 +\263\043\065\200\101\215\154\304\067\173\201\057\200\241\100\102 +\205\351\331\070\215\350\241\123\315\001\277\151\350\132\006\362 +\105\013\220\372\256\341\277\235\362\256\127\074\245\256\262\126 +\364\213\145\100\351\375\061\201\054\364\071\011\330\356\153\247 +\264\246\035\025\245\230\367\001\201\330\205\175\363\121\134\161 +\210\336\272\314\037\200\176\112 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "emSign Root CA - G1" +# Issuer: CN=emSign Root CA - G1,O=eMudhra Technologies Limited,OU=emSign PKI,C=IN +# Serial Number:31:f5:e4:62:0c:6c:58:ed:d6:d8 +# Subject: CN=emSign Root CA - G1,O=eMudhra Technologies Limited,OU=emSign PKI,C=IN +# Not Valid Before: Sun Feb 18 18:30:00 2018 +# Not Valid After : Wed Feb 18 18:30:00 2043 +# Fingerprint (SHA-256): 40:F6:AF:03:46:A9:9A:A1:CD:1D:55:5A:4E:9C:CE:62:C7:F9:63:46:03:EE:40:66:15:83:3D:C8:C8:D0:03:67 +# Fingerprint (SHA1): 8A:C7:AD:8F:73:AC:4E:C1:B5:75:4D:A5:40:F4:FC:CF:7C:B5:8E:8C +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "emSign Root CA - G1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\212\307\255\217\163\254\116\301\265\165\115\245\100\364\374\317 +\174\265\216\214 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\234\102\204\127\335\313\013\247\056\225\255\266\363\332\274\254 +END +CKA_ISSUER MULTILINE_OCTAL +\060\147\061\013\060\011\006\003\125\004\006\023\002\111\116\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\045\060\043\006\003\125\004\012\023\034\145 +\115\165\144\150\162\141\040\124\145\143\150\156\157\154\157\147 +\151\145\163\040\114\151\155\151\164\145\144\061\034\060\032\006 +\003\125\004\003\023\023\145\155\123\151\147\156\040\122\157\157 +\164\040\103\101\040\055\040\107\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\012\061\365\344\142\014\154\130\355\326\330 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "emSign ECC Root CA - G3" +# +# Issuer: CN=emSign ECC Root CA - G3,O=eMudhra Technologies Limited,OU=emSign PKI,C=IN +# Serial Number:3c:f6:07:a9:68:70:0e:da:8b:84 +# Subject: CN=emSign ECC Root CA - G3,O=eMudhra Technologies Limited,OU=emSign PKI,C=IN +# Not Valid Before: Sun Feb 18 18:30:00 2018 +# Not Valid After : Wed Feb 18 18:30:00 2043 +# Fingerprint (SHA-256): 86:A1:EC:BA:08:9C:4A:8D:3B:BE:27:34:C6:12:BA:34:1D:81:3E:04:3C:F9:E8:A8:62:CD:5C:57:A3:6B:BE:6B +# Fingerprint (SHA1): 30:43:FA:4F:F2:57:DC:A0:C3:80:EE:2E:58:EA:78:B2:3F:E6:BB:C1 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "emSign ECC Root CA - G3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\153\061\013\060\011\006\003\125\004\006\023\002\111\116\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\045\060\043\006\003\125\004\012\023\034\145 +\115\165\144\150\162\141\040\124\145\143\150\156\157\154\157\147 +\151\145\163\040\114\151\155\151\164\145\144\061\040\060\036\006 +\003\125\004\003\023\027\145\155\123\151\147\156\040\105\103\103 +\040\122\157\157\164\040\103\101\040\055\040\107\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\153\061\013\060\011\006\003\125\004\006\023\002\111\116\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\045\060\043\006\003\125\004\012\023\034\145 +\115\165\144\150\162\141\040\124\145\143\150\156\157\154\157\147 +\151\145\163\040\114\151\155\151\164\145\144\061\040\060\036\006 +\003\125\004\003\023\027\145\155\123\151\147\156\040\105\103\103 +\040\122\157\157\164\040\103\101\040\055\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\012\074\366\007\251\150\160\016\332\213\204 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\116\060\202\001\323\240\003\002\001\002\002\012\074 +\366\007\251\150\160\016\332\213\204\060\012\006\010\052\206\110 +\316\075\004\003\003\060\153\061\013\060\011\006\003\125\004\006 +\023\002\111\116\061\023\060\021\006\003\125\004\013\023\012\145 +\155\123\151\147\156\040\120\113\111\061\045\060\043\006\003\125 +\004\012\023\034\145\115\165\144\150\162\141\040\124\145\143\150 +\156\157\154\157\147\151\145\163\040\114\151\155\151\164\145\144 +\061\040\060\036\006\003\125\004\003\023\027\145\155\123\151\147 +\156\040\105\103\103\040\122\157\157\164\040\103\101\040\055\040 +\107\063\060\036\027\015\061\070\060\062\061\070\061\070\063\060 +\060\060\132\027\015\064\063\060\062\061\070\061\070\063\060\060 +\060\132\060\153\061\013\060\011\006\003\125\004\006\023\002\111 +\116\061\023\060\021\006\003\125\004\013\023\012\145\155\123\151 +\147\156\040\120\113\111\061\045\060\043\006\003\125\004\012\023 +\034\145\115\165\144\150\162\141\040\124\145\143\150\156\157\154 +\157\147\151\145\163\040\114\151\155\151\164\145\144\061\040\060 +\036\006\003\125\004\003\023\027\145\155\123\151\147\156\040\105 +\103\103\040\122\157\157\164\040\103\101\040\055\040\107\063\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\043\245\014\270\055\022\365\050\363 +\261\262\335\342\002\022\200\236\071\137\111\115\237\311\045\064 +\131\164\354\273\006\034\347\300\162\257\350\256\057\341\101\124 +\207\024\250\112\262\350\174\202\346\133\152\265\334\263\165\316 +\213\006\320\206\043\277\106\325\216\017\077\004\364\327\034\222 +\176\366\245\143\302\365\137\216\056\117\241\030\031\002\053\062 +\012\202\144\175\026\223\321\243\102\060\100\060\035\006\003\125 +\035\016\004\026\004\024\174\135\002\204\023\324\314\212\233\201 +\316\027\034\056\051\036\234\110\143\102\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\006\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\012\006\010\052 +\206\110\316\075\004\003\003\003\151\000\060\146\002\061\000\276 +\363\141\317\002\020\035\144\225\007\270\030\156\210\205\005\057 +\203\010\027\220\312\037\212\114\350\015\033\172\261\255\325\201 +\011\107\357\073\254\010\004\174\134\231\261\355\107\007\322\002 +\061\000\235\272\125\374\251\112\350\355\355\346\166\001\102\173 +\310\370\140\331\215\121\213\125\073\373\214\173\353\145\011\303 +\370\226\315\107\250\202\362\026\125\167\044\176\022\020\225\004 +\054\243 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "emSign ECC Root CA - G3" +# Issuer: CN=emSign ECC Root CA - G3,O=eMudhra Technologies Limited,OU=emSign PKI,C=IN +# Serial Number:3c:f6:07:a9:68:70:0e:da:8b:84 +# Subject: CN=emSign ECC Root CA - G3,O=eMudhra Technologies Limited,OU=emSign PKI,C=IN +# Not Valid Before: Sun Feb 18 18:30:00 2018 +# Not Valid After : Wed Feb 18 18:30:00 2043 +# Fingerprint (SHA-256): 86:A1:EC:BA:08:9C:4A:8D:3B:BE:27:34:C6:12:BA:34:1D:81:3E:04:3C:F9:E8:A8:62:CD:5C:57:A3:6B:BE:6B +# Fingerprint (SHA1): 30:43:FA:4F:F2:57:DC:A0:C3:80:EE:2E:58:EA:78:B2:3F:E6:BB:C1 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "emSign ECC Root CA - G3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\060\103\372\117\362\127\334\240\303\200\356\056\130\352\170\262 +\077\346\273\301 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\316\013\162\321\237\210\216\320\120\003\350\343\270\213\147\100 +END +CKA_ISSUER MULTILINE_OCTAL +\060\153\061\013\060\011\006\003\125\004\006\023\002\111\116\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\045\060\043\006\003\125\004\012\023\034\145 +\115\165\144\150\162\141\040\124\145\143\150\156\157\154\157\147 +\151\145\163\040\114\151\155\151\164\145\144\061\040\060\036\006 +\003\125\004\003\023\027\145\155\123\151\147\156\040\105\103\103 +\040\122\157\157\164\040\103\101\040\055\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\012\074\366\007\251\150\160\016\332\213\204 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "emSign Root CA - C1" +# +# Issuer: CN=emSign Root CA - C1,O=eMudhra Inc,OU=emSign PKI,C=US +# Serial Number:00:ae:cf:00:ba:c4:cf:32:f8:43:b2 +# Subject: CN=emSign Root CA - C1,O=eMudhra Inc,OU=emSign PKI,C=US +# Not Valid Before: Sun Feb 18 18:30:00 2018 +# Not Valid After : Wed Feb 18 18:30:00 2043 +# Fingerprint (SHA-256): 12:56:09:AA:30:1D:A0:A2:49:B9:7A:82:39:CB:6A:34:21:6F:44:DC:AC:9F:39:54:B1:42:92:F2:E8:C8:60:8F +# Fingerprint (SHA1): E7:2E:F1:DF:FC:B2:09:28:CF:5D:D4:D5:67:37:B1:51:CB:86:4F:01 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "emSign Root CA - C1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\126\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\024\060\022\006\003\125\004\012\023\013\145 +\115\165\144\150\162\141\040\111\156\143\061\034\060\032\006\003 +\125\004\003\023\023\145\155\123\151\147\156\040\122\157\157\164 +\040\103\101\040\055\040\103\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\126\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\024\060\022\006\003\125\004\012\023\013\145 +\115\165\144\150\162\141\040\111\156\143\061\034\060\032\006\003 +\125\004\003\023\023\145\155\123\151\147\156\040\122\157\157\164 +\040\103\101\040\055\040\103\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\013\000\256\317\000\272\304\317\062\370\103\262 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\163\060\202\002\133\240\003\002\001\002\002\013\000 +\256\317\000\272\304\317\062\370\103\262\060\015\006\011\052\206 +\110\206\367\015\001\001\013\005\000\060\126\061\013\060\011\006 +\003\125\004\006\023\002\125\123\061\023\060\021\006\003\125\004 +\013\023\012\145\155\123\151\147\156\040\120\113\111\061\024\060 +\022\006\003\125\004\012\023\013\145\115\165\144\150\162\141\040 +\111\156\143\061\034\060\032\006\003\125\004\003\023\023\145\155 +\123\151\147\156\040\122\157\157\164\040\103\101\040\055\040\103 +\061\060\036\027\015\061\070\060\062\061\070\061\070\063\060\060 +\060\132\027\015\064\063\060\062\061\070\061\070\063\060\060\060 +\132\060\126\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147 +\156\040\120\113\111\061\024\060\022\006\003\125\004\012\023\013 +\145\115\165\144\150\162\141\040\111\156\143\061\034\060\032\006 +\003\125\004\003\023\023\145\155\123\151\147\156\040\122\157\157 +\164\040\103\101\040\055\040\103\061\060\202\001\042\060\015\006 +\011\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017 +\000\060\202\001\012\002\202\001\001\000\317\353\251\271\361\231 +\005\314\330\050\041\112\363\163\064\121\204\126\020\365\240\117 +\054\022\343\372\023\232\047\320\317\371\171\032\164\137\035\171 +\071\374\133\370\160\216\340\222\122\367\344\045\371\124\203\331 +\035\323\310\132\205\077\136\307\266\007\356\076\300\316\232\257 +\254\126\102\052\071\045\160\326\277\265\173\066\255\254\366\163 +\334\315\327\035\212\203\245\373\053\220\025\067\153\034\046\107 +\334\073\051\126\223\152\263\301\152\072\235\075\365\301\227\070 +\130\005\213\034\021\343\344\264\270\135\205\035\203\376\170\137 +\013\105\150\030\110\245\106\163\064\073\376\017\310\166\273\307 +\030\363\005\321\206\363\205\355\347\271\331\062\255\125\210\316 +\246\266\221\260\117\254\176\025\043\226\366\077\360\040\064\026 +\336\012\306\304\004\105\171\177\247\375\276\322\251\245\257\234 +\305\043\052\367\074\041\154\275\257\217\116\305\072\262\363\064 +\022\374\337\200\032\111\244\324\251\225\367\236\211\136\242\211 +\254\224\313\250\150\233\257\212\145\047\315\211\356\335\214\265 +\153\051\160\103\240\151\013\344\271\017\002\003\001\000\001\243 +\102\060\100\060\035\006\003\125\035\016\004\026\004\024\376\241 +\340\160\036\052\003\071\122\132\102\276\134\221\205\172\030\252 +\115\265\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\003\202\001\001\000\302\112\126\372\025\041\173\050\242 +\351\345\035\373\370\055\304\071\226\101\114\073\047\054\304\154 +\030\025\200\306\254\257\107\131\057\046\013\343\066\260\357\073 +\376\103\227\111\062\231\022\025\133\337\021\051\377\253\123\370 +\273\301\170\017\254\234\123\257\127\275\150\214\075\151\063\360 +\243\240\043\143\073\144\147\042\104\255\325\161\313\126\052\170 +\222\243\117\022\061\066\066\342\336\376\000\304\243\140\017\047 +\255\240\260\212\265\066\172\122\241\275\047\364\040\047\142\350 +\115\224\044\023\344\012\004\351\074\253\056\310\103\011\112\306 +\141\004\345\111\064\176\323\304\310\365\017\300\252\351\272\124 +\136\363\143\053\117\117\120\324\376\271\173\231\214\075\300\056 +\274\002\053\323\304\100\344\212\007\061\036\233\316\046\231\023 +\373\021\352\232\042\014\021\031\307\136\033\201\120\060\310\226 +\022\156\347\313\101\177\221\073\242\107\267\124\200\033\334\000 +\314\232\220\352\303\303\120\006\142\014\060\300\025\110\247\250 +\131\174\341\256\042\242\342\012\172\017\372\142\253\122\114\341 +\361\337\312\276\203\015\102 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "emSign Root CA - C1" +# Issuer: CN=emSign Root CA - C1,O=eMudhra Inc,OU=emSign PKI,C=US +# Serial Number:00:ae:cf:00:ba:c4:cf:32:f8:43:b2 +# Subject: CN=emSign Root CA - C1,O=eMudhra Inc,OU=emSign PKI,C=US +# Not Valid Before: Sun Feb 18 18:30:00 2018 +# Not Valid After : Wed Feb 18 18:30:00 2043 +# Fingerprint (SHA-256): 12:56:09:AA:30:1D:A0:A2:49:B9:7A:82:39:CB:6A:34:21:6F:44:DC:AC:9F:39:54:B1:42:92:F2:E8:C8:60:8F +# Fingerprint (SHA1): E7:2E:F1:DF:FC:B2:09:28:CF:5D:D4:D5:67:37:B1:51:CB:86:4F:01 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "emSign Root CA - C1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\347\056\361\337\374\262\011\050\317\135\324\325\147\067\261\121 +\313\206\117\001 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\330\343\135\001\041\372\170\132\260\337\272\322\356\052\137\150 +END +CKA_ISSUER MULTILINE_OCTAL +\060\126\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\024\060\022\006\003\125\004\012\023\013\145 +\115\165\144\150\162\141\040\111\156\143\061\034\060\032\006\003 +\125\004\003\023\023\145\155\123\151\147\156\040\122\157\157\164 +\040\103\101\040\055\040\103\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\013\000\256\317\000\272\304\317\062\370\103\262 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "emSign ECC Root CA - C3" +# +# Issuer: CN=emSign ECC Root CA - C3,O=eMudhra Inc,OU=emSign PKI,C=US +# Serial Number:7b:71:b6:82:56:b8:12:7c:9c:a8 +# Subject: CN=emSign ECC Root CA - C3,O=eMudhra Inc,OU=emSign PKI,C=US +# Not Valid Before: Sun Feb 18 18:30:00 2018 +# Not Valid After : Wed Feb 18 18:30:00 2043 +# Fingerprint (SHA-256): BC:4D:80:9B:15:18:9D:78:DB:3E:1D:8C:F4:F9:72:6A:79:5D:A1:64:3C:A5:F1:35:8E:1D:DB:0E:DC:0D:7E:B3 +# Fingerprint (SHA1): B6:AF:43:C2:9B:81:53:7D:F6:EF:6B:C3:1F:1F:60:15:0C:EE:48:66 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "emSign ECC Root CA - C3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\024\060\022\006\003\125\004\012\023\013\145 +\115\165\144\150\162\141\040\111\156\143\061\040\060\036\006\003 +\125\004\003\023\027\145\155\123\151\147\156\040\105\103\103\040 +\122\157\157\164\040\103\101\040\055\040\103\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\024\060\022\006\003\125\004\012\023\013\145 +\115\165\144\150\162\141\040\111\156\143\061\040\060\036\006\003 +\125\004\003\023\027\145\155\123\151\147\156\040\105\103\103\040 +\122\157\157\164\040\103\101\040\055\040\103\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\012\173\161\266\202\126\270\022\174\234\250 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\053\060\202\001\261\240\003\002\001\002\002\012\173 +\161\266\202\126\270\022\174\234\250\060\012\006\010\052\206\110 +\316\075\004\003\003\060\132\061\013\060\011\006\003\125\004\006 +\023\002\125\123\061\023\060\021\006\003\125\004\013\023\012\145 +\155\123\151\147\156\040\120\113\111\061\024\060\022\006\003\125 +\004\012\023\013\145\115\165\144\150\162\141\040\111\156\143\061 +\040\060\036\006\003\125\004\003\023\027\145\155\123\151\147\156 +\040\105\103\103\040\122\157\157\164\040\103\101\040\055\040\103 +\063\060\036\027\015\061\070\060\062\061\070\061\070\063\060\060 +\060\132\027\015\064\063\060\062\061\070\061\070\063\060\060\060 +\132\060\132\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147 +\156\040\120\113\111\061\024\060\022\006\003\125\004\012\023\013 +\145\115\165\144\150\162\141\040\111\156\143\061\040\060\036\006 +\003\125\004\003\023\027\145\155\123\151\147\156\040\105\103\103 +\040\122\157\157\164\040\103\101\040\055\040\103\063\060\166\060 +\020\006\007\052\206\110\316\075\002\001\006\005\053\201\004\000 +\042\003\142\000\004\375\245\141\256\173\046\020\035\351\267\042 +\060\256\006\364\201\263\261\102\161\225\071\274\323\122\343\257 +\257\371\362\227\065\222\066\106\016\207\225\215\271\071\132\351 +\273\337\320\376\310\007\101\074\273\125\157\203\243\152\373\142 +\260\201\211\002\160\175\110\305\112\343\351\042\124\042\115\223 +\273\102\014\257\167\234\043\246\175\327\141\021\316\145\307\370 +\177\376\365\362\251\243\102\060\100\060\035\006\003\125\035\016 +\004\026\004\024\373\132\110\320\200\040\100\362\250\351\000\007 +\151\031\167\247\346\303\364\317\060\016\006\003\125\035\017\001 +\001\377\004\004\003\002\001\006\060\017\006\003\125\035\023\001 +\001\377\004\005\060\003\001\001\377\060\012\006\010\052\206\110 +\316\075\004\003\003\003\150\000\060\145\002\061\000\264\330\057 +\002\211\375\266\114\142\272\103\116\023\204\162\265\256\335\034 +\336\326\265\334\126\217\130\100\132\055\336\040\114\042\203\312 +\223\250\176\356\022\100\307\326\207\117\370\337\205\002\060\034 +\024\144\344\174\226\203\021\234\260\321\132\141\113\246\017\111 +\323\000\374\241\374\344\245\377\177\255\327\060\320\307\167\177 +\276\201\007\125\060\120\040\024\365\127\070\012\250\061\121 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "emSign ECC Root CA - C3" +# Issuer: CN=emSign ECC Root CA - C3,O=eMudhra Inc,OU=emSign PKI,C=US +# Serial Number:7b:71:b6:82:56:b8:12:7c:9c:a8 +# Subject: CN=emSign ECC Root CA - C3,O=eMudhra Inc,OU=emSign PKI,C=US +# Not Valid Before: Sun Feb 18 18:30:00 2018 +# Not Valid After : Wed Feb 18 18:30:00 2043 +# Fingerprint (SHA-256): BC:4D:80:9B:15:18:9D:78:DB:3E:1D:8C:F4:F9:72:6A:79:5D:A1:64:3C:A5:F1:35:8E:1D:DB:0E:DC:0D:7E:B3 +# Fingerprint (SHA1): B6:AF:43:C2:9B:81:53:7D:F6:EF:6B:C3:1F:1F:60:15:0C:EE:48:66 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "emSign ECC Root CA - C3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\266\257\103\302\233\201\123\175\366\357\153\303\037\037\140\025 +\014\356\110\146 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\076\123\263\243\201\356\327\020\370\323\260\035\027\222\365\325 +END +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\023\060\021\006\003\125\004\013\023\012\145\155\123\151\147\156 +\040\120\113\111\061\024\060\022\006\003\125\004\012\023\013\145 +\115\165\144\150\162\141\040\111\156\143\061\040\060\036\006\003 +\125\004\003\023\027\145\155\123\151\147\156\040\105\103\103\040 +\122\157\157\164\040\103\101\040\055\040\103\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\012\173\161\266\202\126\270\022\174\234\250 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Hongkong Post Root CA 3" +# +# Issuer: CN=Hongkong Post Root CA 3,O=Hongkong Post,L=Hong Kong,ST=Hong Kong,C=HK +# Serial Number:08:16:5f:8a:4c:a5:ec:00:c9:93:40:df:c4:c6:ae:23:b8:1c:5a:a4 +# Subject: CN=Hongkong Post Root CA 3,O=Hongkong Post,L=Hong Kong,ST=Hong Kong,C=HK +# Not Valid Before: Sat Jun 03 02:29:46 2017 +# Not Valid After : Tue Jun 03 02:29:46 2042 +# Fingerprint (SHA-256): 5A:2F:C0:3F:0C:83:B0:90:BB:FA:40:60:4B:09:88:44:6C:76:36:18:3D:F9:84:6E:17:10:1A:44:7F:B8:EF:D6 +# Fingerprint (SHA1): 58:A2:D0:EC:20:52:81:5B:C1:F3:F8:64:02:24:4E:C2:8E:02:4B:02 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Hongkong Post Root CA 3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\157\061\013\060\011\006\003\125\004\006\023\002\110\113\061 +\022\060\020\006\003\125\004\010\023\011\110\157\156\147\040\113 +\157\156\147\061\022\060\020\006\003\125\004\007\023\011\110\157 +\156\147\040\113\157\156\147\061\026\060\024\006\003\125\004\012 +\023\015\110\157\156\147\153\157\156\147\040\120\157\163\164\061 +\040\060\036\006\003\125\004\003\023\027\110\157\156\147\153\157 +\156\147\040\120\157\163\164\040\122\157\157\164\040\103\101\040 +\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\157\061\013\060\011\006\003\125\004\006\023\002\110\113\061 +\022\060\020\006\003\125\004\010\023\011\110\157\156\147\040\113 +\157\156\147\061\022\060\020\006\003\125\004\007\023\011\110\157 +\156\147\040\113\157\156\147\061\026\060\024\006\003\125\004\012 +\023\015\110\157\156\147\153\157\156\147\040\120\157\163\164\061 +\040\060\036\006\003\125\004\003\023\027\110\157\156\147\153\157 +\156\147\040\120\157\163\164\040\122\157\157\164\040\103\101\040 +\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\010\026\137\212\114\245\354\000\311\223\100\337\304\306 +\256\043\270\034\132\244 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\317\060\202\003\267\240\003\002\001\002\002\024\010 +\026\137\212\114\245\354\000\311\223\100\337\304\306\256\043\270 +\034\132\244\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\157\061\013\060\011\006\003\125\004\006\023\002\110 +\113\061\022\060\020\006\003\125\004\010\023\011\110\157\156\147 +\040\113\157\156\147\061\022\060\020\006\003\125\004\007\023\011 +\110\157\156\147\040\113\157\156\147\061\026\060\024\006\003\125 +\004\012\023\015\110\157\156\147\153\157\156\147\040\120\157\163 +\164\061\040\060\036\006\003\125\004\003\023\027\110\157\156\147 +\153\157\156\147\040\120\157\163\164\040\122\157\157\164\040\103 +\101\040\063\060\036\027\015\061\067\060\066\060\063\060\062\062 +\071\064\066\132\027\015\064\062\060\066\060\063\060\062\062\071 +\064\066\132\060\157\061\013\060\011\006\003\125\004\006\023\002 +\110\113\061\022\060\020\006\003\125\004\010\023\011\110\157\156 +\147\040\113\157\156\147\061\022\060\020\006\003\125\004\007\023 +\011\110\157\156\147\040\113\157\156\147\061\026\060\024\006\003 +\125\004\012\023\015\110\157\156\147\153\157\156\147\040\120\157 +\163\164\061\040\060\036\006\003\125\004\003\023\027\110\157\156 +\147\153\157\156\147\040\120\157\163\164\040\122\157\157\164\040 +\103\101\040\063\060\202\002\042\060\015\006\011\052\206\110\206 +\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002\012 +\002\202\002\001\000\263\210\327\352\316\017\040\116\276\346\326 +\003\155\356\131\374\302\127\337\051\150\241\203\016\076\150\307 +\150\130\234\034\140\113\211\103\014\271\324\025\262\356\301\116 +\165\351\265\247\357\345\351\065\231\344\314\034\347\113\137\215 +\063\060\040\063\123\331\246\273\325\076\023\216\351\037\207\111 +\255\120\055\120\312\030\276\001\130\242\023\160\226\273\211\210 +\126\200\134\370\275\054\074\341\114\127\210\273\323\271\225\357 +\313\307\366\332\061\164\050\246\346\124\211\365\101\061\312\345 +\046\032\315\202\340\160\332\073\051\273\325\003\365\231\272\125 +\365\144\321\140\016\263\211\111\270\212\057\005\322\204\105\050 +\174\217\150\120\022\170\374\013\265\123\313\302\230\034\204\243 +\236\260\276\043\244\332\334\310\053\036\332\156\105\036\211\230 +\332\371\000\056\006\351\014\073\160\325\120\045\210\231\313\315 +\163\140\367\325\377\065\147\305\241\274\136\253\315\112\270\105 +\353\310\150\036\015\015\024\106\022\343\322\144\142\212\102\230 +\274\264\306\010\010\370\375\250\114\144\234\166\001\275\057\251 +\154\063\017\330\077\050\270\074\151\001\102\206\176\151\301\311 +\006\312\345\172\106\145\351\302\326\120\101\056\077\267\344\355 +\154\327\277\046\001\021\242\026\051\112\153\064\006\220\354\023 +\322\266\373\152\166\322\074\355\360\326\055\335\341\025\354\243 +\233\057\054\311\076\053\344\151\073\377\162\045\261\066\206\133 +\307\177\153\213\125\033\112\305\040\141\075\256\313\120\341\010 +\072\276\260\217\143\101\123\060\010\131\074\230\035\167\272\143 +\221\172\312\020\120\140\277\360\327\274\225\207\217\227\305\376 +\227\152\001\224\243\174\133\205\035\052\071\072\320\124\241\321 +\071\161\235\375\041\371\265\173\360\342\340\002\217\156\226\044 +\045\054\240\036\054\250\304\211\247\357\355\231\006\057\266\012 +\114\117\333\242\314\067\032\257\107\205\055\212\137\304\064\064 +\114\000\375\030\223\147\023\321\067\346\110\264\213\006\305\127 +\173\031\206\012\171\313\000\311\122\257\102\377\067\217\341\243 +\036\172\075\120\253\143\006\347\025\265\077\266\105\067\224\067 +\261\176\362\110\303\177\305\165\376\227\215\105\217\032\247\032 +\162\050\032\100\017\002\003\001\000\001\243\143\060\141\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060 +\037\006\003\125\035\043\004\030\060\026\200\024\027\235\315\036 +\213\326\071\053\160\323\134\324\240\270\037\260\000\374\305\141 +\060\035\006\003\125\035\016\004\026\004\024\027\235\315\036\213 +\326\071\053\160\323\134\324\240\270\037\260\000\374\305\141\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003\202 +\002\001\000\126\325\173\156\346\042\001\322\102\233\030\325\016 +\327\146\043\134\343\376\240\307\222\322\351\224\255\113\242\306 +\354\022\174\164\325\110\322\131\024\231\300\353\271\321\353\364 +\110\060\133\255\247\127\163\231\251\323\345\267\321\056\131\044 +\130\334\150\056\056\142\330\152\344\160\013\055\040\120\040\244 +\062\225\321\000\230\273\323\375\367\062\362\111\256\306\172\340 +\107\276\156\316\313\243\162\072\055\151\135\313\310\350\105\071 +\324\372\102\301\021\114\167\135\222\373\152\377\130\104\345\353 +\201\236\257\240\231\255\276\251\001\146\313\070\035\074\337\103 +\037\364\115\156\264\272\027\106\374\175\375\207\201\171\152\015 +\063\017\372\057\370\024\271\200\263\135\115\252\227\341\371\344 +\030\305\370\325\070\214\046\074\375\362\050\342\356\132\111\210 +\054\337\171\075\216\236\220\074\275\101\112\072\335\133\366\232 +\264\316\077\045\060\177\062\175\242\003\224\320\334\172\241\122 +\336\156\223\215\030\046\375\125\254\275\217\233\322\317\257\347 +\206\054\313\037\011\157\243\157\251\204\324\163\277\115\241\164 +\033\116\043\140\362\314\016\252\177\244\234\114\045\250\262\146 +\073\070\377\331\224\060\366\162\204\276\150\125\020\017\306\163 +\054\026\151\223\007\376\261\105\355\273\242\125\152\260\332\265 +\112\002\045\047\205\327\267\267\206\104\026\211\154\200\053\076 +\227\251\234\325\176\125\114\306\336\105\020\034\352\351\073\237 +\003\123\356\356\172\001\002\026\170\324\350\302\276\106\166\210 +\023\077\042\273\110\022\035\122\000\264\002\176\041\032\036\234 +\045\364\363\075\136\036\322\034\371\263\055\266\367\067\134\306 +\313\041\116\260\367\231\107\030\205\301\053\272\125\256\006\352 +\320\007\262\334\253\320\202\226\165\316\322\120\376\231\347\317 +\057\237\347\166\321\141\052\373\041\273\061\320\252\237\107\244 +\262\042\312\026\072\120\127\304\133\103\147\305\145\142\003\111 +\001\353\103\331\330\370\236\255\317\261\143\016\105\364\240\132 +\054\233\055\305\246\300\255\250\107\364\047\114\070\015\056\033 +\111\073\122\364\350\210\203\053\124\050\324\362\065\122\264\062 +\203\142\151\144\014\221\234\237\227\352\164\026\375\037\021\006 +\232\233\364 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Hongkong Post Root CA 3" +# Issuer: CN=Hongkong Post Root CA 3,O=Hongkong Post,L=Hong Kong,ST=Hong Kong,C=HK +# Serial Number:08:16:5f:8a:4c:a5:ec:00:c9:93:40:df:c4:c6:ae:23:b8:1c:5a:a4 +# Subject: CN=Hongkong Post Root CA 3,O=Hongkong Post,L=Hong Kong,ST=Hong Kong,C=HK +# Not Valid Before: Sat Jun 03 02:29:46 2017 +# Not Valid After : Tue Jun 03 02:29:46 2042 +# Fingerprint (SHA-256): 5A:2F:C0:3F:0C:83:B0:90:BB:FA:40:60:4B:09:88:44:6C:76:36:18:3D:F9:84:6E:17:10:1A:44:7F:B8:EF:D6 +# Fingerprint (SHA1): 58:A2:D0:EC:20:52:81:5B:C1:F3:F8:64:02:24:4E:C2:8E:02:4B:02 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Hongkong Post Root CA 3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\130\242\320\354\040\122\201\133\301\363\370\144\002\044\116\302 +\216\002\113\002 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\021\374\237\275\163\060\002\212\375\077\363\130\271\313\040\360 +END +CKA_ISSUER MULTILINE_OCTAL +\060\157\061\013\060\011\006\003\125\004\006\023\002\110\113\061 +\022\060\020\006\003\125\004\010\023\011\110\157\156\147\040\113 +\157\156\147\061\022\060\020\006\003\125\004\007\023\011\110\157 +\156\147\040\113\157\156\147\061\026\060\024\006\003\125\004\012 +\023\015\110\157\156\147\153\157\156\147\040\120\157\163\164\061 +\040\060\036\006\003\125\004\003\023\027\110\157\156\147\153\157 +\156\147\040\120\157\163\164\040\122\157\157\164\040\103\101\040 +\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\010\026\137\212\114\245\354\000\311\223\100\337\304\306 +\256\043\270\034\132\244 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Entrust Root Certification Authority - G4" +# +# Issuer: CN=Entrust Root Certification Authority - G4,OU="(c) 2015 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Serial Number:00:d9:b5:43:7f:af:a9:39:0f:00:00:00:00:55:65:ad:58 +# Subject: CN=Entrust Root Certification Authority - G4,OU="(c) 2015 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Not Valid Before: Wed May 27 11:11:16 2015 +# Not Valid After : Sun Dec 27 11:41:16 2037 +# Fingerprint (SHA-256): DB:35:17:D1:F6:73:2A:2D:5A:B9:7C:53:3E:C7:07:79:EE:32:70:A6:2F:B4:AC:42:38:37:24:60:E6:F0:1E:88 +# Fingerprint (SHA1): 14:88:4E:86:26:37:B0:26:AF:59:62:5C:40:77:EC:35:29:BA:96:01 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust Root Certification Authority - G4" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\276\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\061\065\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\062\060 +\060\006\003\125\004\003\023\051\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107 +\064 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\276\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\061\065\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\062\060 +\060\006\003\125\004\003\023\051\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107 +\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\331\265\103\177\257\251\071\017\000\000\000\000\125 +\145\255\130 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\006\113\060\202\004\063\240\003\002\001\002\002\021\000 +\331\265\103\177\257\251\071\017\000\000\000\000\125\145\255\130 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\201\276\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165\163 +\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004\013 +\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165\163 +\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162\155 +\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051\040 +\062\060\061\065\040\105\156\164\162\165\163\164\054\040\111\156 +\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162\151 +\172\145\144\040\165\163\145\040\157\156\154\171\061\062\060\060 +\006\003\125\004\003\023\051\105\156\164\162\165\163\164\040\122 +\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107\064 +\060\036\027\015\061\065\060\065\062\067\061\061\061\061\061\066 +\132\027\015\063\067\061\062\062\067\061\061\064\061\061\066\132 +\060\201\276\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\061\065\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\062\060 +\060\006\003\125\004\003\023\051\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107 +\064\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001 +\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002 +\001\000\261\354\054\102\356\342\321\060\377\245\222\107\342\055 +\303\272\144\227\155\312\367\015\265\131\301\263\313\250\150\031 +\330\257\204\155\060\160\135\176\363\056\322\123\231\341\376\037 +\136\331\110\257\135\023\215\333\377\143\063\115\323\000\002\274 +\304\370\321\006\010\224\171\130\212\025\336\051\263\375\375\304 +\117\350\252\342\240\073\171\315\277\153\103\062\335\331\164\020 +\271\367\364\150\324\273\320\207\325\252\113\212\052\157\052\004 +\265\262\246\307\240\172\346\110\253\322\321\131\314\326\176\043 +\346\227\154\360\102\345\334\121\113\025\101\355\111\112\311\336 +\020\227\326\166\301\357\245\265\066\024\227\065\330\170\042\065 +\122\357\103\275\333\047\333\141\126\202\064\334\313\210\140\014 +\013\132\345\054\001\306\124\257\327\252\301\020\173\322\005\132 +\270\100\236\206\247\303\220\206\002\126\122\011\172\234\322\047 +\202\123\112\145\122\152\365\074\347\250\362\234\257\213\275\323 +\016\324\324\136\156\207\236\152\075\105\035\321\135\033\364\351 +\012\254\140\231\373\211\264\377\230\054\317\174\035\351\002\252 +\004\232\036\270\334\210\156\045\263\154\146\367\074\220\363\127 +\301\263\057\365\155\362\373\312\241\370\051\235\106\213\263\152 +\366\346\147\007\276\054\147\012\052\037\132\262\076\127\304\323 +\041\041\143\145\122\221\033\261\231\216\171\176\346\353\215\000 +\331\132\252\352\163\350\244\202\002\107\226\376\133\216\124\141 +\243\353\057\113\060\260\213\043\165\162\174\041\074\310\366\361 +\164\324\034\173\243\005\125\356\273\115\073\062\276\232\167\146 +\236\254\151\220\042\007\037\141\072\226\276\345\232\117\314\005 +\074\050\131\323\301\014\124\250\131\141\275\310\162\114\350\334 +\237\207\177\275\234\110\066\136\225\243\016\271\070\044\125\374 +\165\146\353\002\343\010\064\051\112\306\343\053\057\063\240\332 +\243\206\245\022\227\375\200\053\332\024\102\343\222\275\076\362 +\135\136\147\164\056\034\210\107\051\064\137\342\062\250\234\045 +\067\214\272\230\000\227\213\111\226\036\375\045\212\254\334\332 +\330\135\164\156\146\260\377\104\337\241\030\306\276\110\057\067 +\224\170\370\225\112\077\177\023\136\135\131\375\164\206\103\143 +\163\111\002\003\001\000\001\243\102\060\100\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003 +\125\035\016\004\026\004\024\237\070\304\126\043\303\071\350\240 +\161\154\350\124\114\344\350\072\261\277\147\060\015\006\011\052 +\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000\022 +\345\102\246\173\213\017\014\344\106\245\266\140\100\207\214\045 +\176\255\270\150\056\133\306\100\166\074\003\370\311\131\364\363 +\253\142\316\020\215\264\132\144\214\150\300\260\162\103\064\322 +\033\013\366\054\123\322\312\220\113\206\146\374\252\203\042\364 +\213\032\157\046\110\254\166\167\010\277\305\230\134\364\046\211 +\236\173\303\271\144\062\001\177\323\303\335\130\155\354\261\253 +\204\125\164\167\204\004\047\122\153\206\114\316\335\271\145\377 +\326\306\136\237\232\020\231\113\165\152\376\152\351\227\040\344 +\344\166\172\306\320\044\252\220\315\040\220\272\107\144\373\177 +\007\263\123\170\265\012\142\362\163\103\316\101\053\201\152\056 +\205\026\224\123\324\153\137\162\042\253\121\055\102\325\000\234 +\231\277\336\273\224\073\127\375\232\365\206\313\126\073\133\210 +\001\345\174\050\113\003\371\111\203\174\262\177\174\343\355\216 +\241\177\140\123\216\125\235\120\064\022\017\267\227\173\154\207 +\112\104\347\365\155\354\200\067\360\130\031\156\112\150\166\360 +\037\222\344\352\265\222\323\141\121\020\013\255\247\331\137\307 +\137\334\037\243\134\214\241\176\233\267\236\323\126\157\146\136 +\007\226\040\355\013\164\373\146\116\213\021\025\351\201\111\176 +\157\260\324\120\177\042\327\137\145\002\015\246\364\205\036\330 +\256\006\113\112\247\322\061\146\302\370\316\345\010\246\244\002 +\226\104\150\127\304\325\063\317\031\057\024\304\224\034\173\244 +\331\360\237\016\261\200\342\321\236\021\144\251\210\021\072\166 +\202\345\142\302\200\330\244\203\355\223\357\174\057\220\260\062 +\114\226\025\150\110\122\324\231\010\300\044\350\034\343\263\245 +\041\016\222\300\220\037\317\040\137\312\073\070\307\267\155\072 +\363\346\104\270\016\061\153\210\216\160\353\234\027\122\250\101 +\224\056\207\266\347\246\022\305\165\337\133\300\012\156\173\244 +\344\136\206\371\066\224\337\167\303\351\015\300\071\361\171\273 +\106\216\253\103\131\047\267\040\273\043\351\126\100\041\354\061 +\075\145\252\103\362\075\337\160\104\341\272\115\046\020\073\230 +\237\363\310\216\033\070\126\041\152\121\223\323\221\312\106\332 +\211\267\075\123\203\054\010\037\213\217\123\335\377\254\037 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE + +# Trust for "Entrust Root Certification Authority - G4" +# Issuer: CN=Entrust Root Certification Authority - G4,OU="(c) 2015 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Serial Number:00:d9:b5:43:7f:af:a9:39:0f:00:00:00:00:55:65:ad:58 +# Subject: CN=Entrust Root Certification Authority - G4,OU="(c) 2015 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US +# Not Valid Before: Wed May 27 11:11:16 2015 +# Not Valid After : Sun Dec 27 11:41:16 2037 +# Fingerprint (SHA-256): DB:35:17:D1:F6:73:2A:2D:5A:B9:7C:53:3E:C7:07:79:EE:32:70:A6:2F:B4:AC:42:38:37:24:60:E6:F0:1E:88 +# Fingerprint (SHA1): 14:88:4E:86:26:37:B0:26:AF:59:62:5C:40:77:EC:35:29:BA:96:01 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Entrust Root Certification Authority - G4" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\024\210\116\206\046\067\260\046\257\131\142\134\100\167\354\065 +\051\272\226\001 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\211\123\361\203\043\267\174\216\005\361\214\161\070\116\037\210 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\276\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\026\060\024\006\003\125\004\012\023\015\105\156\164\162\165 +\163\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\013\023\037\123\145\145\040\167\167\167\056\145\156\164\162\165 +\163\164\056\156\145\164\057\154\145\147\141\154\055\164\145\162 +\155\163\061\071\060\067\006\003\125\004\013\023\060\050\143\051 +\040\062\060\061\065\040\105\156\164\162\165\163\164\054\040\111 +\156\143\056\040\055\040\146\157\162\040\141\165\164\150\157\162 +\151\172\145\144\040\165\163\145\040\157\156\154\171\061\062\060 +\060\006\003\125\004\003\023\051\105\156\164\162\165\163\164\040 +\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\040\055\040\107 +\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\331\265\103\177\257\251\071\017\000\000\000\000\125 +\145\255\130 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Microsoft ECC Root Certificate Authority 2017" +# +# Issuer: CN=Microsoft ECC Root Certificate Authority 2017,O=Microsoft Corporation,C=US +# Serial Number:66:f2:3d:af:87:de:8b:b1:4a:ea:0c:57:31:01:c2:ec +# Subject: CN=Microsoft ECC Root Certificate Authority 2017,O=Microsoft Corporation,C=US +# Not Valid Before: Wed Dec 18 23:06:45 2019 +# Not Valid After : Fri Jul 18 23:16:04 2042 +# Fingerprint (SHA-256): 35:8D:F3:9D:76:4A:F9:E1:B7:66:E9:C9:72:DF:35:2E:E1:5C:FA:C2:27:AF:6A:D1:D7:0E:8E:4A:6E:DC:BA:02 +# Fingerprint (SHA1): 99:9A:64:C3:7F:F4:7D:9F:AB:95:F1:47:69:89:14:60:EE:C4:C3:C5 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Microsoft ECC Root Certificate Authority 2017" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\036\060\034\006\003\125\004\012\023\025\115\151\143\162\157\163 +\157\146\164\040\103\157\162\160\157\162\141\164\151\157\156\061 +\066\060\064\006\003\125\004\003\023\055\115\151\143\162\157\163 +\157\146\164\040\105\103\103\040\122\157\157\164\040\103\145\162 +\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151 +\164\171\040\062\060\061\067 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\036\060\034\006\003\125\004\012\023\025\115\151\143\162\157\163 +\157\146\164\040\103\157\162\160\157\162\141\164\151\157\156\061 +\066\060\064\006\003\125\004\003\023\055\115\151\143\162\157\163 +\157\146\164\040\105\103\103\040\122\157\157\164\040\103\145\162 +\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151 +\164\171\040\062\060\061\067 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\146\362\075\257\207\336\213\261\112\352\014\127\061\001 +\302\354 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\131\060\202\001\337\240\003\002\001\002\002\020\146 +\362\075\257\207\336\213\261\112\352\014\127\061\001\302\354\060 +\012\006\010\052\206\110\316\075\004\003\003\060\145\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\036\060\034\006\003 +\125\004\012\023\025\115\151\143\162\157\163\157\146\164\040\103 +\157\162\160\157\162\141\164\151\157\156\061\066\060\064\006\003 +\125\004\003\023\055\115\151\143\162\157\163\157\146\164\040\105 +\103\103\040\122\157\157\164\040\103\145\162\164\151\146\151\143 +\141\164\145\040\101\165\164\150\157\162\151\164\171\040\062\060 +\061\067\060\036\027\015\061\071\061\062\061\070\062\063\060\066 +\064\065\132\027\015\064\062\060\067\061\070\062\063\061\066\060 +\064\132\060\145\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\036\060\034\006\003\125\004\012\023\025\115\151\143\162 +\157\163\157\146\164\040\103\157\162\160\157\162\141\164\151\157 +\156\061\066\060\064\006\003\125\004\003\023\055\115\151\143\162 +\157\163\157\146\164\040\105\103\103\040\122\157\157\164\040\103 +\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150\157 +\162\151\164\171\040\062\060\061\067\060\166\060\020\006\007\052 +\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142\000 +\004\324\274\075\002\102\165\101\023\043\315\200\004\206\002\121 +\057\152\250\201\142\013\145\314\366\312\235\036\157\112\146\121 +\242\003\331\235\221\372\266\026\261\214\156\336\174\315\333\171 +\246\057\316\273\316\161\057\345\245\253\050\354\143\004\146\231 +\370\372\362\223\020\005\341\201\050\102\343\306\150\364\346\033 +\204\140\112\211\257\355\171\017\073\316\361\366\104\365\001\170 +\300\243\124\060\122\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004 +\024\310\313\231\162\160\122\014\370\346\276\262\004\127\051\052 +\317\102\020\355\065\060\020\006\011\053\006\001\004\001\202\067 +\025\001\004\003\002\001\000\060\012\006\010\052\206\110\316\075 +\004\003\003\003\150\000\060\145\002\060\130\362\115\352\014\371 +\137\136\356\140\051\313\072\362\333\326\062\204\031\077\174\325 +\057\302\261\314\223\256\120\273\011\062\306\306\355\176\311\066 +\224\022\344\150\205\006\242\033\320\057\002\061\000\231\351\026 +\264\016\372\126\110\324\244\060\026\221\170\333\124\214\145\001 +\212\347\120\146\302\061\267\071\272\270\032\042\007\116\374\153 +\124\026\040\377\053\265\347\114\014\115\246\117\163 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Microsoft ECC Root Certificate Authority 2017" +# Issuer: CN=Microsoft ECC Root Certificate Authority 2017,O=Microsoft Corporation,C=US +# Serial Number:66:f2:3d:af:87:de:8b:b1:4a:ea:0c:57:31:01:c2:ec +# Subject: CN=Microsoft ECC Root Certificate Authority 2017,O=Microsoft Corporation,C=US +# Not Valid Before: Wed Dec 18 23:06:45 2019 +# Not Valid After : Fri Jul 18 23:16:04 2042 +# Fingerprint (SHA-256): 35:8D:F3:9D:76:4A:F9:E1:B7:66:E9:C9:72:DF:35:2E:E1:5C:FA:C2:27:AF:6A:D1:D7:0E:8E:4A:6E:DC:BA:02 +# Fingerprint (SHA1): 99:9A:64:C3:7F:F4:7D:9F:AB:95:F1:47:69:89:14:60:EE:C4:C3:C5 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Microsoft ECC Root Certificate Authority 2017" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\231\232\144\303\177\364\175\237\253\225\361\107\151\211\024\140 +\356\304\303\305 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\335\241\003\346\112\223\020\321\277\360\031\102\313\376\355\147 +END +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\036\060\034\006\003\125\004\012\023\025\115\151\143\162\157\163 +\157\146\164\040\103\157\162\160\157\162\141\164\151\157\156\061 +\066\060\064\006\003\125\004\003\023\055\115\151\143\162\157\163 +\157\146\164\040\105\103\103\040\122\157\157\164\040\103\145\162 +\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151 +\164\171\040\062\060\061\067 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\146\362\075\257\207\336\213\261\112\352\014\127\061\001 +\302\354 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Microsoft RSA Root Certificate Authority 2017" +# +# Issuer: CN=Microsoft RSA Root Certificate Authority 2017,O=Microsoft Corporation,C=US +# Serial Number:1e:d3:97:09:5f:d8:b4:b3:47:70:1e:aa:be:7f:45:b3 +# Subject: CN=Microsoft RSA Root Certificate Authority 2017,O=Microsoft Corporation,C=US +# Not Valid Before: Wed Dec 18 22:51:22 2019 +# Not Valid After : Fri Jul 18 23:00:23 2042 +# Fingerprint (SHA-256): C7:41:F7:0F:4B:2A:8D:88:BF:2E:71:C1:41:22:EF:53:EF:10:EB:A0:CF:A5:E6:4C:FA:20:F4:18:85:30:73:E0 +# Fingerprint (SHA1): 73:A5:E6:4A:3B:FF:83:16:FF:0E:DC:CC:61:8A:90:6E:4E:AE:4D:74 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Microsoft RSA Root Certificate Authority 2017" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\036\060\034\006\003\125\004\012\023\025\115\151\143\162\157\163 +\157\146\164\040\103\157\162\160\157\162\141\164\151\157\156\061 +\066\060\064\006\003\125\004\003\023\055\115\151\143\162\157\163 +\157\146\164\040\122\123\101\040\122\157\157\164\040\103\145\162 +\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151 +\164\171\040\062\060\061\067 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\036\060\034\006\003\125\004\012\023\025\115\151\143\162\157\163 +\157\146\164\040\103\157\162\160\157\162\141\164\151\157\156\061 +\066\060\064\006\003\125\004\003\023\055\115\151\143\162\157\163 +\157\146\164\040\122\123\101\040\122\157\157\164\040\103\145\162 +\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151 +\164\171\040\062\060\061\067 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\036\323\227\011\137\330\264\263\107\160\036\252\276\177 +\105\263 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\250\060\202\003\220\240\003\002\001\002\002\020\036 +\323\227\011\137\330\264\263\107\160\036\252\276\177\105\263\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\145 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\036\060 +\034\006\003\125\004\012\023\025\115\151\143\162\157\163\157\146 +\164\040\103\157\162\160\157\162\141\164\151\157\156\061\066\060 +\064\006\003\125\004\003\023\055\115\151\143\162\157\163\157\146 +\164\040\122\123\101\040\122\157\157\164\040\103\145\162\164\151 +\146\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171 +\040\062\060\061\067\060\036\027\015\061\071\061\062\061\070\062 +\062\065\061\062\062\132\027\015\064\062\060\067\061\070\062\063 +\060\060\062\063\132\060\145\061\013\060\011\006\003\125\004\006 +\023\002\125\123\061\036\060\034\006\003\125\004\012\023\025\115 +\151\143\162\157\163\157\146\164\040\103\157\162\160\157\162\141 +\164\151\157\156\061\066\060\064\006\003\125\004\003\023\055\115 +\151\143\162\157\163\157\146\164\040\122\123\101\040\122\157\157 +\164\040\103\145\162\164\151\146\151\143\141\164\145\040\101\165 +\164\150\157\162\151\164\171\040\062\060\061\067\060\202\002\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\002\017\000\060\202\002\012\002\202\002\001\000\312\133\276 +\224\063\214\051\225\221\026\012\225\275\107\142\301\211\363\231 +\066\337\106\220\311\245\355\170\152\157\107\221\150\370\047\147 +\120\063\035\241\246\373\340\345\103\243\204\002\127\001\135\234 +\110\100\202\123\020\274\277\307\073\150\220\266\202\055\345\364 +\145\320\314\155\031\314\225\371\173\254\112\224\255\016\336\113 +\103\035\207\007\222\023\220\200\203\144\065\071\004\374\345\351 +\154\263\266\037\120\224\070\145\120\134\027\106\271\266\205\265 +\034\265\027\350\326\105\235\330\262\046\260\312\304\160\112\256 +\140\244\335\263\331\354\374\073\325\127\162\274\077\310\311\262 +\336\113\153\370\043\154\003\300\005\275\225\307\315\163\073\146 +\200\144\343\032\254\056\371\107\005\362\006\266\233\163\365\170 +\063\133\307\241\373\047\052\241\264\232\221\214\221\323\072\202 +\076\166\100\264\315\122\141\121\160\050\077\305\305\132\362\311 +\214\111\273\024\133\115\310\377\147\115\114\022\226\255\365\376 +\170\250\227\207\327\375\136\040\200\334\241\113\042\373\324\211 +\255\272\316\107\227\107\125\173\217\105\310\147\050\204\225\034 +\150\060\357\357\111\340\065\173\144\347\230\260\224\332\115\205 +\073\076\125\304\050\257\127\363\236\023\333\106\047\237\036\242 +\136\104\203\244\245\312\325\023\263\113\077\304\343\302\346\206 +\141\244\122\060\271\172\040\117\157\017\070\123\313\063\014\023 +\053\217\326\232\275\052\310\055\261\034\175\113\121\312\107\321 +\110\047\162\135\207\353\325\105\346\110\145\235\257\122\220\272 +\133\242\030\145\127\022\237\150\271\324\025\153\224\304\151\042 +\230\364\063\340\355\371\121\216\101\120\311\064\117\166\220\254 +\374\070\301\330\341\173\271\343\343\224\341\106\151\313\016\012 +\120\153\023\272\254\017\067\132\267\022\265\220\201\036\126\256 +\127\042\206\331\311\322\321\327\121\343\253\073\306\125\375\036 +\016\323\164\012\321\332\252\352\151\270\227\050\217\110\304\007 +\370\122\103\072\364\312\125\065\054\260\246\152\300\234\371\362 +\201\341\022\152\300\105\331\147\263\316\377\043\242\211\012\124 +\324\024\271\052\250\327\354\371\253\315\045\130\062\171\217\220 +\133\230\071\304\010\006\301\254\177\016\075\000\245\002\003\001 +\000\001\243\124\060\122\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026 +\004\024\011\313\131\177\206\262\160\217\032\303\071\343\300\331 +\351\277\273\115\262\043\060\020\006\011\053\006\001\004\001\202 +\067\025\001\004\003\002\001\000\060\015\006\011\052\206\110\206 +\367\015\001\001\014\005\000\003\202\002\001\000\254\257\076\135 +\302\021\226\211\216\243\347\222\326\227\025\270\023\242\246\102 +\056\002\315\026\005\131\047\312\040\350\272\270\350\032\354\115 +\250\227\126\256\145\103\261\217\000\233\122\315\125\315\123\071 +\155\142\114\213\015\133\174\056\104\277\203\020\217\363\123\202 +\200\303\117\072\307\156\021\077\346\343\026\221\204\373\155\204 +\177\064\164\255\211\247\316\271\327\327\237\204\144\222\276\225 +\241\255\011\123\063\335\356\012\352\112\121\216\157\125\253\272 +\265\224\106\256\214\177\330\242\120\045\145\140\200\106\333\063 +\004\256\154\265\230\164\124\045\334\223\344\370\343\125\025\075 +\270\155\303\012\244\022\301\151\205\156\337\144\361\123\231\341 +\112\165\040\235\225\017\344\326\334\003\361\131\030\350\107\211 +\262\127\132\224\266\251\330\027\053\027\111\345\166\313\301\126 +\231\072\067\261\377\151\054\221\221\223\341\337\114\243\067\166 +\115\241\237\370\155\036\035\323\372\354\373\364\105\035\023\155 +\317\367\131\345\042\047\162\053\206\363\127\273\060\355\044\115 +\334\175\126\273\243\263\370\064\171\211\301\340\362\002\141\367 +\246\374\017\273\034\027\013\256\101\331\174\275\047\243\375\056 +\072\321\223\224\261\163\035\044\213\257\133\040\211\255\267\147 +\146\171\365\072\306\246\226\063\376\123\222\310\106\261\021\221 +\306\231\177\217\311\326\146\061\040\101\020\207\055\014\326\301 +\257\064\230\312\144\203\373\023\127\321\301\360\074\172\214\245 +\301\375\225\041\240\161\301\223\147\161\022\352\217\210\012\151 +\031\144\231\043\126\373\254\052\056\160\276\146\304\014\204\357 +\345\213\363\223\001\370\152\220\223\147\113\262\150\243\265\142 +\217\351\077\214\172\073\136\017\347\214\270\306\174\357\067\375 +\164\342\310\117\063\162\341\224\071\155\275\022\257\276\014\116 +\160\174\033\157\215\263\062\223\163\104\026\155\350\364\367\340 +\225\200\217\226\135\070\244\364\253\336\012\060\207\223\330\115 +\000\161\142\105\047\113\072\102\204\133\177\145\267\147\064\122 +\055\234\026\153\252\250\330\173\243\102\114\161\307\014\312\076 +\203\344\246\357\267\001\060\136\121\243\171\365\160\151\246\101 +\104\017\206\260\054\221\306\075\352\256\017\204 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Microsoft RSA Root Certificate Authority 2017" +# Issuer: CN=Microsoft RSA Root Certificate Authority 2017,O=Microsoft Corporation,C=US +# Serial Number:1e:d3:97:09:5f:d8:b4:b3:47:70:1e:aa:be:7f:45:b3 +# Subject: CN=Microsoft RSA Root Certificate Authority 2017,O=Microsoft Corporation,C=US +# Not Valid Before: Wed Dec 18 22:51:22 2019 +# Not Valid After : Fri Jul 18 23:00:23 2042 +# Fingerprint (SHA-256): C7:41:F7:0F:4B:2A:8D:88:BF:2E:71:C1:41:22:EF:53:EF:10:EB:A0:CF:A5:E6:4C:FA:20:F4:18:85:30:73:E0 +# Fingerprint (SHA1): 73:A5:E6:4A:3B:FF:83:16:FF:0E:DC:CC:61:8A:90:6E:4E:AE:4D:74 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Microsoft RSA Root Certificate Authority 2017" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\163\245\346\112\073\377\203\026\377\016\334\314\141\212\220\156 +\116\256\115\164 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\020\377\000\377\317\311\370\307\172\300\356\065\216\311\017\107 +END +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\036\060\034\006\003\125\004\012\023\025\115\151\143\162\157\163 +\157\146\164\040\103\157\162\160\157\162\141\164\151\157\156\061 +\066\060\064\006\003\125\004\003\023\055\115\151\143\162\157\163 +\157\146\164\040\122\123\101\040\122\157\157\164\040\103\145\162 +\164\151\146\151\143\141\164\145\040\101\165\164\150\157\162\151 +\164\171\040\062\060\061\067 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\036\323\227\011\137\330\264\263\107\160\036\252\276\177 +\105\263 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "e-Szigno Root CA 2017" +# +# Issuer: CN=e-Szigno Root CA 2017,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU +# Serial Number:01:54:48:ef:21:fd:97:59:0d:f5:04:0a +# Subject: CN=e-Szigno Root CA 2017,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU +# Not Valid Before: Tue Aug 22 12:07:06 2017 +# Not Valid After : Fri Aug 22 12:07:06 2042 +# Fingerprint (SHA-256): BE:B0:0B:30:83:9B:9B:C3:2C:32:E4:44:79:05:95:06:41:F2:64:21:B1:5E:D0:89:19:8B:51:8A:E2:EA:1B:99 +# Fingerprint (SHA1): 89:D4:83:03:4F:9E:9A:48:80:5F:72:37:D4:A9:A6:EF:CB:7C:1F:D1 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "e-Szigno Root CA 2017" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\161\061\013\060\011\006\003\125\004\006\023\002\110\125\061 +\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145 +\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143 +\162\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003 +\125\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064 +\064\071\067\061\036\060\034\006\003\125\004\003\014\025\145\055 +\123\172\151\147\156\157\040\122\157\157\164\040\103\101\040\062 +\060\061\067 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\161\061\013\060\011\006\003\125\004\006\023\002\110\125\061 +\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145 +\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143 +\162\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003 +\125\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064 +\064\071\067\061\036\060\034\006\003\125\004\003\014\025\145\055 +\123\172\151\147\156\157\040\122\157\157\164\040\103\101\040\062 +\060\061\067 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\001\124\110\357\041\375\227\131\015\365\004\012 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\100\060\202\001\345\240\003\002\001\002\002\014\001 +\124\110\357\041\375\227\131\015\365\004\012\060\012\006\010\052 +\206\110\316\075\004\003\002\060\161\061\013\060\011\006\003\125 +\004\006\023\002\110\125\061\021\060\017\006\003\125\004\007\014 +\010\102\165\144\141\160\145\163\164\061\026\060\024\006\003\125 +\004\012\014\015\115\151\143\162\157\163\145\143\040\114\164\144 +\056\061\027\060\025\006\003\125\004\141\014\016\126\101\124\110 +\125\055\062\063\065\070\064\064\071\067\061\036\060\034\006\003 +\125\004\003\014\025\145\055\123\172\151\147\156\157\040\122\157 +\157\164\040\103\101\040\062\060\061\067\060\036\027\015\061\067 +\060\070\062\062\061\062\060\067\060\066\132\027\015\064\062\060 +\070\062\062\061\062\060\067\060\066\132\060\161\061\013\060\011 +\006\003\125\004\006\023\002\110\125\061\021\060\017\006\003\125 +\004\007\014\010\102\165\144\141\160\145\163\164\061\026\060\024 +\006\003\125\004\012\014\015\115\151\143\162\157\163\145\143\040 +\114\164\144\056\061\027\060\025\006\003\125\004\141\014\016\126 +\101\124\110\125\055\062\063\065\070\064\064\071\067\061\036\060 +\034\006\003\125\004\003\014\025\145\055\123\172\151\147\156\157 +\040\122\157\157\164\040\103\101\040\062\060\061\067\060\131\060 +\023\006\007\052\206\110\316\075\002\001\006\010\052\206\110\316 +\075\003\001\007\003\102\000\004\226\334\075\212\330\260\173\157 +\306\047\276\104\220\261\263\126\025\173\216\103\044\175\032\204 +\131\356\143\150\262\306\136\207\320\025\110\036\250\220\255\275 +\123\242\332\336\072\220\246\140\137\150\062\265\206\101\337\207 +\133\054\173\305\376\174\172\332\243\143\060\141\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006 +\003\125\035\016\004\026\004\024\207\021\025\010\321\252\301\170 +\014\261\257\316\306\311\220\357\277\060\004\300\060\037\006\003 +\125\035\043\004\030\060\026\200\024\207\021\025\010\321\252\301 +\170\014\261\257\316\306\311\220\357\277\060\004\300\060\012\006 +\010\052\206\110\316\075\004\003\002\003\111\000\060\106\002\041 +\000\265\127\335\327\212\125\013\066\341\206\104\372\324\331\150 +\215\270\334\043\212\212\015\324\057\175\352\163\354\277\115\154 +\250\002\041\000\313\245\264\022\372\347\265\350\317\176\223\374 +\363\065\217\157\116\132\174\264\274\116\262\374\162\252\133\131 +\371\347\334\061 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "e-Szigno Root CA 2017" +# Issuer: CN=e-Szigno Root CA 2017,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU +# Serial Number:01:54:48:ef:21:fd:97:59:0d:f5:04:0a +# Subject: CN=e-Szigno Root CA 2017,OID.2.5.4.97=VATHU-23584497,O=Microsec Ltd.,L=Budapest,C=HU +# Not Valid Before: Tue Aug 22 12:07:06 2017 +# Not Valid After : Fri Aug 22 12:07:06 2042 +# Fingerprint (SHA-256): BE:B0:0B:30:83:9B:9B:C3:2C:32:E4:44:79:05:95:06:41:F2:64:21:B1:5E:D0:89:19:8B:51:8A:E2:EA:1B:99 +# Fingerprint (SHA1): 89:D4:83:03:4F:9E:9A:48:80:5F:72:37:D4:A9:A6:EF:CB:7C:1F:D1 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "e-Szigno Root CA 2017" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\211\324\203\003\117\236\232\110\200\137\162\067\324\251\246\357 +\313\174\037\321 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\336\037\366\236\204\256\247\264\041\316\036\130\175\321\204\230 +END +CKA_ISSUER MULTILINE_OCTAL +\060\161\061\013\060\011\006\003\125\004\006\023\002\110\125\061 +\021\060\017\006\003\125\004\007\014\010\102\165\144\141\160\145 +\163\164\061\026\060\024\006\003\125\004\012\014\015\115\151\143 +\162\157\163\145\143\040\114\164\144\056\061\027\060\025\006\003 +\125\004\141\014\016\126\101\124\110\125\055\062\063\065\070\064 +\064\071\067\061\036\060\034\006\003\125\004\003\014\025\145\055 +\123\172\151\147\156\157\040\122\157\157\164\040\103\101\040\062 +\060\061\067 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\001\124\110\357\041\375\227\131\015\365\004\012 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "certSIGN Root CA G2" +# +# Issuer: OU=certSIGN ROOT CA G2,O=CERTSIGN SA,C=RO +# Serial Number:11:00:34:b6:4e:c6:36:2d:36 +# Subject: OU=certSIGN ROOT CA G2,O=CERTSIGN SA,C=RO +# Not Valid Before: Mon Feb 06 09:27:35 2017 +# Not Valid After : Thu Feb 06 09:27:35 2042 +# Fingerprint (SHA-256): 65:7C:FE:2F:A7:3F:AA:38:46:25:71:F3:32:A2:36:3A:46:FC:E7:02:09:51:71:07:02:CD:FB:B6:EE:DA:33:05 +# Fingerprint (SHA1): 26:F9:93:B4:ED:3D:28:27:B0:B9:4B:A7:E9:15:1D:A3:8D:92:E5:32 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "certSIGN Root CA G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\101\061\013\060\011\006\003\125\004\006\023\002\122\117\061 +\024\060\022\006\003\125\004\012\023\013\103\105\122\124\123\111 +\107\116\040\123\101\061\034\060\032\006\003\125\004\013\023\023 +\143\145\162\164\123\111\107\116\040\122\117\117\124\040\103\101 +\040\107\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\101\061\013\060\011\006\003\125\004\006\023\002\122\117\061 +\024\060\022\006\003\125\004\012\023\013\103\105\122\124\123\111 +\107\116\040\123\101\061\034\060\032\006\003\125\004\013\023\023 +\143\145\162\164\123\111\107\116\040\122\117\117\124\040\103\101 +\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\021\000\064\266\116\306\066\055\066 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\107\060\202\003\057\240\003\002\001\002\002\011\021 +\000\064\266\116\306\066\055\066\060\015\006\011\052\206\110\206 +\367\015\001\001\013\005\000\060\101\061\013\060\011\006\003\125 +\004\006\023\002\122\117\061\024\060\022\006\003\125\004\012\023 +\013\103\105\122\124\123\111\107\116\040\123\101\061\034\060\032 +\006\003\125\004\013\023\023\143\145\162\164\123\111\107\116\040 +\122\117\117\124\040\103\101\040\107\062\060\036\027\015\061\067 +\060\062\060\066\060\071\062\067\063\065\132\027\015\064\062\060 +\062\060\066\060\071\062\067\063\065\132\060\101\061\013\060\011 +\006\003\125\004\006\023\002\122\117\061\024\060\022\006\003\125 +\004\012\023\013\103\105\122\124\123\111\107\116\040\123\101\061 +\034\060\032\006\003\125\004\013\023\023\143\145\162\164\123\111 +\107\116\040\122\117\117\124\040\103\101\040\107\062\060\202\002 +\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000 +\003\202\002\017\000\060\202\002\012\002\202\002\001\000\300\305 +\165\031\221\175\104\164\164\207\376\016\073\226\334\330\001\026 +\314\356\143\221\347\013\157\316\073\012\151\032\174\302\343\257 +\202\216\206\327\136\217\127\353\323\041\131\375\071\067\102\060 +\276\120\352\266\017\251\210\330\056\055\151\041\347\321\067\030 +\116\175\221\325\026\137\153\133\000\302\071\103\015\066\205\122 +\271\123\145\017\035\102\345\217\317\005\323\356\334\014\032\331 +\270\213\170\042\147\344\151\260\150\305\074\344\154\132\106\347 +\315\307\372\357\304\354\113\275\152\244\254\375\314\050\121\357 +\222\264\051\253\253\065\232\114\344\304\010\306\046\314\370\151 +\237\344\234\360\051\323\134\371\306\026\045\236\043\303\040\301 +\075\017\077\070\100\260\376\202\104\070\252\132\032\212\153\143 +\130\070\264\025\323\266\021\151\173\036\124\356\214\032\042\254 +\162\227\077\043\131\233\311\042\204\301\007\117\314\177\342\127 +\312\022\160\273\246\145\363\151\165\143\275\225\373\033\227\315 +\344\250\257\366\321\116\250\331\212\161\044\315\066\075\274\226 +\304\361\154\251\256\345\317\015\156\050\015\260\016\265\312\121 +\173\170\024\303\040\057\177\373\024\125\341\021\231\375\325\012 +\241\236\002\343\142\137\353\065\113\054\270\162\350\076\075\117 +\254\054\273\056\206\342\243\166\217\345\223\052\317\245\253\310 +\134\215\113\006\377\022\106\254\170\313\024\007\065\340\251\337 +\213\351\257\025\117\026\211\133\275\366\215\306\131\256\210\205 +\016\301\211\353\037\147\305\105\216\377\155\067\066\053\170\146 +\203\221\121\053\075\377\121\167\166\142\241\354\147\076\076\201 +\203\340\126\251\120\037\037\172\231\253\143\277\204\027\167\361 +\015\073\337\367\234\141\263\065\230\212\072\262\354\074\032\067 +\077\176\217\222\317\331\022\024\144\332\020\002\025\101\377\117 +\304\353\034\243\311\372\231\367\106\351\341\030\331\261\270\062 +\055\313\024\014\120\330\203\145\203\356\271\134\317\313\005\132 +\114\372\031\227\153\326\135\023\323\302\134\124\274\062\163\240 +\170\365\361\155\036\313\237\245\246\237\042\334\321\121\236\202 +\171\144\140\051\023\076\243\375\117\162\152\253\342\324\345\270 +\044\125\054\104\113\212\210\104\234\312\204\323\052\073\002\003 +\001\000\001\243\102\060\100\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\016\006\003\125\035\017\001 +\001\377\004\004\003\002\001\006\060\035\006\003\125\035\016\004 +\026\004\024\202\041\055\146\306\327\240\340\025\353\316\114\011 +\167\304\140\236\124\156\003\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\003\202\002\001\000\140\336\032\270\347 +\362\140\202\325\003\063\201\313\006\212\361\042\111\351\350\352 +\221\177\306\063\136\150\031\003\206\073\103\001\317\007\160\344 +\010\036\145\205\221\346\021\042\267\365\002\043\216\256\271\036 +\175\037\176\154\346\275\045\325\225\032\362\005\246\257\205\002 +\157\256\370\326\061\377\045\311\112\310\307\212\251\331\237\113 +\111\233\021\127\231\222\103\021\336\266\063\244\314\327\215\144 +\175\324\315\074\050\054\264\232\226\352\115\365\304\104\304\045 +\252\040\200\330\051\125\367\340\101\374\006\046\377\271\066\365 +\103\024\003\146\170\341\021\261\332\040\137\106\000\170\000\041 +\245\036\000\050\141\170\157\250\001\001\217\235\064\232\377\364 +\070\220\373\270\321\263\162\006\311\161\346\201\305\171\355\013 +\246\171\362\023\013\234\367\135\016\173\044\223\264\110\333\206 +\137\336\120\206\170\347\100\346\061\250\220\166\160\141\257\234 +\067\054\021\265\202\267\252\256\044\064\133\162\014\151\015\315 +\131\237\366\161\257\234\013\321\012\070\371\006\042\203\123\045 +\014\374\121\304\346\276\342\071\225\013\044\255\257\321\225\344 +\226\327\164\144\153\161\116\002\074\252\205\363\040\243\103\071 +\166\133\154\120\376\232\234\024\036\145\024\212\025\275\243\202 +\105\132\111\126\152\322\234\261\143\062\345\141\340\123\042\016 +\247\012\111\352\313\176\037\250\342\142\200\366\020\105\122\230 +\006\030\336\245\315\057\177\252\324\351\076\010\162\354\043\003 +\002\074\246\252\330\274\147\164\075\024\027\373\124\113\027\343 +\323\171\075\155\153\111\311\050\016\056\164\120\277\014\331\106 +\072\020\206\311\247\077\351\240\354\177\353\245\167\130\151\161 +\346\203\012\067\362\206\111\152\276\171\010\220\366\002\026\144 +\076\345\332\114\176\014\064\311\371\137\266\263\050\121\247\247 +\053\252\111\372\215\145\051\116\343\153\023\247\224\243\055\121 +\155\170\014\104\313\337\336\010\157\316\243\144\253\323\225\204 +\324\271\122\124\162\173\226\045\314\274\151\343\110\156\015\320 +\307\235\047\232\252\370\023\222\335\036\337\143\237\065\251\026 +\066\354\214\270\203\364\075\211\217\315\264\027\136\327\263\027 +\101\020\135\047\163\140\205\127\111\042\007 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "certSIGN Root CA G2" +# Issuer: OU=certSIGN ROOT CA G2,O=CERTSIGN SA,C=RO +# Serial Number:11:00:34:b6:4e:c6:36:2d:36 +# Subject: OU=certSIGN ROOT CA G2,O=CERTSIGN SA,C=RO +# Not Valid Before: Mon Feb 06 09:27:35 2017 +# Not Valid After : Thu Feb 06 09:27:35 2042 +# Fingerprint (SHA-256): 65:7C:FE:2F:A7:3F:AA:38:46:25:71:F3:32:A2:36:3A:46:FC:E7:02:09:51:71:07:02:CD:FB:B6:EE:DA:33:05 +# Fingerprint (SHA1): 26:F9:93:B4:ED:3D:28:27:B0:B9:4B:A7:E9:15:1D:A3:8D:92:E5:32 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "certSIGN Root CA G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\046\371\223\264\355\075\050\047\260\271\113\247\351\025\035\243 +\215\222\345\062 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\214\361\165\212\306\031\317\224\267\367\145\040\207\303\227\307 +END +CKA_ISSUER MULTILINE_OCTAL +\060\101\061\013\060\011\006\003\125\004\006\023\002\122\117\061 +\024\060\022\006\003\125\004\012\023\013\103\105\122\124\123\111 +\107\116\040\123\101\061\034\060\032\006\003\125\004\013\023\023 +\143\145\162\164\123\111\107\116\040\122\117\117\124\040\103\101 +\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\021\000\064\266\116\306\066\055\066 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Trustwave Global Certification Authority" +# +# Issuer: CN=Trustwave Global Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Serial Number:05:f7:0e:86:da:49:f3:46:35:2e:ba:b2 +# Subject: CN=Trustwave Global Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Not Valid Before: Wed Aug 23 19:34:12 2017 +# Not Valid After : Sat Aug 23 19:34:12 2042 +# Fingerprint (SHA-256): 97:55:20:15:F5:DD:FC:3C:87:88:C0:06:94:45:55:40:88:94:45:00:84:F1:00:86:70:86:BC:1A:2B:B5:8D:C8 +# Fingerprint (SHA1): 2F:8F:36:4F:E1:58:97:44:21:59:87:A5:2A:9A:D0:69:95:26:7F:B5 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Trustwave Global Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\210\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\021\060\017\006\003\125\004\010\014\010\111\154\154\151\156 +\157\151\163\061\020\060\016\006\003\125\004\007\014\007\103\150 +\151\143\141\147\157\061\041\060\037\006\003\125\004\012\014\030 +\124\162\165\163\164\167\141\166\145\040\110\157\154\144\151\156 +\147\163\054\040\111\156\143\056\061\061\060\057\006\003\125\004 +\003\014\050\124\162\165\163\164\167\141\166\145\040\107\154\157 +\142\141\154\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\210\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\021\060\017\006\003\125\004\010\014\010\111\154\154\151\156 +\157\151\163\061\020\060\016\006\003\125\004\007\014\007\103\150 +\151\143\141\147\157\061\041\060\037\006\003\125\004\012\014\030 +\124\162\165\163\164\167\141\166\145\040\110\157\154\144\151\156 +\147\163\054\040\111\156\143\056\061\061\060\057\006\003\125\004 +\003\014\050\124\162\165\163\164\167\141\166\145\040\107\154\157 +\142\141\154\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\005\367\016\206\332\111\363\106\065\056\272\262 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\332\060\202\003\302\240\003\002\001\002\002\014\005 +\367\016\206\332\111\363\106\065\056\272\262\060\015\006\011\052 +\206\110\206\367\015\001\001\013\005\000\060\201\210\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\021\060\017\006\003 +\125\004\010\014\010\111\154\154\151\156\157\151\163\061\020\060 +\016\006\003\125\004\007\014\007\103\150\151\143\141\147\157\061 +\041\060\037\006\003\125\004\012\014\030\124\162\165\163\164\167 +\141\166\145\040\110\157\154\144\151\156\147\163\054\040\111\156 +\143\056\061\061\060\057\006\003\125\004\003\014\050\124\162\165 +\163\164\167\141\166\145\040\107\154\157\142\141\154\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150 +\157\162\151\164\171\060\036\027\015\061\067\060\070\062\063\061 +\071\063\064\061\062\132\027\015\064\062\060\070\062\063\061\071 +\063\064\061\062\132\060\201\210\061\013\060\011\006\003\125\004 +\006\023\002\125\123\061\021\060\017\006\003\125\004\010\014\010 +\111\154\154\151\156\157\151\163\061\020\060\016\006\003\125\004 +\007\014\007\103\150\151\143\141\147\157\061\041\060\037\006\003 +\125\004\012\014\030\124\162\165\163\164\167\141\166\145\040\110 +\157\154\144\151\156\147\163\054\040\111\156\143\056\061\061\060 +\057\006\003\125\004\003\014\050\124\162\165\163\164\167\141\166 +\145\040\107\154\157\142\141\154\040\103\145\162\164\151\146\151 +\143\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\271\135\121\050\113\074\067\222\321\202\316\275\035\275\315 +\335\270\253\317\012\076\341\135\345\334\252\011\271\127\002\076 +\346\143\141\337\362\017\202\143\256\243\367\254\163\321\174\347 +\263\013\257\010\000\011\131\177\315\051\052\210\223\207\027\030 +\200\355\210\262\264\266\020\037\055\326\137\125\242\023\135\321 +\306\353\006\126\211\210\376\254\062\235\375\134\303\005\307\156 +\356\206\211\272\210\003\235\162\041\206\220\256\217\003\245\334 +\237\210\050\313\243\222\111\017\354\320\017\342\155\104\117\200 +\152\262\324\347\240\012\123\001\272\216\227\221\166\156\274\374 +\325\153\066\346\100\210\326\173\057\137\005\350\054\155\021\363 +\347\262\276\222\104\114\322\227\244\376\322\162\201\103\007\234 +\351\021\076\365\213\032\131\175\037\150\130\335\004\000\054\226 +\363\103\263\176\230\031\164\331\234\163\331\030\276\101\307\064 +\171\331\364\142\302\103\271\263\047\260\042\313\371\075\122\307 +\060\107\263\311\076\270\152\342\347\350\201\160\136\102\213\117 +\046\245\376\072\302\040\156\273\370\026\216\315\014\251\264\033 +\154\166\020\341\130\171\106\076\124\316\200\250\127\011\067\051 +\033\231\023\217\014\310\326\054\034\373\005\350\010\225\075\145 +\106\334\356\315\151\342\115\217\207\050\116\064\013\076\317\024 +\331\273\335\266\120\232\255\167\324\031\326\332\032\210\310\116 +\033\047\165\330\262\010\361\256\203\060\271\021\016\315\207\360 +\204\215\025\162\174\241\357\314\362\210\141\272\364\151\273\014 +\214\013\165\127\004\270\116\052\024\056\075\017\034\036\062\246 +\142\066\356\146\342\042\270\005\100\143\020\042\363\063\035\164 +\162\212\054\365\071\051\240\323\347\033\200\204\055\305\075\343 +\115\261\375\032\157\272\145\007\073\130\354\102\105\046\373\330 +\332\045\162\304\366\000\261\042\171\275\343\174\131\142\112\234 +\005\157\075\316\346\326\107\143\231\306\044\157\162\022\310\254 +\177\220\264\013\221\160\350\267\346\026\020\161\027\316\336\006 +\117\110\101\175\065\112\243\211\362\311\113\173\101\021\155\147 +\267\010\230\114\345\021\031\256\102\200\334\373\220\005\324\370 +\120\312\276\344\255\307\302\224\327\026\235\346\027\217\257\066 +\373\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125 +\035\016\004\026\004\024\231\340\031\147\015\142\333\166\263\332 +\075\270\133\350\375\102\322\061\016\207\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\006\060\015\006\011\052\206 +\110\206\367\015\001\001\013\005\000\003\202\002\001\000\230\163 +\160\342\260\323\355\071\354\114\140\331\251\022\206\027\036\226 +\320\350\124\050\073\144\055\041\246\370\235\126\023\152\110\075 +\117\307\076\051\333\155\130\203\124\075\207\175\043\005\324\344 +\034\334\350\070\145\206\305\165\247\132\333\065\005\275\167\336 +\273\051\067\100\005\007\303\224\122\237\312\144\335\361\033\053 +\334\106\012\020\002\061\375\112\150\015\007\144\220\346\036\365 +\052\241\250\273\074\135\371\243\010\013\021\014\361\077\055\020 +\224\157\376\342\064\207\203\326\317\345\033\065\155\322\003\341 +\260\015\250\240\252\106\047\202\066\247\025\266\010\246\102\124 +\127\266\231\132\342\013\171\220\327\127\022\121\065\031\210\101 +\150\045\324\067\027\204\025\373\001\162\334\225\336\122\046\040 +\230\046\342\166\365\047\157\372\000\073\112\141\331\015\313\121 +\223\052\375\026\006\226\247\043\232\043\110\376\121\275\266\304 +\260\261\124\316\336\154\101\255\026\147\176\333\375\070\315\271 +\070\116\262\301\140\313\235\027\337\130\236\172\142\262\046\217 +\164\225\233\344\133\035\322\017\335\230\034\233\131\271\043\323 +\061\240\246\377\070\335\317\040\117\351\130\126\072\147\303\321 +\366\231\231\235\272\066\266\200\057\210\107\117\206\277\104\072 +\200\344\067\034\246\272\352\227\230\021\320\204\142\107\144\036 +\252\356\100\277\064\261\234\217\116\341\362\222\117\037\216\363 +\236\227\336\363\246\171\152\211\161\117\113\047\027\110\376\354 +\364\120\017\117\111\175\314\105\343\275\172\100\305\101\334\141 +\126\047\006\151\345\162\101\201\323\266\001\211\240\057\072\162 +\171\376\072\060\277\101\354\307\142\076\221\113\307\331\061\166 +\102\371\367\074\143\354\046\214\163\014\175\032\035\352\250\174 +\207\250\302\047\174\341\063\101\017\317\317\374\000\240\042\200 +\236\112\247\157\000\260\101\105\267\042\312\150\110\305\102\242 +\256\335\035\362\340\156\116\005\130\261\300\220\026\052\244\075 +\020\100\276\217\142\143\203\251\234\202\175\055\002\351\203\060 +\174\313\047\311\375\036\146\000\260\056\323\041\057\216\063\026 +\154\230\355\020\250\007\326\314\223\317\333\321\151\034\344\312 +\311\340\266\234\351\316\161\161\336\154\077\026\244\171 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Trustwave Global Certification Authority" +# Issuer: CN=Trustwave Global Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Serial Number:05:f7:0e:86:da:49:f3:46:35:2e:ba:b2 +# Subject: CN=Trustwave Global Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Not Valid Before: Wed Aug 23 19:34:12 2017 +# Not Valid After : Sat Aug 23 19:34:12 2042 +# Fingerprint (SHA-256): 97:55:20:15:F5:DD:FC:3C:87:88:C0:06:94:45:55:40:88:94:45:00:84:F1:00:86:70:86:BC:1A:2B:B5:8D:C8 +# Fingerprint (SHA1): 2F:8F:36:4F:E1:58:97:44:21:59:87:A5:2A:9A:D0:69:95:26:7F:B5 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Trustwave Global Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\057\217\066\117\341\130\227\104\041\131\207\245\052\232\320\151 +\225\046\177\265 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\370\034\030\055\057\272\137\155\241\154\274\307\253\221\307\016 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\210\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\021\060\017\006\003\125\004\010\014\010\111\154\154\151\156 +\157\151\163\061\020\060\016\006\003\125\004\007\014\007\103\150 +\151\143\141\147\157\061\041\060\037\006\003\125\004\012\014\030 +\124\162\165\163\164\167\141\166\145\040\110\157\154\144\151\156 +\147\163\054\040\111\156\143\056\061\061\060\057\006\003\125\004 +\003\014\050\124\162\165\163\164\167\141\166\145\040\107\154\157 +\142\141\154\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\005\367\016\206\332\111\363\106\065\056\272\262 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Trustwave Global ECC P256 Certification Authority" +# +# Issuer: CN=Trustwave Global ECC P256 Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Serial Number:0d:6a:5f:08:3f:28:5c:3e:51:95:df:5d +# Subject: CN=Trustwave Global ECC P256 Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Not Valid Before: Wed Aug 23 19:35:10 2017 +# Not Valid After : Sat Aug 23 19:35:10 2042 +# Fingerprint (SHA-256): 94:5B:BC:82:5E:A5:54:F4:89:D1:FD:51:A7:3D:DF:2E:A6:24:AC:70:19:A0:52:05:22:5C:22:A7:8C:CF:A8:B4 +# Fingerprint (SHA1): B4:90:82:DD:45:0C:BE:8B:5B:B1:66:D3:E2:A4:08:26:CD:ED:42:CF +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Trustwave Global ECC P256 Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\221\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\021\060\017\006\003\125\004\010\023\010\111\154\154\151\156 +\157\151\163\061\020\060\016\006\003\125\004\007\023\007\103\150 +\151\143\141\147\157\061\041\060\037\006\003\125\004\012\023\030 +\124\162\165\163\164\167\141\166\145\040\110\157\154\144\151\156 +\147\163\054\040\111\156\143\056\061\072\060\070\006\003\125\004 +\003\023\061\124\162\165\163\164\167\141\166\145\040\107\154\157 +\142\141\154\040\105\103\103\040\120\062\065\066\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\221\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\021\060\017\006\003\125\004\010\023\010\111\154\154\151\156 +\157\151\163\061\020\060\016\006\003\125\004\007\023\007\103\150 +\151\143\141\147\157\061\041\060\037\006\003\125\004\012\023\030 +\124\162\165\163\164\167\141\166\145\040\110\157\154\144\151\156 +\147\163\054\040\111\156\143\056\061\072\060\070\006\003\125\004 +\003\023\061\124\162\165\163\164\167\141\166\145\040\107\154\157 +\142\141\154\040\105\103\103\040\120\062\065\066\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\015\152\137\010\077\050\134\076\121\225\337\135 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\140\060\202\002\007\240\003\002\001\002\002\014\015 +\152\137\010\077\050\134\076\121\225\337\135\060\012\006\010\052 +\206\110\316\075\004\003\002\060\201\221\061\013\060\011\006\003 +\125\004\006\023\002\125\123\061\021\060\017\006\003\125\004\010 +\023\010\111\154\154\151\156\157\151\163\061\020\060\016\006\003 +\125\004\007\023\007\103\150\151\143\141\147\157\061\041\060\037 +\006\003\125\004\012\023\030\124\162\165\163\164\167\141\166\145 +\040\110\157\154\144\151\156\147\163\054\040\111\156\143\056\061 +\072\060\070\006\003\125\004\003\023\061\124\162\165\163\164\167 +\141\166\145\040\107\154\157\142\141\154\040\105\103\103\040\120 +\062\065\066\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\060\036\027\015\061 +\067\060\070\062\063\061\071\063\065\061\060\132\027\015\064\062 +\060\070\062\063\061\071\063\065\061\060\132\060\201\221\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\021\060\017\006 +\003\125\004\010\023\010\111\154\154\151\156\157\151\163\061\020 +\060\016\006\003\125\004\007\023\007\103\150\151\143\141\147\157 +\061\041\060\037\006\003\125\004\012\023\030\124\162\165\163\164 +\167\141\166\145\040\110\157\154\144\151\156\147\163\054\040\111 +\156\143\056\061\072\060\070\006\003\125\004\003\023\061\124\162 +\165\163\164\167\141\166\145\040\107\154\157\142\141\154\040\105 +\103\103\040\120\062\065\066\040\103\145\162\164\151\146\151\143 +\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060 +\131\060\023\006\007\052\206\110\316\075\002\001\006\010\052\206 +\110\316\075\003\001\007\003\102\000\004\176\373\154\346\043\343 +\163\062\010\312\140\346\123\234\272\164\215\030\260\170\220\122 +\200\335\070\300\112\035\321\250\314\223\244\227\006\070\312\015 +\025\142\306\216\001\052\145\235\252\337\064\221\056\201\301\344 +\063\222\061\304\375\011\072\246\077\255\243\103\060\101\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\017\006\003\125\035\017\001\001\377\004\005\003\003\007\006\000 +\060\035\006\003\125\035\016\004\026\004\024\243\101\006\254\220 +\155\321\112\353\165\245\112\020\231\263\261\241\213\112\367\060 +\012\006\010\052\206\110\316\075\004\003\002\003\107\000\060\104 +\002\040\007\346\124\332\016\240\132\262\256\021\237\207\305\266 +\377\151\336\045\276\370\240\267\010\363\104\316\052\337\010\041 +\014\067\002\040\055\046\003\240\005\275\153\321\366\134\370\145 +\314\206\155\263\234\064\110\143\204\011\305\215\167\032\342\314 +\234\341\164\173 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Trustwave Global ECC P256 Certification Authority" +# Issuer: CN=Trustwave Global ECC P256 Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Serial Number:0d:6a:5f:08:3f:28:5c:3e:51:95:df:5d +# Subject: CN=Trustwave Global ECC P256 Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Not Valid Before: Wed Aug 23 19:35:10 2017 +# Not Valid After : Sat Aug 23 19:35:10 2042 +# Fingerprint (SHA-256): 94:5B:BC:82:5E:A5:54:F4:89:D1:FD:51:A7:3D:DF:2E:A6:24:AC:70:19:A0:52:05:22:5C:22:A7:8C:CF:A8:B4 +# Fingerprint (SHA1): B4:90:82:DD:45:0C:BE:8B:5B:B1:66:D3:E2:A4:08:26:CD:ED:42:CF +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Trustwave Global ECC P256 Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\264\220\202\335\105\014\276\213\133\261\146\323\342\244\010\046 +\315\355\102\317 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\133\104\343\215\135\066\206\046\350\015\005\322\131\247\203\124 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\221\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\021\060\017\006\003\125\004\010\023\010\111\154\154\151\156 +\157\151\163\061\020\060\016\006\003\125\004\007\023\007\103\150 +\151\143\141\147\157\061\041\060\037\006\003\125\004\012\023\030 +\124\162\165\163\164\167\141\166\145\040\110\157\154\144\151\156 +\147\163\054\040\111\156\143\056\061\072\060\070\006\003\125\004 +\003\023\061\124\162\165\163\164\167\141\166\145\040\107\154\157 +\142\141\154\040\105\103\103\040\120\062\065\066\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\015\152\137\010\077\050\134\076\121\225\337\135 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Trustwave Global ECC P384 Certification Authority" +# +# Issuer: CN=Trustwave Global ECC P384 Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Serial Number:08:bd:85:97:6c:99:27:a4:80:68:47:3b +# Subject: CN=Trustwave Global ECC P384 Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Not Valid Before: Wed Aug 23 19:36:43 2017 +# Not Valid After : Sat Aug 23 19:36:43 2042 +# Fingerprint (SHA-256): 55:90:38:59:C8:C0:C3:EB:B8:75:9E:CE:4E:25:57:22:5F:F5:75:8B:BD:38:EB:D4:82:76:60:1E:1B:D5:80:97 +# Fingerprint (SHA1): E7:F3:A3:C8:CF:6F:C3:04:2E:6D:0E:67:32:C5:9E:68:95:0D:5E:D2 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Trustwave Global ECC P384 Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\221\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\021\060\017\006\003\125\004\010\023\010\111\154\154\151\156 +\157\151\163\061\020\060\016\006\003\125\004\007\023\007\103\150 +\151\143\141\147\157\061\041\060\037\006\003\125\004\012\023\030 +\124\162\165\163\164\167\141\166\145\040\110\157\154\144\151\156 +\147\163\054\040\111\156\143\056\061\072\060\070\006\003\125\004 +\003\023\061\124\162\165\163\164\167\141\166\145\040\107\154\157 +\142\141\154\040\105\103\103\040\120\063\070\064\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\221\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\021\060\017\006\003\125\004\010\023\010\111\154\154\151\156 +\157\151\163\061\020\060\016\006\003\125\004\007\023\007\103\150 +\151\143\141\147\157\061\041\060\037\006\003\125\004\012\023\030 +\124\162\165\163\164\167\141\166\145\040\110\157\154\144\151\156 +\147\163\054\040\111\156\143\056\061\072\060\070\006\003\125\004 +\003\023\061\124\162\165\163\164\167\141\166\145\040\107\154\157 +\142\141\154\040\105\103\103\040\120\063\070\064\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\010\275\205\227\154\231\047\244\200\150\107\073 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\235\060\202\002\044\240\003\002\001\002\002\014\010 +\275\205\227\154\231\047\244\200\150\107\073\060\012\006\010\052 +\206\110\316\075\004\003\003\060\201\221\061\013\060\011\006\003 +\125\004\006\023\002\125\123\061\021\060\017\006\003\125\004\010 +\023\010\111\154\154\151\156\157\151\163\061\020\060\016\006\003 +\125\004\007\023\007\103\150\151\143\141\147\157\061\041\060\037 +\006\003\125\004\012\023\030\124\162\165\163\164\167\141\166\145 +\040\110\157\154\144\151\156\147\163\054\040\111\156\143\056\061 +\072\060\070\006\003\125\004\003\023\061\124\162\165\163\164\167 +\141\166\145\040\107\154\157\142\141\154\040\105\103\103\040\120 +\063\070\064\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\060\036\027\015\061 +\067\060\070\062\063\061\071\063\066\064\063\132\027\015\064\062 +\060\070\062\063\061\071\063\066\064\063\132\060\201\221\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\021\060\017\006 +\003\125\004\010\023\010\111\154\154\151\156\157\151\163\061\020 +\060\016\006\003\125\004\007\023\007\103\150\151\143\141\147\157 +\061\041\060\037\006\003\125\004\012\023\030\124\162\165\163\164 +\167\141\166\145\040\110\157\154\144\151\156\147\163\054\040\111 +\156\143\056\061\072\060\070\006\003\125\004\003\023\061\124\162 +\165\163\164\167\141\166\145\040\107\154\157\142\141\154\040\105 +\103\103\040\120\063\070\064\040\103\145\162\164\151\146\151\143 +\141\164\151\157\156\040\101\165\164\150\157\162\151\164\171\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\153\332\015\165\065\010\061\107\005 +\256\105\231\125\361\021\023\056\112\370\020\061\043\243\176\203 +\323\177\050\010\072\046\032\072\317\227\202\037\200\267\047\011 +\217\321\216\060\304\012\233\016\254\130\004\253\367\066\175\224 +\043\244\233\012\212\213\253\353\375\071\045\146\361\136\376\214 +\256\215\101\171\235\011\140\316\050\251\323\212\155\363\326\105 +\324\362\230\204\070\145\240\243\103\060\101\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\017\006\003 +\125\035\017\001\001\377\004\005\003\003\007\006\000\060\035\006 +\003\125\035\016\004\026\004\024\125\251\204\211\322\301\062\275 +\030\313\154\246\007\116\310\347\235\276\202\220\060\012\006\010 +\052\206\110\316\075\004\003\003\003\147\000\060\144\002\060\067 +\001\222\227\105\022\176\240\363\076\255\031\072\162\335\364\120 +\223\003\022\276\104\322\117\101\244\214\234\235\037\243\366\302 +\222\347\110\024\376\116\233\245\221\127\256\306\067\162\273\002 +\060\147\045\012\261\014\136\356\251\143\222\157\345\220\013\376 +\146\042\312\107\375\212\061\367\203\376\172\277\020\276\030\053 +\036\217\366\051\036\224\131\357\216\041\067\313\121\230\245\156 +\113 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Trustwave Global ECC P384 Certification Authority" +# Issuer: CN=Trustwave Global ECC P384 Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Serial Number:08:bd:85:97:6c:99:27:a4:80:68:47:3b +# Subject: CN=Trustwave Global ECC P384 Certification Authority,O="Trustwave Holdings, Inc.",L=Chicago,ST=Illinois,C=US +# Not Valid Before: Wed Aug 23 19:36:43 2017 +# Not Valid After : Sat Aug 23 19:36:43 2042 +# Fingerprint (SHA-256): 55:90:38:59:C8:C0:C3:EB:B8:75:9E:CE:4E:25:57:22:5F:F5:75:8B:BD:38:EB:D4:82:76:60:1E:1B:D5:80:97 +# Fingerprint (SHA1): E7:F3:A3:C8:CF:6F:C3:04:2E:6D:0E:67:32:C5:9E:68:95:0D:5E:D2 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Trustwave Global ECC P384 Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\347\363\243\310\317\157\303\004\056\155\016\147\062\305\236\150 +\225\015\136\322 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\352\317\140\304\073\271\025\051\100\241\227\355\170\047\223\326 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\221\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\021\060\017\006\003\125\004\010\023\010\111\154\154\151\156 +\157\151\163\061\020\060\016\006\003\125\004\007\023\007\103\150 +\151\143\141\147\157\061\041\060\037\006\003\125\004\012\023\030 +\124\162\165\163\164\167\141\166\145\040\110\157\154\144\151\156 +\147\163\054\040\111\156\143\056\061\072\060\070\006\003\125\004 +\003\023\061\124\162\165\163\164\167\141\166\145\040\107\154\157 +\142\141\154\040\105\103\103\040\120\063\070\064\040\103\145\162 +\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150\157 +\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\010\275\205\227\154\231\047\244\200\150\107\073 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "NAVER Global Root Certification Authority" +# +# Issuer: CN=NAVER Global Root Certification Authority,O=NAVER BUSINESS PLATFORM Corp.,C=KR +# Serial Number:01:94:30:1e:a2:0b:dd:f5:c5:33:2a:b1:43:44:71:f8:d6:50:4d:0d +# Subject: CN=NAVER Global Root Certification Authority,O=NAVER BUSINESS PLATFORM Corp.,C=KR +# Not Valid Before: Fri Aug 18 08:58:42 2017 +# Not Valid After : Tue Aug 18 23:59:59 2037 +# Fingerprint (SHA-256): 88:F4:38:DC:F8:FF:D1:FA:8F:42:91:15:FF:E5:F8:2A:E1:E0:6E:0C:70:C3:75:FA:AD:71:7B:34:A4:9E:72:65 +# Fingerprint (SHA1): 8F:6B:F2:A9:27:4A:DA:14:A0:C4:F4:8E:61:27:F9:C0:1E:78:5D:D1 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "NAVER Global Root Certification Authority" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\151\061\013\060\011\006\003\125\004\006\023\002\113\122\061 +\046\060\044\006\003\125\004\012\014\035\116\101\126\105\122\040 +\102\125\123\111\116\105\123\123\040\120\114\101\124\106\117\122 +\115\040\103\157\162\160\056\061\062\060\060\006\003\125\004\003 +\014\051\116\101\126\105\122\040\107\154\157\142\141\154\040\122 +\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\151\061\013\060\011\006\003\125\004\006\023\002\113\122\061 +\046\060\044\006\003\125\004\012\014\035\116\101\126\105\122\040 +\102\125\123\111\116\105\123\123\040\120\114\101\124\106\117\122 +\115\040\103\157\162\160\056\061\062\060\060\006\003\125\004\003 +\014\051\116\101\126\105\122\040\107\154\157\142\141\154\040\122 +\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\001\224\060\036\242\013\335\365\305\063\052\261\103\104 +\161\370\326\120\115\015 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\242\060\202\003\212\240\003\002\001\002\002\024\001 +\224\060\036\242\013\335\365\305\063\052\261\103\104\161\370\326 +\120\115\015\060\015\006\011\052\206\110\206\367\015\001\001\014 +\005\000\060\151\061\013\060\011\006\003\125\004\006\023\002\113 +\122\061\046\060\044\006\003\125\004\012\014\035\116\101\126\105 +\122\040\102\125\123\111\116\105\123\123\040\120\114\101\124\106 +\117\122\115\040\103\157\162\160\056\061\062\060\060\006\003\125 +\004\003\014\051\116\101\126\105\122\040\107\154\157\142\141\154 +\040\122\157\157\164\040\103\145\162\164\151\146\151\143\141\164 +\151\157\156\040\101\165\164\150\157\162\151\164\171\060\036\027 +\015\061\067\060\070\061\070\060\070\065\070\064\062\132\027\015 +\063\067\060\070\061\070\062\063\065\071\065\071\132\060\151\061 +\013\060\011\006\003\125\004\006\023\002\113\122\061\046\060\044 +\006\003\125\004\012\014\035\116\101\126\105\122\040\102\125\123 +\111\116\105\123\123\040\120\114\101\124\106\117\122\115\040\103 +\157\162\160\056\061\062\060\060\006\003\125\004\003\014\051\116 +\101\126\105\122\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040\101 +\165\164\150\157\162\151\164\171\060\202\002\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 +\060\202\002\012\002\202\002\001\000\266\324\361\223\134\265\100 +\211\012\253\015\220\133\120\143\256\220\224\164\027\105\162\326 +\173\145\132\051\113\247\126\240\113\270\057\102\165\351\331\173 +\044\132\061\145\253\027\027\321\063\072\331\021\334\100\066\207 +\337\307\152\351\046\136\131\212\167\343\350\110\234\061\026\372 +\076\221\261\312\311\243\342\237\316\041\123\243\002\066\060\313 +\122\002\345\332\062\135\303\305\346\371\356\021\307\213\311\104 +\036\204\223\030\112\264\237\345\022\144\151\320\046\205\142\001 +\266\311\002\035\276\203\121\273\134\332\370\255\025\152\231\367 +\222\124\367\064\133\351\277\352\051\201\022\324\123\221\226\263 +\221\132\335\376\220\163\050\373\060\106\265\312\010\007\307\161 +\162\311\146\323\064\227\366\214\364\030\112\341\320\075\132\105 +\266\151\247\051\373\043\316\210\330\022\234\000\110\250\246\017 +\263\073\222\215\161\016\164\305\213\310\114\371\364\233\216\270 +\074\151\355\157\073\120\057\130\355\304\260\320\034\033\152\014 +\342\274\104\252\330\315\024\135\224\170\141\277\016\156\332\052 +\274\057\014\013\161\246\263\026\077\234\346\371\314\237\123\065 +\342\003\240\240\030\277\273\361\276\364\326\214\207\015\102\367 +\006\271\361\155\355\004\224\250\376\266\323\006\306\100\141\337 +\235\235\363\124\166\316\123\072\001\246\222\101\354\004\243\217 +\015\242\325\011\312\326\313\232\361\357\103\135\300\253\245\101 +\317\134\123\160\160\311\210\246\055\324\153\141\163\120\046\206 +\141\016\137\033\302\053\342\214\325\273\235\301\003\102\272\224 +\332\137\251\260\312\314\115\012\357\107\151\003\057\042\373\361 +\050\316\277\135\120\145\250\220\155\263\164\260\010\307\254\250 +\321\353\076\234\374\135\032\203\056\053\313\265\363\104\235\072 +\247\027\141\226\242\161\323\160\226\025\115\267\114\163\356\031 +\134\305\133\076\101\376\254\165\140\073\033\143\316\000\335\332 +\010\220\142\264\345\055\356\110\247\153\027\231\124\276\207\112 +\343\251\136\004\114\353\020\155\124\326\357\361\350\362\142\026 +\313\200\153\355\075\355\365\037\060\245\256\113\311\023\355\212 +\001\001\311\270\121\130\300\146\072\261\146\113\304\325\061\002 +\142\351\164\204\014\333\115\106\055\002\003\001\000\001\243\102 +\060\100\060\035\006\003\125\035\016\004\026\004\024\322\237\210 +\337\241\315\054\275\354\365\073\001\001\223\063\047\262\353\140 +\113\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 +\006\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\015\006\011\052\206\110\206\367\015\001\001\014\005 +\000\003\202\002\001\000\062\312\200\263\235\075\124\006\335\322 +\322\056\360\244\001\041\013\147\110\312\155\216\340\310\252\015 +\252\215\041\127\217\306\076\172\312\333\121\324\122\263\324\226 +\204\245\130\140\177\345\013\216\037\365\334\012\025\201\345\073 +\266\267\042\057\011\234\023\026\261\154\014\065\010\155\253\143 +\162\355\334\276\354\307\127\346\060\040\161\326\327\020\301\023 +\125\001\214\052\103\344\101\361\317\072\172\123\222\316\242\003 +\005\015\070\337\002\273\020\056\331\073\322\233\172\300\241\246 +\370\265\061\346\364\165\311\271\123\231\165\107\042\132\024\025 +\307\170\033\266\235\351\014\370\033\166\361\205\204\336\241\332 +\022\357\244\342\020\227\172\170\336\014\121\227\250\041\100\213 +\206\275\015\360\136\116\113\066\273\073\040\037\212\102\126\341 +\013\032\277\173\320\042\103\054\104\214\373\345\052\264\154\034 +\034\272\224\340\023\176\041\346\232\302\313\305\102\144\264\036 +\224\173\010\045\310\161\314\207\105\127\205\323\237\051\142\042 +\203\121\227\000\030\227\167\152\230\222\311\174\140\154\337\154 +\175\112\344\160\114\302\236\270\035\367\320\064\307\017\314\373 +\247\377\003\276\255\160\220\332\013\335\310\155\227\137\232\177 +\011\062\101\375\315\242\314\132\155\114\362\252\111\376\146\370 +\351\330\065\353\016\050\036\356\110\057\072\320\171\011\070\174 +\246\042\202\223\225\320\003\276\276\002\240\005\335\040\042\343 +\157\035\210\064\140\306\346\012\271\011\165\013\360\007\350\151 +\226\065\307\373\043\201\216\070\071\270\105\053\103\170\242\321 +\054\024\377\015\050\162\162\225\233\136\011\333\211\104\230\252 +\241\111\273\161\122\362\277\366\377\047\241\066\257\270\266\167 +\210\335\072\244\155\233\064\220\334\024\135\060\277\267\353\027 +\344\207\267\161\320\241\327\167\025\324\102\327\362\363\061\231 +\135\233\335\026\155\077\352\006\043\370\106\242\042\355\223\366 +\335\232\346\052\207\261\230\124\361\042\367\153\105\343\342\216 +\166\035\232\215\304\006\215\066\267\024\363\235\124\151\267\216 +\074\325\244\155\223\201\267\255\366\275\144\173\302\311\150\071 +\240\222\234\315\064\206\221\220\372\144\121\235\376\376\353\245 +\365\165\336\211\367\162 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "NAVER Global Root Certification Authority" +# Issuer: CN=NAVER Global Root Certification Authority,O=NAVER BUSINESS PLATFORM Corp.,C=KR +# Serial Number:01:94:30:1e:a2:0b:dd:f5:c5:33:2a:b1:43:44:71:f8:d6:50:4d:0d +# Subject: CN=NAVER Global Root Certification Authority,O=NAVER BUSINESS PLATFORM Corp.,C=KR +# Not Valid Before: Fri Aug 18 08:58:42 2017 +# Not Valid After : Tue Aug 18 23:59:59 2037 +# Fingerprint (SHA-256): 88:F4:38:DC:F8:FF:D1:FA:8F:42:91:15:FF:E5:F8:2A:E1:E0:6E:0C:70:C3:75:FA:AD:71:7B:34:A4:9E:72:65 +# Fingerprint (SHA1): 8F:6B:F2:A9:27:4A:DA:14:A0:C4:F4:8E:61:27:F9:C0:1E:78:5D:D1 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "NAVER Global Root Certification Authority" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\217\153\362\251\047\112\332\024\240\304\364\216\141\047\371\300 +\036\170\135\321 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\310\176\101\366\045\073\365\011\263\027\350\106\075\277\320\233 +END +CKA_ISSUER MULTILINE_OCTAL +\060\151\061\013\060\011\006\003\125\004\006\023\002\113\122\061 +\046\060\044\006\003\125\004\012\014\035\116\101\126\105\122\040 +\102\125\123\111\116\105\123\123\040\120\114\101\124\106\117\122 +\115\040\103\157\162\160\056\061\062\060\060\006\003\125\004\003 +\014\051\116\101\126\105\122\040\107\154\157\142\141\154\040\122 +\157\157\164\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\001\224\060\036\242\013\335\365\305\063\052\261\103\104 +\161\370\326\120\115\015 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +# +# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS,OID.2.5.4.97=VATES-Q2826004J,OU=Ceres,O=FNMT-RCM,C=ES +# Serial Number:62:f6:32:6c:e5:c4:e3:68:5c:1b:62:dd:9c:2e:9d:95 +# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS,OID.2.5.4.97=VATES-Q2826004J,OU=Ceres,O=FNMT-RCM,C=ES +# Not Valid Before: Thu Dec 20 09:37:33 2018 +# Not Valid After : Sun Dec 20 09:37:33 2043 +# Fingerprint (SHA-256): 55:41:53:B1:3D:2C:F9:DD:B7:53:BF:BE:1A:4E:0A:E0:8D:0A:A4:18:70:58:FE:60:A2:B8:62:B2:E4:B8:7B:CB +# Fingerprint (SHA1): 62:FF:D9:9E:C0:65:0D:03:CE:75:93:D2:ED:3F:2D:32:C9:E3:E5:4A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\170\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\021\060\017\006\003\125\004\012\014\010\106\116\115\124\055\122 +\103\115\061\016\060\014\006\003\125\004\013\014\005\103\145\162 +\145\163\061\030\060\026\006\003\125\004\141\014\017\126\101\124 +\105\123\055\121\062\070\062\066\060\060\064\112\061\054\060\052 +\006\003\125\004\003\014\043\101\103\040\122\101\111\132\040\106 +\116\115\124\055\122\103\115\040\123\105\122\126\111\104\117\122 +\105\123\040\123\105\107\125\122\117\123 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\170\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\021\060\017\006\003\125\004\012\014\010\106\116\115\124\055\122 +\103\115\061\016\060\014\006\003\125\004\013\014\005\103\145\162 +\145\163\061\030\060\026\006\003\125\004\141\014\017\126\101\124 +\105\123\055\121\062\070\062\066\060\060\064\112\061\054\060\052 +\006\003\125\004\003\014\043\101\103\040\122\101\111\132\040\106 +\116\115\124\055\122\103\115\040\123\105\122\126\111\104\117\122 +\105\123\040\123\105\107\125\122\117\123 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\142\366\062\154\345\304\343\150\134\033\142\335\234\056 +\235\225 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\156\060\202\001\363\240\003\002\001\002\002\020\142 +\366\062\154\345\304\343\150\134\033\142\335\234\056\235\225\060 +\012\006\010\052\206\110\316\075\004\003\003\060\170\061\013\060 +\011\006\003\125\004\006\023\002\105\123\061\021\060\017\006\003 +\125\004\012\014\010\106\116\115\124\055\122\103\115\061\016\060 +\014\006\003\125\004\013\014\005\103\145\162\145\163\061\030\060 +\026\006\003\125\004\141\014\017\126\101\124\105\123\055\121\062 +\070\062\066\060\060\064\112\061\054\060\052\006\003\125\004\003 +\014\043\101\103\040\122\101\111\132\040\106\116\115\124\055\122 +\103\115\040\123\105\122\126\111\104\117\122\105\123\040\123\105 +\107\125\122\117\123\060\036\027\015\061\070\061\062\062\060\060 +\071\063\067\063\063\132\027\015\064\063\061\062\062\060\060\071 +\063\067\063\063\132\060\170\061\013\060\011\006\003\125\004\006 +\023\002\105\123\061\021\060\017\006\003\125\004\012\014\010\106 +\116\115\124\055\122\103\115\061\016\060\014\006\003\125\004\013 +\014\005\103\145\162\145\163\061\030\060\026\006\003\125\004\141 +\014\017\126\101\124\105\123\055\121\062\070\062\066\060\060\064 +\112\061\054\060\052\006\003\125\004\003\014\043\101\103\040\122 +\101\111\132\040\106\116\115\124\055\122\103\115\040\123\105\122 +\126\111\104\117\122\105\123\040\123\105\107\125\122\117\123\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\366\272\127\123\310\312\253\337\066 +\112\122\041\344\227\322\203\147\236\360\145\121\320\136\207\307 +\107\261\131\362\127\107\233\000\002\223\104\027\151\333\102\307 +\261\262\072\030\016\264\135\214\263\146\135\241\064\371\066\054 +\111\333\363\106\374\263\104\151\104\023\146\375\327\305\375\257 +\066\115\316\003\115\007\161\317\257\152\005\322\242\103\132\012 +\122\157\001\003\116\216\213\243\102\060\100\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003 +\125\035\016\004\026\004\024\001\271\057\357\277\021\206\140\362 +\117\320\101\156\253\163\037\347\322\156\111\060\012\006\010\052 +\206\110\316\075\004\003\003\003\151\000\060\146\002\061\000\256 +\112\343\053\100\303\164\021\362\225\255\026\043\336\116\014\032 +\346\135\245\044\136\153\104\173\374\070\342\117\313\234\105\027 +\021\114\024\047\046\125\071\165\112\003\314\023\220\237\222\002 +\061\000\372\112\154\140\210\163\363\356\270\230\142\251\316\053 +\302\331\212\246\160\061\035\257\260\224\114\353\117\306\343\321 +\363\142\247\074\377\223\056\007\134\111\001\147\151\022\002\162 +\277\347 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +# Issuer: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS,OID.2.5.4.97=VATES-Q2826004J,OU=Ceres,O=FNMT-RCM,C=ES +# Serial Number:62:f6:32:6c:e5:c4:e3:68:5c:1b:62:dd:9c:2e:9d:95 +# Subject: CN=AC RAIZ FNMT-RCM SERVIDORES SEGUROS,OID.2.5.4.97=VATES-Q2826004J,OU=Ceres,O=FNMT-RCM,C=ES +# Not Valid Before: Thu Dec 20 09:37:33 2018 +# Not Valid After : Sun Dec 20 09:37:33 2043 +# Fingerprint (SHA-256): 55:41:53:B1:3D:2C:F9:DD:B7:53:BF:BE:1A:4E:0A:E0:8D:0A:A4:18:70:58:FE:60:A2:B8:62:B2:E4:B8:7B:CB +# Fingerprint (SHA1): 62:FF:D9:9E:C0:65:0D:03:CE:75:93:D2:ED:3F:2D:32:C9:E3:E5:4A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "AC RAIZ FNMT-RCM SERVIDORES SEGUROS" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\142\377\331\236\300\145\015\003\316\165\223\322\355\077\055\062 +\311\343\345\112 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\031\066\234\122\003\057\322\321\273\043\314\335\036\022\125\273 +END +CKA_ISSUER MULTILINE_OCTAL +\060\170\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\021\060\017\006\003\125\004\012\014\010\106\116\115\124\055\122 +\103\115\061\016\060\014\006\003\125\004\013\014\005\103\145\162 +\145\163\061\030\060\026\006\003\125\004\141\014\017\126\101\124 +\105\123\055\121\062\070\062\066\060\060\064\112\061\054\060\052 +\006\003\125\004\003\014\043\101\103\040\122\101\111\132\040\106 +\116\115\124\055\122\103\115\040\123\105\122\126\111\104\117\122 +\105\123\040\123\105\107\125\122\117\123 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\142\366\062\154\345\304\343\150\134\033\142\335\234\056 +\235\225 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GlobalSign Secure Mail Root R45" +# +# Issuer: CN=GlobalSign Secure Mail Root R45,O=GlobalSign nv-sa,C=BE +# Serial Number:76:53:fe:a8:4c:50:ab:9f:8d:32:b5:1d:03:8f:57:dc +# Subject: CN=GlobalSign Secure Mail Root R45,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Wed Mar 18 00:00:00 2020 +# Not Valid After : Sat Mar 18 00:00:00 2045 +# Fingerprint (SHA-256): 31:9A:F0:A7:72:9E:6F:89:26:9C:13:1E:A6:A3:A1:6F:CD:86:38:9F:DC:AB:3C:47:A4:A6:75:C1:61:A3:F9:74 +# Fingerprint (SHA1): 76:18:D1:F3:80:24:3D:52:40:C6:11:6A:AD:57:77:09:7D:81:30:A0 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Secure Mail Root R45" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\122\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\050\060\046\006\003 +\125\004\003\023\037\107\154\157\142\141\154\123\151\147\156\040 +\123\145\143\165\162\145\040\115\141\151\154\040\122\157\157\164 +\040\122\064\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\122\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\050\060\046\006\003 +\125\004\003\023\037\107\154\157\142\141\154\123\151\147\156\040 +\123\145\143\165\162\145\040\115\141\151\154\040\122\157\157\164 +\040\122\064\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\123\376\250\114\120\253\237\215\062\265\035\003\217 +\127\334 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\160\060\202\003\130\240\003\002\001\002\002\020\166 +\123\376\250\114\120\253\237\215\062\265\035\003\217\127\334\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\122 +\061\013\060\011\006\003\125\004\006\023\002\102\105\061\031\060 +\027\006\003\125\004\012\023\020\107\154\157\142\141\154\123\151 +\147\156\040\156\166\055\163\141\061\050\060\046\006\003\125\004 +\003\023\037\107\154\157\142\141\154\123\151\147\156\040\123\145 +\143\165\162\145\040\115\141\151\154\040\122\157\157\164\040\122 +\064\065\060\036\027\015\062\060\060\063\061\070\060\060\060\060 +\060\060\132\027\015\064\065\060\063\061\070\060\060\060\060\060 +\060\132\060\122\061\013\060\011\006\003\125\004\006\023\002\102 +\105\061\031\060\027\006\003\125\004\012\023\020\107\154\157\142 +\141\154\123\151\147\156\040\156\166\055\163\141\061\050\060\046 +\006\003\125\004\003\023\037\107\154\157\142\141\154\123\151\147 +\156\040\123\145\143\165\162\145\040\115\141\151\154\040\122\157 +\157\164\040\122\064\065\060\202\002\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 +\002\012\002\202\002\001\000\334\171\314\155\006\371\155\273\340 +\126\004\154\177\340\165\314\055\005\111\350\113\334\124\354\133 +\167\225\162\277\177\142\235\205\251\212\044\120\137\123\345\333 +\164\157\244\051\133\023\052\011\255\232\305\057\302\367\166\073 +\241\105\106\252\103\346\044\376\053\260\157\062\160\031\106\132 +\171\046\057\374\075\175\137\144\313\127\314\141\141\250\331\225 +\156\343\225\240\156\177\107\022\030\326\357\003\311\373\212\372 +\232\275\202\025\251\125\167\113\021\117\131\340\153\303\161\363 +\014\330\124\325\201\150\076\023\271\025\056\207\212\074\104\047 +\066\142\044\156\370\054\005\162\060\141\275\102\221\043\304\235 +\045\247\331\124\232\024\243\061\255\200\171\014\247\143\154\230 +\243\254\127\107\063\037\145\226\341\320\322\065\332\371\161\367 +\241\246\045\265\101\135\337\076\140\330\321\366\237\245\362\270 +\314\023\252\217\371\262\156\341\203\055\223\335\076\205\032\335 +\350\261\134\046\001\313\111\205\374\374\322\324\177\205\142\206 +\164\371\313\354\065\042\242\014\060\217\073\253\171\353\126\362 +\372\102\363\355\371\037\105\211\100\051\255\352\222\164\352\122 +\375\126\264\053\332\242\355\165\302\156\253\316\122\220\113\366 +\336\360\111\217\232\110\324\210\031\155\105\346\314\214\271\335 +\144\140\140\002\100\370\271\317\274\130\353\075\205\271\306\012 +\323\234\007\146\217\307\030\071\043\106\341\074\036\243\057\120 +\141\222\013\075\053\154\361\243\107\070\127\221\253\015\217\306 +\235\115\004\322\046\122\134\345\245\375\052\055\026\052\001\151 +\347\251\175\341\066\267\261\052\305\331\261\215\275\271\213\316 +\314\213\241\076\013\110\315\120\225\064\304\330\010\131\330\153 +\046\364\276\365\324\042\027\000\127\311\256\233\004\060\063\237 +\013\373\337\126\242\311\156\124\166\332\261\227\142\047\131\017 +\021\212\042\033\144\226\077\250\361\267\044\112\215\074\123\174 +\155\203\166\075\262\046\110\163\365\104\026\001\055\011\052\216 +\026\226\120\320\163\006\135\273\042\110\202\114\012\106\132\077 +\200\377\134\362\362\232\254\054\010\340\326\352\360\022\070\201 +\117\246\020\355\106\253\314\026\234\013\317\144\246\231\002\205 +\104\147\106\255\375\115\347\002\003\001\000\001\243\102\060\100 +\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\206 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\035\006\003\125\035\016\004\026\004\024\240\223\025\050 +\156\356\217\010\262\065\306\236\142\171\164\247\261\016\053\173 +\060\015\006\011\052\206\110\206\367\015\001\001\014\005\000\003 +\202\002\001\000\105\012\370\321\134\254\142\201\320\004\327\266 +\377\127\121\211\013\014\313\336\044\145\067\373\253\236\355\146 +\364\352\014\031\151\211\270\031\261\060\126\264\331\366\367\276 +\306\256\227\313\105\366\021\214\072\060\144\114\301\237\131\300 +\106\102\010\006\107\144\027\170\340\225\007\006\326\214\242\254 +\251\331\077\323\173\126\117\374\304\207\050\337\266\053\026\043 +\300\237\037\133\343\326\104\136\042\117\043\004\214\065\026\265 +\171\007\206\134\057\227\342\366\010\144\246\334\333\250\212\343 +\244\173\167\015\321\051\223\050\040\264\123\243\113\116\137\336 +\301\366\165\043\374\037\074\170\117\160\061\170\057\242\065\124 +\161\004\254\310\304\155\303\366\221\261\376\315\356\104\156\201 +\366\100\305\076\052\001\277\253\114\261\003\077\015\021\344\017 +\322\044\343\042\210\233\237\137\107\075\121\111\340\011\067\176 +\027\041\061\166\267\147\161\110\050\113\045\327\020\350\237\141 +\131\026\305\076\062\116\037\014\316\243\314\017\344\307\021\007 +\042\057\070\010\335\133\227\353\102\154\131\232\232\356\172\320 +\235\337\305\333\011\103\056\012\252\031\075\153\350\152\060\172 +\127\346\277\263\152\071\251\217\343\361\117\145\150\266\275\237 +\050\217\241\026\132\011\120\072\062\056\035\057\104\021\102\246 +\000\346\061\230\377\055\241\017\346\244\140\126\317\171\327\262 +\116\327\260\372\156\014\127\043\307\316\037\245\261\114\155\031 +\111\236\016\177\160\217\161\077\130\050\237\165\335\141\340\072 +\267\071\266\356\227\324\065\121\373\213\111\140\310\074\146\256 +\227\356\215\046\131\127\273\170\360\172\120\060\011\260\140\252 +\237\116\334\311\076\036\072\334\142\223\063\260\072\124\164\157 +\054\061\105\321\153\021\062\152\150\166\366\075\366\152\023\136 +\044\230\347\352\035\232\317\170\202\007\140\367\115\020\323\201 +\232\105\215\236\257\233\334\200\307\103\262\225\150\244\303\016 +\350\012\107\025\277\124\063\334\001\347\325\246\036\163\330\172 +\262\277\057\255\343\125\060\236\337\016\101\274\340\021\365\241 +\014\250\042\341\343\000\243\116\160\174\222\343\004\321\172\102 +\212\165\220\131\343\233\321\114\242\144\275\163\171\233\157\362 +\263\301\366\074 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GlobalSign Secure Mail Root R45" +# Issuer: CN=GlobalSign Secure Mail Root R45,O=GlobalSign nv-sa,C=BE +# Serial Number:76:53:fe:a8:4c:50:ab:9f:8d:32:b5:1d:03:8f:57:dc +# Subject: CN=GlobalSign Secure Mail Root R45,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Wed Mar 18 00:00:00 2020 +# Not Valid After : Sat Mar 18 00:00:00 2045 +# Fingerprint (SHA-256): 31:9A:F0:A7:72:9E:6F:89:26:9C:13:1E:A6:A3:A1:6F:CD:86:38:9F:DC:AB:3C:47:A4:A6:75:C1:61:A3:F9:74 +# Fingerprint (SHA1): 76:18:D1:F3:80:24:3D:52:40:C6:11:6A:AD:57:77:09:7D:81:30:A0 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Secure Mail Root R45" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\166\030\321\363\200\044\075\122\100\306\021\152\255\127\167\011 +\175\201\060\240 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\223\304\173\263\016\124\107\034\103\054\213\276\160\205\142\051 +END +CKA_ISSUER MULTILINE_OCTAL +\060\122\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\050\060\046\006\003 +\125\004\003\023\037\107\154\157\142\141\154\123\151\147\156\040 +\123\145\143\165\162\145\040\115\141\151\154\040\122\157\157\164 +\040\122\064\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\123\376\250\114\120\253\237\215\062\265\035\003\217 +\127\334 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GlobalSign Secure Mail Root E45" +# +# Issuer: CN=GlobalSign Secure Mail Root E45,O=GlobalSign nv-sa,C=BE +# Serial Number:76:53:fe:aa:27:1d:95:46:5d:d6:f1:9e:e5:b8:90:0a +# Subject: CN=GlobalSign Secure Mail Root E45,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Wed Mar 18 00:00:00 2020 +# Not Valid After : Sat Mar 18 00:00:00 2045 +# Fingerprint (SHA-256): 5C:BF:6F:B8:1F:D4:17:EA:41:28:CD:6F:81:72:A3:C9:40:20:94:F7:4A:B2:ED:3A:06:B4:40:5D:04:F3:0B:19 +# Fingerprint (SHA1): 18:2E:1F:32:4F:89:DF:BE:FE:88:89:F0:93:C2:C4:A0:2B:67:75:21 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Secure Mail Root E45" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\122\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\050\060\046\006\003 +\125\004\003\023\037\107\154\157\142\141\154\123\151\147\156\040 +\123\145\143\165\162\145\040\115\141\151\154\040\122\157\157\164 +\040\105\064\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\122\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\050\060\046\006\003 +\125\004\003\023\037\107\154\157\142\141\154\123\151\147\156\040 +\123\145\143\165\162\145\040\115\141\151\154\040\122\157\157\164 +\040\105\064\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\123\376\252\047\035\225\106\135\326\361\236\345\270 +\220\012 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\041\060\202\001\247\240\003\002\001\002\002\020\166 +\123\376\252\047\035\225\106\135\326\361\236\345\270\220\012\060 +\012\006\010\052\206\110\316\075\004\003\003\060\122\061\013\060 +\011\006\003\125\004\006\023\002\102\105\061\031\060\027\006\003 +\125\004\012\023\020\107\154\157\142\141\154\123\151\147\156\040 +\156\166\055\163\141\061\050\060\046\006\003\125\004\003\023\037 +\107\154\157\142\141\154\123\151\147\156\040\123\145\143\165\162 +\145\040\115\141\151\154\040\122\157\157\164\040\105\064\065\060 +\036\027\015\062\060\060\063\061\070\060\060\060\060\060\060\132 +\027\015\064\065\060\063\061\070\060\060\060\060\060\060\132\060 +\122\061\013\060\011\006\003\125\004\006\023\002\102\105\061\031 +\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154\123 +\151\147\156\040\156\166\055\163\141\061\050\060\046\006\003\125 +\004\003\023\037\107\154\157\142\141\154\123\151\147\156\040\123 +\145\143\165\162\145\040\115\141\151\154\040\122\157\157\164\040 +\105\064\065\060\166\060\020\006\007\052\206\110\316\075\002\001 +\006\005\053\201\004\000\042\003\142\000\004\371\171\213\201\107 +\067\211\226\077\105\111\120\177\032\046\013\223\062\176\056\300 +\300\247\010\232\303\156\217\233\076\013\042\354\067\123\267\157 +\212\260\274\047\067\113\155\251\106\073\331\037\377\245\241\104 +\273\055\163\277\236\101\007\134\123\233\121\010\072\132\273\157 +\070\307\026\221\170\302\112\023\151\035\202\337\132\057\000\210 +\226\242\056\034\164\371\235\176\146\067\212\243\102\060\100\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060 +\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 +\060\035\006\003\125\035\016\004\026\004\024\337\023\136\213\137 +\302\100\002\375\126\267\224\114\266\036\325\246\261\024\226\060 +\012\006\010\052\206\110\316\075\004\003\003\003\150\000\060\145 +\002\060\023\260\276\327\161\040\076\344\253\234\316\066\022\175 +\137\114\037\052\265\151\105\063\137\323\055\132\262\344\210\307 +\336\012\066\102\062\171\235\246\153\272\341\371\104\052\173\212 +\303\022\002\061\000\240\146\034\116\207\235\207\311\355\231\114 +\033\012\356\055\140\303\067\307\035\315\265\162\260\331\306\357 +\274\362\377\077\360\122\335\010\347\252\144\171\303\344\151\127 +\221\057\244\313\174 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GlobalSign Secure Mail Root E45" +# Issuer: CN=GlobalSign Secure Mail Root E45,O=GlobalSign nv-sa,C=BE +# Serial Number:76:53:fe:aa:27:1d:95:46:5d:d6:f1:9e:e5:b8:90:0a +# Subject: CN=GlobalSign Secure Mail Root E45,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Wed Mar 18 00:00:00 2020 +# Not Valid After : Sat Mar 18 00:00:00 2045 +# Fingerprint (SHA-256): 5C:BF:6F:B8:1F:D4:17:EA:41:28:CD:6F:81:72:A3:C9:40:20:94:F7:4A:B2:ED:3A:06:B4:40:5D:04:F3:0B:19 +# Fingerprint (SHA1): 18:2E:1F:32:4F:89:DF:BE:FE:88:89:F0:93:C2:C4:A0:2B:67:75:21 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Secure Mail Root E45" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\030\056\037\062\117\211\337\276\376\210\211\360\223\302\304\240 +\053\147\165\041 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\305\374\306\056\237\364\122\055\052\250\244\272\373\147\062\377 +END +CKA_ISSUER MULTILINE_OCTAL +\060\122\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\050\060\046\006\003 +\125\004\003\023\037\107\154\157\142\141\154\123\151\147\156\040 +\123\145\143\165\162\145\040\115\141\151\154\040\122\157\157\164 +\040\105\064\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\123\376\252\047\035\225\106\135\326\361\236\345\270 +\220\012 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GlobalSign Root R46" +# +# Issuer: CN=GlobalSign Root R46,O=GlobalSign nv-sa,C=BE +# Serial Number:11:d2:bb:b9:d7:23:18:9e:40:5f:0a:9d:2d:d0:df:25:67:d1 +# Subject: CN=GlobalSign Root R46,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Wed Mar 20 00:00:00 2019 +# Not Valid After : Tue Mar 20 00:00:00 2046 +# Fingerprint (SHA-256): 4F:A3:12:6D:8D:3A:11:D1:C4:85:5A:4F:80:7C:BA:D6:CF:91:9D:3A:5A:88:B0:3B:EA:2C:63:72:D9:3C:40:C9 +# Fingerprint (SHA1): 53:A2:B0:4B:CA:6B:D6:45:E6:39:8A:8E:C4:0D:D2:BF:77:C3:A2:90 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root R46" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\106\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\034\060\032\006\003 +\125\004\003\023\023\107\154\157\142\141\154\123\151\147\156\040 +\122\157\157\164\040\122\064\066 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\106\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\034\060\032\006\003 +\125\004\003\023\023\107\154\157\142\141\154\123\151\147\156\040 +\122\157\157\164\040\122\064\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\022\021\322\273\271\327\043\030\236\100\137\012\235\055\320 +\337\045\147\321 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\132\060\202\003\102\240\003\002\001\002\002\022\021 +\322\273\271\327\043\030\236\100\137\012\235\055\320\337\045\147 +\321\060\015\006\011\052\206\110\206\367\015\001\001\014\005\000 +\060\106\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\034\060\032\006\003 +\125\004\003\023\023\107\154\157\142\141\154\123\151\147\156\040 +\122\157\157\164\040\122\064\066\060\036\027\015\061\071\060\063 +\062\060\060\060\060\060\060\060\132\027\015\064\066\060\063\062 +\060\060\060\060\060\060\060\132\060\106\061\013\060\011\006\003 +\125\004\006\023\002\102\105\061\031\060\027\006\003\125\004\012 +\023\020\107\154\157\142\141\154\123\151\147\156\040\156\166\055 +\163\141\061\034\060\032\006\003\125\004\003\023\023\107\154\157 +\142\141\154\123\151\147\156\040\122\157\157\164\040\122\064\066 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\254\254\164\062\350\263\145\345\272\355\103\046\035\246\211 +\015\105\272\051\210\262\244\035\143\335\323\301\054\011\127\211 +\071\241\125\351\147\064\167\014\156\344\125\035\122\045\322\023 +\153\136\341\035\251\267\175\211\062\137\015\236\237\054\172\143 +\140\100\037\246\260\266\170\217\231\124\226\010\130\256\344\006 +\274\142\005\002\026\277\257\250\043\003\266\224\017\274\156\154 +\302\313\325\246\273\014\351\366\301\002\373\041\336\146\335\027 +\253\164\102\357\360\164\057\045\364\352\153\125\133\220\333\235 +\337\136\207\012\100\373\255\031\153\373\367\312\140\210\336\332 +\301\217\326\256\325\177\324\074\203\356\327\026\114\203\105\063 +\153\047\320\206\320\034\055\153\363\253\175\361\205\251\365\050 +\322\255\357\363\204\113\034\207\374\023\243\072\162\242\132\021 +\053\326\047\161\047\355\201\055\155\146\201\222\207\264\033\130 +\172\314\077\012\372\106\117\115\170\134\370\053\110\343\004\204 +\313\135\366\264\152\263\145\374\102\236\121\046\043\040\313\075 +\024\371\201\355\145\026\000\117\032\144\227\146\010\317\214\173 +\343\053\300\235\371\024\362\033\361\126\152\026\277\054\205\205 +\315\170\070\232\353\102\152\002\064\030\203\027\116\224\126\370 +\266\202\265\363\226\335\075\363\276\177\040\167\076\173\031\043 +\153\054\324\162\163\103\127\175\340\370\327\151\117\027\066\004 +\371\300\220\140\067\105\336\346\014\330\164\215\256\234\242\155 +\164\135\102\276\006\365\331\144\156\002\020\254\211\260\114\073 +\007\115\100\176\044\305\212\230\202\171\216\244\247\202\040\215 +\043\372\047\161\311\337\306\101\164\240\115\366\221\026\334\106 +\214\137\051\143\061\131\161\014\330\157\302\266\062\175\373\346 +\135\123\246\176\025\374\273\165\174\135\354\370\366\027\034\354 +\307\153\031\313\363\173\360\053\007\245\331\154\171\124\166\154 +\235\034\246\156\016\351\171\014\250\043\152\243\337\033\060\061 +\237\261\124\173\376\152\313\146\252\334\145\320\242\236\112\232 +\007\041\153\201\217\333\304\131\372\336\042\300\004\234\343\252 +\133\066\223\350\075\275\172\241\235\013\166\261\013\307\235\375 +\317\230\250\006\302\370\052\243\241\203\240\267\045\162\245\002 +\343\002\003\001\000\001\243\102\060\100\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\206\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125 +\035\016\004\026\004\024\003\134\253\163\201\207\250\314\260\246 +\325\224\342\066\226\111\377\005\231\054\060\015\006\011\052\206 +\110\206\367\015\001\001\014\005\000\003\202\002\001\000\174\170 +\354\366\002\054\273\133\176\222\053\135\071\334\276\330\035\242 +\102\063\115\371\357\244\052\073\104\151\036\254\331\105\243\116 +\074\247\330\044\121\262\124\034\223\116\304\357\173\223\205\140 +\046\352\011\110\340\365\273\307\351\150\322\273\152\061\161\314 +\171\256\021\250\360\231\375\345\037\274\057\250\314\127\353\166 +\304\041\246\107\123\125\115\150\277\005\244\356\327\046\253\142 +\332\103\067\113\342\306\265\345\262\203\031\072\307\323\333\115 +\236\010\172\363\356\317\076\142\373\254\350\140\314\321\307\241 +\134\203\105\304\105\314\363\027\153\024\311\004\002\076\322\044 +\246\171\351\036\316\242\347\301\131\025\237\035\342\113\232\076 +\237\166\010\055\153\330\272\127\024\332\203\352\376\214\125\351 +\320\116\251\314\167\061\261\104\021\172\134\261\076\323\024\105 +\025\030\142\044\023\322\313\115\316\134\203\301\066\362\020\265 +\016\210\155\270\341\126\237\211\336\226\146\071\107\144\054\156 +\115\256\142\173\277\140\164\031\270\126\254\222\254\026\062\355 +\255\150\125\376\230\272\323\064\336\364\311\141\303\016\206\366 +\113\204\140\356\015\173\265\062\130\171\221\125\054\201\103\263 +\164\037\172\252\045\236\035\327\241\213\271\315\102\056\004\244 +\146\203\115\211\065\266\154\250\066\112\171\041\170\042\320\102 +\274\321\100\061\220\241\276\004\317\312\147\355\365\360\200\323 +\140\311\203\052\042\005\320\007\073\122\277\014\236\252\053\371 +\273\346\037\217\045\272\205\215\027\036\002\376\135\120\004\127 +\317\376\055\274\357\134\300\032\253\266\237\044\306\337\163\150 +\110\220\054\024\364\077\122\032\344\322\313\024\303\141\151\317 +\342\371\030\305\272\063\237\024\243\004\135\271\161\367\265\224 +\330\366\063\301\132\301\064\213\174\233\335\223\072\347\023\242 +\160\141\237\257\217\353\330\305\165\370\063\146\324\164\147\072 +\067\167\234\347\335\244\017\166\103\146\212\103\362\237\373\014 +\102\170\143\321\342\017\157\173\324\241\075\164\227\205\267\110 +\071\101\326\040\374\320\072\263\372\350\157\304\212\272\161\067 +\276\213\227\261\170\061\117\263\347\266\003\023\316\124\235\256 +\045\131\314\177\065\137\010\367\100\105\061\170\052\172 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GlobalSign Root R46" +# Issuer: CN=GlobalSign Root R46,O=GlobalSign nv-sa,C=BE +# Serial Number:11:d2:bb:b9:d7:23:18:9e:40:5f:0a:9d:2d:d0:df:25:67:d1 +# Subject: CN=GlobalSign Root R46,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Wed Mar 20 00:00:00 2019 +# Not Valid After : Tue Mar 20 00:00:00 2046 +# Fingerprint (SHA-256): 4F:A3:12:6D:8D:3A:11:D1:C4:85:5A:4F:80:7C:BA:D6:CF:91:9D:3A:5A:88:B0:3B:EA:2C:63:72:D9:3C:40:C9 +# Fingerprint (SHA1): 53:A2:B0:4B:CA:6B:D6:45:E6:39:8A:8E:C4:0D:D2:BF:77:C3:A2:90 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root R46" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\123\242\260\113\312\153\326\105\346\071\212\216\304\015\322\277 +\167\303\242\220 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\304\024\060\344\372\146\103\224\052\152\033\044\137\031\320\357 +END +CKA_ISSUER MULTILINE_OCTAL +\060\106\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\034\060\032\006\003 +\125\004\003\023\023\107\154\157\142\141\154\123\151\147\156\040 +\122\157\157\164\040\122\064\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\022\021\322\273\271\327\043\030\236\100\137\012\235\055\320 +\337\045\147\321 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GlobalSign Root E46" +# +# Issuer: CN=GlobalSign Root E46,O=GlobalSign nv-sa,C=BE +# Serial Number:11:d2:bb:ba:33:6e:d4:bc:e6:24:68:c5:0d:84:1d:98:e8:43 +# Subject: CN=GlobalSign Root E46,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Wed Mar 20 00:00:00 2019 +# Not Valid After : Tue Mar 20 00:00:00 2046 +# Fingerprint (SHA-256): CB:B9:C4:4D:84:B8:04:3E:10:50:EA:31:A6:9F:51:49:55:D7:BF:D2:E2:C6:B4:93:01:01:9A:D6:1D:9F:50:58 +# Fingerprint (SHA1): 39:B4:6C:D5:FE:80:06:EB:E2:2F:4A:BB:08:33:A0:AF:DB:B9:DD:84 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root E46" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\106\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\034\060\032\006\003 +\125\004\003\023\023\107\154\157\142\141\154\123\151\147\156\040 +\122\157\157\164\040\105\064\066 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\106\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\034\060\032\006\003 +\125\004\003\023\023\107\154\157\142\141\154\123\151\147\156\040 +\122\157\157\164\040\105\064\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\022\021\322\273\272\063\156\324\274\346\044\150\305\015\204 +\035\230\350\103 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\013\060\202\001\221\240\003\002\001\002\002\022\021 +\322\273\272\063\156\324\274\346\044\150\305\015\204\035\230\350 +\103\060\012\006\010\052\206\110\316\075\004\003\003\060\106\061 +\013\060\011\006\003\125\004\006\023\002\102\105\061\031\060\027 +\006\003\125\004\012\023\020\107\154\157\142\141\154\123\151\147 +\156\040\156\166\055\163\141\061\034\060\032\006\003\125\004\003 +\023\023\107\154\157\142\141\154\123\151\147\156\040\122\157\157 +\164\040\105\064\066\060\036\027\015\061\071\060\063\062\060\060 +\060\060\060\060\060\132\027\015\064\066\060\063\062\060\060\060 +\060\060\060\060\132\060\106\061\013\060\011\006\003\125\004\006 +\023\002\102\105\061\031\060\027\006\003\125\004\012\023\020\107 +\154\157\142\141\154\123\151\147\156\040\156\166\055\163\141\061 +\034\060\032\006\003\125\004\003\023\023\107\154\157\142\141\154 +\123\151\147\156\040\122\157\157\164\040\105\064\066\060\166\060 +\020\006\007\052\206\110\316\075\002\001\006\005\053\201\004\000 +\042\003\142\000\004\234\016\261\317\267\350\236\122\167\165\064 +\372\245\106\247\255\062\031\062\264\007\251\047\312\224\273\014 +\322\012\020\307\332\211\260\227\014\160\023\011\001\216\330\352 +\107\352\276\262\200\053\315\374\050\015\333\254\274\244\206\067 +\355\160\010\000\165\352\223\013\173\056\122\234\043\150\043\006 +\103\354\222\057\123\204\333\373\107\024\007\350\137\224\147\135 +\311\172\201\074\040\243\102\060\100\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\206\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125\035 +\016\004\026\004\024\061\012\220\217\266\306\235\322\104\113\200 +\265\242\346\037\261\022\117\033\225\060\012\006\010\052\206\110 +\316\075\004\003\003\003\150\000\060\145\002\061\000\337\124\220 +\355\233\357\213\224\002\223\027\202\231\276\263\236\054\366\013 +\221\214\237\112\024\261\366\144\274\273\150\121\023\014\003\367 +\025\213\204\140\271\213\377\122\216\347\214\274\034\002\060\074 +\371\021\324\214\116\300\301\141\302\025\114\252\253\035\013\061 +\137\073\034\342\000\227\104\061\346\376\163\226\057\332\226\323 +\376\010\007\263\064\211\274\005\237\367\036\206\356\213\160 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GlobalSign Root E46" +# Issuer: CN=GlobalSign Root E46,O=GlobalSign nv-sa,C=BE +# Serial Number:11:d2:bb:ba:33:6e:d4:bc:e6:24:68:c5:0d:84:1d:98:e8:43 +# Subject: CN=GlobalSign Root E46,O=GlobalSign nv-sa,C=BE +# Not Valid Before: Wed Mar 20 00:00:00 2019 +# Not Valid After : Tue Mar 20 00:00:00 2046 +# Fingerprint (SHA-256): CB:B9:C4:4D:84:B8:04:3E:10:50:EA:31:A6:9F:51:49:55:D7:BF:D2:E2:C6:B4:93:01:01:9A:D6:1D:9F:50:58 +# Fingerprint (SHA1): 39:B4:6C:D5:FE:80:06:EB:E2:2F:4A:BB:08:33:A0:AF:DB:B9:DD:84 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign Root E46" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\071\264\154\325\376\200\006\353\342\057\112\273\010\063\240\257 +\333\271\335\204 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\265\270\146\355\336\010\203\343\311\342\001\064\006\254\121\157 +END +CKA_ISSUER MULTILINE_OCTAL +\060\106\061\013\060\011\006\003\125\004\006\023\002\102\105\061 +\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154 +\123\151\147\156\040\156\166\055\163\141\061\034\060\032\006\003 +\125\004\003\023\023\107\154\157\142\141\154\123\151\147\156\040 +\122\157\157\164\040\105\064\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\022\021\322\273\272\063\156\324\274\346\044\150\305\015\204 +\035\230\350\103 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GLOBALTRUST 2020" +# +# Issuer: CN=GLOBALTRUST 2020,O=e-commerce monitoring GmbH,C=AT +# Serial Number:5a:4b:bd:5a:fb:4f:8a:5b:fa:65:e5 +# Subject: CN=GLOBALTRUST 2020,O=e-commerce monitoring GmbH,C=AT +# Not Valid Before: Mon Feb 10 00:00:00 2020 +# Not Valid After : Sun Jun 10 00:00:00 2040 +# Fingerprint (SHA-256): 9A:29:6A:51:82:D1:D4:51:A2:E3:7F:43:9B:74:DA:AF:A2:67:52:33:29:F9:0F:9A:0D:20:07:C3:34:E2:3C:9A +# Fingerprint (SHA1): D0:67:C1:13:51:01:0C:AA:D0:C7:6A:65:37:31:16:26:4F:53:71:A2 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GLOBALTRUST 2020" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\101\124\061 +\043\060\041\006\003\125\004\012\023\032\145\055\143\157\155\155 +\145\162\143\145\040\155\157\156\151\164\157\162\151\156\147\040 +\107\155\142\110\061\031\060\027\006\003\125\004\003\023\020\107 +\114\117\102\101\114\124\122\125\123\124\040\062\060\062\060 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\101\124\061 +\043\060\041\006\003\125\004\012\023\032\145\055\143\157\155\155 +\145\162\143\145\040\155\157\156\151\164\157\162\151\156\147\040 +\107\155\142\110\061\031\060\027\006\003\125\004\003\023\020\107 +\114\117\102\101\114\124\122\125\123\124\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\013\132\113\275\132\373\117\212\133\372\145\345 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\202\060\202\003\152\240\003\002\001\002\002\013\132 +\113\275\132\373\117\212\133\372\145\345\060\015\006\011\052\206 +\110\206\367\015\001\001\013\005\000\060\115\061\013\060\011\006 +\003\125\004\006\023\002\101\124\061\043\060\041\006\003\125\004 +\012\023\032\145\055\143\157\155\155\145\162\143\145\040\155\157 +\156\151\164\157\162\151\156\147\040\107\155\142\110\061\031\060 +\027\006\003\125\004\003\023\020\107\114\117\102\101\114\124\122 +\125\123\124\040\062\060\062\060\060\036\027\015\062\060\060\062 +\061\060\060\060\060\060\060\060\132\027\015\064\060\060\066\061 +\060\060\060\060\060\060\060\132\060\115\061\013\060\011\006\003 +\125\004\006\023\002\101\124\061\043\060\041\006\003\125\004\012 +\023\032\145\055\143\157\155\155\145\162\143\145\040\155\157\156 +\151\164\157\162\151\156\147\040\107\155\142\110\061\031\060\027 +\006\003\125\004\003\023\020\107\114\117\102\101\114\124\122\125 +\123\124\040\062\060\062\060\060\202\002\042\060\015\006\011\052 +\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060 +\202\002\012\002\202\002\001\000\256\056\126\255\033\034\357\366 +\225\217\240\167\033\053\323\143\217\204\115\105\242\017\237\133 +\105\253\131\173\121\064\371\354\213\212\170\305\335\153\257\275 +\304\337\223\105\036\277\221\070\013\256\016\026\347\101\163\370 +\333\273\321\270\121\340\313\203\073\163\070\156\167\212\017\131 +\143\046\315\247\052\316\124\373\270\342\300\174\107\316\140\174 +\077\262\163\362\300\031\266\212\222\207\065\015\220\050\242\344 +\025\004\143\076\272\257\356\174\136\314\246\213\120\262\070\367 +\101\143\312\316\377\151\217\150\016\225\066\345\314\271\214\011 +\312\113\335\061\220\226\310\314\037\375\126\226\064\333\216\034 +\352\054\276\205\056\143\335\252\251\225\323\375\051\225\023\360 +\310\230\223\331\055\026\107\220\021\203\242\072\042\242\050\127 +\242\353\376\300\214\050\240\246\175\347\052\102\073\202\200\143 +\245\143\037\031\314\174\262\146\250\302\323\155\067\157\342\176 +\006\121\331\105\204\037\022\316\044\122\144\205\013\110\200\116 +\207\261\042\042\060\252\353\256\276\340\002\340\100\350\260\102 +\200\003\121\252\264\176\252\104\327\103\141\363\242\153\026\211 +\111\244\243\244\053\212\002\304\170\364\150\212\301\344\172\066 +\261\157\033\226\033\167\111\215\324\311\006\162\217\317\123\343 +\334\027\205\040\112\334\230\047\323\221\046\053\107\036\151\007 +\257\336\242\344\344\324\153\013\263\136\174\324\044\200\107\051 +\151\073\156\350\254\375\100\353\330\355\161\161\053\362\350\130 +\035\353\101\227\042\305\037\324\071\320\047\217\207\343\030\364 +\340\251\106\015\365\164\072\202\056\320\156\054\221\243\061\134 +\073\106\352\173\004\020\126\136\200\035\365\245\145\350\202\374 +\342\007\214\142\105\365\040\336\106\160\206\241\274\223\323\036 +\164\246\154\260\054\367\003\014\210\014\313\324\162\123\206\274 +\140\106\363\230\152\302\361\277\103\371\160\040\167\312\067\101 +\171\125\122\143\215\133\022\237\305\150\304\210\235\254\362\060 +\253\267\243\061\227\147\255\217\027\017\154\307\163\355\044\224 +\153\310\203\232\320\232\067\111\004\253\261\026\310\154\111\111 +\055\253\241\320\214\222\362\101\112\171\041\045\333\143\327\266 +\234\247\176\102\151\373\072\143\002\003\001\000\001\243\143\060 +\141\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\006\060\035\006\003\125\035\016\004\026\004\024\334\056\037 +\321\141\067\171\344\253\325\325\263\022\161\150\075\152\150\234 +\042\060\037\006\003\125\035\043\004\030\060\026\200\024\334\056 +\037\321\141\067\171\344\253\325\325\263\022\161\150\075\152\150 +\234\042\060\015\006\011\052\206\110\206\367\015\001\001\013\005 +\000\003\202\002\001\000\221\360\102\002\150\100\356\303\150\300 +\124\057\337\354\142\303\303\236\212\240\061\050\252\203\216\244 +\126\226\022\020\206\126\272\227\162\322\124\060\174\255\031\325 +\035\150\157\373\024\102\330\215\016\363\265\321\245\343\002\102 +\136\334\350\106\130\007\065\002\060\340\274\164\112\301\103\052 +\377\333\032\320\260\257\154\303\375\313\263\365\177\155\003\056 +\131\126\235\055\055\065\214\262\326\103\027\054\222\012\313\135 +\350\214\017\113\160\103\320\202\377\250\314\277\244\224\300\276 +\207\275\212\343\223\173\306\217\233\026\235\047\145\274\172\305 +\102\202\154\134\007\320\251\301\210\140\104\351\230\205\026\137 +\370\217\312\001\020\316\045\303\371\140\033\240\305\227\303\323 +\054\210\061\242\275\060\354\320\320\300\022\361\301\071\343\345 +\365\370\326\112\335\064\315\373\157\301\117\343\000\213\126\342 +\222\367\050\262\102\167\162\043\147\307\077\021\025\262\304\003 +\005\276\273\021\173\012\277\250\156\347\377\130\103\317\233\147 +\240\200\007\266\035\312\255\155\352\101\021\176\055\164\223\373 +\302\274\276\121\104\305\357\150\045\047\200\343\310\240\324\022 +\354\331\245\067\035\067\174\264\221\312\332\324\261\226\201\357 +\150\134\166\020\111\257\176\245\067\200\261\034\122\275\063\201 +\114\217\371\335\145\331\024\315\212\045\130\364\342\305\203\245 +\011\220\324\154\024\143\265\100\337\353\300\374\304\130\176\015 +\024\026\207\124\047\156\126\344\160\204\270\154\062\022\176\202 +\061\103\276\327\335\174\241\255\256\326\253\040\022\357\012\303 +\020\214\111\226\065\334\013\165\136\261\117\325\117\064\016\021 +\040\007\165\103\105\351\243\021\332\254\243\231\302\266\171\047 +\342\271\357\310\342\366\065\051\172\164\372\305\177\202\005\142 +\246\012\352\150\262\171\107\006\156\362\127\250\025\063\306\367 +\170\112\075\102\173\153\176\376\367\106\352\321\353\216\357\210 +\150\133\350\301\331\161\176\375\144\357\377\147\107\210\130\045 +\057\076\206\007\275\373\250\345\202\250\254\245\323\151\103\315 +\061\210\111\204\123\222\300\261\071\033\071\203\001\060\304\362 +\251\372\320\003\275\162\067\140\126\037\066\174\275\071\221\365 +\155\015\277\173\327\222 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +# For Server Distrust After: Sun Jun 30 00:00:00 2024 +CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\060\066\063\060\060\060\060\060\060\060\132 +END +# For Email Distrust After: Sun Jun 30 00:00:00 2024 +CKA_NSS_EMAIL_DISTRUST_AFTER MULTILINE_OCTAL +\062\064\060\066\063\060\060\060\060\060\060\060\132 +END + +# Trust for "GLOBALTRUST 2020" +# Issuer: CN=GLOBALTRUST 2020,O=e-commerce monitoring GmbH,C=AT +# Serial Number:5a:4b:bd:5a:fb:4f:8a:5b:fa:65:e5 +# Subject: CN=GLOBALTRUST 2020,O=e-commerce monitoring GmbH,C=AT +# Not Valid Before: Mon Feb 10 00:00:00 2020 +# Not Valid After : Sun Jun 10 00:00:00 2040 +# Fingerprint (SHA-256): 9A:29:6A:51:82:D1:D4:51:A2:E3:7F:43:9B:74:DA:AF:A2:67:52:33:29:F9:0F:9A:0D:20:07:C3:34:E2:3C:9A +# Fingerprint (SHA1): D0:67:C1:13:51:01:0C:AA:D0:C7:6A:65:37:31:16:26:4F:53:71:A2 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GLOBALTRUST 2020" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\320\147\301\023\121\001\014\252\320\307\152\145\067\061\026\046 +\117\123\161\242 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\212\307\157\313\155\343\314\242\361\174\203\372\016\170\327\350 +END +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\101\124\061 +\043\060\041\006\003\125\004\012\023\032\145\055\143\157\155\155 +\145\162\143\145\040\155\157\156\151\164\157\162\151\156\147\040 +\107\155\142\110\061\031\060\027\006\003\125\004\003\023\020\107 +\114\117\102\101\114\124\122\125\123\124\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\013\132\113\275\132\373\117\212\133\372\145\345 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "ANF Secure Server Root CA" +# +# Issuer: CN=ANF Secure Server Root CA,OU=ANF CA Raiz,O=ANF Autoridad de Certificacion,C=ES,serialNumber=G63287510 +# Serial Number:0d:d3:e3:bc:6c:f9:6b:b1 +# Subject: CN=ANF Secure Server Root CA,OU=ANF CA Raiz,O=ANF Autoridad de Certificacion,C=ES,serialNumber=G63287510 +# Not Valid Before: Wed Sep 04 10:00:38 2019 +# Not Valid After : Tue Aug 30 10:00:38 2039 +# Fingerprint (SHA-256): FB:8F:EC:75:91:69:B9:10:6B:1E:51:16:44:C6:18:C5:13:04:37:3F:6C:06:43:08:8D:8B:EF:FD:1B:99:75:99 +# Fingerprint (SHA1): 5B:6E:68:D0:CC:15:B6:A0:5F:1E:C1:5F:AE:02:FC:6B:2F:5D:6F:74 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ANF Secure Server Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\201\204\061\022\060\020\006\003\125\004\005\023\011\107\066 +\063\062\070\067\065\061\060\061\013\060\011\006\003\125\004\006 +\023\002\105\123\061\047\060\045\006\003\125\004\012\023\036\101 +\116\106\040\101\165\164\157\162\151\144\141\144\040\144\145\040 +\103\145\162\164\151\146\151\143\141\143\151\157\156\061\024\060 +\022\006\003\125\004\013\023\013\101\116\106\040\103\101\040\122 +\141\151\172\061\042\060\040\006\003\125\004\003\023\031\101\116 +\106\040\123\145\143\165\162\145\040\123\145\162\166\145\162\040 +\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\201\204\061\022\060\020\006\003\125\004\005\023\011\107\066 +\063\062\070\067\065\061\060\061\013\060\011\006\003\125\004\006 +\023\002\105\123\061\047\060\045\006\003\125\004\012\023\036\101 +\116\106\040\101\165\164\157\162\151\144\141\144\040\144\145\040 +\103\145\162\164\151\146\151\143\141\143\151\157\156\061\024\060 +\022\006\003\125\004\013\023\013\101\116\106\040\103\101\040\122 +\141\151\172\061\042\060\040\006\003\125\004\003\023\031\101\116 +\106\040\123\145\143\165\162\145\040\123\145\162\166\145\162\040 +\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\015\323\343\274\154\371\153\261 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\357\060\202\003\327\240\003\002\001\002\002\010\015 +\323\343\274\154\371\153\261\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\060\201\204\061\022\060\020\006\003\125 +\004\005\023\011\107\066\063\062\070\067\065\061\060\061\013\060 +\011\006\003\125\004\006\023\002\105\123\061\047\060\045\006\003 +\125\004\012\023\036\101\116\106\040\101\165\164\157\162\151\144 +\141\144\040\144\145\040\103\145\162\164\151\146\151\143\141\143 +\151\157\156\061\024\060\022\006\003\125\004\013\023\013\101\116 +\106\040\103\101\040\122\141\151\172\061\042\060\040\006\003\125 +\004\003\023\031\101\116\106\040\123\145\143\165\162\145\040\123 +\145\162\166\145\162\040\122\157\157\164\040\103\101\060\036\027 +\015\061\071\060\071\060\064\061\060\060\060\063\070\132\027\015 +\063\071\060\070\063\060\061\060\060\060\063\070\132\060\201\204 +\061\022\060\020\006\003\125\004\005\023\011\107\066\063\062\070 +\067\065\061\060\061\013\060\011\006\003\125\004\006\023\002\105 +\123\061\047\060\045\006\003\125\004\012\023\036\101\116\106\040 +\101\165\164\157\162\151\144\141\144\040\144\145\040\103\145\162 +\164\151\146\151\143\141\143\151\157\156\061\024\060\022\006\003 +\125\004\013\023\013\101\116\106\040\103\101\040\122\141\151\172 +\061\042\060\040\006\003\125\004\003\023\031\101\116\106\040\123 +\145\143\165\162\145\040\123\145\162\166\145\162\040\122\157\157 +\164\040\103\101\060\202\002\042\060\015\006\011\052\206\110\206 +\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002\012 +\002\202\002\001\000\333\353\153\053\346\144\124\225\202\220\243 +\162\244\031\001\235\234\013\201\137\163\111\272\247\254\363\004 +\116\173\226\013\354\021\340\133\246\034\316\033\322\015\203\034 +\053\270\236\035\176\105\062\140\017\007\351\167\130\176\237\152 +\310\141\116\266\046\301\114\215\377\114\357\064\262\037\145\330 +\271\170\365\255\251\161\271\357\117\130\035\245\336\164\040\227 +\241\355\150\114\336\222\027\113\274\253\377\145\232\236\373\107 +\331\127\162\363\011\241\256\166\104\023\156\234\055\104\071\274 +\371\307\073\244\130\075\101\275\264\302\111\243\310\015\322\227 +\057\007\145\122\000\247\156\310\257\150\354\364\024\226\266\127 +\037\126\303\071\237\053\155\344\363\076\366\065\144\332\014\034 +\241\204\113\057\113\113\342\054\044\235\155\223\100\353\265\043 +\216\062\312\157\105\323\250\211\173\036\317\036\372\133\103\213 +\315\315\250\017\152\312\014\136\271\236\107\217\360\331\266\012 +\013\130\145\027\063\271\043\344\167\031\175\313\112\056\222\173 +\117\057\020\167\261\215\057\150\234\142\314\340\120\370\354\221 +\247\124\114\127\011\325\166\143\305\350\145\036\356\155\152\317 +\011\235\372\174\117\255\140\010\375\126\231\017\025\054\173\251 +\200\253\214\141\217\112\007\166\102\336\075\364\335\262\044\063 +\133\270\265\243\104\311\254\177\167\074\035\043\354\202\251\246 +\342\310\006\114\002\376\254\134\231\231\013\057\020\212\246\364 +\177\325\207\164\015\131\111\105\366\360\161\134\071\051\326\277 +\112\043\213\365\137\001\143\322\207\163\050\265\113\012\365\370 +\253\202\054\176\163\045\062\035\013\143\012\027\201\000\377\266 +\166\136\347\264\261\100\312\041\273\325\200\121\345\110\122\147 +\054\322\141\211\007\015\017\316\102\167\300\104\163\234\104\120 +\240\333\020\012\055\225\034\201\257\344\034\345\024\036\361\066 +\101\001\002\057\175\163\247\336\102\314\114\351\211\015\126\367 +\237\221\324\003\306\154\311\217\333\330\034\340\100\230\135\146 +\231\230\200\156\055\377\001\305\316\313\106\037\254\002\306\103 +\346\256\242\204\074\305\116\036\075\155\311\024\114\343\056\101 +\273\312\071\277\066\074\052\031\252\101\207\116\245\316\113\062 +\171\335\220\111\177\002\003\001\000\001\243\143\060\141\060\037 +\006\003\125\035\043\004\030\060\026\200\024\234\137\320\154\143 +\243\137\223\312\223\230\010\255\214\207\245\054\134\301\067\060 +\035\006\003\125\035\016\004\026\004\024\234\137\320\154\143\243 +\137\223\312\223\230\010\255\214\207\245\054\134\301\067\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003\202 +\002\001\000\116\036\271\212\306\240\230\077\156\303\151\300\152 +\134\111\122\254\313\053\135\170\070\301\325\124\204\237\223\360 +\207\031\075\054\146\211\353\015\102\374\314\360\165\205\077\213 +\364\200\135\171\345\027\147\275\065\202\342\362\074\216\175\133 +\066\313\132\200\000\051\362\316\053\054\361\217\252\155\005\223 +\154\162\307\126\353\337\120\043\050\345\105\020\075\350\147\243 +\257\016\125\017\220\011\142\357\113\131\242\366\123\361\300\065 +\344\057\301\044\275\171\057\116\040\042\073\375\032\040\260\244 +\016\054\160\355\164\077\270\023\225\006\121\310\350\207\046\312 +\244\133\152\026\041\222\335\163\140\236\020\030\336\074\201\352 +\350\030\303\174\211\362\213\120\076\275\021\342\025\003\250\066 +\175\063\001\154\110\025\327\210\220\231\004\305\314\346\007\364 +\274\364\220\355\023\342\352\213\303\217\243\063\017\301\051\114 +\023\116\332\025\126\161\163\162\202\120\366\232\063\174\242\261 +\250\032\064\164\145\134\316\321\353\253\123\340\032\200\330\352 +\072\111\344\046\060\233\345\034\212\250\251\025\062\206\231\222 +\012\020\043\126\022\340\366\316\114\342\273\276\333\215\222\163 +\001\146\057\142\076\262\162\047\105\066\355\115\126\343\227\231 +\377\072\065\076\245\124\112\122\131\113\140\333\356\376\170\021 +\177\112\334\024\171\140\266\153\144\003\333\025\203\341\242\276 +\366\043\227\120\360\011\063\066\247\161\226\045\363\271\102\175 +\333\070\077\054\130\254\350\102\341\016\330\323\073\114\056\202 +\351\203\056\153\061\331\335\107\206\117\155\227\221\056\117\342 +\050\161\065\026\321\362\163\376\045\053\007\107\044\143\047\310 +\370\366\331\153\374\022\061\126\010\300\123\102\257\234\320\063 +\176\374\006\360\061\104\003\024\361\130\352\362\152\015\251\021 +\262\203\276\305\032\277\007\352\131\334\243\210\065\357\234\166 +\062\074\115\006\042\316\025\345\335\236\330\217\332\336\322\304 +\071\345\027\201\317\070\107\353\177\210\155\131\033\337\237\102 +\024\256\176\317\250\260\146\145\332\067\257\237\252\075\352\050 +\266\336\325\061\130\026\202\133\352\273\031\165\002\163\032\312 +\110\032\041\223\220\012\216\223\204\247\175\073\043\030\222\211 +\240\215\254 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "ANF Secure Server Root CA" +# Issuer: CN=ANF Secure Server Root CA,OU=ANF CA Raiz,O=ANF Autoridad de Certificacion,C=ES,serialNumber=G63287510 +# Serial Number:0d:d3:e3:bc:6c:f9:6b:b1 +# Subject: CN=ANF Secure Server Root CA,OU=ANF CA Raiz,O=ANF Autoridad de Certificacion,C=ES,serialNumber=G63287510 +# Not Valid Before: Wed Sep 04 10:00:38 2019 +# Not Valid After : Tue Aug 30 10:00:38 2039 +# Fingerprint (SHA-256): FB:8F:EC:75:91:69:B9:10:6B:1E:51:16:44:C6:18:C5:13:04:37:3F:6C:06:43:08:8D:8B:EF:FD:1B:99:75:99 +# Fingerprint (SHA1): 5B:6E:68:D0:CC:15:B6:A0:5F:1E:C1:5F:AE:02:FC:6B:2F:5D:6F:74 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ANF Secure Server Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\133\156\150\320\314\025\266\240\137\036\301\137\256\002\374\153 +\057\135\157\164 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\046\246\104\132\331\257\116\057\262\035\266\145\260\116\350\226 +END +CKA_ISSUER MULTILINE_OCTAL +\060\201\204\061\022\060\020\006\003\125\004\005\023\011\107\066 +\063\062\070\067\065\061\060\061\013\060\011\006\003\125\004\006 +\023\002\105\123\061\047\060\045\006\003\125\004\012\023\036\101 +\116\106\040\101\165\164\157\162\151\144\141\144\040\144\145\040 +\103\145\162\164\151\146\151\143\141\143\151\157\156\061\024\060 +\022\006\003\125\004\013\023\013\101\116\106\040\103\101\040\122 +\141\151\172\061\042\060\040\006\003\125\004\003\023\031\101\116 +\106\040\123\145\143\165\162\145\040\123\145\162\166\145\162\040 +\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\015\323\343\274\154\371\153\261 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certum EC-384 CA" +# +# Issuer: CN=Certum EC-384 CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL +# Serial Number:78:8f:27:5c:81:12:52:20:a5:04:d0:2d:dd:ba:73:f4 +# Subject: CN=Certum EC-384 CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL +# Not Valid Before: Mon Mar 26 07:24:54 2018 +# Not Valid After : Thu Mar 26 07:24:54 2043 +# Fingerprint (SHA-256): 6B:32:80:85:62:53:18:AA:50:D1:73:C9:8D:8B:DA:09:D5:7E:27:41:3D:11:4C:F7:87:A0:F5:D0:6C:03:0C:F6 +# Fingerprint (SHA1): F3:3E:78:3C:AC:DF:F4:A2:CC:AC:67:55:69:56:D7:E5:16:3C:E1:ED +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum EC-384 CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\164\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157 +\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056 +\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162 +\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\061\031\060\027\006 +\003\125\004\003\023\020\103\145\162\164\165\155\040\105\103\055 +\063\070\064\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\164\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157 +\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056 +\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162 +\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\061\031\060\027\006 +\003\125\004\003\023\020\103\145\162\164\165\155\040\105\103\055 +\063\070\064\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\170\217\047\134\201\022\122\040\245\004\320\055\335\272 +\163\364 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\145\060\202\001\353\240\003\002\001\002\002\020\170 +\217\047\134\201\022\122\040\245\004\320\055\335\272\163\364\060 +\012\006\010\052\206\110\316\075\004\003\003\060\164\061\013\060 +\011\006\003\125\004\006\023\002\120\114\061\041\060\037\006\003 +\125\004\012\023\030\101\163\163\145\143\157\040\104\141\164\141 +\040\123\171\163\164\145\155\163\040\123\056\101\056\061\047\060 +\045\006\003\125\004\013\023\036\103\145\162\164\165\155\040\103 +\145\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164 +\150\157\162\151\164\171\061\031\060\027\006\003\125\004\003\023 +\020\103\145\162\164\165\155\040\105\103\055\063\070\064\040\103 +\101\060\036\027\015\061\070\060\063\062\066\060\067\062\064\065 +\064\132\027\015\064\063\060\063\062\066\060\067\062\064\065\064 +\132\060\164\061\013\060\011\006\003\125\004\006\023\002\120\114 +\061\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143 +\157\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123 +\056\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145 +\162\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151 +\157\156\040\101\165\164\150\157\162\151\164\171\061\031\060\027 +\006\003\125\004\003\023\020\103\145\162\164\165\155\040\105\103 +\055\063\070\064\040\103\101\060\166\060\020\006\007\052\206\110 +\316\075\002\001\006\005\053\201\004\000\042\003\142\000\004\304 +\050\216\253\030\133\152\276\156\144\067\143\344\315\354\253\072 +\367\314\241\270\016\202\111\327\206\051\237\241\224\362\343\140 +\170\230\201\170\006\115\362\354\232\016\127\140\203\237\264\346 +\027\057\032\263\135\002\133\211\043\074\302\021\005\052\247\210 +\023\030\363\120\204\327\275\064\054\047\211\125\377\316\114\347 +\337\246\037\050\304\360\124\303\271\174\267\123\255\353\302\243 +\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\215 +\006\146\164\044\166\072\363\211\367\274\326\275\107\175\057\274 +\020\137\113\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\012\006\010\052\206\110\316\075\004\003\003\003 +\150\000\060\145\002\060\003\125\055\246\346\030\304\174\357\311 +\120\156\301\047\017\234\207\257\156\325\033\010\030\275\222\051 +\301\357\224\221\170\322\072\034\125\211\142\345\033\011\036\272 +\144\153\361\166\264\324\002\061\000\264\102\204\231\377\253\347 +\236\373\221\227\047\135\334\260\133\060\161\316\136\070\032\152 +\331\045\347\352\367\141\222\126\370\352\332\066\302\207\145\226 +\056\162\045\057\177\337\303\023\311 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certum EC-384 CA" +# Issuer: CN=Certum EC-384 CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL +# Serial Number:78:8f:27:5c:81:12:52:20:a5:04:d0:2d:dd:ba:73:f4 +# Subject: CN=Certum EC-384 CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL +# Not Valid Before: Mon Mar 26 07:24:54 2018 +# Not Valid After : Thu Mar 26 07:24:54 2043 +# Fingerprint (SHA-256): 6B:32:80:85:62:53:18:AA:50:D1:73:C9:8D:8B:DA:09:D5:7E:27:41:3D:11:4C:F7:87:A0:F5:D0:6C:03:0C:F6 +# Fingerprint (SHA1): F3:3E:78:3C:AC:DF:F4:A2:CC:AC:67:55:69:56:D7:E5:16:3C:E1:ED +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum EC-384 CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\363\076\170\074\254\337\364\242\314\254\147\125\151\126\327\345 +\026\074\341\355 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\266\145\263\226\140\227\022\241\354\116\341\075\243\306\311\361 +END +CKA_ISSUER MULTILINE_OCTAL +\060\164\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157 +\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056 +\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162 +\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\061\031\060\027\006 +\003\125\004\003\023\020\103\145\162\164\165\155\040\105\103\055 +\063\070\064\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\170\217\047\134\201\022\122\040\245\004\320\055\335\272 +\163\364 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certum Trusted Root CA" +# +# Issuer: CN=Certum Trusted Root CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL +# Serial Number:1e:bf:59:50:b8:c9:80:37:4c:06:f7:eb:55:4f:b5:ed +# Subject: CN=Certum Trusted Root CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL +# Not Valid Before: Fri Mar 16 12:10:13 2018 +# Not Valid After : Mon Mar 16 12:10:13 2043 +# Fingerprint (SHA-256): FE:76:96:57:38:55:77:3E:37:A9:5E:7A:D4:D9:CC:96:C3:01:57:C1:5D:31:76:5B:A9:B1:57:04:E1:AE:78:FD +# Fingerprint (SHA1): C8:83:44:C0:18:AE:9F:CC:F1:87:B7:8F:22:D1:C5:D7:45:84:BA:E5 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum Trusted Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\172\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157 +\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056 +\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162 +\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\061\037\060\035\006 +\003\125\004\003\023\026\103\145\162\164\165\155\040\124\162\165 +\163\164\145\144\040\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\172\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157 +\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056 +\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162 +\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\061\037\060\035\006 +\003\125\004\003\023\026\103\145\162\164\165\155\040\124\162\165 +\163\164\145\144\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\036\277\131\120\270\311\200\067\114\006\367\353\125\117 +\265\355 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\300\060\202\003\250\240\003\002\001\002\002\020\036 +\277\131\120\270\311\200\067\114\006\367\353\125\117\265\355\060 +\015\006\011\052\206\110\206\367\015\001\001\015\005\000\060\172 +\061\013\060\011\006\003\125\004\006\023\002\120\114\061\041\060 +\037\006\003\125\004\012\023\030\101\163\163\145\143\157\040\104 +\141\164\141\040\123\171\163\164\145\155\163\040\123\056\101\056 +\061\047\060\045\006\003\125\004\013\023\036\103\145\162\164\165 +\155\040\103\145\162\164\151\146\151\143\141\164\151\157\156\040 +\101\165\164\150\157\162\151\164\171\061\037\060\035\006\003\125 +\004\003\023\026\103\145\162\164\165\155\040\124\162\165\163\164 +\145\144\040\122\157\157\164\040\103\101\060\036\027\015\061\070 +\060\063\061\066\061\062\061\060\061\063\132\027\015\064\063\060 +\063\061\066\061\062\061\060\061\063\132\060\172\061\013\060\011 +\006\003\125\004\006\023\002\120\114\061\041\060\037\006\003\125 +\004\012\023\030\101\163\163\145\143\157\040\104\141\164\141\040 +\123\171\163\164\145\155\163\040\123\056\101\056\061\047\060\045 +\006\003\125\004\013\023\036\103\145\162\164\165\155\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\101\165\164\150 +\157\162\151\164\171\061\037\060\035\006\003\125\004\003\023\026 +\103\145\162\164\165\155\040\124\162\165\163\164\145\144\040\122 +\157\157\164\040\103\101\060\202\002\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 +\002\012\002\202\002\001\000\321\055\216\273\267\066\352\155\067 +\221\237\116\223\247\005\344\051\003\045\316\034\202\367\174\231 +\237\101\006\315\355\243\272\300\333\011\054\301\174\337\051\176 +\113\145\057\223\247\324\001\153\003\050\030\243\330\235\005\301 +\052\330\105\361\221\336\337\073\320\200\002\214\317\070\017\352 +\247\134\170\021\244\301\310\205\134\045\323\323\262\347\045\317 +\021\124\227\253\065\300\036\166\034\357\000\123\237\071\334\024 +\245\054\042\045\263\162\162\374\215\263\345\076\010\036\024\052 +\067\013\210\074\312\260\364\310\302\241\256\274\301\276\051\147 +\125\342\374\255\131\134\376\275\127\054\260\220\215\302\355\067 +\266\174\231\210\265\325\003\232\075\025\015\075\072\250\250\105 +\360\225\116\045\131\035\315\230\151\273\323\314\062\311\215\357 +\201\376\255\175\211\273\272\140\023\312\145\225\147\240\363\031 +\366\003\126\324\152\323\047\342\241\255\203\360\112\022\042\167 +\034\005\163\342\031\161\102\300\354\165\106\232\220\130\340\152 +\216\053\245\106\060\004\216\031\262\027\343\276\251\272\177\126 +\361\044\003\327\262\041\050\166\016\066\060\114\171\325\101\232 +\232\250\270\065\272\014\072\362\104\033\040\210\367\305\045\327 +\075\306\343\076\103\335\207\376\304\352\365\123\076\114\145\377 +\073\112\313\170\132\153\027\137\015\307\303\117\116\232\052\242 +\355\127\115\042\342\106\232\077\017\221\064\044\175\125\343\214 +\225\067\323\032\360\011\053\054\322\311\215\264\015\000\253\147 +\051\050\330\001\365\031\004\266\035\276\166\376\162\134\304\205 +\312\322\200\101\337\005\250\243\325\204\220\117\013\363\340\077 +\233\031\322\067\211\077\362\173\122\034\214\366\341\367\074\007 +\227\214\016\242\131\201\014\262\220\075\323\343\131\106\355\017 +\251\247\336\200\153\132\252\007\266\031\313\274\127\363\227\041 +\172\014\261\053\164\076\353\332\247\147\055\114\304\230\236\066 +\011\166\146\146\374\032\077\352\110\124\034\276\060\275\200\120 +\277\174\265\316\000\366\014\141\331\347\044\003\340\343\001\201 +\016\275\330\205\064\210\275\262\066\250\173\134\010\345\104\200 +\214\157\370\057\325\041\312\035\034\320\373\304\265\207\321\072 +\116\307\166\265\065\110\265\002\003\001\000\001\243\102\060\100 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\035\006\003\125\035\016\004\026\004\024\214\373\034\165 +\274\002\323\237\116\056\110\331\371\140\124\252\304\263\117\372 +\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006 +\060\015\006\011\052\206\110\206\367\015\001\001\015\005\000\003 +\202\002\001\000\110\242\325\000\013\056\320\077\274\034\325\265 +\124\111\036\132\153\364\344\362\340\100\067\340\314\024\173\271 +\311\372\065\265\165\027\223\152\005\151\205\234\315\117\031\170 +\133\031\201\363\143\076\303\316\133\217\365\057\136\001\166\023 +\077\054\000\271\315\226\122\071\111\155\004\116\305\351\017\206 +\015\341\372\263\137\202\022\361\072\316\146\006\044\064\053\350 +\314\312\347\151\334\207\235\302\064\327\171\321\323\167\270\252 +\131\130\376\235\046\372\070\206\076\235\212\207\144\127\345\027 +\072\342\371\215\271\343\063\170\301\220\330\270\335\267\203\121 +\344\304\314\043\325\006\174\346\121\323\315\064\061\300\366\106 +\273\013\255\374\075\020\005\052\073\112\221\045\356\214\324\204 +\207\200\052\274\011\214\252\072\023\137\350\064\171\120\301\020 +\031\371\323\050\036\324\321\121\060\051\263\256\220\147\326\037 +\012\143\261\305\251\306\102\061\143\027\224\357\151\313\057\372 +\214\024\175\304\103\030\211\331\360\062\100\346\200\342\106\137 +\345\343\301\000\131\250\371\350\040\274\211\054\016\107\064\013 +\352\127\302\123\066\374\247\324\257\061\315\376\002\345\165\372 +\271\047\011\371\363\365\073\312\175\237\251\042\313\210\311\252 +\321\107\075\066\167\250\131\144\153\047\317\357\047\301\343\044 +\265\206\367\256\176\062\115\260\171\150\321\071\350\220\130\303 +\203\274\017\054\326\227\353\316\014\341\040\307\332\267\076\303 +\077\277\057\334\064\244\373\053\041\315\147\217\113\364\343\352 +\324\077\347\117\272\271\245\223\105\034\146\037\041\372\144\136 +\157\340\166\224\062\313\165\365\156\345\366\217\307\270\244\314 +\250\226\175\144\373\044\132\112\003\154\153\070\306\350\003\103 +\232\367\127\271\263\051\151\223\070\364\003\362\273\373\202\153 +\007\040\321\122\037\232\144\002\173\230\146\333\134\115\132\017 +\320\204\225\240\074\024\103\006\312\312\333\270\101\066\332\152 +\104\147\207\257\257\343\105\021\025\151\010\262\276\026\071\227 +\044\157\022\105\321\147\135\011\250\311\025\332\372\322\246\137 +\023\141\037\277\205\254\264\255\255\005\224\010\203\036\165\027 +\323\161\073\223\120\043\131\240\355\074\221\124\235\166\000\305 +\303\270\070\333 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certum Trusted Root CA" +# Issuer: CN=Certum Trusted Root CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL +# Serial Number:1e:bf:59:50:b8:c9:80:37:4c:06:f7:eb:55:4f:b5:ed +# Subject: CN=Certum Trusted Root CA,OU=Certum Certification Authority,O=Asseco Data Systems S.A.,C=PL +# Not Valid Before: Fri Mar 16 12:10:13 2018 +# Not Valid After : Mon Mar 16 12:10:13 2043 +# Fingerprint (SHA-256): FE:76:96:57:38:55:77:3E:37:A9:5E:7A:D4:D9:CC:96:C3:01:57:C1:5D:31:76:5B:A9:B1:57:04:E1:AE:78:FD +# Fingerprint (SHA1): C8:83:44:C0:18:AE:9F:CC:F1:87:B7:8F:22:D1:C5:D7:45:84:BA:E5 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certum Trusted Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\310\203\104\300\030\256\237\314\361\207\267\217\042\321\305\327 +\105\204\272\345 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\121\341\302\347\376\114\204\257\131\016\057\364\124\157\352\051 +END +CKA_ISSUER MULTILINE_OCTAL +\060\172\061\013\060\011\006\003\125\004\006\023\002\120\114\061 +\041\060\037\006\003\125\004\012\023\030\101\163\163\145\143\157 +\040\104\141\164\141\040\123\171\163\164\145\155\163\040\123\056 +\101\056\061\047\060\045\006\003\125\004\013\023\036\103\145\162 +\164\165\155\040\103\145\162\164\151\146\151\143\141\164\151\157 +\156\040\101\165\164\150\157\162\151\164\171\061\037\060\035\006 +\003\125\004\003\023\026\103\145\162\164\165\155\040\124\162\165 +\163\164\145\144\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\036\277\131\120\270\311\200\067\114\006\367\353\125\117 +\265\355 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "TunTrust Root CA" +# +# Issuer: CN=TunTrust Root CA,O=Agence Nationale de Certification Electronique,C=TN +# Serial Number:13:02:d5:e2:40:4c:92:46:86:16:67:5d:b4:bb:bb:b2:6b:3e:fc:13 +# Subject: CN=TunTrust Root CA,O=Agence Nationale de Certification Electronique,C=TN +# Not Valid Before: Fri Apr 26 08:57:56 2019 +# Not Valid After : Tue Apr 26 08:57:56 2044 +# Fingerprint (SHA-256): 2E:44:10:2A:B5:8C:B8:54:19:45:1C:8E:19:D9:AC:F3:66:2C:AF:BC:61:4B:6A:53:96:0A:30:F7:D0:E2:EB:41 +# Fingerprint (SHA1): CF:E9:70:84:0F:E0:73:0F:9D:F6:0C:7F:2C:4B:EE:20:46:34:9C:BB +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TunTrust Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\124\116\061 +\067\060\065\006\003\125\004\012\014\056\101\147\145\156\143\145 +\040\116\141\164\151\157\156\141\154\145\040\144\145\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\105\154\145\143 +\164\162\157\156\151\161\165\145\061\031\060\027\006\003\125\004 +\003\014\020\124\165\156\124\162\165\163\164\040\122\157\157\164 +\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\124\116\061 +\067\060\065\006\003\125\004\012\014\056\101\147\145\156\143\145 +\040\116\141\164\151\157\156\141\154\145\040\144\145\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\105\154\145\143 +\164\162\157\156\151\161\165\145\061\031\060\027\006\003\125\004 +\003\014\020\124\165\156\124\162\165\163\164\040\122\157\157\164 +\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\023\002\325\342\100\114\222\106\206\026\147\135\264\273 +\273\262\153\076\374\023 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\263\060\202\003\233\240\003\002\001\002\002\024\023 +\002\325\342\100\114\222\106\206\026\147\135\264\273\273\262\153 +\076\374\023\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\141\061\013\060\011\006\003\125\004\006\023\002\124 +\116\061\067\060\065\006\003\125\004\012\014\056\101\147\145\156 +\143\145\040\116\141\164\151\157\156\141\154\145\040\144\145\040 +\103\145\162\164\151\146\151\143\141\164\151\157\156\040\105\154 +\145\143\164\162\157\156\151\161\165\145\061\031\060\027\006\003 +\125\004\003\014\020\124\165\156\124\162\165\163\164\040\122\157 +\157\164\040\103\101\060\036\027\015\061\071\060\064\062\066\060 +\070\065\067\065\066\132\027\015\064\064\060\064\062\066\060\070 +\065\067\065\066\132\060\141\061\013\060\011\006\003\125\004\006 +\023\002\124\116\061\067\060\065\006\003\125\004\012\014\056\101 +\147\145\156\143\145\040\116\141\164\151\157\156\141\154\145\040 +\144\145\040\103\145\162\164\151\146\151\143\141\164\151\157\156 +\040\105\154\145\143\164\162\157\156\151\161\165\145\061\031\060 +\027\006\003\125\004\003\014\020\124\165\156\124\162\165\163\164 +\040\122\157\157\164\040\103\101\060\202\002\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 +\060\202\002\012\002\202\002\001\000\303\315\323\374\275\004\123 +\335\014\040\072\325\210\056\005\113\101\365\203\202\176\367\131 +\237\236\236\143\350\163\332\366\006\251\117\037\264\371\013\037 +\071\214\232\040\320\176\006\324\354\064\331\206\274\165\133\207 +\210\360\322\331\324\243\012\262\154\033\353\111\054\076\254\135 +\330\224\003\240\354\064\345\060\304\065\175\373\046\115\033\156 +\060\124\330\365\200\105\234\071\255\234\311\045\004\115\232\220 +\076\116\100\156\212\153\315\051\147\306\314\055\340\164\350\005 +\127\012\110\120\372\172\103\332\176\354\133\232\016\142\166\376 +\352\235\035\205\162\354\021\273\065\350\037\047\277\301\241\307 +\273\110\026\335\126\327\314\116\240\341\271\254\333\325\203\031 +\032\205\321\224\227\327\312\243\145\013\363\070\371\002\256\335 +\366\147\317\311\077\365\212\054\107\032\231\157\005\015\375\320 +\035\202\061\374\051\314\000\130\227\221\114\200\000\034\063\205 +\226\057\313\101\302\213\020\204\303\011\044\211\037\265\017\331 +\331\167\107\030\222\224\140\134\307\231\003\074\376\367\225\247 +\175\120\241\200\302\251\203\255\130\226\125\041\333\206\131\324 +\257\306\274\335\201\156\007\333\140\142\376\354\020\156\332\150 +\001\364\203\033\251\076\242\133\043\327\144\306\337\334\242\175 +\330\113\272\202\322\121\370\146\277\006\106\344\171\052\046\066 +\171\217\037\116\231\035\262\217\014\016\034\377\311\135\300\375 +\220\020\246\261\067\363\315\072\044\156\264\205\220\277\200\271 +\014\214\325\233\326\310\361\126\077\032\200\211\172\251\342\033 +\062\121\054\076\362\337\173\366\135\172\051\031\216\345\310\275 +\066\161\213\135\114\302\035\077\255\130\242\317\075\160\115\246 +\120\230\045\334\043\371\270\130\101\010\161\277\117\270\204\240 +\217\000\124\025\374\221\155\130\247\226\073\353\113\226\047\315 +\153\242\241\206\254\015\174\124\346\146\114\146\137\220\276\041 +\232\002\106\055\344\203\302\200\271\317\113\076\350\177\074\001 +\354\217\136\315\177\322\050\102\001\225\212\342\227\075\020\041 +\175\366\235\034\305\064\241\354\054\016\012\122\054\022\125\160 +\044\075\313\302\024\065\103\135\047\116\276\300\275\252\174\226 +\347\374\236\141\255\104\323\000\227\002\003\001\000\001\243\143 +\060\141\060\035\006\003\125\035\016\004\026\004\024\006\232\233 +\037\123\175\361\365\244\310\323\206\076\241\163\131\264\367\104 +\041\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\037\006\003\125\035\043\004\030\060\026\200\024\006 +\232\233\037\123\175\361\365\244\310\323\206\076\241\163\131\264 +\367\104\041\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\003\202\002\001\000\252\005\156\266\335\025\311\277\263 +\306\040\366\006\107\260\206\223\045\323\215\271\310\000\077\227 +\365\122\047\210\161\311\164\375\353\312\144\333\133\357\036\135 +\272\277\321\353\356\134\151\272\026\310\363\271\217\323\066\056 +\100\111\007\015\131\336\213\020\260\111\005\342\377\221\077\113 +\267\335\002\216\370\201\050\134\314\334\155\257\137\024\234\175 +\130\170\015\366\200\011\271\351\016\227\051\031\270\267\353\370 +\026\313\125\022\344\306\175\273\304\354\370\265\034\116\076\147 +\277\305\137\033\155\155\107\050\252\004\130\141\326\166\277\042 +\177\320\007\152\247\144\123\360\227\215\235\200\077\273\301\007 +\333\145\257\346\233\062\232\303\124\223\304\034\010\303\104\373 +\173\143\021\103\321\152\032\141\152\171\155\220\117\051\216\107 +\005\301\022\151\151\326\306\066\061\341\374\372\200\272\134\117 +\304\353\267\062\254\370\165\141\027\327\020\031\271\361\322\011 +\357\172\102\235\133\132\013\324\306\225\116\052\316\377\007\327 +\117\176\030\006\210\361\031\265\331\230\273\256\161\304\034\347 +\164\131\130\357\014\211\317\213\037\165\223\032\004\024\222\110 +\120\251\353\127\051\000\026\343\066\034\310\370\277\360\063\325 +\101\017\304\314\074\335\351\063\103\001\221\020\053\036\321\271 +\135\315\062\031\213\217\214\040\167\327\042\304\102\334\204\026 +\233\045\155\350\264\125\161\177\260\174\263\323\161\111\271\317 +\122\244\004\077\334\075\240\273\257\063\236\012\060\140\216\333 +\235\135\224\250\275\140\347\142\200\166\201\203\014\214\314\060 +\106\111\342\014\322\250\257\353\141\161\357\347\042\142\251\367 +\134\144\154\237\026\214\147\066\047\105\365\011\173\277\366\020 +\012\361\260\215\124\103\214\004\272\243\077\357\342\065\307\371 +\164\340\157\064\101\320\277\163\145\127\040\371\233\147\172\146 +\150\044\116\200\145\275\020\231\006\131\362\145\257\270\306\107 +\273\375\220\170\213\101\163\056\257\125\037\334\073\222\162\156 +\204\323\320\141\114\015\314\166\127\342\055\205\042\025\066\015 +\353\001\235\353\330\353\304\204\231\373\300\014\314\062\350\343 +\167\332\203\104\213\236\125\050\300\213\130\323\220\076\116\033 +\000\361\025\255\203\053\232 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "TunTrust Root CA" +# Issuer: CN=TunTrust Root CA,O=Agence Nationale de Certification Electronique,C=TN +# Serial Number:13:02:d5:e2:40:4c:92:46:86:16:67:5d:b4:bb:bb:b2:6b:3e:fc:13 +# Subject: CN=TunTrust Root CA,O=Agence Nationale de Certification Electronique,C=TN +# Not Valid Before: Fri Apr 26 08:57:56 2019 +# Not Valid After : Tue Apr 26 08:57:56 2044 +# Fingerprint (SHA-256): 2E:44:10:2A:B5:8C:B8:54:19:45:1C:8E:19:D9:AC:F3:66:2C:AF:BC:61:4B:6A:53:96:0A:30:F7:D0:E2:EB:41 +# Fingerprint (SHA1): CF:E9:70:84:0F:E0:73:0F:9D:F6:0C:7F:2C:4B:EE:20:46:34:9C:BB +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TunTrust Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\317\351\160\204\017\340\163\017\235\366\014\177\054\113\356\040 +\106\064\234\273 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\205\023\271\220\133\066\134\266\136\270\132\370\340\061\127\264 +END +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\124\116\061 +\067\060\065\006\003\125\004\012\014\056\101\147\145\156\143\145 +\040\116\141\164\151\157\156\141\154\145\040\144\145\040\103\145 +\162\164\151\146\151\143\141\164\151\157\156\040\105\154\145\143 +\164\162\157\156\151\161\165\145\061\031\060\027\006\003\125\004 +\003\014\020\124\165\156\124\162\165\163\164\040\122\157\157\164 +\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\023\002\325\342\100\114\222\106\206\026\147\135\264\273 +\273\262\153\076\374\023 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "HARICA TLS RSA Root CA 2021" +# +# Issuer: CN=HARICA TLS RSA Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Serial Number:39:ca:93:1c:ef:43:f3:c6:8e:93:c7:f4:64:89:38:7e +# Subject: CN=HARICA TLS RSA Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Not Valid Before: Fri Feb 19 10:55:38 2021 +# Not Valid After : Mon Feb 13 10:55:37 2045 +# Fingerprint (SHA-256): D9:5D:0E:8E:DA:79:52:5B:F9:BE:B1:1B:14:D2:10:0D:32:94:98:5F:0C:62:D9:FA:BD:9C:D9:99:EC:CB:7B:1D +# Fingerprint (SHA1): 02:2D:05:82:FA:88:CE:14:0C:06:79:DE:7F:14:10:E9:45:D7:A5:6D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HARICA TLS RSA Root CA 2021" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\154\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\044\060\042\006\003\125\004 +\003\014\033\110\101\122\111\103\101\040\124\114\123\040\122\123 +\101\040\122\157\157\164\040\103\101\040\062\060\062\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\154\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\044\060\042\006\003\125\004 +\003\014\033\110\101\122\111\103\101\040\124\114\123\040\122\123 +\101\040\122\157\157\164\040\103\101\040\062\060\062\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\071\312\223\034\357\103\363\306\216\223\307\364\144\211 +\070\176 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\244\060\202\003\214\240\003\002\001\002\002\020\071 +\312\223\034\357\103\363\306\216\223\307\364\144\211\070\176\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\154 +\061\013\060\011\006\003\125\004\006\023\002\107\122\061\067\060 +\065\006\003\125\004\012\014\056\110\145\154\154\145\156\151\143 +\040\101\143\141\144\145\155\151\143\040\141\156\144\040\122\145 +\163\145\141\162\143\150\040\111\156\163\164\151\164\165\164\151 +\157\156\163\040\103\101\061\044\060\042\006\003\125\004\003\014 +\033\110\101\122\111\103\101\040\124\114\123\040\122\123\101\040 +\122\157\157\164\040\103\101\040\062\060\062\061\060\036\027\015 +\062\061\060\062\061\071\061\060\065\065\063\070\132\027\015\064 +\065\060\062\061\063\061\060\065\065\063\067\132\060\154\061\013 +\060\011\006\003\125\004\006\023\002\107\122\061\067\060\065\006 +\003\125\004\012\014\056\110\145\154\154\145\156\151\143\040\101 +\143\141\144\145\155\151\143\040\141\156\144\040\122\145\163\145 +\141\162\143\150\040\111\156\163\164\151\164\165\164\151\157\156 +\163\040\103\101\061\044\060\042\006\003\125\004\003\014\033\110 +\101\122\111\103\101\040\124\114\123\040\122\123\101\040\122\157 +\157\164\040\103\101\040\062\060\062\061\060\202\002\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 +\017\000\060\202\002\012\002\202\002\001\000\213\302\347\257\145 +\233\005\147\226\311\015\044\271\320\016\144\374\316\342\044\030 +\054\204\177\167\121\313\004\021\066\270\136\355\151\161\247\236 +\344\045\011\227\147\301\107\302\317\221\026\066\142\075\070\004 +\341\121\202\377\254\322\264\151\335\056\354\021\243\105\356\153 +\153\073\114\277\214\215\244\036\235\021\271\351\070\371\172\016 +\014\230\342\043\035\321\116\143\324\347\270\101\104\373\153\257 +\153\332\037\323\305\221\210\133\244\211\222\321\201\346\214\071 +\130\240\326\151\103\251\255\230\122\130\156\333\012\373\153\317 +\150\372\343\244\136\072\105\163\230\007\352\137\002\162\336\014 +\245\263\237\256\251\035\267\035\263\374\212\131\347\156\162\145 +\255\365\060\224\043\007\363\202\026\113\065\230\234\123\273\057 +\312\344\132\331\307\215\035\374\230\231\373\054\244\202\153\360 +\052\037\216\013\137\161\134\134\256\102\173\051\211\201\313\003 +\243\231\312\210\236\013\100\011\101\063\333\346\130\172\375\256 +\231\160\300\132\017\326\023\206\161\057\166\151\374\220\335\333 +\055\156\321\362\233\365\032\153\236\157\025\214\172\360\113\050 +\240\042\070\200\044\154\066\244\073\362\060\221\363\170\023\317 +\301\077\065\253\361\035\021\043\265\103\042\236\001\222\267\030 +\002\345\021\321\202\333\025\000\314\141\067\301\052\174\232\341 +\320\272\263\120\106\356\202\254\235\061\370\373\043\342\003\000 +\110\160\243\011\046\171\025\123\140\363\070\134\255\070\352\201 +\000\143\024\271\063\136\335\013\333\240\105\007\032\063\011\370 +\115\264\247\002\246\151\364\302\131\005\210\145\205\126\256\113 +\313\340\336\074\175\055\032\310\351\373\037\243\141\112\326\052 +\023\255\167\114\032\030\233\221\017\130\330\006\124\305\227\370 +\252\077\040\212\246\205\246\167\366\246\374\034\342\356\156\224 +\063\052\203\120\204\012\345\117\206\370\120\105\170\000\201\353 +\133\150\343\046\215\314\173\134\121\364\024\054\100\276\032\140 +\035\172\162\141\035\037\143\055\210\252\316\242\105\220\010\374 +\153\276\263\120\052\132\375\250\110\030\106\326\220\100\222\220 +\012\204\136\150\061\370\353\355\015\323\035\306\175\231\030\125 +\126\047\145\056\215\105\305\044\354\316\343\002\003\001\000\001 +\243\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024 +\012\110\043\246\140\244\222\012\063\352\223\133\305\127\352\045 +\115\275\022\356\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\206\060\015\006\011\052\206\110\206\367\015\001\001 +\013\005\000\003\202\002\001\000\076\220\110\252\156\142\025\045 +\146\173\014\325\214\213\211\235\327\355\116\007\357\234\320\024 +\137\136\120\275\150\226\220\244\024\021\252\150\155\011\065\071 +\100\011\332\364\011\054\064\245\173\131\204\111\051\227\164\310 +\007\036\107\155\362\316\034\120\046\343\236\075\100\123\077\367 +\177\226\166\020\305\106\245\320\040\113\120\364\065\073\030\364 +\125\152\101\033\107\006\150\074\273\011\010\142\331\137\125\102 +\252\254\123\205\254\225\126\066\126\253\344\005\214\305\250\332 +\037\243\151\275\123\017\304\377\334\312\343\176\362\114\210\206 +\107\106\032\363\000\365\200\221\242\334\103\102\224\233\040\360 +\321\315\262\353\054\123\302\123\170\112\117\004\224\101\232\217 +\047\062\301\345\111\031\277\361\362\302\213\250\012\071\061\050 +\264\175\142\066\054\115\354\037\063\266\176\167\155\176\120\360 +\237\016\327\021\217\317\030\305\343\047\376\046\357\005\235\317 +\317\067\305\320\173\332\073\260\026\204\014\072\223\326\276\027 +\333\017\076\016\031\170\011\307\251\002\162\042\113\367\067\166 +\272\165\304\205\003\132\143\325\261\165\005\302\271\275\224\255 +\214\025\231\247\223\175\366\305\363\252\164\317\004\205\224\230 +\000\364\342\371\312\044\145\277\340\142\257\310\305\372\262\311 +\236\126\110\332\171\375\226\166\025\276\243\216\126\304\263\064 +\374\276\107\364\301\264\250\374\325\060\210\150\356\313\256\311 +\143\304\166\276\254\070\030\341\136\134\317\256\072\042\121\353 +\321\213\263\363\053\063\007\124\207\372\264\262\023\173\272\123 +\004\142\001\235\361\300\117\356\341\072\324\213\040\020\372\002 +\127\346\357\301\013\267\220\106\234\031\051\214\334\157\240\112 +\151\151\224\267\044\145\240\377\254\077\316\001\373\041\056\375 +\150\370\233\362\245\317\061\070\134\025\252\346\227\000\301\337 +\132\245\247\071\252\351\204\177\074\121\250\072\331\224\133\214 +\277\117\010\161\345\333\250\134\324\322\246\376\000\243\306\026 +\307\017\350\200\316\034\050\144\164\031\010\323\102\343\316\000 +\135\177\261\334\023\260\341\005\313\321\040\252\206\164\236\071 +\347\221\375\377\133\326\367\255\246\057\003\013\155\343\127\124 +\353\166\123\030\215\021\230\272 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "HARICA TLS RSA Root CA 2021" +# Issuer: CN=HARICA TLS RSA Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Serial Number:39:ca:93:1c:ef:43:f3:c6:8e:93:c7:f4:64:89:38:7e +# Subject: CN=HARICA TLS RSA Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Not Valid Before: Fri Feb 19 10:55:38 2021 +# Not Valid After : Mon Feb 13 10:55:37 2045 +# Fingerprint (SHA-256): D9:5D:0E:8E:DA:79:52:5B:F9:BE:B1:1B:14:D2:10:0D:32:94:98:5F:0C:62:D9:FA:BD:9C:D9:99:EC:CB:7B:1D +# Fingerprint (SHA1): 02:2D:05:82:FA:88:CE:14:0C:06:79:DE:7F:14:10:E9:45:D7:A5:6D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HARICA TLS RSA Root CA 2021" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\002\055\005\202\372\210\316\024\014\006\171\336\177\024\020\351 +\105\327\245\155 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\145\107\233\130\206\335\054\360\374\242\204\037\036\226\304\221 +END +CKA_ISSUER MULTILINE_OCTAL +\060\154\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\044\060\042\006\003\125\004 +\003\014\033\110\101\122\111\103\101\040\124\114\123\040\122\123 +\101\040\122\157\157\164\040\103\101\040\062\060\062\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\071\312\223\034\357\103\363\306\216\223\307\364\144\211 +\070\176 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "HARICA TLS ECC Root CA 2021" +# +# Issuer: CN=HARICA TLS ECC Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Serial Number:67:74:9d:8d:77:d8:3b:6a:db:22:f4:ff:59:e2:bf:ce +# Subject: CN=HARICA TLS ECC Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Not Valid Before: Fri Feb 19 11:01:10 2021 +# Not Valid After : Mon Feb 13 11:01:09 2045 +# Fingerprint (SHA-256): 3F:99:CC:47:4A:CF:CE:4D:FE:D5:87:94:66:5E:47:8D:15:47:73:9F:2E:78:0F:1B:B4:CA:9B:13:30:97:D4:01 +# Fingerprint (SHA1): BC:B0:C1:9D:E9:98:92:70:19:38:57:E9:8D:A7:B4:5D:6E:EE:01:48 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HARICA TLS ECC Root CA 2021" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\154\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\044\060\042\006\003\125\004 +\003\014\033\110\101\122\111\103\101\040\124\114\123\040\105\103 +\103\040\122\157\157\164\040\103\101\040\062\060\062\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\154\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\044\060\042\006\003\125\004 +\003\014\033\110\101\122\111\103\101\040\124\114\123\040\105\103 +\103\040\122\157\157\164\040\103\101\040\062\060\062\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\147\164\235\215\167\330\073\152\333\042\364\377\131\342 +\277\316 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\124\060\202\001\333\240\003\002\001\002\002\020\147 +\164\235\215\167\330\073\152\333\042\364\377\131\342\277\316\060 +\012\006\010\052\206\110\316\075\004\003\003\060\154\061\013\060 +\011\006\003\125\004\006\023\002\107\122\061\067\060\065\006\003 +\125\004\012\014\056\110\145\154\154\145\156\151\143\040\101\143 +\141\144\145\155\151\143\040\141\156\144\040\122\145\163\145\141 +\162\143\150\040\111\156\163\164\151\164\165\164\151\157\156\163 +\040\103\101\061\044\060\042\006\003\125\004\003\014\033\110\101 +\122\111\103\101\040\124\114\123\040\105\103\103\040\122\157\157 +\164\040\103\101\040\062\060\062\061\060\036\027\015\062\061\060 +\062\061\071\061\061\060\061\061\060\132\027\015\064\065\060\062 +\061\063\061\061\060\061\060\071\132\060\154\061\013\060\011\006 +\003\125\004\006\023\002\107\122\061\067\060\065\006\003\125\004 +\012\014\056\110\145\154\154\145\156\151\143\040\101\143\141\144 +\145\155\151\143\040\141\156\144\040\122\145\163\145\141\162\143 +\150\040\111\156\163\164\151\164\165\164\151\157\156\163\040\103 +\101\061\044\060\042\006\003\125\004\003\014\033\110\101\122\111 +\103\101\040\124\114\123\040\105\103\103\040\122\157\157\164\040 +\103\101\040\062\060\062\061\060\166\060\020\006\007\052\206\110 +\316\075\002\001\006\005\053\201\004\000\042\003\142\000\004\070 +\010\376\261\240\226\322\172\254\257\111\072\320\300\340\303\073 +\050\252\361\162\155\145\000\107\210\204\374\232\046\153\252\113 +\272\154\004\012\210\136\027\362\125\207\374\060\260\064\342\064 +\130\127\032\204\123\351\060\331\251\362\226\164\303\121\037\130 +\111\061\314\230\116\140\021\207\165\323\162\224\220\117\233\020 +\045\052\250\170\055\276\220\101\130\220\025\162\247\241\267\243 +\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\311 +\033\123\201\022\376\004\325\026\321\252\274\232\157\267\240\225 +\031\156\312\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\206\060\012\006\010\052\206\110\316\075\004\003\003\003 +\147\000\060\144\002\060\021\336\256\370\334\116\210\260\251\360 +\042\255\302\121\100\357\140\161\055\356\217\002\304\135\003\160 +\111\244\222\352\305\024\210\160\246\323\015\260\252\312\054\100 +\234\373\351\202\156\232\002\060\053\107\232\007\306\321\302\201 +\174\312\013\226\030\101\033\243\364\060\011\236\265\043\050\015 +\237\024\266\074\123\242\114\006\151\175\372\154\221\306\052\111 +\105\346\354\267\023\341\072\154 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "HARICA TLS ECC Root CA 2021" +# Issuer: CN=HARICA TLS ECC Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Serial Number:67:74:9d:8d:77:d8:3b:6a:db:22:f4:ff:59:e2:bf:ce +# Subject: CN=HARICA TLS ECC Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Not Valid Before: Fri Feb 19 11:01:10 2021 +# Not Valid After : Mon Feb 13 11:01:09 2045 +# Fingerprint (SHA-256): 3F:99:CC:47:4A:CF:CE:4D:FE:D5:87:94:66:5E:47:8D:15:47:73:9F:2E:78:0F:1B:B4:CA:9B:13:30:97:D4:01 +# Fingerprint (SHA1): BC:B0:C1:9D:E9:98:92:70:19:38:57:E9:8D:A7:B4:5D:6E:EE:01:48 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HARICA TLS ECC Root CA 2021" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\274\260\301\235\351\230\222\160\031\070\127\351\215\247\264\135 +\156\356\001\110 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\256\367\114\345\146\065\321\267\233\214\042\223\164\323\113\260 +END +CKA_ISSUER MULTILINE_OCTAL +\060\154\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\044\060\042\006\003\125\004 +\003\014\033\110\101\122\111\103\101\040\124\114\123\040\105\103 +\103\040\122\157\157\164\040\103\101\040\062\060\062\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\147\164\235\215\167\330\073\152\333\042\364\377\131\342 +\277\316 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "HARICA Client RSA Root CA 2021" +# +# Issuer: CN=HARICA Client RSA Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Serial Number:55:52:f8:1e:db:1b:24:2c:9e:bb:96:18:cd:02:28:3e +# Subject: CN=HARICA Client RSA Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Not Valid Before: Fri Feb 19 10:58:46 2021 +# Not Valid After : Mon Feb 13 10:58:45 2045 +# Fingerprint (SHA-256): 1B:E7:AB:E3:06:86:B1:63:48:AF:D1:C6:1B:68:66:A0:EA:7F:48:21:E6:7D:5E:8A:F9:37:CF:80:11:BC:75:0D +# Fingerprint (SHA1): 46:C6:90:0A:77:3A:B6:BC:F4:65:AD:AC:FC:E3:F7:07:00:6E:DE:6E +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HARICA Client RSA Root CA 2021" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\157\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\047\060\045\006\003\125\004 +\003\014\036\110\101\122\111\103\101\040\103\154\151\145\156\164 +\040\122\123\101\040\122\157\157\164\040\103\101\040\062\060\062 +\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\157\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\047\060\045\006\003\125\004 +\003\014\036\110\101\122\111\103\101\040\103\154\151\145\156\164 +\040\122\123\101\040\122\157\157\164\040\103\101\040\062\060\062 +\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\125\122\370\036\333\033\044\054\236\273\226\030\315\002 +\050\076 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\252\060\202\003\222\240\003\002\001\002\002\020\125 +\122\370\036\333\033\044\054\236\273\226\030\315\002\050\076\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\157 +\061\013\060\011\006\003\125\004\006\023\002\107\122\061\067\060 +\065\006\003\125\004\012\014\056\110\145\154\154\145\156\151\143 +\040\101\143\141\144\145\155\151\143\040\141\156\144\040\122\145 +\163\145\141\162\143\150\040\111\156\163\164\151\164\165\164\151 +\157\156\163\040\103\101\061\047\060\045\006\003\125\004\003\014 +\036\110\101\122\111\103\101\040\103\154\151\145\156\164\040\122 +\123\101\040\122\157\157\164\040\103\101\040\062\060\062\061\060 +\036\027\015\062\061\060\062\061\071\061\060\065\070\064\066\132 +\027\015\064\065\060\062\061\063\061\060\065\070\064\065\132\060 +\157\061\013\060\011\006\003\125\004\006\023\002\107\122\061\067 +\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156\151 +\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040\122 +\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165\164 +\151\157\156\163\040\103\101\061\047\060\045\006\003\125\004\003 +\014\036\110\101\122\111\103\101\040\103\154\151\145\156\164\040 +\122\123\101\040\122\157\157\164\040\103\101\040\062\060\062\061 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\201\333\127\102\220\054\164\065\364\370\270\164\031\115\253 +\011\132\167\105\201\163\142\260\065\237\370\320\267\063\000\207 +\023\266\226\253\016\124\022\060\007\274\233\267\110\327\321\031 +\203\256\216\330\251\361\251\000\204\260\214\136\236\350\014\217 +\124\151\277\366\324\010\117\046\160\376\030\101\143\032\263\062 +\213\100\370\007\253\127\061\360\306\026\166\147\232\264\335\057 +\362\321\153\305\320\222\204\221\161\156\017\056\143\351\037\123 +\244\335\122\023\314\011\203\051\201\014\305\123\165\104\261\016 +\147\123\030\320\303\037\210\113\237\224\044\264\051\274\273\350 +\116\375\157\322\025\035\111\334\215\160\362\021\032\040\121\125 +\021\272\210\157\304\367\120\171\326\252\061\342\204\075\136\062 +\310\167\052\120\161\345\013\057\351\266\352\357\253\012\063\071 +\016\375\217\245\147\103\202\216\230\151\011\011\033\100\315\070 +\147\107\352\311\354\227\161\022\336\044\365\162\074\321\367\103 +\114\046\367\220\262\211\351\105\113\125\075\061\005\172\101\342 +\225\272\103\300\027\305\266\205\075\031\215\144\160\363\133\254 +\315\237\323\051\165\207\113\225\147\152\246\370\321\335\274\220 +\206\211\103\051\251\067\133\365\135\260\046\132\123\102\166\220 +\053\317\236\126\154\053\124\317\134\232\145\337\133\213\110\140 +\070\174\373\305\013\317\166\004\143\002\063\052\175\365\203\147 +\347\372\306\103\375\053\017\324\046\057\167\244\062\301\044\352 +\144\235\277\263\070\161\061\104\362\107\270\242\146\101\241\373 +\233\173\274\307\106\152\165\277\132\242\214\350\152\104\301\270 +\226\265\300\062\010\055\173\164\065\163\262\312\306\376\257\021 +\162\030\366\347\310\302\317\245\052\352\173\326\131\350\174\240 +\262\152\100\011\151\016\245\226\333\321\000\271\361\210\156\066 +\360\210\262\235\361\122\362\303\174\277\060\211\074\012\151\371 +\042\244\145\341\233\340\164\306\261\205\227\226\054\256\224\217 +\120\246\071\022\037\276\107\362\201\170\323\165\066\236\175\132 +\040\227\342\122\256\231\237\306\174\233\146\363\376\330\317\356 +\275\227\006\035\055\205\334\076\066\123\226\173\040\272\350\310 +\341\255\226\142\076\021\174\263\000\204\236\247\114\161\253\112 +\067\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125 +\035\016\004\026\004\024\240\326\007\075\136\044\367\173\240\104 +\056\044\122\015\031\252\053\004\221\247\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\206\060\015\006\011\052\206 +\110\206\367\015\001\001\013\005\000\003\202\002\001\000\015\107 +\371\011\146\061\122\354\171\356\302\250\362\150\076\355\226\105 +\313\072\246\230\143\077\352\053\115\116\003\320\034\202\341\313 +\323\345\326\253\133\147\050\274\235\376\014\231\012\200\125\247 +\316\033\043\141\015\260\127\360\376\340\312\276\346\220\333\203 +\054\276\203\216\364\171\266\376\320\015\102\247\130\037\151\352 +\201\365\005\245\376\106\150\353\154\170\311\340\352\347\346\336 +\061\305\322\325\054\202\143\050\235\135\250\032\176\210\346\347 +\053\361\054\325\320\005\236\334\055\275\067\146\324\004\242\247 +\255\277\072\302\250\073\255\377\215\235\063\340\271\232\204\241 +\207\037\166\364\202\164\327\016\371\060\110\076\133\210\076\252 +\134\153\326\057\014\350\216\163\302\030\221\203\071\266\146\132 +\320\037\140\047\135\115\343\366\072\015\146\120\234\170\173\253 +\363\023\020\256\017\057\253\350\144\263\030\040\235\106\065\144 +\045\163\352\233\020\134\130\065\211\261\106\110\247\364\254\324 +\035\236\133\314\251\245\032\023\117\044\120\252\331\033\155\261 +\100\373\235\335\130\164\304\302\157\024\162\354\333\065\237\270 +\124\165\105\303\246\310\032\050\065\072\256\145\362\251\230\316 +\257\133\311\070\214\061\073\177\314\334\226\375\342\133\326\320 +\131\364\166\272\013\313\117\203\020\307\100\320\035\140\351\052 +\345\110\130\167\014\105\151\276\031\161\004\044\342\343\044\037 +\112\310\301\076\231\365\226\230\070\110\045\241\025\260\033\327 +\342\204\030\133\366\161\065\232\150\173\100\314\030\134\014\044 +\235\324\225\365\231\252\106\352\256\254\277\364\024\031\044\350 +\214\354\343\365\274\006\150\212\052\014\005\137\012\227\165\247 +\334\176\300\375\327\172\030\337\060\321\070\113\037\260\230\160 +\277\314\174\163\360\156\304\061\245\244\227\035\254\277\316\154 +\041\112\276\047\043\147\363\006\126\201\012\221\216\266\341\003 +\005\063\054\332\064\010\115\116\120\043\255\037\245\305\324\172 +\376\352\011\354\247\050\140\213\106\174\265\352\233\335\117\371 +\347\153\025\306\210\317\103\333\345\047\334\004\126\156\157\106 +\025\361\126\055\350\134\014\163\303\043\201\070\040\313\311\014 +\151\317\054\253\073\204\140\063\031\122\375\151\024\063 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "HARICA Client RSA Root CA 2021" +# Issuer: CN=HARICA Client RSA Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Serial Number:55:52:f8:1e:db:1b:24:2c:9e:bb:96:18:cd:02:28:3e +# Subject: CN=HARICA Client RSA Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Not Valid Before: Fri Feb 19 10:58:46 2021 +# Not Valid After : Mon Feb 13 10:58:45 2045 +# Fingerprint (SHA-256): 1B:E7:AB:E3:06:86:B1:63:48:AF:D1:C6:1B:68:66:A0:EA:7F:48:21:E6:7D:5E:8A:F9:37:CF:80:11:BC:75:0D +# Fingerprint (SHA1): 46:C6:90:0A:77:3A:B6:BC:F4:65:AD:AC:FC:E3:F7:07:00:6E:DE:6E +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HARICA Client RSA Root CA 2021" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\106\306\220\012\167\072\266\274\364\145\255\254\374\343\367\007 +\000\156\336\156 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\157\355\134\327\210\314\070\251\334\351\335\331\135\333\330\355 +END +CKA_ISSUER MULTILINE_OCTAL +\060\157\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\047\060\045\006\003\125\004 +\003\014\036\110\101\122\111\103\101\040\103\154\151\145\156\164 +\040\122\123\101\040\122\157\157\164\040\103\101\040\062\060\062 +\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\125\122\370\036\333\033\044\054\236\273\226\030\315\002 +\050\076 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "HARICA Client ECC Root CA 2021" +# +# Issuer: CN=HARICA Client ECC Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Serial Number:31:68:d9:d8:e1:62:57:1e:d2:19:44:88:e6:10:7d:f0 +# Subject: CN=HARICA Client ECC Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Not Valid Before: Fri Feb 19 11:03:34 2021 +# Not Valid After : Mon Feb 13 11:03:33 2045 +# Fingerprint (SHA-256): 8D:D4:B5:37:3C:B0:DE:36:76:9C:12:33:92:80:D8:27:46:B3:AA:6C:D4:26:E7:97:A3:1B:AB:E4:27:9C:F0:0B +# Fingerprint (SHA1): BE:64:D3:DA:14:4B:D2:6B:CD:AF:8F:DB:A6:A6:72:F8:DE:26:F9:00 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HARICA Client ECC Root CA 2021" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\157\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\047\060\045\006\003\125\004 +\003\014\036\110\101\122\111\103\101\040\103\154\151\145\156\164 +\040\105\103\103\040\122\157\157\164\040\103\101\040\062\060\062 +\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\157\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\047\060\045\006\003\125\004 +\003\014\036\110\101\122\111\103\101\040\103\154\151\145\156\164 +\040\105\103\103\040\122\157\157\164\040\103\101\040\062\060\062 +\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\061\150\331\330\341\142\127\036\322\031\104\210\346\020 +\175\360 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\132\060\202\001\341\240\003\002\001\002\002\020\061 +\150\331\330\341\142\127\036\322\031\104\210\346\020\175\360\060 +\012\006\010\052\206\110\316\075\004\003\003\060\157\061\013\060 +\011\006\003\125\004\006\023\002\107\122\061\067\060\065\006\003 +\125\004\012\014\056\110\145\154\154\145\156\151\143\040\101\143 +\141\144\145\155\151\143\040\141\156\144\040\122\145\163\145\141 +\162\143\150\040\111\156\163\164\151\164\165\164\151\157\156\163 +\040\103\101\061\047\060\045\006\003\125\004\003\014\036\110\101 +\122\111\103\101\040\103\154\151\145\156\164\040\105\103\103\040 +\122\157\157\164\040\103\101\040\062\060\062\061\060\036\027\015 +\062\061\060\062\061\071\061\061\060\063\063\064\132\027\015\064 +\065\060\062\061\063\061\061\060\063\063\063\132\060\157\061\013 +\060\011\006\003\125\004\006\023\002\107\122\061\067\060\065\006 +\003\125\004\012\014\056\110\145\154\154\145\156\151\143\040\101 +\143\141\144\145\155\151\143\040\141\156\144\040\122\145\163\145 +\141\162\143\150\040\111\156\163\164\151\164\165\164\151\157\156 +\163\040\103\101\061\047\060\045\006\003\125\004\003\014\036\110 +\101\122\111\103\101\040\103\154\151\145\156\164\040\105\103\103 +\040\122\157\157\164\040\103\101\040\062\060\062\061\060\166\060 +\020\006\007\052\206\110\316\075\002\001\006\005\053\201\004\000 +\042\003\142\000\004\007\030\255\225\226\224\320\134\017\202\367 +\052\100\372\002\311\311\075\066\246\243\004\152\301\155\225\001 +\210\140\022\124\154\134\242\053\156\023\072\210\225\014\034\046 +\206\066\112\211\031\267\030\336\073\350\250\120\037\312\337\133 +\277\111\200\025\333\343\060\341\035\132\307\052\212\001\007\376 +\155\054\064\357\050\050\227\274\301\371\127\206\225\213\065\317 +\236\132\321\150\225\243\102\060\100\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125\035 +\016\004\026\004\024\122\010\322\276\062\201\045\375\365\032\227 +\354\116\137\032\273\123\315\220\255\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\206\060\012\006\010\052\206\110 +\316\075\004\003\003\003\147\000\060\144\002\060\114\061\105\106 +\117\250\346\276\303\167\262\032\030\113\055\210\173\130\346\253 +\224\153\104\003\260\027\377\337\202\163\104\121\054\375\223\035 +\006\173\024\322\211\354\100\014\357\041\001\056\002\060\057\311 +\056\132\154\054\035\331\225\340\236\260\271\134\122\174\366\370 +\070\312\056\361\324\035\362\242\111\242\225\370\301\130\136\117 +\376\163\012\357\061\260\253\043\130\023\214\213\336\073 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "HARICA Client ECC Root CA 2021" +# Issuer: CN=HARICA Client ECC Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Serial Number:31:68:d9:d8:e1:62:57:1e:d2:19:44:88:e6:10:7d:f0 +# Subject: CN=HARICA Client ECC Root CA 2021,O=Hellenic Academic and Research Institutions CA,C=GR +# Not Valid Before: Fri Feb 19 11:03:34 2021 +# Not Valid After : Mon Feb 13 11:03:33 2045 +# Fingerprint (SHA-256): 8D:D4:B5:37:3C:B0:DE:36:76:9C:12:33:92:80:D8:27:46:B3:AA:6C:D4:26:E7:97:A3:1B:AB:E4:27:9C:F0:0B +# Fingerprint (SHA1): BE:64:D3:DA:14:4B:D2:6B:CD:AF:8F:DB:A6:A6:72:F8:DE:26:F9:00 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HARICA Client ECC Root CA 2021" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\276\144\323\332\024\113\322\153\315\257\217\333\246\246\162\370 +\336\046\371\000 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\255\270\120\246\251\202\172\154\075\032\252\244\322\143\244\104 +END +CKA_ISSUER MULTILINE_OCTAL +\060\157\061\013\060\011\006\003\125\004\006\023\002\107\122\061 +\067\060\065\006\003\125\004\012\014\056\110\145\154\154\145\156 +\151\143\040\101\143\141\144\145\155\151\143\040\141\156\144\040 +\122\145\163\145\141\162\143\150\040\111\156\163\164\151\164\165 +\164\151\157\156\163\040\103\101\061\047\060\045\006\003\125\004 +\003\014\036\110\101\122\111\103\101\040\103\154\151\145\156\164 +\040\105\103\103\040\122\157\157\164\040\103\101\040\062\060\062 +\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\061\150\331\330\341\142\127\036\322\031\104\210\346\020 +\175\360 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068,C=ES +# Serial Number:1b:70:e9:d2:ff:ae:6c:71 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068,C=ES +# Not Valid Before: Tue Sep 23 15:22:07 2014 +# Not Valid After : Mon May 05 15:22:07 2036 +# Fingerprint (SHA-256): 57:DE:05:83:EF:D2:B2:6E:03:61:DA:99:DA:9D:F4:64:8D:EF:7E:E8:44:1C:3B:72:8A:FA:9B:CD:E0:F9:B2:6A +# Fingerprint (SHA1): 0B:BE:C2:27:22:49:CB:39:AA:DB:35:5C:53:E3:8C:AE:78:FF:B6:FE +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Autoridad de Certificacion Firmaprofesional CIF A62634068" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\102\060\100\006\003\125\004\003\014\071\101\165\164\157\162\151 +\144\141\144\040\144\145\040\103\145\162\164\151\146\151\143\141 +\143\151\157\156\040\106\151\162\155\141\160\162\157\146\145\163 +\151\157\156\141\154\040\103\111\106\040\101\066\062\066\063\064 +\060\066\070 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\102\060\100\006\003\125\004\003\014\071\101\165\164\157\162\151 +\144\141\144\040\144\145\040\103\145\162\164\151\146\151\143\141 +\143\151\157\156\040\106\151\162\155\141\160\162\157\146\145\163 +\151\157\156\141\154\040\103\111\106\040\101\066\062\066\063\064 +\060\066\070 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\033\160\351\322\377\256\154\161 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\006\024\060\202\003\374\240\003\002\001\002\002\010\033 +\160\351\322\377\256\154\161\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\060\121\061\013\060\011\006\003\125\004 +\006\023\002\105\123\061\102\060\100\006\003\125\004\003\014\071 +\101\165\164\157\162\151\144\141\144\040\144\145\040\103\145\162 +\164\151\146\151\143\141\143\151\157\156\040\106\151\162\155\141 +\160\162\157\146\145\163\151\157\156\141\154\040\103\111\106\040 +\101\066\062\066\063\064\060\066\070\060\036\027\015\061\064\060 +\071\062\063\061\065\062\062\060\067\132\027\015\063\066\060\065 +\060\065\061\065\062\062\060\067\132\060\121\061\013\060\011\006 +\003\125\004\006\023\002\105\123\061\102\060\100\006\003\125\004 +\003\014\071\101\165\164\157\162\151\144\141\144\040\144\145\040 +\103\145\162\164\151\146\151\143\141\143\151\157\156\040\106\151 +\162\155\141\160\162\157\146\145\163\151\157\156\141\154\040\103 +\111\106\040\101\066\062\066\063\064\060\066\070\060\202\002\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\002\017\000\060\202\002\012\002\202\002\001\000\312\226\153 +\216\352\370\373\361\242\065\340\177\114\332\340\303\122\327\175 +\266\020\310\002\136\263\103\052\304\117\152\262\312\034\135\050 +\232\170\021\032\151\131\127\257\265\040\102\344\213\017\346\337 +\133\246\003\222\057\365\021\344\142\327\062\161\070\331\004\014 +\161\253\075\121\176\017\007\337\143\005\134\351\277\224\157\301 +\051\202\300\264\332\121\260\301\074\273\255\067\112\134\312\361 +\113\066\016\044\253\277\303\204\167\375\250\120\364\261\347\306 +\057\322\055\131\215\172\012\116\226\151\122\002\252\066\230\354 +\374\372\024\203\014\067\037\311\222\067\177\327\201\055\345\304 +\271\340\076\064\376\147\364\076\146\321\323\364\100\317\136\142 +\064\017\160\006\076\040\030\132\316\367\162\033\045\154\223\164 +\024\223\243\163\261\016\252\207\020\043\131\137\040\005\031\107 +\355\150\216\222\022\312\135\374\326\053\262\222\074\040\317\341 +\137\257\040\276\240\166\177\166\345\354\032\206\141\063\076\347 +\173\264\077\240\017\216\242\271\152\157\271\207\046\157\101\154 +\210\246\120\375\152\143\013\365\223\026\033\031\217\262\355\233 +\233\311\220\365\001\014\337\031\075\017\076\070\043\311\057\217 +\014\321\002\376\033\125\326\116\320\215\074\257\117\244\363\376 +\257\052\323\005\235\171\010\241\313\127\061\264\234\310\220\262 +\147\364\030\026\223\072\374\107\330\321\170\226\061\037\272\053 +\014\137\135\231\255\143\211\132\044\040\166\330\337\375\253\116 +\246\042\252\235\136\346\047\212\175\150\051\243\347\212\270\332 +\021\273\027\055\231\235\023\044\106\367\305\342\330\237\216\177 +\307\217\164\155\132\262\350\162\365\254\356\044\020\255\057\024 +\332\377\055\232\106\161\107\276\102\337\273\001\333\364\177\323 +\050\217\061\131\133\323\311\002\246\264\122\312\156\227\373\103 +\305\010\046\157\212\364\273\375\237\050\252\015\325\105\363\023 +\072\035\330\300\170\217\101\147\074\036\224\144\256\173\013\305 +\350\331\001\210\071\032\227\206\144\101\325\073\207\014\156\372 +\017\306\275\110\024\277\071\115\324\236\101\266\217\226\035\143 +\226\223\331\225\006\170\061\150\236\067\006\073\200\211\105\141 +\071\043\307\033\104\243\025\345\034\370\222\060\273\002\003\001 +\000\001\243\201\357\060\201\354\060\035\006\003\125\035\016\004 +\026\004\024\145\315\353\253\065\036\000\076\176\325\164\300\034 +\264\163\107\016\032\144\057\060\022\006\003\125\035\023\001\001 +\377\004\010\060\006\001\001\377\002\001\001\060\201\246\006\003 +\125\035\040\004\201\236\060\201\233\060\201\230\006\004\125\035 +\040\000\060\201\217\060\057\006\010\053\006\001\005\005\007\002 +\001\026\043\150\164\164\160\072\057\057\167\167\167\056\146\151 +\162\155\141\160\162\157\146\145\163\151\157\156\141\154\056\143 +\157\155\057\143\160\163\060\134\006\010\053\006\001\005\005\007 +\002\002\060\120\036\116\000\120\000\141\000\163\000\145\000\157 +\000\040\000\144\000\145\000\040\000\154\000\141\000\040\000\102 +\000\157\000\156\000\141\000\156\000\157\000\166\000\141\000\040 +\000\064\000\067\000\040\000\102\000\141\000\162\000\143\000\145 +\000\154\000\157\000\156\000\141\000\040\000\060\000\070\000\060 +\000\061\000\067\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\015\006\011\052\206\110\206\367\015\001\001 +\013\005\000\003\202\002\001\000\164\207\050\002\053\167\037\146 +\211\144\355\217\164\056\106\034\273\250\370\370\013\035\203\266 +\072\247\350\105\212\007\267\340\076\040\313\341\010\333\023\010 +\370\050\241\065\262\200\263\013\121\300\323\126\232\215\063\105 +\111\257\111\360\340\075\007\172\105\023\132\377\310\227\330\323 +\030\054\175\226\370\335\242\145\103\160\223\220\025\272\220\337 +\350\031\260\333\054\212\140\017\267\157\224\007\036\035\246\311 +\205\366\275\064\370\100\170\142\020\160\072\276\175\113\071\201 +\251\020\324\226\101\273\370\137\034\013\035\010\362\261\260\211 +\172\362\367\240\340\304\217\213\170\265\073\130\245\043\216\117 +\125\376\066\073\340\014\267\312\052\060\101\040\264\200\315\256 +\374\166\146\163\250\256\156\341\174\332\003\350\224\040\346\042 +\243\320\037\220\135\040\123\024\046\127\332\124\227\337\026\104 +\020\001\036\210\146\217\162\070\223\335\040\267\064\276\327\361 +\356\143\216\107\171\050\006\374\363\131\105\045\140\042\063\033 +\243\137\250\272\052\332\032\075\315\100\352\214\356\005\025\225 +\325\245\054\040\057\247\230\050\356\105\374\361\270\210\000\054 +\217\102\332\121\325\234\345\023\150\161\105\103\213\236\013\041 +\074\113\134\005\334\032\237\230\216\332\275\042\236\162\315\255 +\012\313\314\243\147\233\050\164\304\233\327\032\074\004\130\246 +\202\235\255\307\173\157\377\200\226\351\370\215\152\275\030\220 +\035\377\111\032\220\122\067\223\057\074\002\135\202\166\013\121 +\347\026\307\127\370\070\371\247\315\233\042\124\357\143\260\025 +\155\123\145\003\112\136\112\240\262\247\216\111\000\131\070\325 +\307\364\200\144\365\156\225\120\270\021\176\025\160\070\112\260 +\177\320\304\062\160\300\031\377\311\070\055\024\054\146\364\102 +\104\346\125\166\033\200\025\127\377\300\247\247\252\071\252\330 +\323\160\320\056\272\353\224\152\372\137\064\206\347\142\265\375 +\212\360\060\205\224\311\257\044\002\057\157\326\335\147\376\343 +\260\125\117\004\230\117\244\101\126\342\223\320\152\350\326\363 +\373\145\340\316\165\304\061\131\014\356\202\310\014\140\063\112 +\031\272\204\147\047\017\274\102\135\275\044\124\015\354\035\160 +\006\137\244\274\372\040\174\125 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Autoridad de Certificacion Firmaprofesional CIF A62634068" +# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068,C=ES +# Serial Number:1b:70:e9:d2:ff:ae:6c:71 +# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068,C=ES +# Not Valid Before: Tue Sep 23 15:22:07 2014 +# Not Valid After : Mon May 05 15:22:07 2036 +# Fingerprint (SHA-256): 57:DE:05:83:EF:D2:B2:6E:03:61:DA:99:DA:9D:F4:64:8D:EF:7E:E8:44:1C:3B:72:8A:FA:9B:CD:E0:F9:B2:6A +# Fingerprint (SHA1): 0B:BE:C2:27:22:49:CB:39:AA:DB:35:5C:53:E3:8C:AE:78:FF:B6:FE +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Autoridad de Certificacion Firmaprofesional CIF A62634068" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\013\276\302\047\042\111\313\071\252\333\065\134\123\343\214\256 +\170\377\266\376 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\116\156\233\124\114\312\267\372\110\344\220\261\025\113\034\243 +END +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\102\060\100\006\003\125\004\003\014\071\101\165\164\157\162\151 +\144\141\144\040\144\145\040\103\145\162\164\151\146\151\143\141 +\143\151\157\156\040\106\151\162\155\141\160\162\157\146\145\163 +\151\157\156\141\154\040\103\111\106\040\101\066\062\066\063\064 +\060\066\070 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\010\033\160\351\322\377\256\154\161 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "vTrus ECC Root CA" +# +# Issuer: CN=vTrus ECC Root CA,O="iTrusChina Co.,Ltd.",C=CN +# Serial Number:6e:6a:bc:59:aa:53:be:98:39:67:a2:d2:6b:a4:3b:e6:6d:1c:d6:da +# Subject: CN=vTrus ECC Root CA,O="iTrusChina Co.,Ltd.",C=CN +# Not Valid Before: Tue Jul 31 07:26:44 2018 +# Not Valid After : Fri Jul 31 07:26:44 2043 +# Fingerprint (SHA-256): 30:FB:BA:2C:32:23:8E:2A:98:54:7A:F9:79:31:E5:50:42:8B:9B:3F:1C:8E:EB:66:33:DC:FA:86:C5:B2:7D:D3 +# Fingerprint (SHA1): F6:9C:DB:B0:FC:F6:02:13:B6:52:32:A6:A3:91:3F:16:70:DA:C3:E1 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "vTrus ECC Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\034\060\032\006\003\125\004\012\023\023\151\124\162\165\163\103 +\150\151\156\141\040\103\157\056\054\114\164\144\056\061\032\060 +\030\006\003\125\004\003\023\021\166\124\162\165\163\040\105\103 +\103\040\122\157\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\034\060\032\006\003\125\004\012\023\023\151\124\162\165\163\103 +\150\151\156\141\040\103\157\056\054\114\164\144\056\061\032\060 +\030\006\003\125\004\003\023\021\166\124\162\165\163\040\105\103 +\103\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\156\152\274\131\252\123\276\230\071\147\242\322\153\244 +\073\346\155\034\326\332 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\017\060\202\001\225\240\003\002\001\002\002\024\156 +\152\274\131\252\123\276\230\071\147\242\322\153\244\073\346\155 +\034\326\332\060\012\006\010\052\206\110\316\075\004\003\003\060 +\107\061\013\060\011\006\003\125\004\006\023\002\103\116\061\034 +\060\032\006\003\125\004\012\023\023\151\124\162\165\163\103\150 +\151\156\141\040\103\157\056\054\114\164\144\056\061\032\060\030 +\006\003\125\004\003\023\021\166\124\162\165\163\040\105\103\103 +\040\122\157\157\164\040\103\101\060\036\027\015\061\070\060\067 +\063\061\060\067\062\066\064\064\132\027\015\064\063\060\067\063 +\061\060\067\062\066\064\064\132\060\107\061\013\060\011\006\003 +\125\004\006\023\002\103\116\061\034\060\032\006\003\125\004\012 +\023\023\151\124\162\165\163\103\150\151\156\141\040\103\157\056 +\054\114\164\144\056\061\032\060\030\006\003\125\004\003\023\021 +\166\124\162\165\163\040\105\103\103\040\122\157\157\164\040\103 +\101\060\166\060\020\006\007\052\206\110\316\075\002\001\006\005 +\053\201\004\000\042\003\142\000\004\145\120\112\256\214\171\226 +\112\252\034\010\303\243\242\315\376\131\126\101\167\375\046\224 +\102\273\035\315\010\333\163\262\133\165\363\317\234\116\202\364 +\277\370\141\046\205\154\326\205\133\162\160\322\375\333\142\264 +\337\123\213\275\261\104\130\142\102\011\307\372\177\133\020\347 +\376\100\375\300\330\303\053\062\347\160\246\267\246\040\125\035 +\173\200\135\113\217\147\114\361\020\243\102\060\100\060\035\006 +\003\125\035\016\004\026\004\024\230\071\315\276\330\262\214\367 +\262\253\341\255\044\257\173\174\241\333\037\317\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\012\006 +\010\052\206\110\316\075\004\003\003\003\150\000\060\145\002\060 +\127\235\335\126\361\307\343\351\270\111\120\153\233\151\303\157 +\354\303\175\045\344\127\225\023\100\233\122\323\073\363\100\031 +\274\046\307\055\006\236\265\173\066\237\365\045\324\143\153\000 +\002\061\000\351\323\306\236\126\232\052\314\241\332\077\310\146 +\053\323\130\234\040\205\372\253\221\212\160\160\021\070\140\144 +\013\142\011\221\130\000\371\115\373\064\150\332\011\255\041\006 +\030\224\316 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "vTrus ECC Root CA" +# Issuer: CN=vTrus ECC Root CA,O="iTrusChina Co.,Ltd.",C=CN +# Serial Number:6e:6a:bc:59:aa:53:be:98:39:67:a2:d2:6b:a4:3b:e6:6d:1c:d6:da +# Subject: CN=vTrus ECC Root CA,O="iTrusChina Co.,Ltd.",C=CN +# Not Valid Before: Tue Jul 31 07:26:44 2018 +# Not Valid After : Fri Jul 31 07:26:44 2043 +# Fingerprint (SHA-256): 30:FB:BA:2C:32:23:8E:2A:98:54:7A:F9:79:31:E5:50:42:8B:9B:3F:1C:8E:EB:66:33:DC:FA:86:C5:B2:7D:D3 +# Fingerprint (SHA1): F6:9C:DB:B0:FC:F6:02:13:B6:52:32:A6:A3:91:3F:16:70:DA:C3:E1 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "vTrus ECC Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\366\234\333\260\374\366\002\023\266\122\062\246\243\221\077\026 +\160\332\303\341 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\336\113\301\365\122\214\233\103\341\076\217\125\124\027\215\205 +END +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\034\060\032\006\003\125\004\012\023\023\151\124\162\165\163\103 +\150\151\156\141\040\103\157\056\054\114\164\144\056\061\032\060 +\030\006\003\125\004\003\023\021\166\124\162\165\163\040\105\103 +\103\040\122\157\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\156\152\274\131\252\123\276\230\071\147\242\322\153\244 +\073\346\155\034\326\332 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "vTrus Root CA" +# +# Issuer: CN=vTrus Root CA,O="iTrusChina Co.,Ltd.",C=CN +# Serial Number:43:e3:71:13:d8:b3:59:14:5d:b7:ce:8c:fd:35:fd:6f:bc:05:8d:45 +# Subject: CN=vTrus Root CA,O="iTrusChina Co.,Ltd.",C=CN +# Not Valid Before: Tue Jul 31 07:24:05 2018 +# Not Valid After : Fri Jul 31 07:24:05 2043 +# Fingerprint (SHA-256): 8A:71:DE:65:59:33:6F:42:6C:26:E5:38:80:D0:0D:88:A1:8D:A4:C6:A9:1F:0D:CB:61:94:E2:06:C5:C9:63:87 +# Fingerprint (SHA1): 84:1A:69:FB:F5:CD:1A:25:34:13:3D:E3:F8:FC:B8:99:D0:C9:14:B7 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "vTrus Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\103\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\034\060\032\006\003\125\004\012\023\023\151\124\162\165\163\103 +\150\151\156\141\040\103\157\056\054\114\164\144\056\061\026\060 +\024\006\003\125\004\003\023\015\166\124\162\165\163\040\122\157 +\157\164\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\103\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\034\060\032\006\003\125\004\012\023\023\151\124\162\165\163\103 +\150\151\156\141\040\103\157\056\054\114\164\144\056\061\026\060 +\024\006\003\125\004\003\023\015\166\124\162\165\163\040\122\157 +\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\103\343\161\023\330\263\131\024\135\267\316\214\375\065 +\375\157\274\005\215\105 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\126\060\202\003\076\240\003\002\001\002\002\024\103 +\343\161\023\330\263\131\024\135\267\316\214\375\065\375\157\274 +\005\215\105\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\103\061\013\060\011\006\003\125\004\006\023\002\103 +\116\061\034\060\032\006\003\125\004\012\023\023\151\124\162\165 +\163\103\150\151\156\141\040\103\157\056\054\114\164\144\056\061 +\026\060\024\006\003\125\004\003\023\015\166\124\162\165\163\040 +\122\157\157\164\040\103\101\060\036\027\015\061\070\060\067\063 +\061\060\067\062\064\060\065\132\027\015\064\063\060\067\063\061 +\060\067\062\064\060\065\132\060\103\061\013\060\011\006\003\125 +\004\006\023\002\103\116\061\034\060\032\006\003\125\004\012\023 +\023\151\124\162\165\163\103\150\151\156\141\040\103\157\056\054 +\114\164\144\056\061\026\060\024\006\003\125\004\003\023\015\166 +\124\162\165\163\040\122\157\157\164\040\103\101\060\202\002\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\002\017\000\060\202\002\012\002\202\002\001\000\275\125\174 +\141\323\270\035\004\142\005\240\256\154\267\160\264\101\352\113 +\003\136\020\077\220\132\034\213\073\260\146\213\154\110\246\034 +\042\272\325\100\222\356\063\262\043\131\311\216\274\130\332\213 +\236\320\031\362\057\131\306\214\143\132\272\237\243\013\260\263 +\232\134\272\021\270\022\351\014\273\317\156\154\200\207\051\024 +\003\054\215\044\232\310\144\203\265\152\254\023\054\063\361\237 +\334\054\141\074\032\077\160\125\233\255\000\122\177\317\004\271 +\376\066\372\234\300\026\256\142\376\226\114\103\176\125\024\276 +\032\263\322\155\302\257\166\146\225\153\052\260\224\167\205\136 +\004\017\142\035\143\165\367\153\347\313\133\232\160\354\076\147 +\005\360\376\007\010\200\317\050\333\005\306\024\047\057\206\175 +\360\047\336\377\346\176\063\110\347\013\036\130\321\047\053\123 +\016\127\112\145\327\373\242\200\140\374\114\274\065\123\001\152 +\227\162\202\257\361\035\160\350\234\365\357\136\302\154\307\107 +\176\132\224\205\046\115\073\272\353\114\350\260\011\302\145\302 +\235\235\011\233\116\265\227\005\254\365\006\240\367\066\005\176 +\364\220\262\153\304\264\371\144\352\351\032\012\310\015\250\355 +\047\311\324\347\263\271\253\202\042\220\047\075\052\350\174\220 +\357\274\117\375\342\012\044\247\336\145\044\244\135\352\300\166 +\060\323\167\120\370\015\004\233\224\066\001\163\312\006\130\246 +\323\073\334\372\004\106\023\125\212\311\104\107\270\121\071\032 +\056\350\064\342\171\313\131\112\012\177\274\246\357\037\003\147 +\152\131\053\045\142\223\331\123\031\146\074\047\142\051\206\115 +\244\153\356\377\324\116\272\325\264\342\216\110\132\000\031\011 +\361\005\331\316\221\261\367\353\351\071\117\366\157\004\103\232 +\125\365\076\005\024\275\277\263\131\264\330\216\063\204\243\220 +\122\252\263\002\225\140\371\014\114\150\371\356\325\027\015\370 +\161\127\265\045\344\051\356\145\135\257\321\356\074\027\013\132 +\103\305\245\206\352\044\236\342\005\007\334\064\102\022\221\326 +\071\164\256\114\101\202\333\362\246\110\321\263\233\363\063\252 +\363\246\300\305\116\365\364\235\166\143\346\002\306\042\113\301 +\225\077\120\144\054\124\345\266\360\074\051\317\127\002\003\001 +\000\001\243\102\060\100\060\035\006\003\125\035\016\004\026\004 +\024\124\142\160\143\361\165\204\103\130\216\321\026\040\261\306 +\254\032\274\366\211\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\015\006\011\052\206\110\206\367\015 +\001\001\013\005\000\003\202\002\001\000\051\272\222\111\247\255 +\360\361\160\303\344\227\360\237\251\045\325\153\236\064\376\346 +\032\144\366\072\153\122\262\020\170\032\237\114\332\212\332\354 +\034\067\122\340\102\113\373\154\166\312\044\013\071\022\025\235 +\237\021\055\374\171\144\334\340\340\365\335\340\127\311\245\262 +\166\160\120\244\376\267\012\160\325\240\064\361\165\327\115\111 +\272\021\321\263\330\354\202\377\353\016\304\277\144\055\175\143 +\156\027\170\354\135\174\210\310\353\216\127\166\331\131\004\372 +\274\122\037\105\254\360\172\200\354\354\157\166\256\221\333\020 +\216\004\334\222\337\240\366\346\256\111\323\301\154\022\033\314 +\051\252\371\010\245\342\067\024\312\261\270\146\357\032\202\344 +\360\370\361\247\026\151\267\333\251\141\074\237\365\061\313\344 +\000\106\302\057\164\261\261\327\201\356\250\046\225\274\210\257 +\114\065\007\052\002\312\170\024\155\107\053\100\126\351\313\052 +\140\241\147\003\240\316\214\274\260\162\147\304\061\316\333\064 +\345\045\003\140\045\173\161\230\344\300\033\053\137\164\102\322 +\113\305\131\010\007\207\276\305\303\177\347\226\331\341\334\050 +\227\326\217\005\343\365\233\116\312\035\120\107\005\123\260\312 +\071\347\205\240\211\301\005\073\001\067\323\077\111\342\167\353 +\043\310\210\146\073\075\071\166\041\106\361\354\137\043\270\353 +\242\146\165\164\301\100\367\330\150\232\223\342\055\251\056\275 +\034\243\036\310\164\306\244\055\172\040\253\073\270\260\106\375 +\157\335\137\122\125\165\142\360\227\240\174\327\070\375\045\337 +\315\240\233\020\317\213\270\070\136\136\305\264\246\002\066\241 +\036\137\034\317\342\226\235\051\252\375\230\256\122\341\363\101 +\122\373\251\056\162\226\237\047\343\252\163\175\370\032\043\146 +\173\073\253\145\260\062\001\113\025\076\075\242\117\014\053\065 +\242\306\331\147\022\065\060\315\166\056\026\263\231\236\115\117 +\116\055\073\064\103\341\232\016\015\244\146\227\272\322\034\112 +\114\054\052\213\213\201\117\161\032\251\335\134\173\173\010\305 +\000\015\067\100\343\174\173\124\137\057\205\137\166\366\367\247 +\260\034\127\126\301\162\350\255\242\257\215\063\111\272\037\212 +\334\346\164\174\140\206\157\207\227\173 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "vTrus Root CA" +# Issuer: CN=vTrus Root CA,O="iTrusChina Co.,Ltd.",C=CN +# Serial Number:43:e3:71:13:d8:b3:59:14:5d:b7:ce:8c:fd:35:fd:6f:bc:05:8d:45 +# Subject: CN=vTrus Root CA,O="iTrusChina Co.,Ltd.",C=CN +# Not Valid Before: Tue Jul 31 07:24:05 2018 +# Not Valid After : Fri Jul 31 07:24:05 2043 +# Fingerprint (SHA-256): 8A:71:DE:65:59:33:6F:42:6C:26:E5:38:80:D0:0D:88:A1:8D:A4:C6:A9:1F:0D:CB:61:94:E2:06:C5:C9:63:87 +# Fingerprint (SHA1): 84:1A:69:FB:F5:CD:1A:25:34:13:3D:E3:F8:FC:B8:99:D0:C9:14:B7 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "vTrus Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\204\032\151\373\365\315\032\045\064\023\075\343\370\374\270\231 +\320\311\024\267 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\270\311\067\337\372\153\061\204\144\305\352\021\152\033\165\374 +END +CKA_ISSUER MULTILINE_OCTAL +\060\103\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\034\060\032\006\003\125\004\012\023\023\151\124\162\165\163\103 +\150\151\156\141\040\103\157\056\054\114\164\144\056\061\026\060 +\024\006\003\125\004\003\023\015\166\124\162\165\163\040\122\157 +\157\164\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\103\343\161\023\330\263\131\024\135\267\316\214\375\065 +\375\157\274\005\215\105 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "ISRG Root X2" +# +# Issuer: CN=ISRG Root X2,O=Internet Security Research Group,C=US +# Serial Number:41:d2:9d:d1:72:ea:ee:a7:80:c1:2c:6c:e9:2f:87:52 +# Subject: CN=ISRG Root X2,O=Internet Security Research Group,C=US +# Not Valid Before: Fri Sep 04 00:00:00 2020 +# Not Valid After : Mon Sep 17 16:00:00 2040 +# Fingerprint (SHA-256): 69:72:9B:8E:15:A8:6E:FC:17:7A:57:AF:B7:17:1D:FC:64:AD:D2:8C:2F:CA:8C:F1:50:7E:34:45:3C:CB:14:70 +# Fingerprint (SHA1): BD:B1:B9:3C:D5:97:8D:45:C6:26:14:55:F8:DB:95:C7:5A:D1:53:AF +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ISRG Root X2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\051\060\047\006\003\125\004\012\023\040\111\156\164\145\162\156 +\145\164\040\123\145\143\165\162\151\164\171\040\122\145\163\145 +\141\162\143\150\040\107\162\157\165\160\061\025\060\023\006\003 +\125\004\003\023\014\111\123\122\107\040\122\157\157\164\040\130 +\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\051\060\047\006\003\125\004\012\023\040\111\156\164\145\162\156 +\145\164\040\123\145\143\165\162\151\164\171\040\122\145\163\145 +\141\162\143\150\040\107\162\157\165\160\061\025\060\023\006\003 +\125\004\003\023\014\111\123\122\107\040\122\157\157\164\040\130 +\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\101\322\235\321\162\352\356\247\200\301\054\154\351\057 +\207\122 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\033\060\202\001\241\240\003\002\001\002\002\020\101 +\322\235\321\162\352\356\247\200\301\054\154\351\057\207\122\060 +\012\006\010\052\206\110\316\075\004\003\003\060\117\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\051\060\047\006\003 +\125\004\012\023\040\111\156\164\145\162\156\145\164\040\123\145 +\143\165\162\151\164\171\040\122\145\163\145\141\162\143\150\040 +\107\162\157\165\160\061\025\060\023\006\003\125\004\003\023\014 +\111\123\122\107\040\122\157\157\164\040\130\062\060\036\027\015 +\062\060\060\071\060\064\060\060\060\060\060\060\132\027\015\064 +\060\060\071\061\067\061\066\060\060\060\060\132\060\117\061\013 +\060\011\006\003\125\004\006\023\002\125\123\061\051\060\047\006 +\003\125\004\012\023\040\111\156\164\145\162\156\145\164\040\123 +\145\143\165\162\151\164\171\040\122\145\163\145\141\162\143\150 +\040\107\162\157\165\160\061\025\060\023\006\003\125\004\003\023 +\014\111\123\122\107\040\122\157\157\164\040\130\062\060\166\060 +\020\006\007\052\206\110\316\075\002\001\006\005\053\201\004\000 +\042\003\142\000\004\315\233\325\237\200\203\012\354\011\112\363 +\026\112\076\134\317\167\254\336\147\005\015\035\007\266\334\026 +\373\132\213\024\333\342\161\140\304\272\105\225\021\211\216\352 +\006\337\367\052\026\034\244\271\305\305\062\340\003\340\036\202 +\030\070\213\327\105\330\012\152\156\346\000\167\373\002\121\175 +\042\330\012\156\232\133\167\337\360\372\101\354\071\334\165\312 +\150\007\014\037\352\243\102\060\100\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\006\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125\035 +\016\004\026\004\024\174\102\226\256\336\113\110\073\372\222\370 +\236\214\317\155\213\251\162\067\225\060\012\006\010\052\206\110 +\316\075\004\003\003\003\150\000\060\145\002\060\173\171\116\106 +\120\204\302\104\207\106\033\105\160\377\130\231\336\364\375\244 +\322\125\246\040\055\164\326\064\274\101\243\120\137\001\047\126 +\264\276\047\165\006\257\022\056\165\230\215\374\002\061\000\213 +\365\167\154\324\310\145\252\340\013\054\356\024\235\047\067\244 +\371\123\245\121\344\051\203\327\370\220\061\133\102\237\012\365 +\376\256\000\150\347\214\111\017\266\157\133\133\025\362\347 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "ISRG Root X2" +# Issuer: CN=ISRG Root X2,O=Internet Security Research Group,C=US +# Serial Number:41:d2:9d:d1:72:ea:ee:a7:80:c1:2c:6c:e9:2f:87:52 +# Subject: CN=ISRG Root X2,O=Internet Security Research Group,C=US +# Not Valid Before: Fri Sep 04 00:00:00 2020 +# Not Valid After : Mon Sep 17 16:00:00 2040 +# Fingerprint (SHA-256): 69:72:9B:8E:15:A8:6E:FC:17:7A:57:AF:B7:17:1D:FC:64:AD:D2:8C:2F:CA:8C:F1:50:7E:34:45:3C:CB:14:70 +# Fingerprint (SHA1): BD:B1:B9:3C:D5:97:8D:45:C6:26:14:55:F8:DB:95:C7:5A:D1:53:AF +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "ISRG Root X2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\275\261\271\074\325\227\215\105\306\046\024\125\370\333\225\307 +\132\321\123\257 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\323\236\304\036\043\074\246\337\317\243\176\155\340\024\346\345 +END +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\051\060\047\006\003\125\004\012\023\040\111\156\164\145\162\156 +\145\164\040\123\145\143\165\162\151\164\171\040\122\145\163\145 +\141\162\143\150\040\107\162\157\165\160\061\025\060\023\006\003 +\125\004\003\023\014\111\123\122\107\040\122\157\157\164\040\130 +\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\101\322\235\321\162\352\356\247\200\301\054\154\351\057 +\207\122 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "HiPKI Root CA - G1" +# +# Issuer: CN=HiPKI Root CA - G1,O="Chunghwa Telecom Co., Ltd.",C=TW +# Serial Number:2d:dd:ac:ce:62:97:94:a1:43:e8:b0:cd:76:6a:5e:60 +# Subject: CN=HiPKI Root CA - G1,O="Chunghwa Telecom Co., Ltd.",C=TW +# Not Valid Before: Fri Feb 22 09:46:04 2019 +# Not Valid After : Thu Dec 31 15:59:59 2037 +# Fingerprint (SHA-256): F0:15:CE:3C:C2:39:BF:EF:06:4B:E9:F1:D2:C4:17:E1:A0:26:4A:0A:94:BE:1F:0C:8D:12:18:64:EB:69:49:CC +# Fingerprint (SHA1): 6A:92:E4:A8:EE:1B:EC:96:45:37:E3:29:57:49:CD:96:E3:E5:D2:60 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HiPKI Root CA - G1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\043\060\041\006\003\125\004\012\014\032\103\150\165\156\147\150 +\167\141\040\124\145\154\145\143\157\155\040\103\157\056\054\040 +\114\164\144\056\061\033\060\031\006\003\125\004\003\014\022\110 +\151\120\113\111\040\122\157\157\164\040\103\101\040\055\040\107 +\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\043\060\041\006\003\125\004\012\014\032\103\150\165\156\147\150 +\167\141\040\124\145\154\145\143\157\155\040\103\157\056\054\040 +\114\164\144\056\061\033\060\031\006\003\125\004\003\014\022\110 +\151\120\113\111\040\122\157\157\164\040\103\101\040\055\040\107 +\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\055\335\254\316\142\227\224\241\103\350\260\315\166\152 +\136\140 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\152\060\202\003\122\240\003\002\001\002\002\020\055 +\335\254\316\142\227\224\241\103\350\260\315\166\152\136\140\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\117 +\061\013\060\011\006\003\125\004\006\023\002\124\127\061\043\060 +\041\006\003\125\004\012\014\032\103\150\165\156\147\150\167\141 +\040\124\145\154\145\143\157\155\040\103\157\056\054\040\114\164 +\144\056\061\033\060\031\006\003\125\004\003\014\022\110\151\120 +\113\111\040\122\157\157\164\040\103\101\040\055\040\107\061\060 +\036\027\015\061\071\060\062\062\062\060\071\064\066\060\064\132 +\027\015\063\067\061\062\063\061\061\065\065\071\065\071\132\060 +\117\061\013\060\011\006\003\125\004\006\023\002\124\127\061\043 +\060\041\006\003\125\004\012\014\032\103\150\165\156\147\150\167 +\141\040\124\145\154\145\143\157\155\040\103\157\056\054\040\114 +\164\144\056\061\033\060\031\006\003\125\004\003\014\022\110\151 +\120\113\111\040\122\157\157\164\040\103\101\040\055\040\107\061 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\364\036\177\122\163\062\014\163\344\275\023\164\243\324\060 +\250\320\256\113\330\266\337\165\107\146\364\174\347\071\004\036 +\152\160\040\322\132\107\162\147\125\364\245\350\235\325\036\041 +\241\360\147\272\314\041\150\276\104\123\277\215\371\342\334\057 +\125\310\067\077\037\244\300\234\263\344\167\134\240\106\376\167 +\372\032\240\070\352\355\232\162\336\053\275\224\127\072\272\354 +\171\347\137\175\102\144\071\172\046\066\367\044\360\325\057\272 +\225\230\021\146\255\227\065\326\165\001\200\340\257\364\204\141 +\214\015\036\137\174\207\226\136\101\257\353\207\352\370\135\361 +\056\210\005\076\114\042\273\332\037\052\335\122\106\144\071\363 +\102\316\331\236\014\263\260\167\227\144\234\300\364\243\056\037 +\225\007\260\027\337\060\333\000\030\226\114\241\201\113\335\004 +\155\123\243\075\374\007\254\324\305\067\202\353\344\225\010\031 +\050\202\322\102\072\243\330\123\354\171\211\140\110\140\310\162 +\222\120\334\003\217\203\077\262\102\127\132\333\152\351\021\227 +\335\205\050\274\060\114\253\343\302\261\105\104\107\037\340\212 +\026\007\226\322\041\017\123\300\355\251\176\324\116\354\233\011 +\354\257\102\254\060\326\277\321\020\105\340\246\026\262\245\305 +\323\117\163\224\063\161\002\241\152\243\326\063\227\117\041\143 +\036\133\217\331\301\136\105\161\167\017\201\135\137\041\232\255 +\203\314\372\136\326\215\043\137\033\075\101\257\040\165\146\132 +\112\366\237\373\253\030\367\161\300\266\035\061\354\073\040\353 +\313\342\270\365\256\222\262\367\341\204\113\362\242\362\223\232 +\042\236\323\024\157\066\124\275\037\136\131\025\271\163\250\301 +\174\157\173\142\351\026\154\107\132\145\363\016\021\233\106\331 +\375\155\334\326\234\300\264\175\245\260\335\077\126\157\241\371 +\366\344\022\110\375\006\177\022\127\266\251\043\117\133\003\303 +\340\161\052\043\267\367\260\261\073\274\230\275\326\230\250\014 +\153\366\216\022\147\246\362\262\130\344\002\011\023\074\251\273 +\020\264\322\060\105\361\354\367\000\021\337\145\370\334\053\103 +\125\277\026\227\304\017\325\054\141\204\252\162\206\376\346\072 +\176\302\077\175\356\374\057\024\076\346\205\335\120\157\267\111 +\355\002\003\001\000\001\243\102\060\100\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003\125 +\035\016\004\026\004\024\362\167\027\372\136\250\376\366\075\161 +\325\150\272\311\106\014\070\330\257\260\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\206\060\015\006\011\052\206 +\110\206\367\015\001\001\013\005\000\003\202\002\001\000\120\121 +\360\165\334\160\004\343\377\252\165\324\161\242\313\236\217\250 +\251\323\257\165\307\124\317\072\034\004\231\042\254\304\021\342 +\357\063\112\246\043\035\016\015\107\330\067\307\157\257\064\177 +\117\201\153\065\117\351\162\245\061\342\170\347\367\116\224\030 +\133\100\175\317\153\041\124\206\346\225\172\373\306\312\352\234 +\110\116\127\011\135\057\254\364\245\264\227\063\130\325\254\171 +\251\314\137\371\205\372\122\305\215\370\221\024\353\072\015\027 +\320\122\302\173\343\302\163\216\106\170\006\070\054\350\134\332 +\146\304\364\244\360\126\031\063\051\132\145\222\005\107\106\112 +\253\204\303\036\047\241\037\021\222\231\047\165\223\017\274\066 +\073\227\127\217\046\133\014\273\234\017\324\156\060\007\324\334 +\137\066\150\146\071\203\226\047\046\212\310\304\071\376\232\041 +\157\325\162\206\351\177\142\345\227\116\320\044\320\100\260\320 +\165\010\216\275\150\356\010\327\156\174\020\160\106\033\174\340 +\210\262\236\162\206\231\001\343\277\237\111\031\264\045\276\126 +\145\256\027\143\345\036\337\350\377\107\245\277\341\046\005\204 +\344\260\300\257\347\010\231\250\014\136\046\200\105\324\370\150 +\057\226\217\256\342\112\034\234\026\014\023\157\070\207\366\273 +\310\064\137\222\003\121\171\160\246\337\313\365\231\115\171\315 +\116\274\127\237\103\116\153\056\053\030\370\152\163\214\272\305 +\065\357\071\152\101\036\317\161\250\242\262\206\007\133\072\311 +\341\357\077\145\004\200\107\062\104\160\225\116\061\147\152\164 +\133\020\105\165\352\260\237\320\346\065\376\116\237\213\314\053 +\222\105\133\156\045\140\205\106\315\321\252\260\166\146\223\167 +\226\276\203\276\070\266\044\116\046\013\314\355\172\126\032\340 +\351\132\306\144\255\114\172\000\110\104\057\271\100\273\023\076 +\276\025\170\235\205\201\112\052\127\336\325\031\103\332\333\312 +\133\107\206\203\013\077\266\015\166\170\163\171\042\136\261\200 +\037\317\276\321\077\126\020\230\053\225\207\241\037\235\144\024 +\140\071\054\263\000\125\056\344\365\263\016\127\304\221\101\000 +\234\077\350\245\337\352\366\377\310\360\255\155\122\250\027\253 +\233\141\374\022\121\065\344\045\375\257\252\152\206\071 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "HiPKI Root CA - G1" +# Issuer: CN=HiPKI Root CA - G1,O="Chunghwa Telecom Co., Ltd.",C=TW +# Serial Number:2d:dd:ac:ce:62:97:94:a1:43:e8:b0:cd:76:6a:5e:60 +# Subject: CN=HiPKI Root CA - G1,O="Chunghwa Telecom Co., Ltd.",C=TW +# Not Valid Before: Fri Feb 22 09:46:04 2019 +# Not Valid After : Thu Dec 31 15:59:59 2037 +# Fingerprint (SHA-256): F0:15:CE:3C:C2:39:BF:EF:06:4B:E9:F1:D2:C4:17:E1:A0:26:4A:0A:94:BE:1F:0C:8D:12:18:64:EB:69:49:CC +# Fingerprint (SHA1): 6A:92:E4:A8:EE:1B:EC:96:45:37:E3:29:57:49:CD:96:E3:E5:D2:60 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "HiPKI Root CA - G1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\152\222\344\250\356\033\354\226\105\067\343\051\127\111\315\226 +\343\345\322\140 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\151\105\337\026\145\113\350\150\232\217\166\137\377\200\236\323 +END +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\043\060\041\006\003\125\004\012\014\032\103\150\165\156\147\150 +\167\141\040\124\145\154\145\143\157\155\040\103\157\056\054\040 +\114\164\144\056\061\033\060\031\006\003\125\004\003\014\022\110 +\151\120\113\111\040\122\157\157\164\040\103\101\040\055\040\107 +\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\055\335\254\316\142\227\224\241\103\350\260\315\166\152 +\136\140 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GlobalSign ECC Root CA - R4" +# +# Issuer: CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R4 +# Serial Number:02:03:e5:7e:f5:3f:93:fd:a5:09:21:b2:a6 +# Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R4 +# Not Valid Before: Tue Nov 13 00:00:00 2012 +# Not Valid After : Tue Jan 19 03:14:07 2038 +# Fingerprint (SHA-256): B0:85:D7:0B:96:4F:19:1A:73:E4:AF:0D:54:AE:7A:0E:07:AA:FD:AF:9B:71:DD:08:62:13:8A:B7:32:5A:24:A2 +# Fingerprint (SHA1): 6B:A0:B0:98:E1:71:EF:5A:AD:FE:48:15:80:77:10:F4:BD:6F:0B:28 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign ECC Root CA - R4" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\120\061\044\060\042\006\003\125\004\013\023\033\107\154\157 +\142\141\154\123\151\147\156\040\105\103\103\040\122\157\157\164 +\040\103\101\040\055\040\122\064\061\023\060\021\006\003\125\004 +\012\023\012\107\154\157\142\141\154\123\151\147\156\061\023\060 +\021\006\003\125\004\003\023\012\107\154\157\142\141\154\123\151 +\147\156 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\044\060\042\006\003\125\004\013\023\033\107\154\157 +\142\141\154\123\151\147\156\040\105\103\103\040\122\157\157\164 +\040\103\101\040\055\040\122\064\061\023\060\021\006\003\125\004 +\012\023\012\107\154\157\142\141\154\123\151\147\156\061\023\060 +\021\006\003\125\004\003\023\012\107\154\157\142\141\154\123\151 +\147\156 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\176\365\077\223\375\245\011\041\262\246 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\001\334\060\202\001\203\240\003\002\001\002\002\015\002 +\003\345\176\365\077\223\375\245\011\041\262\246\060\012\006\010 +\052\206\110\316\075\004\003\002\060\120\061\044\060\042\006\003 +\125\004\013\023\033\107\154\157\142\141\154\123\151\147\156\040 +\105\103\103\040\122\157\157\164\040\103\101\040\055\040\122\064 +\061\023\060\021\006\003\125\004\012\023\012\107\154\157\142\141 +\154\123\151\147\156\061\023\060\021\006\003\125\004\003\023\012 +\107\154\157\142\141\154\123\151\147\156\060\036\027\015\061\062 +\061\061\061\063\060\060\060\060\060\060\132\027\015\063\070\060 +\061\061\071\060\063\061\064\060\067\132\060\120\061\044\060\042 +\006\003\125\004\013\023\033\107\154\157\142\141\154\123\151\147 +\156\040\105\103\103\040\122\157\157\164\040\103\101\040\055\040 +\122\064\061\023\060\021\006\003\125\004\012\023\012\107\154\157 +\142\141\154\123\151\147\156\061\023\060\021\006\003\125\004\003 +\023\012\107\154\157\142\141\154\123\151\147\156\060\131\060\023 +\006\007\052\206\110\316\075\002\001\006\010\052\206\110\316\075 +\003\001\007\003\102\000\004\270\306\171\323\217\154\045\016\237 +\056\071\031\034\003\244\256\232\345\071\007\011\026\312\143\261 +\271\206\370\212\127\301\127\316\102\372\163\241\367\145\102\377 +\036\301\000\262\156\163\016\377\307\041\345\030\244\252\331\161 +\077\250\324\271\316\214\035\243\102\060\100\060\016\006\003\125 +\035\017\001\001\377\004\004\003\002\001\206\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\035\006\003 +\125\035\016\004\026\004\024\124\260\173\255\105\270\342\100\177 +\373\012\156\373\276\063\311\074\243\204\325\060\012\006\010\052 +\206\110\316\075\004\003\002\003\107\000\060\104\002\040\042\117 +\164\162\271\140\257\361\346\234\240\026\005\120\137\303\136\073 +\156\141\164\357\276\001\304\276\030\110\131\141\202\062\002\040 +\046\235\124\143\100\336\067\140\120\317\310\330\355\235\202\256 +\067\230\274\243\217\114\114\251\064\053\154\357\373\225\233\046 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GlobalSign ECC Root CA - R4" +# Issuer: CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R4 +# Serial Number:02:03:e5:7e:f5:3f:93:fd:a5:09:21:b2:a6 +# Subject: CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R4 +# Not Valid Before: Tue Nov 13 00:00:00 2012 +# Not Valid After : Tue Jan 19 03:14:07 2038 +# Fingerprint (SHA-256): B0:85:D7:0B:96:4F:19:1A:73:E4:AF:0D:54:AE:7A:0E:07:AA:FD:AF:9B:71:DD:08:62:13:8A:B7:32:5A:24:A2 +# Fingerprint (SHA1): 6B:A0:B0:98:E1:71:EF:5A:AD:FE:48:15:80:77:10:F4:BD:6F:0B:28 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GlobalSign ECC Root CA - R4" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\153\240\260\230\341\161\357\132\255\376\110\025\200\167\020\364 +\275\157\013\050 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\046\051\370\155\341\210\277\242\145\177\252\304\315\017\177\374 +END +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\044\060\042\006\003\125\004\013\023\033\107\154\157 +\142\141\154\123\151\147\156\040\105\103\103\040\122\157\157\164 +\040\103\101\040\055\040\122\064\061\023\060\021\006\003\125\004 +\012\023\012\107\154\157\142\141\154\123\151\147\156\061\023\060 +\021\006\003\125\004\003\023\012\107\154\157\142\141\154\123\151 +\147\156 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\176\365\077\223\375\245\011\041\262\246 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GTS Root R1" +# +# Issuer: CN=GTS Root R1,O=Google Trust Services LLC,C=US +# Serial Number:02:03:e5:93:6f:31:b0:13:49:88:6b:a2:17 +# Subject: CN=GTS Root R1,O=Google Trust Services LLC,C=US +# Not Valid Before: Wed Jun 22 00:00:00 2016 +# Not Valid After : Sun Jun 22 00:00:00 2036 +# Fingerprint (SHA-256): D9:47:43:2A:BD:E7:B7:FA:90:FC:2E:6B:59:10:1B:12:80:E0:E1:C7:E4:E4:0F:A3:C6:88:7F:FF:57:A7:F4:CF +# Fingerprint (SHA1): E5:8C:1C:C4:91:3B:38:63:4B:E9:10:6E:E3:AD:8E:6B:9D:D9:81:4A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GTS Root R1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\223\157\061\260\023\111\210\153\242\027 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\127\060\202\003\077\240\003\002\001\002\002\015\002 +\003\345\223\157\061\260\023\111\210\153\242\027\060\015\006\011 +\052\206\110\206\367\015\001\001\014\005\000\060\107\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\042\060\040\006\003 +\125\004\012\023\031\107\157\157\147\154\145\040\124\162\165\163 +\164\040\123\145\162\166\151\143\145\163\040\114\114\103\061\024 +\060\022\006\003\125\004\003\023\013\107\124\123\040\122\157\157 +\164\040\122\061\060\036\027\015\061\066\060\066\062\062\060\060 +\060\060\060\060\132\027\015\063\066\060\066\062\062\060\060\060 +\060\060\060\132\060\107\061\013\060\011\006\003\125\004\006\023 +\002\125\123\061\042\060\040\006\003\125\004\012\023\031\107\157 +\157\147\154\145\040\124\162\165\163\164\040\123\145\162\166\151 +\143\145\163\040\114\114\103\061\024\060\022\006\003\125\004\003 +\023\013\107\124\123\040\122\157\157\164\040\122\061\060\202\002 +\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000 +\003\202\002\017\000\060\202\002\012\002\202\002\001\000\266\021 +\002\213\036\343\241\167\233\073\334\277\224\076\267\225\247\100 +\074\241\375\202\371\175\062\006\202\161\366\366\214\177\373\350 +\333\274\152\056\227\227\243\214\113\371\053\366\261\371\316\204 +\035\261\371\305\227\336\357\271\362\243\351\274\022\211\136\247 +\252\122\253\370\043\047\313\244\261\234\143\333\327\231\176\360 +\012\136\353\150\246\364\306\132\107\015\115\020\063\343\116\261 +\023\243\310\030\154\113\354\374\011\220\337\235\144\051\045\043 +\007\241\264\322\075\056\140\340\317\322\011\207\273\315\110\360 +\115\302\302\172\210\212\273\272\317\131\031\326\257\217\260\007 +\260\236\061\361\202\301\300\337\056\246\155\154\031\016\265\330 +\176\046\032\105\003\075\260\171\244\224\050\255\017\177\046\345 +\250\010\376\226\350\074\150\224\123\356\203\072\210\053\025\226 +\011\262\340\172\214\056\165\326\234\353\247\126\144\217\226\117 +\150\256\075\227\302\204\217\300\274\100\300\013\134\275\366\207 +\263\065\154\254\030\120\177\204\340\114\315\222\323\040\351\063 +\274\122\231\257\062\265\051\263\045\052\264\110\371\162\341\312 +\144\367\346\202\020\215\350\235\302\212\210\372\070\146\212\374 +\143\371\001\371\170\375\173\134\167\372\166\207\372\354\337\261 +\016\171\225\127\264\275\046\357\326\001\321\353\026\012\273\216 +\013\265\305\305\212\125\253\323\254\352\221\113\051\314\031\244 +\062\045\116\052\361\145\104\320\002\316\252\316\111\264\352\237 +\174\203\260\100\173\347\103\253\247\154\243\217\175\211\201\372 +\114\245\377\325\216\303\316\113\340\265\330\263\216\105\317\166 +\300\355\100\053\375\123\017\260\247\325\073\015\261\212\242\003 +\336\061\255\314\167\352\157\173\076\326\337\221\042\022\346\276 +\372\330\062\374\020\143\024\121\162\336\135\326\026\223\275\051 +\150\063\357\072\146\354\007\212\046\337\023\327\127\145\170\047 +\336\136\111\024\000\242\000\177\232\250\041\266\251\261\225\260 +\245\271\015\026\021\332\307\154\110\074\100\340\176\015\132\315 +\126\074\321\227\005\271\313\113\355\071\113\234\304\077\322\125 +\023\156\044\260\326\161\372\364\301\272\314\355\033\365\376\201 +\101\330\000\230\075\072\310\256\172\230\067\030\005\225\002\003 +\001\000\001\243\102\060\100\060\016\006\003\125\035\017\001\001 +\377\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004 +\026\004\024\344\257\053\046\161\032\053\110\047\205\057\122\146 +\054\357\360\211\023\161\076\060\015\006\011\052\206\110\206\367 +\015\001\001\014\005\000\003\202\002\001\000\237\252\102\046\333 +\013\233\276\377\036\226\222\056\076\242\145\112\152\230\272\042 +\313\175\301\072\330\202\012\006\306\366\245\336\300\116\207\146 +\171\241\371\246\130\234\252\371\265\346\140\347\340\350\261\036 +\102\101\063\013\067\075\316\211\160\025\312\265\044\250\317\153 +\265\322\100\041\230\317\042\064\317\073\305\042\204\340\305\016 +\212\174\135\210\344\065\044\316\233\076\032\124\036\156\333\262 +\207\247\374\363\372\201\125\024\142\012\131\251\042\005\061\076 +\202\326\356\333\127\064\274\063\225\323\027\033\350\047\242\213 +\173\116\046\032\172\132\144\266\321\254\067\361\375\240\363\070 +\354\162\360\021\165\235\313\064\122\215\346\166\153\027\306\337 +\206\253\047\216\111\053\165\146\201\020\041\246\352\076\364\256 +\045\377\174\025\336\316\214\045\077\312\142\160\012\367\057\011 +\146\007\310\077\034\374\360\333\105\060\337\142\210\301\265\017 +\235\303\237\112\336\131\131\107\305\207\042\066\346\202\247\355 +\012\271\342\007\240\215\173\172\112\074\161\322\342\003\241\037 +\062\007\335\033\344\102\316\014\000\105\141\200\265\013\040\131 +\051\170\275\371\125\313\143\305\074\114\364\266\377\333\152\137 +\061\153\231\236\054\301\153\120\244\327\346\030\024\275\205\077 +\147\253\106\237\240\377\102\247\072\177\134\313\135\260\160\035 +\053\064\365\324\166\011\014\353\170\114\131\005\363\063\102\303 +\141\025\020\033\167\115\316\042\214\324\205\362\105\175\267\123 +\352\357\100\132\224\012\134\040\137\116\100\135\142\042\166\337 +\377\316\141\275\214\043\170\322\067\002\340\216\336\321\021\067 +\211\366\277\355\111\007\142\256\222\354\100\032\257\024\011\331 +\320\116\262\242\367\276\356\356\330\377\334\032\055\336\270\066 +\161\342\374\171\267\224\045\321\110\163\133\241\065\347\263\231 +\147\165\301\031\072\053\107\116\323\102\216\375\061\310\026\146 +\332\322\014\074\333\263\216\311\241\015\200\017\173\026\167\024 +\277\377\333\011\224\262\223\274\040\130\025\351\333\161\103\363 +\336\020\303\000\334\250\052\225\266\302\326\077\220\153\166\333 +\154\376\214\274\362\160\065\014\334\231\031\065\334\327\310\106 +\143\325\066\161\256\127\373\267\202\155\334 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GTS Root R1" +# Issuer: CN=GTS Root R1,O=Google Trust Services LLC,C=US +# Serial Number:02:03:e5:93:6f:31:b0:13:49:88:6b:a2:17 +# Subject: CN=GTS Root R1,O=Google Trust Services LLC,C=US +# Not Valid Before: Wed Jun 22 00:00:00 2016 +# Not Valid After : Sun Jun 22 00:00:00 2036 +# Fingerprint (SHA-256): D9:47:43:2A:BD:E7:B7:FA:90:FC:2E:6B:59:10:1B:12:80:E0:E1:C7:E4:E4:0F:A3:C6:88:7F:FF:57:A7:F4:CF +# Fingerprint (SHA1): E5:8C:1C:C4:91:3B:38:63:4B:E9:10:6E:E3:AD:8E:6B:9D:D9:81:4A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GTS Root R1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\345\214\034\304\221\073\070\143\113\351\020\156\343\255\216\153 +\235\331\201\112 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\005\376\320\277\161\250\243\166\143\332\001\340\330\122\334\100 +END +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\223\157\061\260\023\111\210\153\242\027 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GTS Root R2" +# +# Issuer: CN=GTS Root R2,O=Google Trust Services LLC,C=US +# Serial Number:02:03:e5:ae:c5:8d:04:25:1a:ab:11:25:aa +# Subject: CN=GTS Root R2,O=Google Trust Services LLC,C=US +# Not Valid Before: Wed Jun 22 00:00:00 2016 +# Not Valid After : Sun Jun 22 00:00:00 2036 +# Fingerprint (SHA-256): 8D:25:CD:97:22:9D:BF:70:35:6B:DA:4E:B3:CC:73:40:31:E2:4C:F0:0F:AF:CF:D3:2D:C7:6E:B5:84:1C:7E:A8 +# Fingerprint (SHA1): 9A:44:49:76:32:DB:DE:FA:D0:BC:FB:5A:7B:17:BD:9E:56:09:24:94 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GTS Root R2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\256\305\215\004\045\032\253\021\045\252 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\127\060\202\003\077\240\003\002\001\002\002\015\002 +\003\345\256\305\215\004\045\032\253\021\045\252\060\015\006\011 +\052\206\110\206\367\015\001\001\014\005\000\060\107\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\042\060\040\006\003 +\125\004\012\023\031\107\157\157\147\154\145\040\124\162\165\163 +\164\040\123\145\162\166\151\143\145\163\040\114\114\103\061\024 +\060\022\006\003\125\004\003\023\013\107\124\123\040\122\157\157 +\164\040\122\062\060\036\027\015\061\066\060\066\062\062\060\060 +\060\060\060\060\132\027\015\063\066\060\066\062\062\060\060\060 +\060\060\060\132\060\107\061\013\060\011\006\003\125\004\006\023 +\002\125\123\061\042\060\040\006\003\125\004\012\023\031\107\157 +\157\147\154\145\040\124\162\165\163\164\040\123\145\162\166\151 +\143\145\163\040\114\114\103\061\024\060\022\006\003\125\004\003 +\023\013\107\124\123\040\122\157\157\164\040\122\062\060\202\002 +\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000 +\003\202\002\017\000\060\202\002\012\002\202\002\001\000\316\336 +\375\246\373\354\354\024\064\074\007\006\132\154\131\367\031\065 +\335\367\301\235\125\252\323\315\073\244\223\162\357\012\372\155 +\235\366\360\205\200\133\241\110\122\237\071\305\267\356\050\254 +\357\313\166\150\024\271\337\255\001\154\231\037\304\042\035\237 +\376\162\167\340\054\133\257\344\004\277\117\162\240\032\064\230 +\350\071\150\354\225\045\173\166\241\346\151\271\205\031\275\211 +\214\376\255\355\066\352\163\274\377\203\342\313\175\301\322\316 +\112\263\215\005\236\213\111\223\337\301\133\320\156\136\360\056 +\060\056\202\374\372\274\264\027\012\110\345\210\233\305\233\153 +\336\260\312\264\003\360\332\364\220\270\145\144\367\134\114\255 +\350\176\146\136\231\327\270\302\076\310\320\023\235\255\356\344 +\105\173\211\125\367\212\037\142\122\204\022\263\302\100\227\343 +\212\037\107\221\246\164\132\322\370\261\143\050\020\270\263\011 +\270\126\167\100\242\046\230\171\306\376\337\045\356\076\345\240 +\177\324\141\017\121\113\074\077\214\332\341\160\164\330\302\150 +\241\371\301\014\351\241\342\177\273\125\074\166\006\356\152\116 +\314\222\210\060\115\232\275\117\013\110\232\204\265\230\243\325 +\373\163\301\127\141\335\050\126\165\023\256\207\216\347\014\121 +\011\020\165\210\114\274\215\371\173\074\324\042\110\037\052\334 +\353\153\273\104\261\313\063\161\062\106\257\255\112\361\214\350 +\164\072\254\347\032\042\163\200\322\060\367\045\102\307\042\073 +\073\022\255\226\056\306\303\166\007\252\040\267\065\111\127\351 +\222\111\350\166\026\162\061\147\053\226\176\212\243\307\224\126 +\042\277\152\113\176\001\041\262\043\062\337\344\232\104\155\131 +\133\135\365\000\240\034\233\306\170\227\215\220\377\233\310\252 +\264\257\021\121\071\136\331\373\147\255\325\133\021\235\062\232 +\033\275\325\272\133\245\311\313\045\151\123\125\047\134\340\312 +\066\313\210\141\373\036\267\320\313\356\026\373\323\246\114\336 +\222\245\324\342\337\365\006\124\336\056\235\113\264\223\060\252 +\201\316\335\032\334\121\163\015\117\160\351\345\266\026\041\031 +\171\262\346\211\013\165\144\312\325\253\274\011\301\030\241\377 +\324\124\241\205\074\375\024\044\003\262\207\323\244\267\002\003 +\001\000\001\243\102\060\100\060\016\006\003\125\035\017\001\001 +\377\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004 +\026\004\024\273\377\312\216\043\237\117\231\312\333\342\150\246 +\245\025\047\027\036\331\016\060\015\006\011\052\206\110\206\367 +\015\001\001\014\005\000\003\202\002\001\000\037\312\316\335\307 +\276\241\237\331\047\114\013\334\027\230\021\152\210\336\075\346 +\161\126\162\262\236\032\116\234\325\053\230\044\135\233\153\173 +\260\063\202\011\275\337\045\106\352\230\236\266\033\376\203\074 +\322\142\141\301\004\355\316\340\305\311\310\023\023\125\347\250 +\143\255\214\173\001\376\167\060\341\316\150\233\005\370\022\356 +\171\061\240\101\105\065\050\012\161\244\044\117\214\334\074\202 +\007\137\146\334\175\020\376\014\141\263\005\225\356\341\256\201 +\017\250\370\307\217\115\250\043\002\046\153\035\203\122\125\316 +\265\057\000\312\200\100\340\341\164\254\140\365\207\200\235\256 +\066\144\221\135\260\150\030\352\212\141\311\167\250\227\304\311 +\307\245\374\125\113\363\360\177\271\145\075\047\150\320\314\153 +\372\123\235\341\221\032\311\135\032\226\155\062\207\355\003\040 +\310\002\316\132\276\331\352\375\262\115\304\057\033\337\137\172 +\365\370\213\306\356\061\072\045\121\125\147\215\144\062\173\351 +\236\303\202\272\052\055\351\036\264\340\110\006\242\374\147\257 +\037\042\002\163\373\040\012\257\235\124\113\241\315\377\140\107 +\260\077\135\357\033\126\275\227\041\226\055\012\321\136\235\070 +\002\107\154\271\364\366\043\045\270\240\152\232\053\167\010\372 +\304\261\050\220\046\130\010\074\342\176\252\327\075\157\272\061 +\210\012\005\353\047\265\241\111\356\240\105\124\173\346\047\145 +\231\040\041\250\243\274\373\030\226\273\122\157\014\355\203\121 +\114\351\131\342\040\140\305\302\145\222\202\214\363\020\037\016 +\212\227\276\167\202\155\077\217\035\135\274\111\047\275\314\117 +\017\341\316\166\206\004\043\305\300\214\022\133\375\333\204\240 +\044\361\110\377\144\174\320\276\134\026\321\357\231\255\300\037 +\373\313\256\274\070\042\006\046\144\332\332\227\016\077\050\025 +\104\250\117\000\312\360\232\314\317\164\152\264\076\074\353\225 +\354\265\323\132\330\201\231\351\103\030\067\353\263\273\321\130 +\142\101\363\146\322\217\252\170\225\124\040\303\132\056\164\053 +\325\321\276\030\151\300\254\325\244\317\071\272\121\204\003\145 +\351\142\300\142\376\330\115\125\226\342\320\021\372\110\064\021 +\354\236\355\005\035\344\310\326\035\206\313 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GTS Root R2" +# Issuer: CN=GTS Root R2,O=Google Trust Services LLC,C=US +# Serial Number:02:03:e5:ae:c5:8d:04:25:1a:ab:11:25:aa +# Subject: CN=GTS Root R2,O=Google Trust Services LLC,C=US +# Not Valid Before: Wed Jun 22 00:00:00 2016 +# Not Valid After : Sun Jun 22 00:00:00 2036 +# Fingerprint (SHA-256): 8D:25:CD:97:22:9D:BF:70:35:6B:DA:4E:B3:CC:73:40:31:E2:4C:F0:0F:AF:CF:D3:2D:C7:6E:B5:84:1C:7E:A8 +# Fingerprint (SHA1): 9A:44:49:76:32:DB:DE:FA:D0:BC:FB:5A:7B:17:BD:9E:56:09:24:94 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GTS Root R2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\232\104\111\166\062\333\336\372\320\274\373\132\173\027\275\236 +\126\011\044\224 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\036\071\300\123\346\036\051\202\013\312\122\125\066\135\127\334 +END +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\256\305\215\004\045\032\253\021\045\252 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GTS Root R3" +# +# Issuer: CN=GTS Root R3,O=Google Trust Services LLC,C=US +# Serial Number:02:03:e5:b8:82:eb:20:f8:25:27:6d:3d:66 +# Subject: CN=GTS Root R3,O=Google Trust Services LLC,C=US +# Not Valid Before: Wed Jun 22 00:00:00 2016 +# Not Valid After : Sun Jun 22 00:00:00 2036 +# Fingerprint (SHA-256): 34:D8:A7:3E:E2:08:D9:BC:DB:0D:95:65:20:93:4B:4E:40:E6:94:82:59:6E:8B:6F:73:C8:42:6B:01:0A:6F:48 +# Fingerprint (SHA1): ED:E5:71:80:2B:C8:92:B9:5B:83:3C:D2:32:68:3F:09:CD:A0:1E:46 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GTS Root R3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\270\202\353\040\370\045\047\155\075\146 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\011\060\202\001\216\240\003\002\001\002\002\015\002 +\003\345\270\202\353\040\370\045\047\155\075\146\060\012\006\010 +\052\206\110\316\075\004\003\003\060\107\061\013\060\011\006\003 +\125\004\006\023\002\125\123\061\042\060\040\006\003\125\004\012 +\023\031\107\157\157\147\154\145\040\124\162\165\163\164\040\123 +\145\162\166\151\143\145\163\040\114\114\103\061\024\060\022\006 +\003\125\004\003\023\013\107\124\123\040\122\157\157\164\040\122 +\063\060\036\027\015\061\066\060\066\062\062\060\060\060\060\060 +\060\132\027\015\063\066\060\066\062\062\060\060\060\060\060\060 +\132\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154 +\145\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163 +\040\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107 +\124\123\040\122\157\157\164\040\122\063\060\166\060\020\006\007 +\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142 +\000\004\037\117\063\207\063\051\212\241\204\336\313\307\041\130 +\101\211\352\126\235\053\113\205\306\035\114\047\274\177\046\121 +\162\157\342\237\326\243\312\314\105\024\106\213\255\357\176\206 +\214\354\261\176\057\377\251\161\235\030\204\105\004\101\125\156 +\053\352\046\177\273\220\001\343\113\031\272\344\124\226\105\011 +\261\325\154\221\104\255\204\023\216\232\214\015\200\014\062\366 +\340\047\243\102\060\100\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026 +\004\024\301\361\046\272\240\055\256\205\201\317\323\361\052\022 +\275\270\012\147\375\274\060\012\006\010\052\206\110\316\075\004 +\003\003\003\151\000\060\146\002\061\000\366\341\040\225\024\173 +\124\243\220\026\021\277\204\310\352\157\153\027\236\036\106\230 +\040\233\237\323\015\331\254\323\057\315\174\370\133\056\125\273 +\277\335\222\367\244\014\334\061\341\242\002\061\000\374\227\146 +\146\345\103\026\023\203\335\307\337\057\276\024\070\355\001\316 +\261\027\032\021\165\351\275\003\217\046\176\204\345\311\140\246 +\225\327\124\131\267\347\021\054\211\324\271\356\027 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GTS Root R3" +# Issuer: CN=GTS Root R3,O=Google Trust Services LLC,C=US +# Serial Number:02:03:e5:b8:82:eb:20:f8:25:27:6d:3d:66 +# Subject: CN=GTS Root R3,O=Google Trust Services LLC,C=US +# Not Valid Before: Wed Jun 22 00:00:00 2016 +# Not Valid After : Sun Jun 22 00:00:00 2036 +# Fingerprint (SHA-256): 34:D8:A7:3E:E2:08:D9:BC:DB:0D:95:65:20:93:4B:4E:40:E6:94:82:59:6E:8B:6F:73:C8:42:6B:01:0A:6F:48 +# Fingerprint (SHA1): ED:E5:71:80:2B:C8:92:B9:5B:83:3C:D2:32:68:3F:09:CD:A0:1E:46 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GTS Root R3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\355\345\161\200\053\310\222\271\133\203\074\322\062\150\077\011 +\315\240\036\106 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\076\347\235\130\002\224\106\121\224\345\340\042\112\213\347\163 +END +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\270\202\353\040\370\045\047\155\075\146 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "GTS Root R4" +# +# Issuer: CN=GTS Root R4,O=Google Trust Services LLC,C=US +# Serial Number:02:03:e5:c0:68:ef:63:1a:9c:72:90:50:52 +# Subject: CN=GTS Root R4,O=Google Trust Services LLC,C=US +# Not Valid Before: Wed Jun 22 00:00:00 2016 +# Not Valid After : Sun Jun 22 00:00:00 2036 +# Fingerprint (SHA-256): 34:9D:FA:40:58:C5:E2:63:12:3B:39:8A:E7:95:57:3C:4E:13:13:C8:3F:E6:8F:93:55:6C:D5:E8:03:1B:3C:7D +# Fingerprint (SHA1): 77:D3:03:67:B5:E0:0C:15:F6:0C:38:61:DF:7C:E1:3B:92:46:4D:47 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GTS Root R4" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\064 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\300\150\357\143\032\234\162\220\120\122 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\011\060\202\001\216\240\003\002\001\002\002\015\002 +\003\345\300\150\357\143\032\234\162\220\120\122\060\012\006\010 +\052\206\110\316\075\004\003\003\060\107\061\013\060\011\006\003 +\125\004\006\023\002\125\123\061\042\060\040\006\003\125\004\012 +\023\031\107\157\157\147\154\145\040\124\162\165\163\164\040\123 +\145\162\166\151\143\145\163\040\114\114\103\061\024\060\022\006 +\003\125\004\003\023\013\107\124\123\040\122\157\157\164\040\122 +\064\060\036\027\015\061\066\060\066\062\062\060\060\060\060\060 +\060\132\027\015\063\066\060\066\062\062\060\060\060\060\060\060 +\132\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154 +\145\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163 +\040\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107 +\124\123\040\122\157\157\164\040\122\064\060\166\060\020\006\007 +\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142 +\000\004\363\164\163\247\150\213\140\256\103\270\065\305\201\060 +\173\113\111\235\373\301\141\316\346\336\106\275\153\325\141\030 +\065\256\100\335\163\367\211\221\060\132\353\074\356\205\174\242 +\100\166\073\251\306\270\107\330\052\347\222\221\152\163\351\261 +\162\071\237\051\237\242\230\323\137\136\130\206\145\017\241\204 +\145\006\321\334\213\311\307\163\310\214\152\057\345\304\253\321 +\035\212\243\102\060\100\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026 +\004\024\200\114\326\353\164\377\111\066\243\325\330\374\265\076 +\305\152\360\224\035\214\060\012\006\010\052\206\110\316\075\004 +\003\003\003\151\000\060\146\002\061\000\350\100\377\203\336\003 +\364\237\256\035\172\247\056\271\257\117\366\203\035\016\055\205 +\001\035\321\331\152\354\017\302\257\307\136\126\136\134\325\034 +\130\042\050\013\367\060\266\057\261\174\002\061\000\360\141\074 +\247\364\240\202\343\041\325\204\035\163\206\234\055\257\312\064 +\233\361\237\271\043\066\342\274\140\003\235\200\263\232\126\310 +\341\342\273\024\171\312\315\041\324\224\265\111\103 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "GTS Root R4" +# Issuer: CN=GTS Root R4,O=Google Trust Services LLC,C=US +# Serial Number:02:03:e5:c0:68:ef:63:1a:9c:72:90:50:52 +# Subject: CN=GTS Root R4,O=Google Trust Services LLC,C=US +# Not Valid Before: Wed Jun 22 00:00:00 2016 +# Not Valid After : Sun Jun 22 00:00:00 2036 +# Fingerprint (SHA-256): 34:9D:FA:40:58:C5:E2:63:12:3B:39:8A:E7:95:57:3C:4E:13:13:C8:3F:E6:8F:93:55:6C:D5:E8:03:1B:3C:7D +# Fingerprint (SHA1): 77:D3:03:67:B5:E0:0C:15:F6:0C:38:61:DF:7C:E1:3B:92:46:4D:47 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "GTS Root R4" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\167\323\003\147\265\340\014\025\366\014\070\141\337\174\341\073 +\222\106\115\107 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\103\226\203\167\031\115\166\263\235\145\122\344\035\042\245\350 +END +CKA_ISSUER MULTILINE_OCTAL +\060\107\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\042\060\040\006\003\125\004\012\023\031\107\157\157\147\154\145 +\040\124\162\165\163\164\040\123\145\162\166\151\143\145\163\040 +\114\114\103\061\024\060\022\006\003\125\004\003\023\013\107\124 +\123\040\122\157\157\164\040\122\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\015\002\003\345\300\150\357\143\032\234\162\220\120\122 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Telia Root CA v2" +# +# Issuer: CN=Telia Root CA v2,O=Telia Finland Oyj,C=FI +# Serial Number:01:67:5f:27:d6:fe:7a:e3:e4:ac:be:09:5b:05:9e +# Subject: CN=Telia Root CA v2,O=Telia Finland Oyj,C=FI +# Not Valid Before: Thu Nov 29 11:55:54 2018 +# Not Valid After : Sun Nov 29 11:55:54 2043 +# Fingerprint (SHA-256): 24:2B:69:74:2F:CB:1E:5B:2A:BF:98:89:8B:94:57:21:87:54:4E:5B:4D:99:11:78:65:73:62:1F:6A:74:B8:2C +# Fingerprint (SHA1): B9:99:CD:D1:73:50:8A:C4:47:05:08:9C:8C:88:FB:BE:A0:2B:40:CD +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telia Root CA v2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\104\061\013\060\011\006\003\125\004\006\023\002\106\111\061 +\032\060\030\006\003\125\004\012\014\021\124\145\154\151\141\040 +\106\151\156\154\141\156\144\040\117\171\152\061\031\060\027\006 +\003\125\004\003\014\020\124\145\154\151\141\040\122\157\157\164 +\040\103\101\040\166\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\104\061\013\060\011\006\003\125\004\006\023\002\106\111\061 +\032\060\030\006\003\125\004\012\014\021\124\145\154\151\141\040 +\106\151\156\154\141\156\144\040\117\171\152\061\031\060\027\006 +\003\125\004\003\014\020\124\145\154\151\141\040\122\157\157\164 +\040\103\101\040\166\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\017\001\147\137\047\326\376\172\343\344\254\276\011\133\005 +\236 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\164\060\202\003\134\240\003\002\001\002\002\017\001 +\147\137\047\326\376\172\343\344\254\276\011\133\005\236\060\015 +\006\011\052\206\110\206\367\015\001\001\013\005\000\060\104\061 +\013\060\011\006\003\125\004\006\023\002\106\111\061\032\060\030 +\006\003\125\004\012\014\021\124\145\154\151\141\040\106\151\156 +\154\141\156\144\040\117\171\152\061\031\060\027\006\003\125\004 +\003\014\020\124\145\154\151\141\040\122\157\157\164\040\103\101 +\040\166\062\060\036\027\015\061\070\061\061\062\071\061\061\065 +\065\065\064\132\027\015\064\063\061\061\062\071\061\061\065\065 +\065\064\132\060\104\061\013\060\011\006\003\125\004\006\023\002 +\106\111\061\032\060\030\006\003\125\004\012\014\021\124\145\154 +\151\141\040\106\151\156\154\141\156\144\040\117\171\152\061\031 +\060\027\006\003\125\004\003\014\020\124\145\154\151\141\040\122 +\157\157\164\040\103\101\040\166\062\060\202\002\042\060\015\006 +\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017 +\000\060\202\002\012\002\202\002\001\000\262\320\077\007\274\342 +\173\320\153\231\370\342\167\151\347\316\235\244\003\274\202\155 +\241\376\201\145\037\114\047\254\216\000\272\026\173\353\060\152 +\000\300\263\164\150\176\262\257\307\325\142\263\172\077\120\312 +\214\066\104\044\143\322\066\351\014\205\366\103\166\325\114\241 +\140\162\147\342\050\063\245\313\061\270\072\042\043\064\270\175 +\275\126\042\100\235\352\364\173\003\255\150\374\262\201\117\230 +\320\164\352\215\345\175\315\143\303\243\366\336\222\302\130\031 +\340\226\273\305\304\251\075\245\164\226\376\257\371\211\252\275 +\225\027\124\330\170\104\361\014\167\025\222\340\230\102\247\244 +\326\252\040\222\315\301\240\263\226\262\072\204\102\215\175\325 +\225\344\326\333\351\142\304\130\263\171\305\214\323\065\063\203 +\237\165\241\122\047\141\070\361\131\075\216\120\340\275\171\074 +\347\154\226\376\136\331\002\145\264\216\134\320\021\064\337\135 +\277\122\247\201\000\303\177\231\105\231\025\325\027\310\012\123 +\354\143\363\231\175\314\151\022\206\302\027\360\001\236\277\204 +\274\321\122\313\033\222\146\316\244\123\345\241\277\304\333\011 +\326\346\211\126\053\310\343\174\336\343\377\211\345\065\156\050 +\350\154\013\043\121\251\045\005\353\110\370\335\261\312\372\154 +\010\121\357\267\030\154\104\312\046\341\163\306\211\006\201\345 +\212\254\260\342\051\306\271\044\263\153\104\021\364\245\103\302 +\114\103\345\160\066\214\266\063\127\172\225\056\202\240\364\134 +\020\263\141\203\366\002\005\206\056\174\055\154\334\003\106\156 +\065\223\325\172\225\057\336\040\330\133\176\224\220\004\152\272 +\131\075\004\005\165\235\067\242\016\056\075\353\301\244\122\203 +\376\320\153\324\146\216\334\306\351\022\116\035\052\127\252\020 +\274\174\136\202\175\246\246\311\362\055\271\365\027\047\255\321 +\016\211\124\053\225\372\300\255\035\230\024\170\063\102\206\012 +\251\163\265\373\164\015\267\033\060\031\304\132\016\034\047\267 +\332\030\320\377\212\310\005\272\361\252\034\242\067\267\346\110 +\244\106\054\224\352\250\166\142\107\213\020\123\007\110\127\154 +\342\222\115\266\256\005\313\334\301\112\136\217\254\075\031\116 +\302\355\140\165\053\333\301\312\102\325\002\003\001\000\001\243 +\143\060\141\060\037\006\003\125\035\043\004\030\060\026\200\024 +\162\254\344\063\171\252\105\207\366\375\254\035\236\326\307\057 +\206\330\044\071\060\035\006\003\125\035\016\004\026\004\024\162 +\254\344\063\171\252\105\207\366\375\254\035\236\326\307\057\206 +\330\044\071\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\015\006\011\052\206\110\206\367\015\001\001 +\013\005\000\003\202\002\001\000\240\073\131\247\011\224\076\066 +\204\322\176\057\071\245\226\227\372\021\255\374\147\363\161\011 +\362\262\211\204\147\104\257\271\357\355\226\354\234\144\333\062 +\060\157\147\232\254\176\137\262\253\001\066\176\201\372\344\204 +\136\322\254\066\340\153\142\305\175\113\016\202\155\322\166\142 +\321\376\227\370\237\060\174\030\371\264\122\167\202\035\166\333 +\323\035\251\360\301\232\000\275\155\165\330\175\347\372\307\070 +\243\234\160\350\106\171\003\257\056\164\333\165\370\156\123\014 +\003\310\231\032\211\065\031\074\323\311\124\174\250\360\054\346 +\156\007\171\157\152\341\346\352\221\202\151\012\035\303\176\131 +\242\236\153\106\025\230\133\323\257\106\035\142\310\316\200\122 +\111\021\077\311\004\022\303\023\174\077\073\212\226\333\074\240 +\036\012\264\213\124\262\044\147\015\357\202\313\276\074\175\321 +\342\177\256\026\326\126\130\271\332\040\261\203\025\241\357\212 +\115\062\157\101\057\023\122\202\224\327\032\301\170\242\121\335 +\053\160\155\267\032\371\367\260\340\147\227\126\333\174\141\123 +\011\003\050\002\100\307\263\330\375\234\160\152\306\050\303\205 +\351\342\355\032\223\240\336\113\230\242\204\076\005\167\001\226 +\075\373\264\040\017\234\162\002\172\022\057\325\243\272\121\170 +\257\052\053\104\145\116\265\375\012\350\301\315\171\207\141\053 +\336\200\127\105\277\147\361\233\221\136\245\244\354\131\110\020 +\015\070\307\260\372\303\104\155\004\365\170\120\034\222\226\133 +\332\365\270\056\272\133\317\345\360\152\235\113\057\130\163\055 +\117\055\304\034\076\364\263\077\253\025\016\073\031\101\212\244 +\301\127\022\146\161\114\372\123\343\127\353\142\225\011\236\124 +\335\321\302\074\127\074\275\070\255\230\144\267\270\003\232\123 +\126\140\135\263\330\102\033\134\113\022\212\034\353\353\175\306 +\172\151\307\047\177\244\370\213\362\344\224\146\207\113\351\224 +\007\011\022\171\212\262\353\164\004\334\316\364\104\131\340\026 +\312\305\054\130\327\074\173\317\142\206\152\120\175\065\066\146 +\247\373\067\347\050\307\330\320\255\245\151\224\217\350\301\337 +\044\370\033\007\061\207\201\330\135\366\350\050\330\112\122\200 +\254\023\356\120\024\036\230\307 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Telia Root CA v2" +# Issuer: CN=Telia Root CA v2,O=Telia Finland Oyj,C=FI +# Serial Number:01:67:5f:27:d6:fe:7a:e3:e4:ac:be:09:5b:05:9e +# Subject: CN=Telia Root CA v2,O=Telia Finland Oyj,C=FI +# Not Valid Before: Thu Nov 29 11:55:54 2018 +# Not Valid After : Sun Nov 29 11:55:54 2043 +# Fingerprint (SHA-256): 24:2B:69:74:2F:CB:1E:5B:2A:BF:98:89:8B:94:57:21:87:54:4E:5B:4D:99:11:78:65:73:62:1F:6A:74:B8:2C +# Fingerprint (SHA1): B9:99:CD:D1:73:50:8A:C4:47:05:08:9C:8C:88:FB:BE:A0:2B:40:CD +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telia Root CA v2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\271\231\315\321\163\120\212\304\107\005\010\234\214\210\373\276 +\240\053\100\315 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\016\217\254\252\202\337\205\261\364\334\020\034\374\231\331\110 +END +CKA_ISSUER MULTILINE_OCTAL +\060\104\061\013\060\011\006\003\125\004\006\023\002\106\111\061 +\032\060\030\006\003\125\004\012\014\021\124\145\154\151\141\040 +\106\151\156\154\141\156\144\040\117\171\152\061\031\060\027\006 +\003\125\004\003\014\020\124\145\154\151\141\040\122\157\157\164 +\040\103\101\040\166\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\017\001\147\137\047\326\376\172\343\344\254\276\011\133\005 +\236 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "D-TRUST BR Root CA 1 2020" +# +# Issuer: CN=D-TRUST BR Root CA 1 2020,O=D-Trust GmbH,C=DE +# Serial Number:7c:c9:8f:2b:84:d7:df:ea:0f:c9:65:9a:d3:4b:4d:96 +# Subject: CN=D-TRUST BR Root CA 1 2020,O=D-Trust GmbH,C=DE +# Not Valid Before: Tue Feb 11 09:45:00 2020 +# Not Valid After : Sun Feb 11 09:44:59 2035 +# Fingerprint (SHA-256): E5:9A:AA:81:60:09:C2:2B:FF:5B:25:BA:D3:7D:F3:06:F0:49:79:7C:1F:81:D8:5A:B0:89:E6:57:BD:8F:00:44 +# Fingerprint (SHA1): 1F:5B:98:F0:E3:B5:F7:74:3C:ED:E6:B0:36:7D:32:CD:F4:09:41:67 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST BR Root CA 1 2020" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\042\060\040\006\003\125\004\003\023 +\031\104\055\124\122\125\123\124\040\102\122\040\122\157\157\164 +\040\103\101\040\061\040\062\060\062\060 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\042\060\040\006\003\125\004\003\023 +\031\104\055\124\122\125\123\124\040\102\122\040\122\157\157\164 +\040\103\101\040\061\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\174\311\217\053\204\327\337\352\017\311\145\232\323\113 +\115\226 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\333\060\202\002\140\240\003\002\001\002\002\020\174 +\311\217\053\204\327\337\352\017\311\145\232\323\113\115\226\060 +\012\006\010\052\206\110\316\075\004\003\003\060\110\061\013\060 +\011\006\003\125\004\006\023\002\104\105\061\025\060\023\006\003 +\125\004\012\023\014\104\055\124\162\165\163\164\040\107\155\142 +\110\061\042\060\040\006\003\125\004\003\023\031\104\055\124\122 +\125\123\124\040\102\122\040\122\157\157\164\040\103\101\040\061 +\040\062\060\062\060\060\036\027\015\062\060\060\062\061\061\060 +\071\064\065\060\060\132\027\015\063\065\060\062\061\061\060\071 +\064\064\065\071\132\060\110\061\013\060\011\006\003\125\004\006 +\023\002\104\105\061\025\060\023\006\003\125\004\012\023\014\104 +\055\124\162\165\163\164\040\107\155\142\110\061\042\060\040\006 +\003\125\004\003\023\031\104\055\124\122\125\123\124\040\102\122 +\040\122\157\157\164\040\103\101\040\061\040\062\060\062\060\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\306\313\307\050\321\373\204\365\232 +\357\102\024\040\341\103\153\156\165\255\374\053\003\204\324\166 +\223\045\327\131\073\101\145\153\036\346\064\052\273\164\366\022 +\316\350\155\347\253\344\074\116\077\104\010\213\315\026\161\313 +\277\222\231\364\244\327\074\120\124\122\220\205\203\170\224\147 +\147\243\034\011\031\075\165\064\205\336\355\140\175\307\014\264 +\101\122\271\156\345\356\102\243\202\001\015\060\202\001\011\060 +\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 +\060\035\006\003\125\035\016\004\026\004\024\163\221\020\253\377 +\125\263\132\174\011\045\325\262\272\010\240\153\253\037\155\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060 +\201\306\006\003\125\035\037\004\201\276\060\201\273\060\076\240 +\074\240\072\206\070\150\164\164\160\072\057\057\143\162\154\056 +\144\055\164\162\165\163\164\056\156\145\164\057\143\162\154\057 +\144\055\164\162\165\163\164\137\142\162\137\162\157\157\164\137 +\143\141\137\061\137\062\060\062\060\056\143\162\154\060\171\240 +\167\240\165\206\163\154\144\141\160\072\057\057\144\151\162\145 +\143\164\157\162\171\056\144\055\164\162\165\163\164\056\156\145 +\164\057\103\116\075\104\055\124\122\125\123\124\045\062\060\102 +\122\045\062\060\122\157\157\164\045\062\060\103\101\045\062\060 +\061\045\062\060\062\060\062\060\054\117\075\104\055\124\162\165 +\163\164\045\062\060\107\155\142\110\054\103\075\104\105\077\143 +\145\162\164\151\146\151\143\141\164\145\162\145\166\157\143\141 +\164\151\157\156\154\151\163\164\060\012\006\010\052\206\110\316 +\075\004\003\003\003\151\000\060\146\002\061\000\224\220\055\023 +\372\341\143\370\141\143\350\255\205\170\124\221\234\270\223\070 +\076\032\101\332\100\026\123\102\010\312\057\216\361\076\201\126 +\300\252\330\355\030\304\260\256\364\076\372\046\002\061\000\363 +\050\342\306\333\053\231\373\267\121\270\044\243\244\224\172\032 +\077\346\066\342\003\127\063\212\060\313\202\307\326\024\021\325 +\165\143\133\024\225\234\037\001\317\330\325\162\247\017\073 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "D-TRUST BR Root CA 1 2020" +# Issuer: CN=D-TRUST BR Root CA 1 2020,O=D-Trust GmbH,C=DE +# Serial Number:7c:c9:8f:2b:84:d7:df:ea:0f:c9:65:9a:d3:4b:4d:96 +# Subject: CN=D-TRUST BR Root CA 1 2020,O=D-Trust GmbH,C=DE +# Not Valid Before: Tue Feb 11 09:45:00 2020 +# Not Valid After : Sun Feb 11 09:44:59 2035 +# Fingerprint (SHA-256): E5:9A:AA:81:60:09:C2:2B:FF:5B:25:BA:D3:7D:F3:06:F0:49:79:7C:1F:81:D8:5A:B0:89:E6:57:BD:8F:00:44 +# Fingerprint (SHA1): 1F:5B:98:F0:E3:B5:F7:74:3C:ED:E6:B0:36:7D:32:CD:F4:09:41:67 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST BR Root CA 1 2020" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\037\133\230\360\343\265\367\164\074\355\346\260\066\175\062\315 +\364\011\101\147 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\265\252\113\325\355\367\343\125\056\217\162\012\363\165\270\355 +END +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\042\060\040\006\003\125\004\003\023 +\031\104\055\124\122\125\123\124\040\102\122\040\122\157\157\164 +\040\103\101\040\061\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\174\311\217\053\204\327\337\352\017\311\145\232\323\113 +\115\226 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "D-TRUST EV Root CA 1 2020" +# +# Issuer: CN=D-TRUST EV Root CA 1 2020,O=D-Trust GmbH,C=DE +# Serial Number:5f:02:41:d7:7a:87:7c:4c:03:a3:ac:96:8d:fb:ff:d0 +# Subject: CN=D-TRUST EV Root CA 1 2020,O=D-Trust GmbH,C=DE +# Not Valid Before: Tue Feb 11 10:00:00 2020 +# Not Valid After : Sun Feb 11 09:59:59 2035 +# Fingerprint (SHA-256): 08:17:0D:1A:A3:64:53:90:1A:2F:95:92:45:E3:47:DB:0C:8D:37:AB:AA:BC:56:B8:1A:A1:00:DC:95:89:70:DB +# Fingerprint (SHA1): 61:DB:8C:21:59:69:03:90:D8:7C:9C:12:86:54:CF:9D:3D:F4:DD:07 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST EV Root CA 1 2020" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\042\060\040\006\003\125\004\003\023 +\031\104\055\124\122\125\123\124\040\105\126\040\122\157\157\164 +\040\103\101\040\061\040\062\060\062\060 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\042\060\040\006\003\125\004\003\023 +\031\104\055\124\122\125\123\124\040\105\126\040\122\157\157\164 +\040\103\101\040\061\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\137\002\101\327\172\207\174\114\003\243\254\226\215\373 +\377\320 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\333\060\202\002\140\240\003\002\001\002\002\020\137 +\002\101\327\172\207\174\114\003\243\254\226\215\373\377\320\060 +\012\006\010\052\206\110\316\075\004\003\003\060\110\061\013\060 +\011\006\003\125\004\006\023\002\104\105\061\025\060\023\006\003 +\125\004\012\023\014\104\055\124\162\165\163\164\040\107\155\142 +\110\061\042\060\040\006\003\125\004\003\023\031\104\055\124\122 +\125\123\124\040\105\126\040\122\157\157\164\040\103\101\040\061 +\040\062\060\062\060\060\036\027\015\062\060\060\062\061\061\061 +\060\060\060\060\060\132\027\015\063\065\060\062\061\061\060\071 +\065\071\065\071\132\060\110\061\013\060\011\006\003\125\004\006 +\023\002\104\105\061\025\060\023\006\003\125\004\012\023\014\104 +\055\124\162\165\163\164\040\107\155\142\110\061\042\060\040\006 +\003\125\004\003\023\031\104\055\124\122\125\123\124\040\105\126 +\040\122\157\157\164\040\103\101\040\061\040\062\060\062\060\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\361\013\335\206\103\040\031\337\227 +\205\350\042\112\233\317\235\230\277\264\005\046\311\313\343\246 +\322\217\305\236\170\173\061\211\251\211\255\047\074\145\020\202 +\374\337\303\235\116\360\063\043\304\322\062\365\034\260\337\063 +\027\135\305\360\261\212\371\357\271\267\024\312\051\112\302\017 +\251\177\165\145\111\052\060\147\364\144\367\326\032\167\332\303 +\302\227\141\102\173\111\255\243\202\001\015\060\202\001\011\060 +\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 +\060\035\006\003\125\035\016\004\026\004\024\177\020\001\026\067 +\072\244\050\344\120\370\244\367\354\153\062\266\376\351\213\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060 +\201\306\006\003\125\035\037\004\201\276\060\201\273\060\076\240 +\074\240\072\206\070\150\164\164\160\072\057\057\143\162\154\056 +\144\055\164\162\165\163\164\056\156\145\164\057\143\162\154\057 +\144\055\164\162\165\163\164\137\145\166\137\162\157\157\164\137 +\143\141\137\061\137\062\060\062\060\056\143\162\154\060\171\240 +\167\240\165\206\163\154\144\141\160\072\057\057\144\151\162\145 +\143\164\157\162\171\056\144\055\164\162\165\163\164\056\156\145 +\164\057\103\116\075\104\055\124\122\125\123\124\045\062\060\105 +\126\045\062\060\122\157\157\164\045\062\060\103\101\045\062\060 +\061\045\062\060\062\060\062\060\054\117\075\104\055\124\162\165 +\163\164\045\062\060\107\155\142\110\054\103\075\104\105\077\143 +\145\162\164\151\146\151\143\141\164\145\162\145\166\157\143\141 +\164\151\157\156\154\151\163\164\060\012\006\010\052\206\110\316 +\075\004\003\003\003\151\000\060\146\002\061\000\312\074\306\052 +\165\302\136\165\142\071\066\000\140\132\213\301\223\231\314\331 +\333\101\073\073\207\231\027\073\325\314\117\312\042\367\240\200 +\313\371\264\261\033\126\365\162\322\374\031\321\002\061\000\221 +\367\060\223\077\020\106\053\161\244\320\073\104\233\300\051\002 +\005\262\101\167\121\363\171\132\236\216\024\240\116\102\322\133 +\201\363\064\152\003\347\042\070\120\133\355\031\117\103\026 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "D-TRUST EV Root CA 1 2020" +# Issuer: CN=D-TRUST EV Root CA 1 2020,O=D-Trust GmbH,C=DE +# Serial Number:5f:02:41:d7:7a:87:7c:4c:03:a3:ac:96:8d:fb:ff:d0 +# Subject: CN=D-TRUST EV Root CA 1 2020,O=D-Trust GmbH,C=DE +# Not Valid Before: Tue Feb 11 10:00:00 2020 +# Not Valid After : Sun Feb 11 09:59:59 2035 +# Fingerprint (SHA-256): 08:17:0D:1A:A3:64:53:90:1A:2F:95:92:45:E3:47:DB:0C:8D:37:AB:AA:BC:56:B8:1A:A1:00:DC:95:89:70:DB +# Fingerprint (SHA1): 61:DB:8C:21:59:69:03:90:D8:7C:9C:12:86:54:CF:9D:3D:F4:DD:07 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-TRUST EV Root CA 1 2020" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\141\333\214\041\131\151\003\220\330\174\234\022\206\124\317\235 +\075\364\335\007 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\214\055\235\160\237\110\231\021\006\021\373\351\313\060\300\156 +END +CKA_ISSUER MULTILINE_OCTAL +\060\110\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\042\060\040\006\003\125\004\003\023 +\031\104\055\124\122\125\123\124\040\105\126\040\122\157\157\164 +\040\103\101\040\061\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\137\002\101\327\172\207\174\114\003\243\254\226\215\373 +\377\320 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert TLS ECC P384 Root G5" +# +# Issuer: CN=DigiCert TLS ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:09:e0:93:65:ac:f7:d9:c8:b9:3e:1c:0b:04:2a:2e:f3 +# Subject: CN=DigiCert TLS ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 01:8E:13:F0:77:25:32:CF:80:9B:D1:B1:72:81:86:72:83:FC:48:C6:E1:3B:E9:C6:98:12:85:4A:49:0C:1B:05 +# Fingerprint (SHA1): 17:F3:DE:5E:9F:0F:19:E9:8E:F6:1F:32:26:6E:20:C4:07:AE:30:EE +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert TLS ECC P384 Root G5" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\046\060\044\006\003\125\004 +\003\023\035\104\151\147\151\103\145\162\164\040\124\114\123\040 +\105\103\103\040\120\063\070\064\040\122\157\157\164\040\107\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\046\060\044\006\003\125\004 +\003\023\035\104\151\147\151\103\145\162\164\040\124\114\123\040 +\105\103\103\040\120\063\070\064\040\122\157\157\164\040\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\011\340\223\145\254\367\331\310\271\076\034\013\004\052 +\056\363 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\031\060\202\001\237\240\003\002\001\002\002\020\011 +\340\223\145\254\367\331\310\271\076\034\013\004\052\056\363\060 +\012\006\010\052\206\110\316\075\004\003\003\060\116\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003 +\125\004\012\023\016\104\151\147\151\103\145\162\164\054\040\111 +\156\143\056\061\046\060\044\006\003\125\004\003\023\035\104\151 +\147\151\103\145\162\164\040\124\114\123\040\105\103\103\040\120 +\063\070\064\040\122\157\157\164\040\107\065\060\036\027\015\062 +\061\060\061\061\065\060\060\060\060\060\060\132\027\015\064\066 +\060\061\061\064\062\063\065\071\065\071\132\060\116\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003 +\125\004\012\023\016\104\151\147\151\103\145\162\164\054\040\111 +\156\143\056\061\046\060\044\006\003\125\004\003\023\035\104\151 +\147\151\103\145\162\164\040\124\114\123\040\105\103\103\040\120 +\063\070\064\040\122\157\157\164\040\107\065\060\166\060\020\006 +\007\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003 +\142\000\004\301\104\241\317\021\227\120\232\336\043\202\065\007 +\315\320\313\030\235\322\361\177\167\065\117\073\335\224\162\122 +\355\302\073\370\354\372\173\153\130\040\354\231\256\311\374\150 +\263\165\271\333\011\354\310\023\365\116\306\012\035\146\060\114 +\273\037\107\012\074\141\020\102\051\174\245\010\016\340\042\351 +\323\065\150\316\233\143\237\204\265\231\115\130\240\216\365\124 +\347\225\311\243\102\060\100\060\035\006\003\125\035\016\004\026 +\004\024\301\121\105\120\131\253\076\347\054\132\372\040\042\022 +\007\200\210\174\021\152\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377 +\004\005\060\003\001\001\377\060\012\006\010\052\206\110\316\075 +\004\003\003\003\150\000\060\145\002\061\000\211\152\215\107\347 +\354\374\156\125\003\331\147\154\046\116\203\306\375\311\373\053 +\023\274\267\172\214\264\145\322\151\151\143\023\143\073\046\120 +\056\001\241\171\006\221\235\110\277\302\276\002\060\107\303\025 +\173\261\240\221\231\111\223\250\074\174\350\106\006\213\054\362 +\061\000\224\235\142\310\211\275\031\204\024\351\245\373\001\270 +\015\166\103\214\056\123\313\174\337\014\027\226\120 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert TLS ECC P384 Root G5" +# Issuer: CN=DigiCert TLS ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:09:e0:93:65:ac:f7:d9:c8:b9:3e:1c:0b:04:2a:2e:f3 +# Subject: CN=DigiCert TLS ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 01:8E:13:F0:77:25:32:CF:80:9B:D1:B1:72:81:86:72:83:FC:48:C6:E1:3B:E9:C6:98:12:85:4A:49:0C:1B:05 +# Fingerprint (SHA1): 17:F3:DE:5E:9F:0F:19:E9:8E:F6:1F:32:26:6E:20:C4:07:AE:30:EE +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert TLS ECC P384 Root G5" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\027\363\336\136\237\017\031\351\216\366\037\062\046\156\040\304 +\007\256\060\356 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\323\161\004\152\103\034\333\246\131\341\250\243\252\305\161\355 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\046\060\044\006\003\125\004 +\003\023\035\104\151\147\151\103\145\162\164\040\124\114\123\040 +\105\103\103\040\120\063\070\064\040\122\157\157\164\040\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\011\340\223\145\254\367\331\310\271\076\034\013\004\052 +\056\363 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert TLS RSA4096 Root G5" +# +# Issuer: CN=DigiCert TLS RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:08:f9:b4:78:a8:fa:7e:da:6a:33:37:89:de:7c:cf:8a +# Subject: CN=DigiCert TLS RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 37:1A:00:DC:05:33:B3:72:1A:7E:EB:40:E8:41:9E:70:79:9D:2B:0A:0F:2C:1D:80:69:31:65:F7:CE:C4:AD:75 +# Fingerprint (SHA1): A7:88:49:DC:5D:7C:75:8C:8C:DE:39:98:56:B3:AA:D0:B2:A5:71:35 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert TLS RSA4096 Root G5" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\045\060\043\006\003\125\004 +\003\023\034\104\151\147\151\103\145\162\164\040\124\114\123\040 +\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\045\060\043\006\003\125\004 +\003\023\034\104\151\147\151\103\145\162\164\040\124\114\123\040 +\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\010\371\264\170\250\372\176\332\152\063\067\211\336\174 +\317\212 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\146\060\202\003\116\240\003\002\001\002\002\020\010 +\371\264\170\250\372\176\332\152\063\067\211\336\174\317\212\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\115 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060 +\025\006\003\125\004\012\023\016\104\151\147\151\103\145\162\164 +\054\040\111\156\143\056\061\045\060\043\006\003\125\004\003\023 +\034\104\151\147\151\103\145\162\164\040\124\114\123\040\122\123 +\101\064\060\071\066\040\122\157\157\164\040\107\065\060\036\027 +\015\062\061\060\061\061\065\060\060\060\060\060\060\132\027\015 +\064\066\060\061\061\064\062\063\065\071\065\071\132\060\115\061 +\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060\025 +\006\003\125\004\012\023\016\104\151\147\151\103\145\162\164\054 +\040\111\156\143\056\061\045\060\043\006\003\125\004\003\023\034 +\104\151\147\151\103\145\162\164\040\124\114\123\040\122\123\101 +\064\060\071\066\040\122\157\157\164\040\107\065\060\202\002\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\002\017\000\060\202\002\012\002\202\002\001\000\263\320\364 +\311\171\021\235\375\374\146\201\347\314\325\344\274\354\201\076 +\152\065\216\056\267\347\336\257\371\007\115\317\060\235\352\011 +\013\231\275\154\127\332\030\112\270\170\254\072\071\250\246\110 +\254\056\162\345\275\353\361\032\315\347\244\003\251\077\021\264 +\330\057\211\026\373\224\001\075\273\057\370\023\005\241\170\034 +\216\050\340\105\340\203\364\131\033\225\263\256\176\003\105\345 +\276\302\102\376\356\362\074\266\205\023\230\062\235\026\250\051 +\302\013\034\070\334\237\061\167\134\277\047\243\374\047\254\267 +\053\275\164\233\027\055\362\201\332\135\260\341\043\027\076\210 +\112\022\043\320\352\317\235\336\003\027\261\102\112\240\026\114 +\244\155\223\351\077\072\356\072\174\235\130\235\364\116\217\374 +\073\043\310\155\270\342\005\332\314\353\354\303\061\364\327\247 +\051\124\200\317\104\133\114\157\060\236\363\314\335\037\224\103 +\235\115\177\160\160\015\324\072\321\067\360\154\235\233\300\024 +\223\130\357\315\101\070\165\274\023\003\225\174\177\343\134\351 +\325\015\325\342\174\020\142\252\153\360\075\166\363\077\243\350 +\260\301\375\357\252\127\115\254\206\247\030\264\051\301\054\016 +\277\144\276\051\214\330\002\055\315\134\057\362\177\357\025\364 +\014\025\254\012\260\361\323\015\117\152\115\167\227\001\240\361 +\146\267\267\316\357\316\354\354\245\165\312\254\343\341\143\367 +\270\241\004\310\274\173\077\135\055\026\042\126\355\110\111\376 +\247\057\171\060\045\233\272\153\055\077\235\073\304\027\347\035 +\056\373\362\317\246\374\343\024\054\226\230\041\214\264\221\351 +\031\140\203\362\060\053\006\163\120\325\230\073\006\351\307\212 +\014\140\214\050\370\122\233\156\341\366\115\273\006\044\233\327 +\053\046\077\375\052\057\161\365\326\044\276\177\061\236\017\155 +\350\217\117\115\243\077\377\065\352\337\111\136\101\217\206\371 +\361\167\171\113\033\264\243\136\057\373\106\002\320\146\023\136 +\136\205\117\316\330\160\210\173\316\001\265\226\227\327\315\175 +\375\202\370\302\044\301\312\001\071\117\215\242\301\024\100\037 +\234\146\325\014\011\106\326\362\320\321\110\166\126\072\103\313 +\266\012\021\071\272\214\023\154\006\265\236\317\353\002\003\001 +\000\001\243\102\060\100\060\035\006\003\125\035\016\004\026\004 +\024\121\063\034\355\066\100\257\027\323\045\315\151\150\362\257 +\116\043\076\263\101\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\206\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\015\006\011\052\206\110\206\367\015 +\001\001\014\005\000\003\202\002\001\000\140\246\257\133\137\127 +\332\211\333\113\120\251\304\043\065\041\377\320\141\060\204\221 +\267\077\020\317\045\216\311\277\106\064\331\301\041\046\034\160 +\031\162\036\243\311\207\376\251\103\144\226\072\310\123\004\012 +\266\101\273\304\107\000\331\237\030\030\073\262\016\363\064\352 +\044\367\335\257\040\140\256\222\050\137\066\347\135\344\336\307 +\074\333\120\071\255\273\075\050\115\226\174\166\306\133\364\301 +\333\024\245\253\031\142\007\030\100\137\227\221\334\234\307\253 +\265\121\015\346\151\123\125\314\071\175\332\305\021\125\162\305 +\073\213\211\370\064\055\244\027\345\027\346\231\175\060\210\041 +\067\315\060\027\075\270\362\274\250\165\240\103\334\076\211\113 +\220\256\155\003\340\034\243\240\226\011\273\175\243\267\052\020 +\104\113\106\007\064\143\355\061\271\004\356\243\233\232\256\346 +\061\170\364\352\044\141\073\253\130\144\377\273\207\047\142\045 +\201\337\334\241\057\366\355\247\377\172\217\121\056\060\370\244 +\001\322\205\071\137\001\231\226\157\132\133\160\031\106\376\206 +\140\076\255\200\020\011\335\071\045\057\130\177\273\322\164\360 +\367\106\037\106\071\112\330\123\320\363\056\073\161\245\324\157 +\374\363\147\344\007\217\335\046\031\341\215\133\372\243\223\021 +\233\351\310\072\303\125\150\232\222\341\122\166\070\350\341\272 +\275\373\117\325\357\263\347\110\203\061\360\202\041\343\266\276 +\247\253\157\357\237\337\114\317\001\270\142\152\043\075\347\011 +\115\200\033\173\060\244\303\335\007\177\064\276\244\046\262\366 +\101\350\011\035\343\040\230\252\067\117\377\367\361\342\051\160 +\061\107\077\164\320\024\026\372\041\212\002\325\212\011\224\167 +\056\362\131\050\213\174\120\222\012\146\170\070\203\165\304\265 +\132\250\021\306\345\301\235\146\125\317\123\304\257\327\165\205 +\251\102\023\126\354\041\167\201\223\132\014\352\226\331\111\312 +\241\010\362\227\073\155\233\004\030\044\104\216\174\001\362\334 +\045\330\136\206\232\261\071\333\365\221\062\152\321\246\160\212 +\242\367\336\244\105\205\046\250\036\214\135\051\133\310\113\330 +\232\152\003\136\160\362\205\117\154\113\150\057\312\124\366\214 +\332\062\376\303\153\203\077\070\306\176 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert TLS RSA4096 Root G5" +# Issuer: CN=DigiCert TLS RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:08:f9:b4:78:a8:fa:7e:da:6a:33:37:89:de:7c:cf:8a +# Subject: CN=DigiCert TLS RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 37:1A:00:DC:05:33:B3:72:1A:7E:EB:40:E8:41:9E:70:79:9D:2B:0A:0F:2C:1D:80:69:31:65:F7:CE:C4:AD:75 +# Fingerprint (SHA1): A7:88:49:DC:5D:7C:75:8C:8C:DE:39:98:56:B3:AA:D0:B2:A5:71:35 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert TLS RSA4096 Root G5" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\247\210\111\334\135\174\165\214\214\336\071\230\126\263\252\320 +\262\245\161\065 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\254\376\367\064\226\251\362\263\264\022\113\344\047\101\157\341 +END +CKA_ISSUER MULTILINE_OCTAL +\060\115\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\045\060\043\006\003\125\004 +\003\023\034\104\151\147\151\103\145\162\164\040\124\114\123\040 +\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\010\371\264\170\250\372\176\332\152\063\067\211\336\174 +\317\212 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert SMIME ECC P384 Root G5" +# +# Issuer: CN=DigiCert SMIME ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:05:3f:6e:a0:06:01:72:7d:ed:3f:c3:a3:b6:a3:d6:ef +# Subject: CN=DigiCert SMIME ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): E8:E8:17:65:36:A6:0C:C2:C4:E1:01:87:C3:BE:FC:A2:0E:F2:63:49:70:18:F5:66:D5:BE:A0:F9:4D:0C:11:1B +# Fingerprint (SHA1): 1C:B8:A7:08:C9:0D:20:79:01:A0:B2:36:7F:F0:95:65:E4:53:24:FE +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert SMIME ECC P384 Root G5" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\003\023\037\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\105\103\103\040\120\063\070\064\040\122\157\157\164\040 +\107\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\003\023\037\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\105\103\103\040\120\063\070\064\040\122\157\157\164\040 +\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\077\156\240\006\001\162\175\355\077\303\243\266\243 +\326\357 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\034\060\202\001\243\240\003\002\001\002\002\020\005 +\077\156\240\006\001\162\175\355\077\303\243\266\243\326\357\060 +\012\006\010\052\206\110\316\075\004\003\003\060\120\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\027\060\025\006\003 +\125\004\012\023\016\104\151\147\151\103\145\162\164\054\040\111 +\156\143\056\061\050\060\046\006\003\125\004\003\023\037\104\151 +\147\151\103\145\162\164\040\123\115\111\115\105\040\105\103\103 +\040\120\063\070\064\040\122\157\157\164\040\107\065\060\036\027 +\015\062\061\060\061\061\065\060\060\060\060\060\060\132\027\015 +\064\066\060\061\061\064\062\063\065\071\065\071\132\060\120\061 +\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060\025 +\006\003\125\004\012\023\016\104\151\147\151\103\145\162\164\054 +\040\111\156\143\056\061\050\060\046\006\003\125\004\003\023\037 +\104\151\147\151\103\145\162\164\040\123\115\111\115\105\040\105 +\103\103\040\120\063\070\064\040\122\157\157\164\040\107\065\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\026\235\125\345\266\324\373\373\147 +\153\032\324\241\252\322\167\225\076\210\345\007\237\266\160\146 +\040\050\244\210\354\160\065\257\263\062\377\067\023\112\236\274 +\001\003\336\204\301\270\306\346\145\107\211\362\023\125\277\315 +\245\036\010\140\177\255\177\350\141\222\051\317\011\107\136\013 +\034\300\037\244\277\362\133\274\230\357\231\114\314\160\153\266 +\272\320\050\035\277\276\004\243\102\060\100\060\035\006\003\125 +\035\016\004\026\004\024\163\172\153\226\333\102\007\213\122\146 +\302\144\062\027\376\340\147\220\056\255\060\016\006\003\125\035 +\017\001\001\377\004\004\003\002\001\206\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\012\006\010\052 +\206\110\316\075\004\003\003\003\147\000\060\144\002\060\067\104 +\365\062\200\343\161\353\364\155\317\174\314\221\232\303\156\161 +\330\322\043\135\222\115\202\102\155\134\141\225\366\221\365\247 +\010\366\152\227\351\234\224\055\230\160\375\063\266\011\002\060 +\007\074\057\271\130\202\136\017\243\142\250\223\147\360\040\303 +\151\277\003\054\073\120\247\073\257\101\070\311\122\110\221\326 +\016\373\274\140\060\174\144\077\022\036\105\177\121\076\364\246 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert SMIME ECC P384 Root G5" +# Issuer: CN=DigiCert SMIME ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:05:3f:6e:a0:06:01:72:7d:ed:3f:c3:a3:b6:a3:d6:ef +# Subject: CN=DigiCert SMIME ECC P384 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): E8:E8:17:65:36:A6:0C:C2:C4:E1:01:87:C3:BE:FC:A2:0E:F2:63:49:70:18:F5:66:D5:BE:A0:F9:4D:0C:11:1B +# Fingerprint (SHA1): 1C:B8:A7:08:C9:0D:20:79:01:A0:B2:36:7F:F0:95:65:E4:53:24:FE +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert SMIME ECC P384 Root G5" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\034\270\247\010\311\015\040\171\001\240\262\066\177\360\225\145 +\344\123\044\376 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\246\376\364\122\066\104\330\356\015\267\003\013\357\164\263\003 +END +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\050\060\046\006\003\125\004 +\003\023\037\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\105\103\103\040\120\063\070\064\040\122\157\157\164\040 +\107\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\077\156\240\006\001\162\175\355\077\303\243\266\243 +\326\357 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DigiCert SMIME RSA4096 Root G5" +# +# Issuer: CN=DigiCert SMIME RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:05:f6:ba:04:23:83:46:cb:7d:5c:e6:b9:5b:ba:1c:55 +# Subject: CN=DigiCert SMIME RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 90:37:0D:3E:FA:88:BF:58:C3:01:05:BA:25:10:4A:35:84:60:A7:FA:52:DF:C2:01:1D:F2:33:A0:F4:17:91:2A +# Fingerprint (SHA1): 5B:C5:AD:E2:9A:A7:54:DA:84:89:53:A5:FE:D7:5B:46:86:D0:57:08 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert SMIME RSA4096 Root G5" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\047\060\045\006\003\125\004 +\003\023\036\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\122\123\101\064\060\071\066\040\122\157\157\164\040\107 +\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\047\060\045\006\003\125\004 +\003\023\036\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\122\123\101\064\060\071\066\040\122\157\157\164\040\107 +\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\366\272\004\043\203\106\313\175\134\346\271\133\272 +\034\125 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\152\060\202\003\122\240\003\002\001\002\002\020\005 +\366\272\004\043\203\106\313\175\134\346\271\133\272\034\125\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\117 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027\060 +\025\006\003\125\004\012\023\016\104\151\147\151\103\145\162\164 +\054\040\111\156\143\056\061\047\060\045\006\003\125\004\003\023 +\036\104\151\147\151\103\145\162\164\040\123\115\111\115\105\040 +\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065\060 +\036\027\015\062\061\060\061\061\065\060\060\060\060\060\060\132 +\027\015\064\066\060\061\061\064\062\063\065\071\065\071\132\060 +\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061\027 +\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145\162 +\164\054\040\111\156\143\056\061\047\060\045\006\003\125\004\003 +\023\036\104\151\147\151\103\145\162\164\040\123\115\111\115\105 +\040\122\123\101\064\060\071\066\040\122\157\157\164\040\107\065 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\340\152\133\331\370\371\175\354\265\173\357\137\335\134\064 +\330\332\135\321\313\145\165\253\041\174\133\000\324\202\157\105 +\205\101\212\251\022\002\162\062\360\024\365\003\165\273\143\227 +\111\017\100\231\013\032\036\126\247\322\320\341\253\335\345\004 +\033\343\037\024\022\002\210\365\240\200\011\366\047\232\120\360 +\272\343\242\340\254\152\024\221\265\153\070\020\172\242\061\341 +\221\033\267\271\360\053\133\310\167\011\166\267\121\304\066\012 +\231\123\124\104\045\267\011\065\206\027\005\126\223\075\101\267 +\002\327\142\037\212\222\021\207\352\021\155\352\010\021\334\261 +\170\110\111\222\366\264\121\200\170\043\330\376\341\126\032\072 +\220\023\126\064\211\325\342\225\213\137\336\262\314\373\077\070 +\267\205\367\352\236\277\056\241\056\057\115\175\152\021\056\066 +\240\377\021\010\004\225\125\340\033\073\147\223\251\224\125\352 +\062\355\006\072\177\302\177\343\255\023\047\321\064\101\263\060 +\303\277\264\210\370\003\202\244\337\076\253\170\167\240\131\223 +\161\347\335\353\000\004\173\314\110\071\050\340\036\243\025\151 +\310\066\262\241\013\227\337\125\326\357\221\234\244\366\026\367 +\121\012\356\003\043\221\334\004\377\340\335\070\366\042\003\000 +\302\007\161\032\022\311\327\106\052\224\033\315\326\273\033\356 +\277\276\115\120\130\260\013\315\060\166\051\365\317\345\266\152 +\057\166\260\260\151\152\320\155\145\030\065\176\223\274\162\027 +\301\125\102\315\057\302\045\273\364\375\035\241\144\042\124\135 +\342\236\162\101\204\156\161\226\352\105\007\266\136\172\112\206 +\235\163\144\167\070\003\322\017\123\245\125\040\304\115\377\150 +\157\125\251\352\335\161\344\117\331\205\243\174\116\051\002\236 +\013\011\362\032\123\314\000\246\335\321\064\366\015\301\060\261 +\234\002\144\254\065\355\245\260\051\261\322\225\063\017\322\040 +\063\275\354\043\113\362\031\371\332\230\144\344\054\061\037\056 +\341\215\034\004\225\050\115\214\130\315\113\345\163\202\206\214 +\354\250\326\171\134\373\144\273\334\014\114\050\366\027\257\342 +\150\326\026\206\230\333\374\001\334\061\272\370\234\016\371\050 +\106\112\341\375\226\006\105\171\021\150\027\145\134\213\046\207 +\133\002\003\001\000\001\243\102\060\100\060\035\006\003\125\035 +\016\004\026\004\024\321\243\324\127\035\117\125\333\165\114\134 +\102\236\143\026\316\264\306\073\037\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\206\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\015\006\011\052\206 +\110\206\367\015\001\001\014\005\000\003\202\002\001\000\007\247 +\012\336\123\273\232\353\160\277\262\066\220\315\344\247\270\361 +\014\344\135\132\035\170\145\374\311\270\036\043\021\127\174\151 +\065\155\001\377\123\120\277\007\016\272\307\001\077\130\052\224 +\165\003\253\034\013\043\334\033\212\036\067\075\035\130\217\163 +\331\263\052\157\337\020\240\133\014\247\312\260\177\271\044\242 +\001\065\062\345\136\106\101\353\330\177\163\347\102\351\244\121 +\046\167\201\012\250\353\017\012\120\235\176\212\040\147\374\013 +\216\072\021\323\305\214\140\030\331\113\261\374\324\361\264\111 +\116\256\207\341\321\373\166\241\137\363\006\317\227\226\014\351 +\236\165\201\134\123\015\042\374\066\346\111\156\164\333\000\205 +\215\174\042\240\216\373\020\114\324\142\023\133\357\113\162\046 +\213\374\116\212\217\376\227\020\123\305\170\213\102\144\033\137 +\340\211\375\273\011\177\120\340\124\205\046\021\152\035\145\371 +\111\051\334\174\066\337\373\075\367\322\254\356\062\215\156\246 +\175\071\234\105\304\312\015\365\073\264\171\123\245\057\126\307 +\121\305\212\114\144\135\220\103\043\216\153\114\027\170\314\350 +\277\365\073\344\250\110\317\255\233\014\337\062\112\323\331\022 +\216\043\170\015\055\257\237\257\236\074\011\302\227\000\355\072 +\151\034\161\077\071\337\323\217\304\146\365\357\066\224\017\363 +\335\222\266\226\137\220\246\335\163\252\246\040\224\224\045\152 +\011\014\162\344\023\043\140\114\243\312\027\056\173\147\000\333 +\320\315\352\172\037\071\046\127\211\060\167\313\116\345\225\105 +\117\137\373\066\134\075\371\040\265\072\020\045\117\223\062\132 +\356\301\226\350\351\126\004\260\111\141\115\354\170\250\235\030 +\301\377\330\352\057\126\357\225\053\173\004\136\147\343\125\100 +\355\071\004\371\013\171\365\152\214\134\017\211\232\220\307\315 +\213\336\333\046\065\241\156\315\263\102\362\242\017\073\014\216 +\223\377\024\317\374\367\223\367\344\101\010\156\031\122\021\017 +\123\031\163\170\014\317\330\205\201\370\255\125\310\260\236\106 +\143\257\234\122\356\134\277\360\300\133\067\036\011\040\322\076 +\043\306\241\025\112\016\066\176\060\305\171\152\274\042\210\331 +\014\122\100\037\335\116\017\147\046\026\322\255\027\034 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DigiCert SMIME RSA4096 Root G5" +# Issuer: CN=DigiCert SMIME RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Serial Number:05:f6:ba:04:23:83:46:cb:7d:5c:e6:b9:5b:ba:1c:55 +# Subject: CN=DigiCert SMIME RSA4096 Root G5,O="DigiCert, Inc.",C=US +# Not Valid Before: Fri Jan 15 00:00:00 2021 +# Not Valid After : Sun Jan 14 23:59:59 2046 +# Fingerprint (SHA-256): 90:37:0D:3E:FA:88:BF:58:C3:01:05:BA:25:10:4A:35:84:60:A7:FA:52:DF:C2:01:1D:F2:33:A0:F4:17:91:2A +# Fingerprint (SHA1): 5B:C5:AD:E2:9A:A7:54:DA:84:89:53:A5:FE:D7:5B:46:86:D0:57:08 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DigiCert SMIME RSA4096 Root G5" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\133\305\255\342\232\247\124\332\204\211\123\245\376\327\133\106 +\206\320\127\010 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\321\173\340\265\077\065\162\237\175\276\013\245\244\035\251\156 +END +CKA_ISSUER MULTILINE_OCTAL +\060\117\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\027\060\025\006\003\125\004\012\023\016\104\151\147\151\103\145 +\162\164\054\040\111\156\143\056\061\047\060\045\006\003\125\004 +\003\023\036\104\151\147\151\103\145\162\164\040\123\115\111\115 +\105\040\122\123\101\064\060\071\066\040\122\157\157\164\040\107 +\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\005\366\272\004\043\203\106\313\175\134\346\271\133\272 +\034\125 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certainly Root R1" +# +# Issuer: CN=Certainly Root R1,O=Certainly,C=US +# Serial Number:00:8e:0f:f9:4b:90:71:68:65:33:54:f4:d4:44:39:b7:e0 +# Subject: CN=Certainly Root R1,O=Certainly,C=US +# Not Valid Before: Thu Apr 01 00:00:00 2021 +# Not Valid After : Sun Apr 01 00:00:00 2046 +# Fingerprint (SHA-256): 77:B8:2C:D8:64:4C:43:05:F7:AC:C5:CB:15:6B:45:67:50:04:03:3D:51:C6:0C:62:02:A8:E0:C3:34:67:D3:A0 +# Fingerprint (SHA1): A0:50:EE:0F:28:71:F4:27:B2:12:6D:6F:50:96:25:BA:CC:86:42:AF +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certainly Root R1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\122\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\122\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\216\017\371\113\220\161\150\145\063\124\364\324\104 +\071\267\340 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\107\060\202\003\057\240\003\002\001\002\002\021\000 +\216\017\371\113\220\161\150\145\063\124\364\324\104\071\267\340 +\060\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060 +\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151\156 +\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145\162 +\164\141\151\156\154\171\040\122\157\157\164\040\122\061\060\036 +\027\015\062\061\060\064\060\061\060\060\060\060\060\060\132\027 +\015\064\066\060\064\060\061\060\060\060\060\060\060\132\060\075 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022\060 +\020\006\003\125\004\012\023\011\103\145\162\164\141\151\156\154 +\171\061\032\060\030\006\003\125\004\003\023\021\103\145\162\164 +\141\151\156\154\171\040\122\157\157\164\040\122\061\060\202\002 +\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000 +\003\202\002\017\000\060\202\002\012\002\202\002\001\000\320\066 +\324\037\352\335\253\344\321\266\346\373\042\300\335\023\015\152 +\173\042\023\034\227\074\150\143\146\062\234\003\265\215\244\201 +\203\332\170\060\021\317\334\262\053\276\222\277\216\344\304\023 +\276\244\150\114\332\002\150\026\164\276\262\335\004\344\153\052 +\335\067\037\140\054\333\365\367\241\174\225\267\014\160\206\056 +\361\072\357\122\367\314\323\233\371\213\276\016\337\061\267\235 +\150\134\222\246\365\345\363\012\064\265\377\173\242\344\207\241 +\306\257\027\000\357\003\221\355\251\034\116\161\075\322\213\154 +\211\364\170\206\346\152\111\240\316\265\322\260\253\233\366\364 +\324\056\343\162\371\066\306\353\025\267\045\214\072\374\045\015 +\263\042\163\041\164\310\112\226\141\222\365\057\013\030\245\364 +\255\342\356\101\275\001\171\372\226\214\215\027\002\060\264\371 +\257\170\032\214\264\066\020\020\007\005\160\320\364\061\220\212 +\121\305\206\046\171\262\021\210\136\305\360\012\124\315\111\246 +\277\002\234\322\104\247\355\343\170\357\106\136\155\161\321\171 +\160\034\106\137\121\351\311\067\334\137\176\151\173\101\337\064 +\105\340\073\204\364\241\212\012\066\236\067\314\142\122\341\211 +\015\050\371\172\043\261\015\075\075\232\375\235\201\357\054\220 +\300\173\104\116\273\111\340\016\112\126\222\274\313\265\335\171 +\027\211\221\336\141\211\164\222\250\343\062\205\276\116\205\244 +\113\131\313\053\305\170\216\161\124\320\002\067\231\214\345\111 +\352\340\124\162\244\021\006\057\013\214\301\133\276\265\241\260 +\123\156\234\270\140\221\037\131\153\371\055\364\224\012\227\265 +\354\305\166\003\124\033\145\122\272\114\222\126\121\065\240\100 +\330\051\333\256\122\166\073\055\060\100\233\212\320\102\126\264 +\267\210\001\244\207\073\123\226\315\243\026\217\363\146\252\027 +\261\307\140\340\301\103\005\014\356\233\133\140\157\006\134\207 +\133\047\371\100\021\236\234\063\301\267\345\065\127\005\177\047 +\316\027\040\214\034\374\361\373\332\061\051\111\355\365\013\204 +\247\117\301\366\116\302\050\234\372\356\340\257\007\373\063\021 +\172\041\117\013\041\020\266\100\072\253\042\072\004\234\213\233 +\204\206\162\232\322\247\245\304\264\165\221\251\053\043\002\003 +\001\000\001\243\102\060\100\060\016\006\003\125\035\017\001\001 +\377\004\004\003\002\001\006\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\035\006\003\125\035\016\004 +\026\004\024\340\252\077\045\215\237\104\134\301\072\350\056\256 +\167\114\204\076\147\014\364\060\015\006\011\052\206\110\206\367 +\015\001\001\013\005\000\003\202\002\001\000\271\127\257\270\022 +\332\127\203\217\150\013\063\035\003\123\125\364\225\160\344\053 +\075\260\071\353\372\211\142\375\367\326\030\004\057\041\064\335 +\361\150\360\325\226\132\336\302\200\243\301\215\306\152\367\131 +\167\256\025\144\317\133\171\005\167\146\352\214\323\153\015\335 +\361\131\054\301\063\245\060\200\025\105\007\105\032\061\042\266 +\222\000\253\231\115\072\217\167\257\251\042\312\057\143\312\025 +\326\307\306\360\075\154\374\034\015\230\020\141\236\021\242\042 +\327\012\362\221\172\153\071\016\057\060\303\066\111\237\340\351 +\017\002\104\120\067\224\125\175\352\237\366\073\272\224\245\114 +\351\274\076\121\264\350\312\222\066\124\155\134\045\050\332\335 +\255\024\375\323\356\342\042\005\353\320\362\267\150\022\327\132 +\212\101\032\306\222\245\132\073\143\105\117\277\341\072\167\042 +\057\134\277\106\371\132\003\205\023\102\137\312\336\123\327\142 +\265\246\065\004\302\107\377\231\375\204\337\134\316\351\136\200 +\050\101\362\175\347\036\220\330\117\166\076\202\074\015\374\245 +\003\372\173\032\331\105\036\140\332\304\216\371\374\053\311\173 +\225\305\052\377\252\211\337\202\061\017\162\377\014\047\327\012 +\036\126\000\120\036\014\220\301\226\265\330\024\205\273\247\015 +\026\301\370\007\044\033\272\205\241\032\005\011\200\272\225\143 +\311\072\354\045\237\177\235\272\244\107\025\233\104\160\361\152 +\113\326\070\136\103\363\030\176\120\156\351\132\050\346\145\346 +\167\033\072\375\035\276\003\046\243\333\324\341\273\176\226\047 +\053\035\356\244\373\332\045\124\023\003\336\071\306\303\037\115 +\220\354\217\033\112\322\034\355\205\225\070\120\171\106\326\301 +\220\120\061\251\134\232\156\035\365\063\126\213\247\231\322\362 +\310\054\063\223\222\060\307\116\214\145\063\020\144\027\375\044 +\027\226\321\215\302\072\152\053\353\023\213\104\362\041\363\112 +\032\267\167\137\327\355\210\244\162\345\071\037\225\235\276\147 +\301\160\021\075\273\364\370\111\267\343\046\227\072\237\322\137 +\174\373\300\231\174\071\051\340\173\035\277\015\247\217\322\051 +\064\156\044\025\313\336\220\136\277\032\304\146\352\302\346\272 +\071\137\212\231\251\101\131\007\260\054\257 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certainly Root R1" +# Issuer: CN=Certainly Root R1,O=Certainly,C=US +# Serial Number:00:8e:0f:f9:4b:90:71:68:65:33:54:f4:d4:44:39:b7:e0 +# Subject: CN=Certainly Root R1,O=Certainly,C=US +# Not Valid Before: Thu Apr 01 00:00:00 2021 +# Not Valid After : Sun Apr 01 00:00:00 2046 +# Fingerprint (SHA-256): 77:B8:2C:D8:64:4C:43:05:F7:AC:C5:CB:15:6B:45:67:50:04:03:3D:51:C6:0C:62:02:A8:E0:C3:34:67:D3:A0 +# Fingerprint (SHA1): A0:50:EE:0F:28:71:F4:27:B2:12:6D:6F:50:96:25:BA:CC:86:42:AF +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certainly Root R1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\240\120\356\017\050\161\364\047\262\022\155\157\120\226\045\272 +\314\206\102\257 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\007\160\324\076\202\207\240\372\063\066\023\364\372\063\347\022 +END +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\122\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\021\000\216\017\371\113\220\161\150\145\063\124\364\324\104 +\071\267\340 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Certainly Root E1" +# +# Issuer: CN=Certainly Root E1,O=Certainly,C=US +# Serial Number:06:25:33:b1:47:03:33:27:5c:f9:8d:9a:b9:bf:cc:f8 +# Subject: CN=Certainly Root E1,O=Certainly,C=US +# Not Valid Before: Thu Apr 01 00:00:00 2021 +# Not Valid After : Sun Apr 01 00:00:00 2046 +# Fingerprint (SHA-256): B4:58:5F:22:E4:AC:75:6A:4E:86:12:A1:36:1C:5D:9D:03:1A:93:FD:84:FE:BB:77:8F:A3:06:8B:0F:C4:2D:C2 +# Fingerprint (SHA1): F9:E1:6D:DC:01:89:CF:D5:82:45:63:3E:C5:37:7D:C2:EB:93:6F:2B +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certainly Root E1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\105\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\105\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\006\045\063\261\107\003\063\047\134\371\215\232\271\277 +\314\370 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\001\367\060\202\001\175\240\003\002\001\002\002\020\006 +\045\063\261\107\003\063\047\134\371\215\232\271\277\314\370\060 +\012\006\010\052\206\110\316\075\004\003\003\060\075\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\022\060\020\006\003 +\125\004\012\023\011\103\145\162\164\141\151\156\154\171\061\032 +\060\030\006\003\125\004\003\023\021\103\145\162\164\141\151\156 +\154\171\040\122\157\157\164\040\105\061\060\036\027\015\062\061 +\060\064\060\061\060\060\060\060\060\060\132\027\015\064\066\060 +\064\060\061\060\060\060\060\060\060\132\060\075\061\013\060\011 +\006\003\125\004\006\023\002\125\123\061\022\060\020\006\003\125 +\004\012\023\011\103\145\162\164\141\151\156\154\171\061\032\060 +\030\006\003\125\004\003\023\021\103\145\162\164\141\151\156\154 +\171\040\122\157\157\164\040\105\061\060\166\060\020\006\007\052 +\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142\000 +\004\336\157\370\177\034\337\355\371\107\207\206\261\244\300\212 +\370\202\227\200\352\217\310\112\136\052\175\210\150\247\001\142 +\024\221\044\172\134\236\243\027\175\212\206\041\064\030\120\033 +\020\336\320\067\113\046\307\031\140\200\351\064\275\140\031\066 +\100\326\051\207\011\074\221\172\366\274\023\043\335\131\116\004 +\136\317\310\002\034\030\123\301\061\330\332\040\351\104\215\344 +\166\243\102\060\100\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004 +\024\363\050\030\313\144\165\356\051\052\353\355\256\043\130\070 +\205\353\310\042\007\060\012\006\010\052\206\110\316\075\004\003 +\003\003\150\000\060\145\002\061\000\261\216\132\040\303\262\031 +\142\115\336\260\117\337\156\322\160\212\361\237\176\152\214\346 +\272\336\203\151\312\151\263\251\005\265\226\222\027\207\302\322 +\352\320\173\316\330\101\133\174\256\002\060\106\336\352\313\135 +\232\354\062\302\145\026\260\114\060\134\060\363\332\116\163\206 +\006\330\316\211\004\110\067\067\370\335\063\121\235\160\257\173 +\125\330\001\056\175\005\144\016\206\270\221 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Certainly Root E1" +# Issuer: CN=Certainly Root E1,O=Certainly,C=US +# Serial Number:06:25:33:b1:47:03:33:27:5c:f9:8d:9a:b9:bf:cc:f8 +# Subject: CN=Certainly Root E1,O=Certainly,C=US +# Not Valid Before: Thu Apr 01 00:00:00 2021 +# Not Valid After : Sun Apr 01 00:00:00 2046 +# Fingerprint (SHA-256): B4:58:5F:22:E4:AC:75:6A:4E:86:12:A1:36:1C:5D:9D:03:1A:93:FD:84:FE:BB:77:8F:A3:06:8B:0F:C4:2D:C2 +# Fingerprint (SHA1): F9:E1:6D:DC:01:89:CF:D5:82:45:63:3E:C5:37:7D:C2:EB:93:6F:2B +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Certainly Root E1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\371\341\155\334\001\211\317\325\202\105\143\076\305\067\175\302 +\353\223\157\053 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\012\236\312\315\076\122\120\306\066\363\113\243\355\247\123\351 +END +CKA_ISSUER MULTILINE_OCTAL +\060\075\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\023\011\103\145\162\164\141\151 +\156\154\171\061\032\060\030\006\003\125\004\003\023\021\103\145 +\162\164\141\151\156\154\171\040\122\157\157\164\040\105\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\006\045\063\261\107\003\063\047\134\371\215\232\271\277 +\314\370 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DIGITALSIGN GLOBAL ROOT RSA CA" +# +# Issuer: CN=DIGITALSIGN GLOBAL ROOT RSA CA,O=DigitalSign Certificadora Digital,C=PT +# Serial Number:5d:59:c8:ca:ab:09:57:f5:e6:b5:da:29:94:04:6a:ff:c5:d4:95:87 +# Subject: CN=DIGITALSIGN GLOBAL ROOT RSA CA,O=DigitalSign Certificadora Digital,C=PT +# Not Valid Before: Thu Jan 21 10:50:34 2021 +# Not Valid After : Mon Jan 15 10:50:34 2046 +# Fingerprint (SHA-256): 82:BD:5D:85:1A:CF:7F:6E:1B:A7:BF:CB:C5:30:30:D0:E7:BC:3C:21:DF:77:2D:85:8C:AB:41:D1:99:BD:F5:95 +# Fingerprint (SHA1): B9:82:07:97:AE:52:A5:68:6F:46:07:DF:FD:03:72:3D:92:86:88:2D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DIGITALSIGN GLOBAL ROOT RSA CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\047\060\045\006 +\003\125\004\003\014\036\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\122\123 +\101\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\047\060\045\006 +\003\125\004\003\014\036\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\122\123 +\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\135\131\310\312\253\011\127\365\346\265\332\051\224\004 +\152\377\305\324\225\207 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\265\060\202\003\235\240\003\002\001\002\002\024\135 +\131\310\312\253\011\127\365\346\265\332\051\224\004\152\377\305 +\324\225\207\060\015\006\011\052\206\110\206\367\015\001\001\015 +\005\000\060\142\061\013\060\011\006\003\125\004\006\023\002\120 +\124\061\052\060\050\006\003\125\004\012\014\041\104\151\147\151 +\164\141\154\123\151\147\156\040\103\145\162\164\151\146\151\143 +\141\144\157\162\141\040\104\151\147\151\164\141\154\061\047\060 +\045\006\003\125\004\003\014\036\104\111\107\111\124\101\114\123 +\111\107\116\040\107\114\117\102\101\114\040\122\117\117\124\040 +\122\123\101\040\103\101\060\036\027\015\062\061\060\061\062\061 +\061\060\065\060\063\064\132\027\015\064\066\060\061\061\065\061 +\060\065\060\063\064\132\060\142\061\013\060\011\006\003\125\004 +\006\023\002\120\124\061\052\060\050\006\003\125\004\012\014\041 +\104\151\147\151\164\141\154\123\151\147\156\040\103\145\162\164 +\151\146\151\143\141\144\157\162\141\040\104\151\147\151\164\141 +\154\061\047\060\045\006\003\125\004\003\014\036\104\111\107\111 +\124\101\114\123\111\107\116\040\107\114\117\102\101\114\040\122 +\117\117\124\040\122\123\101\040\103\101\060\202\002\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 +\017\000\060\202\002\012\002\202\002\001\000\310\207\266\070\323 +\034\360\336\022\370\203\307\304\212\342\211\270\264\042\172\170 +\370\014\146\121\150\166\067\012\325\117\302\132\010\270\026\134 +\367\162\001\011\067\204\201\052\124\153\327\222\320\154\372\250 +\247\103\022\064\353\016\333\067\017\051\376\212\061\121\102\350 +\113\234\220\250\310\054\021\323\375\240\051\176\316\336\224\366 +\202\340\130\264\116\105\045\361\042\362\075\323\017\173\124\032 +\334\062\266\326\121\116\176\101\264\127\270\054\306\271\016\056 +\312\127\361\325\310\323\130\347\245\351\102\021\256\323\040\045 +\224\151\327\217\312\242\015\303\323\237\007\150\077\025\322\147 +\056\123\375\166\202\233\013\163\251\051\015\236\021\223\024\010 +\230\354\236\124\022\112\126\242\006\025\354\153\154\056\222\140 +\056\206\015\256\202\037\121\115\343\262\007\327\020\031\127\042 +\366\251\151\104\204\363\331\075\240\006\277\314\210\176\177\365 +\316\133\245\302\052\152\164\102\352\157\246\377\371\150\261\320 +\137\275\221\322\125\157\063\127\114\036\235\344\342\213\301\205 +\145\240\340\152\234\000\000\210\222\335\130\010\026\362\160\061 +\250\034\341\336\275\116\161\351\326\276\176\265\241\132\303\115 +\367\277\233\275\224\244\375\365\252\123\223\106\311\046\001\004 +\160\304\240\161\272\316\045\146\373\221\176\125\160\356\111\012 +\115\142\177\302\120\232\162\362\030\147\235\351\105\250\064\204 +\350\370\201\366\321\132\042\036\007\117\073\263\177\335\021\245 +\163\334\276\251\031\072\151\251\155\033\062\342\211\252\245\047 +\013\132\176\164\342\017\144\071\135\176\134\271\301\027\374\307 +\215\136\311\354\044\355\322\362\077\172\204\105\067\002\276\076 +\153\131\304\346\133\026\155\300\252\236\252\265\131\056\054\160 +\125\234\314\231\226\230\044\124\321\216\332\312\264\021\264\267 +\160\103\037\157\220\013\040\240\250\166\023\145\333\333\043\132 +\165\113\241\013\061\167\012\356\175\150\141\032\023\214\352\121 +\176\134\126\243\127\114\135\241\353\023\145\277\124\024\314\363 +\356\334\327\354\074\227\362\170\126\270\337\162\134\160\374\316 +\006\335\237\322\007\061\357\347\122\221\236\315\272\327\300\030 +\104\007\061\145\111\062\151\023\112\353\217\002\003\001\000\001 +\243\143\060\141\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\037\006\003\125\035\043\004\030\060\026 +\200\024\265\066\274\074\214\032\253\054\366\131\031\055\203\024 +\332\223\045\025\326\206\060\035\006\003\125\035\016\004\026\004 +\024\265\066\274\074\214\032\253\054\366\131\031\055\203\024\332 +\223\045\025\326\206\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\015\006\011\052\206\110\206\367\015\001 +\001\015\005\000\003\202\002\001\000\024\373\061\045\070\061\370 +\312\010\262\043\166\070\255\370\323\131\365\314\264\127\045\341 +\104\276\176\374\026\354\256\372\046\237\117\147\026\112\126\360 +\375\355\307\031\001\064\216\220\132\055\326\200\134\354\161\322 +\201\045\202\036\000\161\337\232\321\325\035\042\273\321\245\363 +\142\017\264\353\334\044\163\376\246\126\315\232\024\305\004\065 +\026\061\242\007\353\245\000\342\266\370\137\162\375\077\141\111 +\216\336\176\115\070\327\172\036\164\067\154\121\334\276\000\004 +\270\070\024\363\040\301\355\233\247\043\375\015\102\204\035\177 +\362\163\303\320\170\143\361\237\354\327\133\351\361\276\154\240 +\113\003\236\215\151\341\024\332\210\020\201\043\123\377\332\124 +\053\013\306\271\226\225\004\030\106\363\173\250\227\330\133\150 +\244\344\070\034\016\105\345\230\323\011\256\232\136\354\263\171 +\015\071\162\362\364\224\235\016\236\140\042\346\250\366\114\205 +\315\007\202\072\150\071\315\075\137\343\070\364\266\257\073\153 +\112\237\140\121\105\242\100\002\345\252\014\343\076\321\170\324 +\242\164\234\046\272\005\232\050\160\112\076\246\013\320\035\111 +\360\272\370\256\101\020\176\244\007\022\275\250\317\051\075\127 +\273\307\361\103\107\000\076\256\160\030\132\040\173\011\313\072 +\072\160\200\345\114\140\230\301\025\301\035\112\367\310\360\233 +\341\162\255\347\135\150\130\013\004\261\214\274\237\267\373\156 +\213\133\004\125\373\353\043\125\327\170\120\332\045\313\276\047 +\066\273\044\032\171\034\121\321\376\023\273\377\170\054\334\244 +\276\057\366\305\113\123\317\247\114\231\136\160\254\131\210\004 +\256\144\004\277\173\246\172\115\323\350\167\275\241\176\120\025 +\363\357\111\060\205\115\041\127\252\333\054\165\227\255\201\001 +\207\242\261\160\235\036\006\132\003\140\261\077\246\155\202\054 +\324\024\261\201\245\350\075\210\035\264\162\054\130\067\212\216 +\070\224\270\163\335\251\340\270\366\167\242\263\174\130\336\256 +\151\072\265\213\245\032\273\362\330\164\006\234\375\142\163\040 +\041\166\261\176\160\236\031\324\353\027\142\031\070\231\315\066 +\053\107\376\061\313\337\271\344\254\010\323\330\246\353\324\236 +\176\113\144\244\125\135\053\027\311 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DIGITALSIGN GLOBAL ROOT RSA CA" +# Issuer: CN=DIGITALSIGN GLOBAL ROOT RSA CA,O=DigitalSign Certificadora Digital,C=PT +# Serial Number:5d:59:c8:ca:ab:09:57:f5:e6:b5:da:29:94:04:6a:ff:c5:d4:95:87 +# Subject: CN=DIGITALSIGN GLOBAL ROOT RSA CA,O=DigitalSign Certificadora Digital,C=PT +# Not Valid Before: Thu Jan 21 10:50:34 2021 +# Not Valid After : Mon Jan 15 10:50:34 2046 +# Fingerprint (SHA-256): 82:BD:5D:85:1A:CF:7F:6E:1B:A7:BF:CB:C5:30:30:D0:E7:BC:3C:21:DF:77:2D:85:8C:AB:41:D1:99:BD:F5:95 +# Fingerprint (SHA1): B9:82:07:97:AE:52:A5:68:6F:46:07:DF:FD:03:72:3D:92:86:88:2D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DIGITALSIGN GLOBAL ROOT RSA CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\271\202\007\227\256\122\245\150\157\106\007\337\375\003\162\075 +\222\206\210\055 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\033\032\275\032\171\306\333\264\355\263\207\314\251\323\116\170 +END +CKA_ISSUER MULTILINE_OCTAL +\060\142\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\047\060\045\006 +\003\125\004\003\014\036\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\122\123 +\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\135\131\310\312\253\011\127\365\346\265\332\051\224\004 +\152\377\305\324\225\207 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "DIGITALSIGN GLOBAL ROOT ECDSA CA" +# +# Issuer: CN=DIGITALSIGN GLOBAL ROOT ECDSA CA,O=DigitalSign Certificadora Digital,C=PT +# Serial Number:36:2d:8f:72:88:a2:28:27:e4:00:ff:24:c6:2d:e4:eb:fa:9d:b6:e1 +# Subject: CN=DIGITALSIGN GLOBAL ROOT ECDSA CA,O=DigitalSign Certificadora Digital,C=PT +# Not Valid Before: Thu Jan 21 11:07:50 2021 +# Not Valid After : Mon Jan 15 11:07:50 2046 +# Fingerprint (SHA-256): 26:1D:71:14:AE:5F:8F:F2:D8:C7:20:9A:9D:E4:28:9E:6A:FC:9D:71:70:23:D8:54:50:90:91:99:F1:85:7C:FE +# Fingerprint (SHA1): 67:A8:08:EB:8F:88:F5:80:6C:05:45:1B:17:F3:D7:00:2F:D2:4A:8A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DIGITALSIGN GLOBAL ROOT ECDSA CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\144\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\051\060\047\006 +\003\125\004\003\014\040\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\105\103 +\104\123\101\040\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\144\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\051\060\047\006 +\003\125\004\003\014\040\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\105\103 +\104\123\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\066\055\217\162\210\242\050\047\344\000\377\044\306\055 +\344\353\372\235\266\341 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\152\060\202\001\360\240\003\002\001\002\002\024\066 +\055\217\162\210\242\050\047\344\000\377\044\306\055\344\353\372 +\235\266\341\060\012\006\010\052\206\110\316\075\004\003\003\060 +\144\061\013\060\011\006\003\125\004\006\023\002\120\124\061\052 +\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141\154 +\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144\157 +\162\141\040\104\151\147\151\164\141\154\061\051\060\047\006\003 +\125\004\003\014\040\104\111\107\111\124\101\114\123\111\107\116 +\040\107\114\117\102\101\114\040\122\117\117\124\040\105\103\104 +\123\101\040\103\101\060\036\027\015\062\061\060\061\062\061\061 +\061\060\067\065\060\132\027\015\064\066\060\061\061\065\061\061 +\060\067\065\060\132\060\144\061\013\060\011\006\003\125\004\006 +\023\002\120\124\061\052\060\050\006\003\125\004\012\014\041\104 +\151\147\151\164\141\154\123\151\147\156\040\103\145\162\164\151 +\146\151\143\141\144\157\162\141\040\104\151\147\151\164\141\154 +\061\051\060\047\006\003\125\004\003\014\040\104\111\107\111\124 +\101\114\123\111\107\116\040\107\114\117\102\101\114\040\122\117 +\117\124\040\105\103\104\123\101\040\103\101\060\166\060\020\006 +\007\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003 +\142\000\004\156\013\243\253\063\115\034\352\112\350\374\004\215 +\024\240\175\360\010\054\137\203\253\223\321\322\173\272\327\111 +\175\217\354\022\120\137\324\271\313\345\360\371\063\143\037\311 +\127\354\100\330\021\013\227\350\122\026\314\051\216\364\006\206 +\036\070\334\075\127\304\356\252\275\310\124\004\046\132\047\023 +\121\107\075\037\037\032\216\250\225\244\063\320\314\107\314\155 +\270\374\110\243\143\060\141\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\037\006\003\125\035\043\004 +\030\060\026\200\024\316\257\112\213\032\165\342\361\070\347\002 +\360\026\255\136\352\144\325\173\264\060\035\006\003\125\035\016 +\004\026\004\024\316\257\112\213\032\165\342\361\070\347\002\360 +\026\255\136\352\144\325\173\264\060\016\006\003\125\035\017\001 +\001\377\004\004\003\002\001\006\060\012\006\010\052\206\110\316 +\075\004\003\003\003\150\000\060\145\002\060\012\210\304\161\234 +\104\003\115\215\264\307\274\250\256\331\060\047\065\152\153\026 +\143\327\374\347\131\341\247\211\033\114\061\232\043\125\104\346 +\363\103\041\325\107\047\157\155\127\001\252\002\061\000\373\262 +\352\342\227\177\121\265\237\110\353\274\157\065\211\250\144\160 +\253\127\166\315\300\306\024\140\312\177\342\202\000\163\367\314 +\065\352\216\044\233\345\010\131\307\004\214\163\170\376 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "DIGITALSIGN GLOBAL ROOT ECDSA CA" +# Issuer: CN=DIGITALSIGN GLOBAL ROOT ECDSA CA,O=DigitalSign Certificadora Digital,C=PT +# Serial Number:36:2d:8f:72:88:a2:28:27:e4:00:ff:24:c6:2d:e4:eb:fa:9d:b6:e1 +# Subject: CN=DIGITALSIGN GLOBAL ROOT ECDSA CA,O=DigitalSign Certificadora Digital,C=PT +# Not Valid Before: Thu Jan 21 11:07:50 2021 +# Not Valid After : Mon Jan 15 11:07:50 2046 +# Fingerprint (SHA-256): 26:1D:71:14:AE:5F:8F:F2:D8:C7:20:9A:9D:E4:28:9E:6A:FC:9D:71:70:23:D8:54:50:90:91:99:F1:85:7C:FE +# Fingerprint (SHA1): 67:A8:08:EB:8F:88:F5:80:6C:05:45:1B:17:F3:D7:00:2F:D2:4A:8A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "DIGITALSIGN GLOBAL ROOT ECDSA CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\147\250\010\353\217\210\365\200\154\005\105\033\027\363\327\000 +\057\322\112\212 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\252\055\241\316\377\041\302\210\313\132\036\214\341\311\222\217 +END +CKA_ISSUER MULTILINE_OCTAL +\060\144\061\013\060\011\006\003\125\004\006\023\002\120\124\061 +\052\060\050\006\003\125\004\012\014\041\104\151\147\151\164\141 +\154\123\151\147\156\040\103\145\162\164\151\146\151\143\141\144 +\157\162\141\040\104\151\147\151\164\141\154\061\051\060\047\006 +\003\125\004\003\014\040\104\111\107\111\124\101\114\123\111\107 +\116\040\107\114\117\102\101\114\040\122\117\117\124\040\105\103 +\104\123\101\040\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\066\055\217\162\210\242\050\047\344\000\377\044\306\055 +\344\353\372\235\266\341 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Security Communication ECC RootCA1" +# +# Issuer: CN=Security Communication ECC RootCA1,O="SECOM Trust Systems CO.,LTD.",C=JP +# Serial Number:00:d6:5d:9b:b3:78:81:2e:eb +# Subject: CN=Security Communication ECC RootCA1,O="SECOM Trust Systems CO.,LTD.",C=JP +# Not Valid Before: Thu Jun 16 05:15:28 2016 +# Not Valid After : Mon Jan 18 05:15:28 2038 +# Fingerprint (SHA-256): E7:4F:BD:A5:5B:D5:64:C4:73:A3:6B:44:1A:A7:99:C8:A6:8E:07:74:40:E8:28:8B:9F:A1:E5:0E:4B:BA:CA:11 +# Fingerprint (SHA1): B8:0E:26:A9:BF:D2:B2:3B:C0:EF:46:C9:BA:C7:BB:F6:1D:0D:41:41 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Security Communication ECC RootCA1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\053\060\051\006\003\125\004\003\023 +\042\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\105\103\103\040\122\157\157\164 +\103\101\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\053\060\051\006\003\125\004\003\023 +\042\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\105\103\103\040\122\157\157\164 +\103\101\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\326\135\233\263\170\201\056\353 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\070\060\202\001\276\240\003\002\001\002\002\011\000 +\326\135\233\263\170\201\056\353\060\012\006\010\052\206\110\316 +\075\004\003\003\060\141\061\013\060\011\006\003\125\004\006\023 +\002\112\120\061\045\060\043\006\003\125\004\012\023\034\123\105 +\103\117\115\040\124\162\165\163\164\040\123\171\163\164\145\155 +\163\040\103\117\056\054\114\124\104\056\061\053\060\051\006\003 +\125\004\003\023\042\123\145\143\165\162\151\164\171\040\103\157 +\155\155\165\156\151\143\141\164\151\157\156\040\105\103\103\040 +\122\157\157\164\103\101\061\060\036\027\015\061\066\060\066\061 +\066\060\065\061\065\062\070\132\027\015\063\070\060\061\061\070 +\060\065\061\065\062\070\132\060\141\061\013\060\011\006\003\125 +\004\006\023\002\112\120\061\045\060\043\006\003\125\004\012\023 +\034\123\105\103\117\115\040\124\162\165\163\164\040\123\171\163 +\164\145\155\163\040\103\117\056\054\114\124\104\056\061\053\060 +\051\006\003\125\004\003\023\042\123\145\143\165\162\151\164\171 +\040\103\157\155\155\165\156\151\143\141\164\151\157\156\040\105 +\103\103\040\122\157\157\164\103\101\061\060\166\060\020\006\007 +\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142 +\000\004\244\245\157\140\003\003\303\275\061\364\323\027\234\053 +\204\165\254\345\375\075\127\156\327\143\277\346\004\211\222\216 +\201\234\343\351\107\156\312\220\022\310\023\340\247\235\367\145 +\164\037\154\020\262\350\344\351\357\155\205\062\231\104\261\136 +\375\314\166\020\330\133\275\242\306\371\326\102\344\127\166\334 +\220\302\065\251\113\210\074\022\107\155\134\377\111\117\032\112 +\120\261\243\102\060\100\060\035\006\003\125\035\016\004\026\004 +\024\206\034\347\376\055\245\112\213\010\376\050\021\372\276\243 +\146\370\140\131\057\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\012\006\010\052\206\110\316\075\004 +\003\003\003\150\000\060\145\002\060\025\135\102\075\374\266\356 +\367\073\261\066\350\236\366\304\106\050\111\063\320\130\103\052 +\143\051\314\115\261\264\172\242\271\015\070\245\135\110\052\375 +\313\262\163\135\243\210\010\307\014\002\061\000\300\253\055\016 +\155\355\030\242\333\123\351\045\333\125\010\340\120\314\337\104 +\141\026\202\253\111\260\262\201\354\163\207\170\264\114\262\142 +\033\022\372\026\115\045\113\143\275\036\067\331 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Security Communication ECC RootCA1" +# Issuer: CN=Security Communication ECC RootCA1,O="SECOM Trust Systems CO.,LTD.",C=JP +# Serial Number:00:d6:5d:9b:b3:78:81:2e:eb +# Subject: CN=Security Communication ECC RootCA1,O="SECOM Trust Systems CO.,LTD.",C=JP +# Not Valid Before: Thu Jun 16 05:15:28 2016 +# Not Valid After : Mon Jan 18 05:15:28 2038 +# Fingerprint (SHA-256): E7:4F:BD:A5:5B:D5:64:C4:73:A3:6B:44:1A:A7:99:C8:A6:8E:07:74:40:E8:28:8B:9F:A1:E5:0E:4B:BA:CA:11 +# Fingerprint (SHA1): B8:0E:26:A9:BF:D2:B2:3B:C0:EF:46:C9:BA:C7:BB:F6:1D:0D:41:41 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Security Communication ECC RootCA1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\270\016\046\251\277\322\262\073\300\357\106\311\272\307\273\366 +\035\015\101\101 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\176\103\260\222\150\354\005\103\114\230\253\135\065\056\176\206 +END +CKA_ISSUER MULTILINE_OCTAL +\060\141\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\045\060\043\006\003\125\004\012\023\034\123\105\103\117\115\040 +\124\162\165\163\164\040\123\171\163\164\145\155\163\040\103\117 +\056\054\114\124\104\056\061\053\060\051\006\003\125\004\003\023 +\042\123\145\143\165\162\151\164\171\040\103\157\155\155\165\156 +\151\143\141\164\151\157\156\040\105\103\103\040\122\157\157\164 +\103\101\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\011\000\326\135\233\263\170\201\056\353 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "BJCA Global Root CA1" +# +# Issuer: CN=BJCA Global Root CA1,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Serial Number:55:6f:65:e3:b4:d9:90:6a:1b:09:d1:6c:3e:c0:6c:20 +# Subject: CN=BJCA Global Root CA1,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Not Valid Before: Thu Dec 19 03:16:17 2019 +# Not Valid After : Mon Dec 12 03:16:17 2044 +# Fingerprint (SHA-256): F3:89:6F:88:FE:7C:0A:88:27:66:A7:FA:6A:D2:74:9F:B5:7A:7F:3E:98:FB:76:9C:1F:A7:B0:9C:2C:44:D5:AE +# Fingerprint (SHA1): D5:EC:8D:7B:4C:BA:79:F4:E7:E8:CB:9D:6B:AE:77:83:10:03:21:6A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "BJCA Global Root CA1" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\125\157\145\343\264\331\220\152\033\011\321\154\076\300 +\154\040 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\164\060\202\003\134\240\003\002\001\002\002\020\125 +\157\145\343\264\331\220\152\033\011\321\154\076\300\154\040\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\124 +\061\013\060\011\006\003\125\004\006\023\002\103\116\061\046\060 +\044\006\003\125\004\012\014\035\102\105\111\112\111\116\107\040 +\103\105\122\124\111\106\111\103\101\124\105\040\101\125\124\110 +\117\122\111\124\131\061\035\060\033\006\003\125\004\003\014\024 +\102\112\103\101\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101\061\060\036\027\015\061\071\061\062\061\071\060\063 +\061\066\061\067\132\027\015\064\064\061\062\061\062\060\063\061 +\066\061\067\132\060\124\061\013\060\011\006\003\125\004\006\023 +\002\103\116\061\046\060\044\006\003\125\004\012\014\035\102\105 +\111\112\111\116\107\040\103\105\122\124\111\106\111\103\101\124 +\105\040\101\125\124\110\117\122\111\124\131\061\035\060\033\006 +\003\125\004\003\014\024\102\112\103\101\040\107\154\157\142\141 +\154\040\122\157\157\164\040\103\101\061\060\202\002\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 +\017\000\060\202\002\012\002\202\002\001\000\361\146\010\275\331 +\305\025\141\313\204\004\101\245\151\067\167\035\301\260\173\372 +\303\167\110\220\023\162\144\321\270\174\220\065\235\030\171\210 +\343\227\001\074\107\201\362\016\242\230\015\236\077\067\340\031 +\262\220\362\106\034\222\261\072\141\316\372\267\106\236\003\206 +\327\063\156\355\367\105\214\166\067\336\156\226\221\367\327\176 +\053\207\027\325\213\065\356\204\221\162\127\334\140\303\303\271 +\347\307\147\044\043\117\143\012\143\366\146\175\113\125\247\077 +\170\144\111\151\022\227\340\114\015\323\011\240\062\060\072\372 +\237\300\362\234\305\022\052\056\034\265\004\063\332\244\070\021 +\152\336\306\030\366\107\072\042\101\207\042\374\304\211\050\124 +\330\214\245\060\012\370\027\026\312\254\067\375\171\247\221\027 +\170\070\231\255\130\355\262\336\314\211\175\003\234\263\211\145 +\347\343\073\261\042\206\217\006\155\170\007\375\221\022\177\260 +\153\034\211\015\371\270\313\164\133\007\302\310\364\065\321\144 +\143\172\351\156\232\050\326\060\275\346\033\335\025\257\204\352 +\234\307\312\365\016\352\362\135\051\207\217\151\163\071\276\056 +\044\157\105\041\254\305\324\151\045\006\203\255\172\110\205\023 +\054\015\006\270\154\171\126\374\243\147\062\201\365\127\245\312 +\127\102\151\351\134\044\141\357\342\060\030\116\104\230\125\157 +\172\302\223\330\031\266\336\174\107\212\021\116\111\107\333\050 +\224\002\013\224\112\054\371\022\320\117\350\061\176\154\172\277 +\246\077\233\071\075\002\026\243\030\263\147\254\133\077\054\203 +\053\147\071\201\134\271\176\224\325\144\335\236\217\156\256\350 +\174\133\264\327\152\107\110\327\176\263\324\055\216\126\166\116 +\317\151\361\156\104\154\324\044\352\215\044\241\030\277\275\127 +\376\251\231\065\265\333\020\167\270\075\110\272\326\301\347\361 +\043\076\327\337\205\235\047\074\324\100\275\012\014\275\365\347 +\215\045\326\201\164\207\106\324\051\165\242\102\154\367\163\211 +\347\175\277\172\112\037\323\042\311\025\125\317\337\157\174\125 +\320\244\213\007\021\067\137\203\246\046\127\246\001\133\176\376 +\130\150\007\251\351\172\331\271\350\377\120\037\253\302\264\300 +\316\350\352\375\017\275\215\115\270\274\161\002\003\001\000\001 +\243\102\060\100\060\035\006\003\125\035\016\004\026\004\024\305 +\357\355\314\330\215\041\306\110\344\343\327\024\056\247\026\223 +\345\230\001\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\015\006\011\052\206\110\206\367\015\001\001 +\013\005\000\003\202\002\001\000\122\202\254\041\064\037\043\362 +\242\330\371\270\257\067\066\040\211\321\067\003\326\151\237\270 +\141\020\272\242\061\230\131\107\350\321\015\045\036\025\101\014 +\340\052\125\325\127\122\313\370\344\307\151\243\035\115\161\002 +\136\137\041\105\140\110\134\011\216\111\020\301\004\334\251\142 +\153\002\360\103\310\116\235\070\111\164\311\062\160\124\155\301 +\107\374\216\264\066\236\324\234\275\335\040\326\123\311\030\251 +\265\126\271\166\213\225\147\146\356\275\230\376\256\357\276\156 +\373\140\366\375\131\306\052\033\077\043\112\224\044\060\047\310 +\211\274\353\104\044\232\313\075\276\117\325\172\316\216\027\313 +\142\301\331\336\036\016\172\377\103\206\064\122\274\141\077\074 +\137\273\331\166\264\123\274\227\263\376\212\114\022\056\053\363 +\327\316\341\242\377\335\173\160\373\073\241\115\244\143\002\375 +\070\227\225\077\005\160\240\153\337\142\201\103\213\264\131\015 +\112\214\124\234\305\273\201\237\315\175\245\357\013\045\036\072 +\040\333\034\374\037\230\147\002\012\324\163\104\023\333\121\204 +\032\125\003\126\340\000\176\164\006\377\070\304\162\035\323\250 +\077\150\061\135\323\011\307\056\214\133\143\340\350\334\036\322 +\354\141\036\362\336\345\357\366\231\166\140\055\036\224\162\161 +\306\013\052\062\307\222\116\325\106\327\035\371\251\031\012\310 +\372\225\316\155\043\230\252\013\070\255\232\126\015\157\215\361 +\061\000\210\301\027\234\315\031\066\065\376\125\123\240\340\074 +\063\137\226\136\342\062\351\337\063\273\006\112\251\330\204\163 +\316\167\322\306\254\161\341\134\243\035\014\273\012\337\137\342 +\243\161\330\332\067\132\240\170\053\364\324\175\353\166\355\362 +\141\160\245\145\232\323\211\064\030\253\373\162\076\327\264\075 +\171\134\330\037\241\063\173\331\202\120\014\223\027\252\154\334 +\302\202\273\002\127\066\257\230\047\052\071\120\341\260\211\365 +\045\227\176\107\150\020\264\354\163\312\263\227\321\044\334\366 +\142\240\050\323\265\243\270\144\267\210\142\102\317\235\123\315 +\231\276\144\150\217\117\036\022\110\367\322\051\303\230\050\312 +\362\062\013\223\214\051\117\074\140\062\315\005\226\141\354\362 +\257\376\263\160\054\056\246\362 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "BJCA Global Root CA1" +# Issuer: CN=BJCA Global Root CA1,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Serial Number:55:6f:65:e3:b4:d9:90:6a:1b:09:d1:6c:3e:c0:6c:20 +# Subject: CN=BJCA Global Root CA1,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Not Valid Before: Thu Dec 19 03:16:17 2019 +# Not Valid After : Mon Dec 12 03:16:17 2044 +# Fingerprint (SHA-256): F3:89:6F:88:FE:7C:0A:88:27:66:A7:FA:6A:D2:74:9F:B5:7A:7F:3E:98:FB:76:9C:1F:A7:B0:9C:2C:44:D5:AE +# Fingerprint (SHA1): D5:EC:8D:7B:4C:BA:79:F4:E7:E8:CB:9D:6B:AE:77:83:10:03:21:6A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "BJCA Global Root CA1" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\325\354\215\173\114\272\171\364\347\350\313\235\153\256\167\203 +\020\003\041\152 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\102\062\231\166\103\063\066\044\065\007\202\233\050\371\320\220 +END +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\125\157\145\343\264\331\220\152\033\011\321\154\076\300 +\154\040 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "BJCA Global Root CA2" +# +# Issuer: CN=BJCA Global Root CA2,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Serial Number:2c:17:08:7d:64:2a:c0:fe:85:18:59:06:cf:b4:4a:eb +# Subject: CN=BJCA Global Root CA2,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Not Valid Before: Thu Dec 19 03:18:21 2019 +# Not Valid After : Mon Dec 12 03:18:21 2044 +# Fingerprint (SHA-256): 57:4D:F6:93:1E:27:80:39:66:7B:72:0A:FD:C1:60:0F:C2:7E:B6:6D:D3:09:29:79:FB:73:85:64:87:21:28:82 +# Fingerprint (SHA1): F4:27:86:EB:6E:B8:6D:88:31:67:02:FB:BA:66:A4:53:00:AA:7A:A6 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "BJCA Global Root CA2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\054\027\010\175\144\052\300\376\205\030\131\006\317\264 +\112\353 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\045\060\202\001\253\240\003\002\001\002\002\020\054 +\027\010\175\144\052\300\376\205\030\131\006\317\264\112\353\060 +\012\006\010\052\206\110\316\075\004\003\003\060\124\061\013\060 +\011\006\003\125\004\006\023\002\103\116\061\046\060\044\006\003 +\125\004\012\014\035\102\105\111\112\111\116\107\040\103\105\122 +\124\111\106\111\103\101\124\105\040\101\125\124\110\117\122\111 +\124\131\061\035\060\033\006\003\125\004\003\014\024\102\112\103 +\101\040\107\154\157\142\141\154\040\122\157\157\164\040\103\101 +\062\060\036\027\015\061\071\061\062\061\071\060\063\061\070\062 +\061\132\027\015\064\064\061\062\061\062\060\063\061\070\062\061 +\132\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116 +\061\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111 +\116\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101 +\125\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004 +\003\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122 +\157\157\164\040\103\101\062\060\166\060\020\006\007\052\206\110 +\316\075\002\001\006\005\053\201\004\000\042\003\142\000\004\235 +\313\200\221\215\123\147\265\271\120\261\003\370\345\111\037\101 +\042\011\260\121\122\130\326\053\064\217\305\022\106\024\305\213 +\057\054\204\377\054\156\250\325\361\011\343\003\041\024\304\103 +\075\174\301\054\304\113\152\112\315\351\207\340\175\366\042\276 +\372\112\121\270\060\212\375\341\336\030\022\012\366\107\267\347 +\027\277\047\212\324\101\114\226\074\140\226\301\375\025\034\243 +\102\060\100\060\035\006\003\125\035\016\004\026\004\024\322\112 +\261\121\177\006\360\321\202\037\116\156\137\253\203\374\110\324 +\260\221\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\012\006\010\052\206\110\316\075\004\003\003\003 +\150\000\060\145\002\060\032\274\133\327\376\251\322\124\016\112 +\135\322\155\261\100\334\364\103\325\322\112\231\031\022\126\200 +\367\203\064\341\065\116\110\155\004\017\127\061\060\060\055\261 +\252\235\003\070\333\006\002\061\000\313\314\207\123\313\172\337 +\040\121\163\220\300\250\133\141\320\305\120\071\375\205\376\301 +\343\170\370\246\326\113\275\233\207\217\017\345\326\123\226\253 +\074\310\100\332\141\367\123\243\367 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "BJCA Global Root CA2" +# Issuer: CN=BJCA Global Root CA2,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Serial Number:2c:17:08:7d:64:2a:c0:fe:85:18:59:06:cf:b4:4a:eb +# Subject: CN=BJCA Global Root CA2,O=BEIJING CERTIFICATE AUTHORITY,C=CN +# Not Valid Before: Thu Dec 19 03:18:21 2019 +# Not Valid After : Mon Dec 12 03:18:21 2044 +# Fingerprint (SHA-256): 57:4D:F6:93:1E:27:80:39:66:7B:72:0A:FD:C1:60:0F:C2:7E:B6:6D:D3:09:29:79:FB:73:85:64:87:21:28:82 +# Fingerprint (SHA1): F4:27:86:EB:6E:B8:6D:88:31:67:02:FB:BA:66:A4:53:00:AA:7A:A6 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "BJCA Global Root CA2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\364\047\206\353\156\270\155\210\061\147\002\373\272\146\244\123 +\000\252\172\246 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\136\012\366\107\137\246\024\350\021\001\225\077\115\001\353\074 +END +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\046\060\044\006\003\125\004\012\014\035\102\105\111\112\111\116 +\107\040\103\105\122\124\111\106\111\103\101\124\105\040\101\125 +\124\110\117\122\111\124\131\061\035\060\033\006\003\125\004\003 +\014\024\102\112\103\101\040\107\154\157\142\141\154\040\122\157 +\157\164\040\103\101\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\054\027\010\175\144\052\300\376\205\030\131\006\317\264 +\112\353 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "LAWtrust Root CA2 (4096)" +# +# Issuer: CN=LAWtrust Root CA2 (4096),O=LAWtrust,C=ZA +# Serial Number: 1427795633 (0x551a6eb1) +# Subject: CN=LAWtrust Root CA2 (4096),O=LAWtrust,C=ZA +# Not Valid Before: Tue Feb 14 09:19:38 2023 +# Not Valid After : Fri Feb 14 09:49:38 2053 +# Fingerprint (SHA-256): 48:E1:CF:9E:43:B6:88:A5:10:44:16:0F:46:D7:73:B8:27:7F:E4:5B:EA:AD:0E:4D:F9:0D:19:74:38:2F:EA:99 +# Fingerprint (SHA1): EC:A2:D5:30:A9:AB:2C:7D:0E:75:61:64:4E:0A:E0:16:A1:54:38:7D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "LAWtrust Root CA2 (4096)" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\103\061\013\060\011\006\003\125\004\006\023\002\132\101\061 +\021\060\017\006\003\125\004\012\023\010\114\101\127\164\162\165 +\163\164\061\041\060\037\006\003\125\004\003\023\030\114\101\127 +\164\162\165\163\164\040\122\157\157\164\040\103\101\062\040\050 +\064\060\071\066\051 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\103\061\013\060\011\006\003\125\004\006\023\002\132\101\061 +\021\060\017\006\003\125\004\012\023\010\114\101\127\164\162\165 +\163\164\061\041\060\037\006\003\125\004\003\023\030\114\101\127 +\164\162\165\163\164\040\122\157\157\164\040\103\101\062\040\050 +\064\060\071\066\051 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\125\032\156\261 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\230\060\202\003\200\240\003\002\001\002\002\004\125 +\032\156\261\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\103\061\013\060\011\006\003\125\004\006\023\002\132 +\101\061\021\060\017\006\003\125\004\012\023\010\114\101\127\164 +\162\165\163\164\061\041\060\037\006\003\125\004\003\023\030\114 +\101\127\164\162\165\163\164\040\122\157\157\164\040\103\101\062 +\040\050\064\060\071\066\051\060\040\027\015\062\063\060\062\061 +\064\060\071\061\071\063\070\132\030\017\062\060\065\063\060\062 +\061\064\060\071\064\071\063\070\132\060\103\061\013\060\011\006 +\003\125\004\006\023\002\132\101\061\021\060\017\006\003\125\004 +\012\023\010\114\101\127\164\162\165\163\164\061\041\060\037\006 +\003\125\004\003\023\030\114\101\127\164\162\165\163\164\040\122 +\157\157\164\040\103\101\062\040\050\064\060\071\066\051\060\202 +\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 +\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\314 +\027\313\053\103\272\154\371\311\223\212\145\015\022\114\354\047 +\024\267\023\171\340\324\325\055\030\126\361\371\352\052\020\026 +\116\154\104\307\152\145\106\363\232\211\065\321\207\370\063\211 +\057\210\011\032\222\020\221\220\301\153\237\016\156\177\046\212 +\023\135\030\254\150\001\015\020\170\145\160\330\216\217\204\132 +\227\060\030\320\021\016\112\215\122\020\245\201\053\121\050\365 +\143\304\266\354\100\263\001\345\255\167\275\345\070\357\274\215 +\263\335\031\240\173\015\215\264\333\152\373\045\063\132\372\221 +\257\304\161\105\060\370\210\051\173\313\277\325\272\047\004\216 +\335\262\000\367\312\134\231\065\024\352\375\165\006\025\010\273 +\312\127\150\373\077\373\264\064\163\143\321\325\343\310\070\132 +\151\175\152\172\104\014\015\212\116\355\222\035\020\217\073\042 +\054\266\337\355\305\306\360\211\171\124\145\136\137\033\275\217 +\175\337\271\267\355\353\344\305\007\321\147\074\225\073\221\376 +\102\172\122\100\200\004\322\071\127\113\364\222\175\377\233\357 +\345\235\311\011\262\221\022\070\246\051\010\073\256\353\312\314 +\355\115\347\116\041\001\007\374\157\062\316\151\214\204\122\306 +\167\352\047\060\012\336\245\257\060\053\150\037\254\324\354\041 +\255\042\111\166\316\017\302\362\007\052\371\152\022\203\232\073 +\004\256\031\172\376\241\206\044\372\101\136\045\174\100\254\047 +\266\343\051\066\157\065\342\127\320\031\130\337\377\144\366\303 +\001\111\166\333\053\276\274\271\117\024\012\325\033\130\041\366 +\034\056\000\174\370\224\265\313\067\032\024\344\062\271\026\324 +\140\354\005\252\137\062\372\152\043\022\254\324\020\273\322\242 +\202\264\113\016\213\160\047\252\326\007\301\147\210\372\204\303 +\010\311\212\204\310\322\067\162\201\017\215\026\112\344\327\065 +\121\245\070\017\214\204\113\225\066\300\365\327\235\340\135\217 +\253\221\356\000\010\271\235\122\037\354\370\231\273\171\126\261 +\111\332\322\345\330\141\213\133\257\360\253\067\305\173\032\216 +\206\276\176\305\173\025\036\141\150\350\013\207\213\163\111\241 +\027\163\176\051\170\216\312\340\101\057\165\163\164\242\227\072 +\177\367\056\164\011\270\114\140\213\106\066\031\020\055\235\002 +\003\001\000\001\243\201\221\060\201\216\060\017\006\003\125\035 +\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003\125 +\035\017\001\001\377\004\004\003\002\001\006\060\053\006\003\125 +\035\020\004\044\060\042\200\017\062\060\062\063\060\062\061\064 +\060\071\061\071\063\070\132\201\017\062\060\065\063\060\062\061 +\064\060\071\064\071\063\070\132\060\037\006\003\125\035\043\004 +\030\060\026\200\024\327\326\126\142\134\077\027\201\346\163\104 +\051\365\121\005\357\013\140\067\254\060\035\006\003\125\035\016 +\004\026\004\024\327\326\126\142\134\077\027\201\346\163\104\051 +\365\121\005\357\013\140\067\254\060\015\006\011\052\206\110\206 +\367\015\001\001\013\005\000\003\202\002\001\000\111\234\051\376 +\075\354\236\105\177\253\076\074\376\043\157\067\076\167\247\123 +\377\170\237\374\111\104\200\127\146\234\156\332\171\377\315\105 +\255\114\223\277\265\131\306\351\020\267\345\370\214\373\207\305 +\036\213\330\263\077\002\226\012\273\212\216\357\327\264\300\203 +\040\070\227\131\105\144\374\366\167\023\362\011\327\241\310\070 +\164\010\352\371\110\114\372\037\004\234\264\377\354\156\126\066 +\162\223\154\225\076\054\137\336\017\013\253\311\314\025\076\026 +\217\146\374\262\020\270\241\321\264\336\300\143\031\314\357\123 +\252\165\066\042\213\045\037\277\233\310\327\301\137\354\246\067 +\011\252\173\142\274\366\042\055\361\326\130\335\214\273\122\364 +\013\247\166\251\172\173\032\215\334\255\232\201\142\056\206\005 +\220\162\107\057\241\311\147\204\260\015\154\260\270\233\026\267 +\320\231\024\057\234\022\233\043\250\215\246\103\036\351\345\055 +\345\170\247\037\144\224\144\266\167\262\250\134\373\011\253\051 +\353\036\155\165\321\366\320\305\245\303\035\237\036\363\032\055 +\262\310\037\345\050\012\156\363\137\375\332\346\043\241\166\220 +\134\113\230\001\202\054\356\107\055\002\032\137\177\064\305\151 +\265\162\255\076\363\317\236\155\370\051\350\021\047\053\340\131 +\013\033\141\353\112\312\151\245\244\325\315\121\033\224\216\171 +\315\337\366\256\164\135\261\054\033\206\123\376\321\060\006\101 +\064\007\142\202\114\364\176\307\207\164\016\260\041\036\011\040 +\200\301\263\025\075\106\155\323\361\006\222\077\357\240\225\212 +\034\156\167\061\266\353\170\051\014\173\356\202\245\117\176\244 +\051\136\236\252\055\370\216\300\363\374\015\006\205\233\116\334 +\367\342\011\174\320\024\121\036\172\263\043\257\372\321\141\052 +\145\265\001\331\270\343\007\312\044\166\322\360\112\276\357\206 +\004\200\102\025\160\021\150\176\327\307\273\376\347\116\233\234 +\225\245\034\112\244\311\320\011\214\252\316\110\322\036\222\227 +\327\021\351\355\146\314\067\334\365\327\033\164\233\246\352\102 +\254\135\062\340\130\364\201\107\377\322\022\342\176\034\334\111 +\166\226\303\035\237\113\312\134\052\067\133\075\212\321\070\233 +\041\332\343\277\105\103\323\340\130\167\037\050 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "LAWtrust Root CA2 (4096)" +# Issuer: CN=LAWtrust Root CA2 (4096),O=LAWtrust,C=ZA +# Serial Number: 1427795633 (0x551a6eb1) +# Subject: CN=LAWtrust Root CA2 (4096),O=LAWtrust,C=ZA +# Not Valid Before: Tue Feb 14 09:19:38 2023 +# Not Valid After : Fri Feb 14 09:49:38 2053 +# Fingerprint (SHA-256): 48:E1:CF:9E:43:B6:88:A5:10:44:16:0F:46:D7:73:B8:27:7F:E4:5B:EA:AD:0E:4D:F9:0D:19:74:38:2F:EA:99 +# Fingerprint (SHA1): EC:A2:D5:30:A9:AB:2C:7D:0E:75:61:64:4E:0A:E0:16:A1:54:38:7D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "LAWtrust Root CA2 (4096)" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\354\242\325\060\251\253\054\175\016\165\141\144\116\012\340\026 +\241\124\070\175 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\257\035\306\323\105\305\353\365\246\141\043\060\075\056\021\261 +END +CKA_ISSUER MULTILINE_OCTAL +\060\103\061\013\060\011\006\003\125\004\006\023\002\132\101\061 +\021\060\017\006\003\125\004\012\023\010\114\101\127\164\162\165 +\163\164\061\041\060\037\006\003\125\004\003\023\030\114\101\127 +\164\162\165\163\164\040\122\157\157\164\040\103\101\062\040\050 +\064\060\071\066\051 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\004\125\032\156\261 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Sectigo Public Email Protection Root E46" +# +# Issuer: CN=Sectigo Public Email Protection Root E46,O=Sectigo Limited,C=GB +# Serial Number:6e:f5:d3:a7:41:8e:a0:59:40:a7:30:6b:d2:40:65:56 +# Subject: CN=Sectigo Public Email Protection Root E46,O=Sectigo Limited,C=GB +# Not Valid Before: Mon Mar 22 00:00:00 2021 +# Not Valid After : Wed Mar 21 23:59:59 2046 +# Fingerprint (SHA-256): 22:D9:59:92:34:D6:0F:1D:4B:C7:C7:E9:6F:43:FA:55:5B:07:30:1F:D4:75:17:50:89:DA:FB:8C:25:E4:77:B3 +# Fingerprint (SHA1): 3A:C5:C3:78:34:5B:E1:82:92:46:ED:17:86:B3:93:91:7B:51:F2:14 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Sectigo Public Email Protection Root E46" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\061\060\057\006\003\125 +\004\003\023\050\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\105\155\141\151\154\040\120\162\157\164\145\143\164 +\151\157\156\040\122\157\157\164\040\105\064\066 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\061\060\057\006\003\125 +\004\003\023\050\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\105\155\141\151\154\040\120\162\157\164\145\143\164 +\151\157\156\040\122\157\157\164\040\105\064\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\156\365\323\247\101\216\240\131\100\247\060\153\322\100 +\145\126 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\061\060\202\001\267\240\003\002\001\002\002\020\156 +\365\323\247\101\216\240\131\100\247\060\153\322\100\145\126\060 +\012\006\010\052\206\110\316\075\004\003\003\060\132\061\013\060 +\011\006\003\125\004\006\023\002\107\102\061\030\060\026\006\003 +\125\004\012\023\017\123\145\143\164\151\147\157\040\114\151\155 +\151\164\145\144\061\061\060\057\006\003\125\004\003\023\050\123 +\145\143\164\151\147\157\040\120\165\142\154\151\143\040\105\155 +\141\151\154\040\120\162\157\164\145\143\164\151\157\156\040\122 +\157\157\164\040\105\064\066\060\036\027\015\062\061\060\063\062 +\062\060\060\060\060\060\060\132\027\015\064\066\060\063\062\061 +\062\063\065\071\065\071\132\060\132\061\013\060\011\006\003\125 +\004\006\023\002\107\102\061\030\060\026\006\003\125\004\012\023 +\017\123\145\143\164\151\147\157\040\114\151\155\151\164\145\144 +\061\061\060\057\006\003\125\004\003\023\050\123\145\143\164\151 +\147\157\040\120\165\142\154\151\143\040\105\155\141\151\154\040 +\120\162\157\164\145\143\164\151\157\156\040\122\157\157\164\040 +\105\064\066\060\166\060\020\006\007\052\206\110\316\075\002\001 +\006\005\053\201\004\000\042\003\142\000\004\270\247\122\224\365 +\076\005\260\033\366\037\261\323\176\271\344\005\146\124\200\316 +\154\245\150\175\344\123\122\333\202\372\304\206\337\103\170\367 +\310\255\026\274\077\170\062\313\153\323\111\326\104\345\263\176 +\237\173\246\306\054\362\342\266\323\211\260\232\074\113\316\211 +\113\306\306\313\072\111\140\017\106\274\155\116\172\234\311\233 +\205\173\012\266\260\107\302\210\343\324\321\243\102\060\100\060 +\035\006\003\125\035\016\004\026\004\024\055\116\214\247\302\043 +\262\127\251\006\153\076\153\053\211\363\303\136\107\316\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\012\006\010\052\206\110\316\075\004\003\003\003\150\000\060\145 +\002\061\000\222\235\032\131\143\105\130\216\033\026\344\175\172 +\154\066\110\060\037\053\162\347\220\063\064\375\044\242\306\006 +\214\157\073\062\127\132\370\376\306\111\022\123\232\331\020\262 +\231\121\162\002\060\005\045\052\063\041\374\223\346\042\242\314 +\160\125\050\065\126\242\007\304\041\204\043\032\114\114\231\120 +\231\222\024\313\112\334\126\373\365\323\217\152\054\365\161\072 +\370\213\073\003\236 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Sectigo Public Email Protection Root E46" +# Issuer: CN=Sectigo Public Email Protection Root E46,O=Sectigo Limited,C=GB +# Serial Number:6e:f5:d3:a7:41:8e:a0:59:40:a7:30:6b:d2:40:65:56 +# Subject: CN=Sectigo Public Email Protection Root E46,O=Sectigo Limited,C=GB +# Not Valid Before: Mon Mar 22 00:00:00 2021 +# Not Valid After : Wed Mar 21 23:59:59 2046 +# Fingerprint (SHA-256): 22:D9:59:92:34:D6:0F:1D:4B:C7:C7:E9:6F:43:FA:55:5B:07:30:1F:D4:75:17:50:89:DA:FB:8C:25:E4:77:B3 +# Fingerprint (SHA1): 3A:C5:C3:78:34:5B:E1:82:92:46:ED:17:86:B3:93:91:7B:51:F2:14 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Sectigo Public Email Protection Root E46" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\072\305\303\170\064\133\341\202\222\106\355\027\206\263\223\221 +\173\121\362\024 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\271\032\257\054\211\226\100\140\047\006\073\241\177\335\211\323 +END +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\061\060\057\006\003\125 +\004\003\023\050\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\105\155\141\151\154\040\120\162\157\164\145\143\164 +\151\157\156\040\122\157\157\164\040\105\064\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\156\365\323\247\101\216\240\131\100\247\060\153\322\100 +\145\126 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Sectigo Public Email Protection Root R46" +# +# Issuer: CN=Sectigo Public Email Protection Root R46,O=Sectigo Limited,C=GB +# Serial Number:1d:44:9e:b9:0d:83:91:74:ae:dd:f2:eb:88:b7:a6:a3 +# Subject: CN=Sectigo Public Email Protection Root R46,O=Sectigo Limited,C=GB +# Not Valid Before: Mon Mar 22 00:00:00 2021 +# Not Valid After : Wed Mar 21 23:59:59 2046 +# Fingerprint (SHA-256): D5:91:7A:77:91:EB:7C:F2:0A:2E:57:EB:98:28:4A:67:B2:8A:57:E8:91:82:DA:53:D5:46:67:8C:9F:DE:2B:4F +# Fingerprint (SHA1): D3:7B:8B:0A:E8:42:44:FB:6B:80:38:EE:AE:91:80:26:1A:48:70:66 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Sectigo Public Email Protection Root R46" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\061\060\057\006\003\125 +\004\003\023\050\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\105\155\141\151\154\040\120\162\157\164\145\143\164 +\151\157\156\040\122\157\157\164\040\122\064\066 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\061\060\057\006\003\125 +\004\003\023\050\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\105\155\141\151\154\040\120\162\157\164\145\143\164 +\151\157\156\040\122\157\157\164\040\122\064\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\035\104\236\271\015\203\221\164\256\335\362\353\210\267 +\246\243 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\200\060\202\003\150\240\003\002\001\002\002\020\035 +\104\236\271\015\203\221\164\256\335\362\353\210\267\246\243\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\132 +\061\013\060\011\006\003\125\004\006\023\002\107\102\061\030\060 +\026\006\003\125\004\012\023\017\123\145\143\164\151\147\157\040 +\114\151\155\151\164\145\144\061\061\060\057\006\003\125\004\003 +\023\050\123\145\143\164\151\147\157\040\120\165\142\154\151\143 +\040\105\155\141\151\154\040\120\162\157\164\145\143\164\151\157 +\156\040\122\157\157\164\040\122\064\066\060\036\027\015\062\061 +\060\063\062\062\060\060\060\060\060\060\132\027\015\064\066\060 +\063\062\061\062\063\065\071\065\071\132\060\132\061\013\060\011 +\006\003\125\004\006\023\002\107\102\061\030\060\026\006\003\125 +\004\012\023\017\123\145\143\164\151\147\157\040\114\151\155\151 +\164\145\144\061\061\060\057\006\003\125\004\003\023\050\123\145 +\143\164\151\147\157\040\120\165\142\154\151\143\040\105\155\141 +\151\154\040\120\162\157\164\145\143\164\151\157\156\040\122\157 +\157\164\040\122\064\066\060\202\002\042\060\015\006\011\052\206 +\110\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202 +\002\012\002\202\002\001\000\221\345\033\372\252\155\067\053\165 +\307\056\137\024\245\333\054\227\266\054\106\217\151\331\354\226 +\055\363\035\132\276\323\035\043\346\150\011\377\112\021\163\032 +\256\147\237\166\232\322\347\354\270\331\137\053\371\046\126\121 +\257\166\235\251\374\027\357\062\012\320\043\074\272\054\117\107 +\203\354\235\005\150\102\136\006\340\325\350\053\150\110\227\262 +\372\363\244\161\065\175\064\233\027\213\177\115\015\333\334\117 +\005\114\224\142\277\065\372\057\310\247\034\146\331\161\137\345 +\346\132\125\312\253\364\270\167\031\105\120\105\116\112\253\333 +\236\146\301\031\267\067\102\310\126\245\100\022\371\063\350\070 +\105\072\306\204\243\002\216\057\044\260\303\101\205\007\111\234 +\317\334\321\362\046\157\355\063\034\063\147\052\105\067\331\205 +\145\042\032\261\265\020\122\011\153\003\306\037\160\075\221\304 +\175\220\075\355\146\370\220\377\045\340\355\222\242\213\061\051 +\255\234\022\146\170\143\235\127\354\373\013\336\216\334\213\313 +\072\251\167\364\272\345\354\070\214\213\346\023\146\247\151\130 +\303\202\032\032\315\361\237\330\123\222\116\111\175\251\105\347 +\361\103\041\132\267\076\100\315\143\211\317\331\277\307\120\013 +\341\274\347\210\226\255\236\324\027\332\135\317\340\221\375\246 +\020\324\271\003\201\233\151\254\373\204\250\201\065\353\033\353 +\150\154\174\140\076\303\337\311\264\256\164\035\110\255\335\156 +\021\206\341\052\152\066\026\256\310\316\274\333\130\374\100\223 +\100\330\216\123\227\302\254\042\070\345\210\061\263\056\241\357 +\354\340\102\015\352\377\223\126\112\006\244\233\114\002\150\144 +\217\126\120\301\201\005\375\313\333\305\327\025\362\153\265\166 +\303\243\371\062\316\312\265\112\251\033\175\031\334\177\307\152 +\176\225\354\266\270\215\375\225\112\234\243\053\155\213\361\160 +\345\107\053\000\134\344\271\236\324\370\331\130\051\320\313\340 +\050\142\154\256\234\142\342\314\274\066\223\101\365\357\376\106 +\142\225\260\127\112\164\054\107\122\051\235\335\242\241\117\102 +\302\222\316\055\120\122\136\214\012\241\367\330\235\305\370\375 +\066\207\116\127\375\150\241\137\231\203\034\360\265\335\350\222 +\323\145\100\125\312\226\205\002\003\001\000\001\243\102\060\100 +\060\035\006\003\125\035\016\004\026\004\024\247\327\225\167\353 +\112\303\047\315\223\276\067\114\046\204\041\024\175\135\230\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060 +\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 +\060\015\006\011\052\206\110\206\367\015\001\001\014\005\000\003 +\202\002\001\000\064\322\361\025\363\223\001\324\162\213\360\253 +\010\037\023\074\163\264\260\253\350\170\331\154\272\232\257\046 +\354\020\200\345\015\123\061\335\343\372\214\121\042\044\063\067 +\270\030\176\072\372\130\350\064\345\214\340\241\037\011\101\322 +\067\077\314\313\011\065\102\210\351\374\021\327\317\102\252\244 +\160\266\161\301\123\275\305\164\257\304\042\044\143\317\142\202 +\175\311\313\121\301\210\220\155\133\134\276\373\231\250\272\266 +\206\260\351\146\013\345\033\153\257\352\053\206\247\337\250\043 +\114\226\077\117\127\102\030\025\203\103\361\206\046\267\052\003 +\316\013\235\350\245\150\036\214\157\275\205\343\033\121\217\347 +\027\057\053\320\326\170\302\055\335\162\210\324\145\236\372\231 +\324\176\347\227\012\222\001\232\245\251\204\072\014\052\164\075 +\063\030\310\207\367\350\244\365\206\102\071\375\153\165\051\374 +\000\006\254\242\245\032\124\216\351\120\111\027\146\257\113\004 +\055\233\224\200\245\124\253\214\127\027\104\237\017\326\150\144 +\162\264\113\036\001\307\331\233\224\331\203\231\257\022\005\021 +\243\230\042\322\362\127\312\044\371\272\070\025\022\110\272\143 +\073\374\213\225\170\326\162\007\126\314\315\374\235\034\320\305 +\144\073\143\064\317\004\231\212\267\060\171\172\266\362\306\325 +\331\124\172\207\013\176\116\367\204\354\024\363\210\026\022\361 +\325\256\012\032\011\356\206\255\345\253\375\256\303\051\171\164 +\303\001\137\021\233\337\165\231\306\112\367\233\217\154\111\354 +\041\057\264\002\131\263\055\320\162\220\272\013\024\164\170\113 +\317\301\137\125\162\216\124\053\023\316\372\130\014\323\273\054 +\331\251\221\141\370\370\361\266\173\336\274\251\314\222\004\314 +\113\153\137\163\200\266\041\355\120\117\327\166\207\156\316\337 +\322\267\275\142\241\175\130\142\150\105\122\266\077\336\022\333 +\355\004\151\236\166\210\252\001\155\332\206\307\140\033\303\122 +\254\067\354\120\161\200\162\052\041\105\012\123\107\074\031\353 +\215\322\131\004\336\045\260\353\037\065\157\140\175\327\265\306 +\273\013\047\215\340\115\124\345\317\035\046\001\156\073\065\310 +\040\022\211\203\360\322\355\130\073\064\235\273\061\365\062\375 +\061\363\126\032 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Sectigo Public Email Protection Root R46" +# Issuer: CN=Sectigo Public Email Protection Root R46,O=Sectigo Limited,C=GB +# Serial Number:1d:44:9e:b9:0d:83:91:74:ae:dd:f2:eb:88:b7:a6:a3 +# Subject: CN=Sectigo Public Email Protection Root R46,O=Sectigo Limited,C=GB +# Not Valid Before: Mon Mar 22 00:00:00 2021 +# Not Valid After : Wed Mar 21 23:59:59 2046 +# Fingerprint (SHA-256): D5:91:7A:77:91:EB:7C:F2:0A:2E:57:EB:98:28:4A:67:B2:8A:57:E8:91:82:DA:53:D5:46:67:8C:9F:DE:2B:4F +# Fingerprint (SHA1): D3:7B:8B:0A:E8:42:44:FB:6B:80:38:EE:AE:91:80:26:1A:48:70:66 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Sectigo Public Email Protection Root R46" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\323\173\213\012\350\102\104\373\153\200\070\356\256\221\200\046 +\032\110\160\146 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\102\047\005\220\034\246\300\373\242\015\375\337\142\211\335\133 +END +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\061\060\057\006\003\125 +\004\003\023\050\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\105\155\141\151\154\040\120\162\157\164\145\143\164 +\151\157\156\040\122\157\157\164\040\122\064\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\035\104\236\271\015\203\221\164\256\335\362\353\210\267 +\246\243 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Sectigo Public Server Authentication Root E46" +# +# Issuer: CN=Sectigo Public Server Authentication Root E46,O=Sectigo Limited,C=GB +# Serial Number:42:f2:cc:da:1b:69:37:44:5f:15:fe:75:28:10:b8:f4 +# Subject: CN=Sectigo Public Server Authentication Root E46,O=Sectigo Limited,C=GB +# Not Valid Before: Mon Mar 22 00:00:00 2021 +# Not Valid After : Wed Mar 21 23:59:59 2046 +# Fingerprint (SHA-256): C9:0F:26:F0:FB:1B:40:18:B2:22:27:51:9B:5C:A2:B5:3E:2C:A5:B3:BE:5C:F1:8E:FE:1B:EF:47:38:0C:53:83 +# Fingerprint (SHA1): EC:8A:39:6C:40:F0:2E:BC:42:75:D4:9F:AB:1C:1A:5B:67:BE:D2:9A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Sectigo Public Server Authentication Root E46" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\066\060\064\006\003\125 +\004\003\023\055\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\123\145\162\166\145\162\040\101\165\164\150\145\156 +\164\151\143\141\164\151\157\156\040\122\157\157\164\040\105\064 +\066 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\066\060\064\006\003\125 +\004\003\023\055\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\123\145\162\166\145\162\040\101\165\164\150\145\156 +\164\151\143\141\164\151\157\156\040\122\157\157\164\040\105\064 +\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\102\362\314\332\033\151\067\104\137\025\376\165\050\020 +\270\364 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\072\060\202\001\301\240\003\002\001\002\002\020\102 +\362\314\332\033\151\067\104\137\025\376\165\050\020\270\364\060 +\012\006\010\052\206\110\316\075\004\003\003\060\137\061\013\060 +\011\006\003\125\004\006\023\002\107\102\061\030\060\026\006\003 +\125\004\012\023\017\123\145\143\164\151\147\157\040\114\151\155 +\151\164\145\144\061\066\060\064\006\003\125\004\003\023\055\123 +\145\143\164\151\147\157\040\120\165\142\154\151\143\040\123\145 +\162\166\145\162\040\101\165\164\150\145\156\164\151\143\141\164 +\151\157\156\040\122\157\157\164\040\105\064\066\060\036\027\015 +\062\061\060\063\062\062\060\060\060\060\060\060\132\027\015\064 +\066\060\063\062\061\062\063\065\071\065\071\132\060\137\061\013 +\060\011\006\003\125\004\006\023\002\107\102\061\030\060\026\006 +\003\125\004\012\023\017\123\145\143\164\151\147\157\040\114\151 +\155\151\164\145\144\061\066\060\064\006\003\125\004\003\023\055 +\123\145\143\164\151\147\157\040\120\165\142\154\151\143\040\123 +\145\162\166\145\162\040\101\165\164\150\145\156\164\151\143\141 +\164\151\157\156\040\122\157\157\164\040\105\064\066\060\166\060 +\020\006\007\052\206\110\316\075\002\001\006\005\053\201\004\000 +\042\003\142\000\004\166\372\231\251\156\040\355\371\327\167\343 +\007\073\250\333\075\137\070\350\253\125\246\126\117\326\110\352 +\354\177\055\252\303\262\305\171\354\231\141\177\020\171\307\002 +\132\371\004\067\365\064\065\053\167\316\177\040\217\122\243\000 +\211\354\325\247\242\155\133\343\113\222\223\240\200\365\001\224 +\334\360\150\007\036\315\356\376\045\122\265\040\103\034\033\376 +\353\031\316\103\243\243\102\060\100\060\035\006\003\125\035\016 +\004\026\004\024\321\042\332\114\131\361\113\137\046\070\252\235 +\326\356\353\015\303\373\251\141\060\016\006\003\125\035\017\001 +\001\377\004\004\003\002\001\206\060\017\006\003\125\035\023\001 +\001\377\004\005\060\003\001\001\377\060\012\006\010\052\206\110 +\316\075\004\003\003\003\147\000\060\144\002\060\047\356\244\132 +\250\041\273\351\107\227\224\211\245\164\040\155\171\117\310\275 +\223\136\130\030\373\055\032\000\152\311\270\075\320\244\117\104 +\107\224\001\126\242\370\063\045\014\102\337\252\002\060\035\352 +\341\056\210\056\341\371\247\035\002\062\116\362\237\154\125\164 +\343\256\256\373\245\032\356\355\322\374\302\003\021\353\105\134 +\140\020\075\134\177\231\003\133\155\124\110\001\212\163 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Sectigo Public Server Authentication Root E46" +# Issuer: CN=Sectigo Public Server Authentication Root E46,O=Sectigo Limited,C=GB +# Serial Number:42:f2:cc:da:1b:69:37:44:5f:15:fe:75:28:10:b8:f4 +# Subject: CN=Sectigo Public Server Authentication Root E46,O=Sectigo Limited,C=GB +# Not Valid Before: Mon Mar 22 00:00:00 2021 +# Not Valid After : Wed Mar 21 23:59:59 2046 +# Fingerprint (SHA-256): C9:0F:26:F0:FB:1B:40:18:B2:22:27:51:9B:5C:A2:B5:3E:2C:A5:B3:BE:5C:F1:8E:FE:1B:EF:47:38:0C:53:83 +# Fingerprint (SHA1): EC:8A:39:6C:40:F0:2E:BC:42:75:D4:9F:AB:1C:1A:5B:67:BE:D2:9A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Sectigo Public Server Authentication Root E46" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\354\212\071\154\100\360\056\274\102\165\324\237\253\034\032\133 +\147\276\322\232 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\050\043\370\262\230\134\067\026\073\076\106\023\116\260\263\001 +END +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\066\060\064\006\003\125 +\004\003\023\055\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\123\145\162\166\145\162\040\101\165\164\150\145\156 +\164\151\143\141\164\151\157\156\040\122\157\157\164\040\105\064 +\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\102\362\314\332\033\151\067\104\137\025\376\165\050\020 +\270\364 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Sectigo Public Server Authentication Root R46" +# +# Issuer: CN=Sectigo Public Server Authentication Root R46,O=Sectigo Limited,C=GB +# Serial Number:75:8d:fd:8b:ae:7c:07:00:fa:a9:25:a7:e1:c7:ad:14 +# Subject: CN=Sectigo Public Server Authentication Root R46,O=Sectigo Limited,C=GB +# Not Valid Before: Mon Mar 22 00:00:00 2021 +# Not Valid After : Wed Mar 21 23:59:59 2046 +# Fingerprint (SHA-256): 7B:B6:47:A6:2A:EE:AC:88:BF:25:7A:A5:22:D0:1F:FE:A3:95:E0:AB:45:C7:3F:93:F6:56:54:EC:38:F2:5A:06 +# Fingerprint (SHA1): AD:98:F9:F3:E4:7D:75:3B:65:D4:82:B3:A4:52:17:BB:6E:F5:E4:38 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Sectigo Public Server Authentication Root R46" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\066\060\064\006\003\125 +\004\003\023\055\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\123\145\162\166\145\162\040\101\165\164\150\145\156 +\164\151\143\141\164\151\157\156\040\122\157\157\164\040\122\064 +\066 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\066\060\064\006\003\125 +\004\003\023\055\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\123\145\162\166\145\162\040\101\165\164\150\145\156 +\164\151\143\141\164\151\157\156\040\122\157\157\164\040\122\064 +\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\165\215\375\213\256\174\007\000\372\251\045\247\341\307 +\255\024 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\212\060\202\003\162\240\003\002\001\002\002\020\165 +\215\375\213\256\174\007\000\372\251\045\247\341\307\255\024\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\137 +\061\013\060\011\006\003\125\004\006\023\002\107\102\061\030\060 +\026\006\003\125\004\012\023\017\123\145\143\164\151\147\157\040 +\114\151\155\151\164\145\144\061\066\060\064\006\003\125\004\003 +\023\055\123\145\143\164\151\147\157\040\120\165\142\154\151\143 +\040\123\145\162\166\145\162\040\101\165\164\150\145\156\164\151 +\143\141\164\151\157\156\040\122\157\157\164\040\122\064\066\060 +\036\027\015\062\061\060\063\062\062\060\060\060\060\060\060\132 +\027\015\064\066\060\063\062\061\062\063\065\071\065\071\132\060 +\137\061\013\060\011\006\003\125\004\006\023\002\107\102\061\030 +\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147\157 +\040\114\151\155\151\164\145\144\061\066\060\064\006\003\125\004 +\003\023\055\123\145\143\164\151\147\157\040\120\165\142\154\151 +\143\040\123\145\162\166\145\162\040\101\165\164\150\145\156\164 +\151\143\141\164\151\157\156\040\122\157\157\164\040\122\064\066 +\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 +\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 +\000\223\276\325\066\122\165\330\001\043\240\034\107\102\111\356 +\143\266\267\041\375\304\225\325\110\053\046\174\024\123\020\332 +\171\375\053\267\055\244\324\054\372\352\062\335\111\302\271\275 +\017\110\075\173\132\230\124\257\236\135\061\164\117\007\374\120 +\041\335\244\317\150\117\033\022\143\155\045\231\114\052\231\363 +\110\060\141\372\201\174\036\247\010\112\334\076\053\034\037\030 +\114\161\252\065\214\255\370\156\350\073\112\331\345\224\002\326 +\211\204\023\252\155\310\117\063\314\120\226\067\222\063\334\137 +\210\347\237\124\331\110\360\230\103\326\146\375\237\027\070\103 +\305\001\121\013\327\343\043\017\024\135\133\024\347\113\276\335 +\364\310\332\003\067\321\326\071\241\041\121\060\203\260\155\327 +\060\116\226\133\221\360\160\044\253\277\105\201\144\103\015\275 +\041\072\057\074\351\236\015\313\040\265\102\047\314\332\157\233 +\356\144\060\220\071\315\223\145\201\041\061\265\043\120\063\067 +\042\343\070\355\370\061\060\314\105\376\142\371\321\135\062\171 +\102\207\337\152\314\126\031\100\115\316\252\273\371\265\166\111 +\224\361\047\370\221\245\203\345\006\263\143\016\200\334\340\022 +\125\200\246\073\146\264\071\207\055\310\360\320\321\024\351\344 +\015\115\016\366\135\127\162\305\073\034\107\126\235\342\325\373 +\201\141\214\314\115\200\220\064\133\267\327\024\165\334\330\004 +\110\237\300\301\050\210\264\351\034\312\247\261\361\126\267\173 +\111\114\131\345\040\025\250\204\002\051\372\070\224\151\232\111 +\006\217\315\037\171\024\027\022\014\203\172\336\037\261\227\356 +\371\227\170\050\244\310\104\222\351\175\046\005\246\130\162\233 +\171\023\330\021\137\256\305\070\142\064\150\262\206\060\216\370 +\220\141\236\062\154\365\007\066\315\242\114\156\354\212\066\355 +\362\346\231\025\104\160\303\174\274\234\071\300\264\341\153\367 +\203\045\043\127\331\022\200\345\111\360\165\017\357\215\353\034 +\233\124\050\264\041\074\374\174\012\377\357\173\153\165\377\213 +\035\240\031\005\253\372\370\053\201\102\350\070\272\273\373\252 +\375\075\340\363\312\337\116\227\227\051\355\363\030\126\351\245 +\226\254\275\303\220\230\262\340\371\242\324\246\107\103\174\155 +\317\002\003\001\000\001\243\102\060\100\060\035\006\003\125\035 +\016\004\026\004\024\126\163\130\144\225\371\222\032\260\022\052 +\004\142\171\241\100\025\210\041\111\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\206\060\017\006\003\125\035\023 +\001\001\377\004\005\060\003\001\001\377\060\015\006\011\052\206 +\110\206\367\015\001\001\014\005\000\003\202\002\001\000\057\134 +\231\074\374\006\136\214\224\056\160\352\322\062\061\215\264\360 +\121\325\274\012\363\144\237\007\136\325\301\163\150\144\172\242 +\271\016\350\371\135\205\055\250\067\105\252\050\364\226\005\120 +\140\251\111\176\237\342\231\066\051\023\104\107\152\235\125\040 +\074\330\233\361\003\062\272\332\100\241\163\352\203\241\267\104 +\246\016\231\001\233\344\274\177\276\023\224\176\312\246\036\166 +\200\066\075\204\006\213\063\046\145\155\312\176\236\376\037\214 +\130\070\173\032\203\261\017\274\027\021\273\346\006\314\143\372 +\201\362\201\114\332\013\020\153\241\372\325\050\245\317\006\100 +\026\377\173\175\030\136\071\022\244\123\236\176\062\102\020\246 +\041\221\251\034\116\027\174\204\274\237\214\321\350\337\346\121 +\271\066\107\077\220\271\307\274\002\334\133\034\117\016\110\301 +\045\203\234\012\077\236\261\003\063\022\032\047\254\367\042\154 +\044\321\001\101\370\130\003\376\045\150\042\037\232\132\074\174 +\154\236\165\110\363\201\361\146\147\156\114\202\300\356\272\127 +\016\030\357\056\232\367\022\330\240\153\351\005\245\241\351\150 +\370\274\114\077\022\036\105\350\122\300\243\277\022\047\171\271 +\314\061\074\303\366\072\042\026\003\240\311\217\146\244\133\242 +\115\326\201\045\006\351\166\244\000\012\076\313\315\065\233\340 +\341\070\313\140\123\206\050\102\101\034\104\127\350\250\255\253 +\105\343\045\020\274\333\076\145\101\373\033\246\227\017\353\271 +\164\171\371\036\274\035\127\015\107\257\303\057\237\207\106\247 +\353\046\132\017\126\143\265\142\140\156\000\373\343\047\021\042 +\347\376\231\217\064\365\271\350\303\221\162\275\330\303\036\271 +\056\362\221\104\121\320\127\315\014\064\325\110\041\277\333\023 +\361\146\045\103\122\322\160\042\066\315\237\304\034\165\040\255 +\143\162\143\006\017\016\047\316\322\152\015\274\265\071\032\351 +\321\166\172\321\134\344\347\111\111\055\125\067\150\360\032\072 +\230\076\124\027\207\124\351\246\047\120\211\173\040\057\077\377 +\277\241\213\112\107\230\377\053\173\111\076\303\051\106\140\030 +\102\253\063\051\272\300\051\271\023\211\323\210\212\071\101\073 +\311\375\246\355\037\364\140\143\337\322\055\125\001\213 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Sectigo Public Server Authentication Root R46" +# Issuer: CN=Sectigo Public Server Authentication Root R46,O=Sectigo Limited,C=GB +# Serial Number:75:8d:fd:8b:ae:7c:07:00:fa:a9:25:a7:e1:c7:ad:14 +# Subject: CN=Sectigo Public Server Authentication Root R46,O=Sectigo Limited,C=GB +# Not Valid Before: Mon Mar 22 00:00:00 2021 +# Not Valid After : Wed Mar 21 23:59:59 2046 +# Fingerprint (SHA-256): 7B:B6:47:A6:2A:EE:AC:88:BF:25:7A:A5:22:D0:1F:FE:A3:95:E0:AB:45:C7:3F:93:F6:56:54:EC:38:F2:5A:06 +# Fingerprint (SHA1): AD:98:F9:F3:E4:7D:75:3B:65:D4:82:B3:A4:52:17:BB:6E:F5:E4:38 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Sectigo Public Server Authentication Root R46" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\255\230\371\363\344\175\165\073\145\324\202\263\244\122\027\273 +\156\365\344\070 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\062\020\011\122\000\325\176\154\103\337\025\300\261\026\223\345 +END +CKA_ISSUER MULTILINE_OCTAL +\060\137\061\013\060\011\006\003\125\004\006\023\002\107\102\061 +\030\060\026\006\003\125\004\012\023\017\123\145\143\164\151\147 +\157\040\114\151\155\151\164\145\144\061\066\060\064\006\003\125 +\004\003\023\055\123\145\143\164\151\147\157\040\120\165\142\154 +\151\143\040\123\145\162\166\145\162\040\101\165\164\150\145\156 +\164\151\143\141\164\151\157\156\040\122\157\157\164\040\122\064 +\066 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\165\215\375\213\256\174\007\000\372\251\045\247\341\307 +\255\024 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SSL.com TLS RSA Root CA 2022" +# +# Issuer: CN=SSL.com TLS RSA Root CA 2022,O=SSL Corporation,C=US +# Serial Number:6f:be:da:ad:73:bd:08:40:e2:8b:4d:be:d4:f7:5b:91 +# Subject: CN=SSL.com TLS RSA Root CA 2022,O=SSL Corporation,C=US +# Not Valid Before: Thu Aug 25 16:34:22 2022 +# Not Valid After : Sun Aug 19 16:34:21 2046 +# Fingerprint (SHA-256): 8F:AF:7D:2E:2C:B4:70:9B:B8:E0:B3:36:66:BF:75:A5:DD:45:B5:DE:48:0F:8E:A8:D4:BF:E6:BE:BC:17:F2:ED +# Fingerprint (SHA1): EC:2C:83:40:72:AF:26:95:10:FF:0E:F2:03:EE:31:70:F6:78:9D:CA +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com TLS RSA Root CA 2022" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\045\060\043\006\003\125 +\004\003\014\034\123\123\114\056\143\157\155\040\124\114\123\040 +\122\123\101\040\122\157\157\164\040\103\101\040\062\060\062\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\045\060\043\006\003\125 +\004\003\014\034\123\123\114\056\143\157\155\040\124\114\123\040 +\122\123\101\040\122\157\157\164\040\103\101\040\062\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\157\276\332\255\163\275\010\100\342\213\115\276\324\367 +\133\221 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\211\060\202\003\161\240\003\002\001\002\002\020\157 +\276\332\255\163\275\010\100\342\213\115\276\324\367\133\221\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\116 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\030\060 +\026\006\003\125\004\012\014\017\123\123\114\040\103\157\162\160 +\157\162\141\164\151\157\156\061\045\060\043\006\003\125\004\003 +\014\034\123\123\114\056\143\157\155\040\124\114\123\040\122\123 +\101\040\122\157\157\164\040\103\101\040\062\060\062\062\060\036 +\027\015\062\062\060\070\062\065\061\066\063\064\062\062\132\027 +\015\064\066\060\070\061\071\061\066\063\064\062\061\132\060\116 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\030\060 +\026\006\003\125\004\012\014\017\123\123\114\040\103\157\162\160 +\157\162\141\164\151\157\156\061\045\060\043\006\003\125\004\003 +\014\034\123\123\114\056\143\157\155\040\124\114\123\040\122\123 +\101\040\122\157\157\164\040\103\101\040\062\060\062\062\060\202 +\002\042\060\015\006\011\052\206\110\206\367\015\001\001\001\005 +\000\003\202\002\017\000\060\202\002\012\002\202\002\001\000\320 +\244\011\162\117\100\210\022\141\076\065\043\236\356\366\164\317 +\057\173\130\075\316\074\015\020\050\220\057\227\367\214\110\330 +\240\330\045\261\114\260\021\114\027\163\120\320\042\112\143\273 +\201\323\051\156\325\265\011\076\046\030\177\262\022\177\223\230 +\267\257\360\066\277\362\356\030\236\234\073\122\305\107\031\135 +\164\363\144\146\325\135\307\150\264\277\033\034\006\243\274\217 +\100\043\266\036\306\204\275\121\304\033\071\301\225\322\051\354 +\113\256\173\055\277\071\375\264\142\336\226\173\101\306\234\240 +\340\006\162\373\360\007\227\011\071\201\164\257\367\064\131\021 +\127\012\302\133\301\044\364\061\163\060\202\306\235\272\002\367 +\076\174\104\137\203\015\363\361\335\040\151\026\011\120\342\324 +\125\266\340\200\162\166\156\114\107\267\165\125\131\264\123\164 +\331\224\306\101\255\130\212\061\146\017\036\242\033\051\100\116 +\057\337\173\346\026\054\055\374\277\354\363\264\372\276\030\366 +\233\111\324\356\005\156\331\064\363\234\361\354\001\213\321\040 +\306\017\240\265\274\027\116\110\173\121\302\374\351\134\151\067 +\107\146\263\150\370\025\050\360\271\323\244\025\314\132\117\272 +\122\160\243\022\105\335\306\272\116\373\302\320\367\250\122\047 +\155\156\171\265\214\374\173\214\301\026\114\356\200\177\276\360 +\166\276\101\123\022\063\256\132\070\102\253\327\017\076\101\215 +\166\007\062\325\253\211\366\116\147\331\261\102\165\043\156\363 +\315\102\262\374\125\365\123\207\027\073\300\063\130\361\122\322 +\371\200\244\360\350\360\073\213\070\314\244\306\220\177\017\234 +\375\213\321\243\317\332\203\247\151\311\120\066\325\134\005\322 +\012\101\164\333\143\021\067\301\245\240\226\113\036\214\026\022 +\167\256\224\064\173\036\177\302\146\000\344\252\203\352\212\220 +\255\316\066\104\115\321\121\351\274\037\363\152\005\375\300\164 +\037\045\031\100\121\156\352\202\121\100\337\233\271\010\052\006 +\002\325\043\034\023\326\351\333\333\306\260\172\313\173\047\233 +\373\340\325\106\044\355\020\113\143\113\245\005\217\272\270\035 +\053\246\372\221\342\222\122\275\354\353\147\227\155\232\055\237 +\201\062\005\147\062\373\110\010\077\331\045\270\004\045\057\002 +\003\001\000\001\243\143\060\141\060\017\006\003\125\035\023\001 +\001\377\004\005\060\003\001\001\377\060\037\006\003\125\035\043 +\004\030\060\026\200\024\373\056\067\356\343\204\172\047\056\315 +\031\065\261\063\174\377\324\104\102\271\060\035\006\003\125\035 +\016\004\026\004\024\373\056\067\356\343\204\172\047\056\315\031 +\065\261\063\174\377\324\104\102\271\060\016\006\003\125\035\017 +\001\001\377\004\004\003\002\001\206\060\015\006\011\052\206\110 +\206\367\015\001\001\013\005\000\003\202\002\001\000\215\211\155 +\204\105\030\361\117\263\240\357\150\244\300\035\254\060\274\147 +\146\260\232\315\266\253\042\031\146\323\073\101\265\020\235\020 +\272\162\156\051\044\040\034\001\231\142\323\226\340\342\373\014 +\102\327\341\132\304\226\115\124\315\217\312\103\123\375\052\270 +\352\370\145\312\001\302\255\140\150\006\237\071\032\121\331\340 +\215\046\371\013\116\245\123\045\172\043\244\034\316\010\033\337 +\107\210\262\255\076\340\047\207\213\111\214\037\251\107\130\173 +\226\362\210\035\030\256\263\321\246\012\224\372\333\323\345\070 +\012\153\171\022\063\373\112\131\067\026\100\016\273\336\365\211 +\014\361\154\323\367\121\153\136\065\365\333\300\046\352\022\163 +\116\251\221\220\246\027\303\154\057\070\324\243\162\224\103\054 +\142\341\116\134\062\075\275\114\175\031\107\242\303\111\347\226 +\077\217\232\323\073\344\021\330\213\003\334\366\266\140\125\030 +\246\201\121\363\341\250\025\152\353\340\013\360\024\061\326\271 +\214\105\072\250\020\330\360\271\047\353\367\313\172\357\005\162 +\226\265\304\217\226\163\304\350\126\163\234\274\151\121\143\274 +\357\147\034\103\032\137\167\031\037\030\370\034\045\051\371\111 +\231\051\266\222\075\242\203\067\261\040\221\250\233\060\351\152 +\154\264\043\223\145\004\253\021\363\016\035\123\044\111\123\035 +\241\077\235\110\222\021\342\175\015\117\365\327\275\242\130\076 +\170\235\036\037\053\376\041\273\032\023\266\261\050\144\375\260 +\002\000\307\154\200\242\275\026\120\040\017\162\201\137\314\224 +\377\273\231\346\272\220\313\352\371\306\014\302\256\305\031\316 +\063\241\153\134\273\176\174\064\127\027\255\360\077\256\315\352 +\257\231\354\054\124\176\214\316\056\022\126\110\357\027\073\077 +\112\136\140\322\334\164\066\274\245\103\143\313\017\133\243\002 +\126\011\236\044\054\341\206\201\214\376\253\027\054\372\310\342 +\062\032\072\377\205\010\311\203\237\362\112\110\020\124\167\067 +\355\242\274\100\276\344\020\164\367\344\133\273\271\363\211\371 +\217\101\330\307\344\120\220\065\200\076\034\270\115\220\323\324 +\367\303\260\241\176\204\312\167\222\061\054\270\220\261\202\172 +\164\116\233\023\046\264\325\120\146\124\170\256\140 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SSL.com TLS RSA Root CA 2022" +# Issuer: CN=SSL.com TLS RSA Root CA 2022,O=SSL Corporation,C=US +# Serial Number:6f:be:da:ad:73:bd:08:40:e2:8b:4d:be:d4:f7:5b:91 +# Subject: CN=SSL.com TLS RSA Root CA 2022,O=SSL Corporation,C=US +# Not Valid Before: Thu Aug 25 16:34:22 2022 +# Not Valid After : Sun Aug 19 16:34:21 2046 +# Fingerprint (SHA-256): 8F:AF:7D:2E:2C:B4:70:9B:B8:E0:B3:36:66:BF:75:A5:DD:45:B5:DE:48:0F:8E:A8:D4:BF:E6:BE:BC:17:F2:ED +# Fingerprint (SHA1): EC:2C:83:40:72:AF:26:95:10:FF:0E:F2:03:EE:31:70:F6:78:9D:CA +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com TLS RSA Root CA 2022" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\354\054\203\100\162\257\046\225\020\377\016\362\003\356\061\160 +\366\170\235\312 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\330\116\306\131\060\330\376\240\326\172\132\054\054\151\170\332 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\045\060\043\006\003\125 +\004\003\014\034\123\123\114\056\143\157\155\040\124\114\123\040 +\122\123\101\040\122\157\157\164\040\103\101\040\062\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\157\276\332\255\163\275\010\100\342\213\115\276\324\367 +\133\221 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SSL.com TLS ECC Root CA 2022" +# +# Issuer: CN=SSL.com TLS ECC Root CA 2022,O=SSL Corporation,C=US +# Serial Number:14:03:f5:ab:fb:37:8b:17:40:5b:e2:43:b2:a5:d1:c4 +# Subject: CN=SSL.com TLS ECC Root CA 2022,O=SSL Corporation,C=US +# Not Valid Before: Thu Aug 25 16:33:48 2022 +# Not Valid After : Sun Aug 19 16:33:47 2046 +# Fingerprint (SHA-256): C3:2F:FD:9F:46:F9:36:D1:6C:36:73:99:09:59:43:4B:9A:D6:0A:AF:BB:9E:7C:F3:36:54:F1:44:CC:1B:A1:43 +# Fingerprint (SHA1): 9F:5F:D9:1A:54:6D:F5:0C:71:F0:EE:7A:BD:17:49:98:84:73:E2:39 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com TLS ECC Root CA 2022" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\045\060\043\006\003\125 +\004\003\014\034\123\123\114\056\143\157\155\040\124\114\123\040 +\105\103\103\040\122\157\157\164\040\103\101\040\062\060\062\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\045\060\043\006\003\125 +\004\003\014\034\123\123\114\056\143\157\155\040\124\114\123\040 +\105\103\103\040\122\157\157\164\040\103\101\040\062\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\024\003\365\253\373\067\213\027\100\133\342\103\262\245 +\321\304 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\072\060\202\001\300\240\003\002\001\002\002\020\024 +\003\365\253\373\067\213\027\100\133\342\103\262\245\321\304\060 +\012\006\010\052\206\110\316\075\004\003\003\060\116\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\030\060\026\006\003 +\125\004\012\014\017\123\123\114\040\103\157\162\160\157\162\141 +\164\151\157\156\061\045\060\043\006\003\125\004\003\014\034\123 +\123\114\056\143\157\155\040\124\114\123\040\105\103\103\040\122 +\157\157\164\040\103\101\040\062\060\062\062\060\036\027\015\062 +\062\060\070\062\065\061\066\063\063\064\070\132\027\015\064\066 +\060\070\061\071\061\066\063\063\064\067\132\060\116\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\030\060\026\006\003 +\125\004\012\014\017\123\123\114\040\103\157\162\160\157\162\141 +\164\151\157\156\061\045\060\043\006\003\125\004\003\014\034\123 +\123\114\056\143\157\155\040\124\114\123\040\105\103\103\040\122 +\157\157\164\040\103\101\040\062\060\062\062\060\166\060\020\006 +\007\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003 +\142\000\004\105\051\065\163\372\302\270\043\316\024\175\250\261 +\115\240\133\066\356\052\054\123\303\140\011\065\262\044\146\046 +\151\300\263\225\326\135\222\100\031\016\306\245\023\160\364\357 +\022\121\050\135\347\314\275\371\074\205\301\317\224\220\311\053 +\316\222\102\130\131\147\375\224\047\020\144\214\117\004\261\115 +\111\344\173\117\233\365\347\010\370\003\210\367\247\303\222\113 +\031\124\201\243\143\060\141\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\037\006\003\125\035\043\004 +\030\060\026\200\024\211\217\057\243\350\053\240\024\124\173\363 +\126\270\046\137\147\070\013\234\320\060\035\006\003\125\035\016 +\004\026\004\024\211\217\057\243\350\053\240\024\124\173\363\126 +\270\046\137\147\070\013\234\320\060\016\006\003\125\035\017\001 +\001\377\004\004\003\002\001\206\060\012\006\010\052\206\110\316 +\075\004\003\003\003\150\000\060\145\002\060\125\343\042\126\351 +\327\222\044\130\117\036\224\062\017\014\002\066\302\375\254\164 +\062\116\341\373\034\200\210\243\314\373\327\353\053\377\067\175 +\360\355\327\236\165\152\065\166\122\105\340\002\061\000\307\215 +\157\102\040\217\276\266\115\131\355\167\115\051\304\040\040\105 +\144\206\072\120\306\304\255\055\223\365\030\175\162\355\251\317 +\304\254\127\066\050\010\145\337\074\171\146\176\240\352 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SSL.com TLS ECC Root CA 2022" +# Issuer: CN=SSL.com TLS ECC Root CA 2022,O=SSL Corporation,C=US +# Serial Number:14:03:f5:ab:fb:37:8b:17:40:5b:e2:43:b2:a5:d1:c4 +# Subject: CN=SSL.com TLS ECC Root CA 2022,O=SSL Corporation,C=US +# Not Valid Before: Thu Aug 25 16:33:48 2022 +# Not Valid After : Sun Aug 19 16:33:47 2046 +# Fingerprint (SHA-256): C3:2F:FD:9F:46:F9:36:D1:6C:36:73:99:09:59:43:4B:9A:D6:0A:AF:BB:9E:7C:F3:36:54:F1:44:CC:1B:A1:43 +# Fingerprint (SHA1): 9F:5F:D9:1A:54:6D:F5:0C:71:F0:EE:7A:BD:17:49:98:84:73:E2:39 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com TLS ECC Root CA 2022" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\237\137\331\032\124\155\365\014\161\360\356\172\275\027\111\230 +\204\163\342\071 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\231\327\134\361\121\066\314\351\316\331\031\056\167\161\126\305 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\045\060\043\006\003\125 +\004\003\014\034\123\123\114\056\143\157\155\040\124\114\123\040 +\105\103\103\040\122\157\157\164\040\103\101\040\062\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\024\003\365\253\373\067\213\027\100\133\342\103\262\245 +\321\304 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SSL.com Client ECC Root CA 2022" +# +# Issuer: CN=SSL.com Client ECC Root CA 2022,O=SSL Corporation,C=US +# Serial Number:76:f8:48:1e:ae:f0:3c:70:1f:e0:3f:25:54:01:83:d5 +# Subject: CN=SSL.com Client ECC Root CA 2022,O=SSL Corporation,C=US +# Not Valid Before: Thu Aug 25 16:30:32 2022 +# Not Valid After : Sun Aug 19 16:30:31 2046 +# Fingerprint (SHA-256): AD:7D:D5:8D:03:AE:DB:22:A3:0B:50:84:39:49:20:CE:12:23:0C:2D:80:17:AD:9B:81:AB:04:07:9B:DD:02:6B +# Fingerprint (SHA1): 80:7B:1D:9D:65:72:3D:C7:56:F9:EC:C5:00:83:49:F6:F2:AC:F4:86 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com Client ECC Root CA 2022" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\050\060\046\006\003\125 +\004\003\014\037\123\123\114\056\143\157\155\040\103\154\151\145 +\156\164\040\105\103\103\040\122\157\157\164\040\103\101\040\062 +\060\062\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\050\060\046\006\003\125 +\004\003\014\037\123\123\114\056\143\157\155\040\103\154\151\145 +\156\164\040\105\103\103\040\122\157\157\164\040\103\101\040\062 +\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\370\110\036\256\360\074\160\037\340\077\045\124\001 +\203\325 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\100\060\202\001\306\240\003\002\001\002\002\020\166 +\370\110\036\256\360\074\160\037\340\077\045\124\001\203\325\060 +\012\006\010\052\206\110\316\075\004\003\003\060\121\061\013\060 +\011\006\003\125\004\006\023\002\125\123\061\030\060\026\006\003 +\125\004\012\014\017\123\123\114\040\103\157\162\160\157\162\141 +\164\151\157\156\061\050\060\046\006\003\125\004\003\014\037\123 +\123\114\056\143\157\155\040\103\154\151\145\156\164\040\105\103 +\103\040\122\157\157\164\040\103\101\040\062\060\062\062\060\036 +\027\015\062\062\060\070\062\065\061\066\063\060\063\062\132\027 +\015\064\066\060\070\061\071\061\066\063\060\063\061\132\060\121 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\030\060 +\026\006\003\125\004\012\014\017\123\123\114\040\103\157\162\160 +\157\162\141\164\151\157\156\061\050\060\046\006\003\125\004\003 +\014\037\123\123\114\056\143\157\155\040\103\154\151\145\156\164 +\040\105\103\103\040\122\157\157\164\040\103\101\040\062\060\062 +\062\060\166\060\020\006\007\052\206\110\316\075\002\001\006\005 +\053\201\004\000\042\003\142\000\004\055\123\176\237\213\076\263 +\066\272\120\342\314\353\334\272\046\212\323\214\006\077\147\017 +\357\365\027\345\324\256\232\106\052\101\001\007\151\347\147\161 +\361\302\003\066\306\360\053\122\216\317\024\222\150\244\076\160 +\121\022\151\215\170\242\202\312\051\024\300\344\224\042\262\104 +\222\140\157\310\004\244\147\325\242\320\363\320\327\352\216\074 +\017\272\322\100\107\220\064\356\175\243\143\060\141\060\017\006 +\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\037 +\006\003\125\035\043\004\030\060\026\200\024\267\376\055\142\305 +\201\123\315\122\032\057\135\140\240\303\135\373\262\034\034\060 +\035\006\003\125\035\016\004\026\004\024\267\376\055\142\305\201 +\123\315\122\032\057\135\140\240\303\135\373\262\034\034\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060\012 +\006\010\052\206\110\316\075\004\003\003\003\150\000\060\145\002 +\060\115\007\021\055\021\373\271\046\303\041\335\162\341\027\374 +\301\317\024\352\111\316\161\207\216\326\123\334\021\315\135\124 +\212\257\331\055\364\214\121\352\274\146\107\342\177\225\203\140 +\145\002\061\000\214\041\114\117\273\345\260\120\337\220\142\111 +\346\314\221\333\370\077\135\161\221\010\216\117\222\311\177\246 +\134\352\023\176\355\155\304\350\303\052\157\134\021\341\245\363 +\152\132\232\115 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SSL.com Client ECC Root CA 2022" +# Issuer: CN=SSL.com Client ECC Root CA 2022,O=SSL Corporation,C=US +# Serial Number:76:f8:48:1e:ae:f0:3c:70:1f:e0:3f:25:54:01:83:d5 +# Subject: CN=SSL.com Client ECC Root CA 2022,O=SSL Corporation,C=US +# Not Valid Before: Thu Aug 25 16:30:32 2022 +# Not Valid After : Sun Aug 19 16:30:31 2046 +# Fingerprint (SHA-256): AD:7D:D5:8D:03:AE:DB:22:A3:0B:50:84:39:49:20:CE:12:23:0C:2D:80:17:AD:9B:81:AB:04:07:9B:DD:02:6B +# Fingerprint (SHA1): 80:7B:1D:9D:65:72:3D:C7:56:F9:EC:C5:00:83:49:F6:F2:AC:F4:86 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com Client ECC Root CA 2022" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\200\173\035\235\145\162\075\307\126\371\354\305\000\203\111\366 +\362\254\364\206 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\063\271\151\231\022\166\125\274\337\257\101\334\042\213\167\200 +END +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\050\060\046\006\003\125 +\004\003\014\037\123\123\114\056\143\157\155\040\103\154\151\145 +\156\164\040\105\103\103\040\122\157\157\164\040\103\101\040\062 +\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\370\110\036\256\360\074\160\037\340\077\045\124\001 +\203\325 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SSL.com Client RSA Root CA 2022" +# +# Issuer: CN=SSL.com Client RSA Root CA 2022,O=SSL Corporation,C=US +# Serial Number:76:af:ee:88:93:15:45:b6:50:53:9b:80:9c:a4:df:9a +# Subject: CN=SSL.com Client RSA Root CA 2022,O=SSL Corporation,C=US +# Not Valid Before: Thu Aug 25 16:31:07 2022 +# Not Valid After : Sun Aug 19 16:31:06 2046 +# Fingerprint (SHA-256): 1D:4C:A4:A2:AB:21:D0:09:36:59:80:4F:C0:EB:21:75:A6:17:27:9B:56:A2:47:52:45:C9:51:7A:FE:B5:91:53 +# Fingerprint (SHA1): AA:59:70:E5:20:32:9F:CB:D0:D5:79:9F:FB:1B:82:1D:FD:1F:79:65 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com Client RSA Root CA 2022" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\050\060\046\006\003\125 +\004\003\014\037\123\123\114\056\143\157\155\040\103\154\151\145 +\156\164\040\122\123\101\040\122\157\157\164\040\103\101\040\062 +\060\062\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\050\060\046\006\003\125 +\004\003\014\037\123\123\114\056\143\157\155\040\103\154\151\145 +\156\164\040\122\123\101\040\122\157\157\164\040\103\101\040\062 +\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\257\356\210\223\025\105\266\120\123\233\200\234\244 +\337\232 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\217\060\202\003\167\240\003\002\001\002\002\020\166 +\257\356\210\223\025\105\266\120\123\233\200\234\244\337\232\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\060\121 +\061\013\060\011\006\003\125\004\006\023\002\125\123\061\030\060 +\026\006\003\125\004\012\014\017\123\123\114\040\103\157\162\160 +\157\162\141\164\151\157\156\061\050\060\046\006\003\125\004\003 +\014\037\123\123\114\056\143\157\155\040\103\154\151\145\156\164 +\040\122\123\101\040\122\157\157\164\040\103\101\040\062\060\062 +\062\060\036\027\015\062\062\060\070\062\065\061\066\063\061\060 +\067\132\027\015\064\066\060\070\061\071\061\066\063\061\060\066 +\132\060\121\061\013\060\011\006\003\125\004\006\023\002\125\123 +\061\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103 +\157\162\160\157\162\141\164\151\157\156\061\050\060\046\006\003 +\125\004\003\014\037\123\123\114\056\143\157\155\040\103\154\151 +\145\156\164\040\122\123\101\040\122\157\157\164\040\103\101\040 +\062\060\062\062\060\202\002\042\060\015\006\011\052\206\110\206 +\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002\012 +\002\202\002\001\000\270\130\333\106\060\373\311\077\343\310\360 +\001\063\064\342\332\110\250\030\351\040\156\232\327\001\341\325 +\051\217\060\264\043\152\344\313\142\260\276\342\237\040\275\076 +\124\240\071\150\307\206\067\146\164\006\006\357\164\053\332\334 +\237\204\251\122\057\220\322\356\176\174\373\245\042\255\157\160 +\106\147\226\075\051\324\243\273\126\173\024\004\131\301\041\143 +\104\036\262\037\022\134\220\207\145\015\210\366\036\210\042\342 +\143\124\273\363\066\370\326\177\334\332\377\051\065\251\306\156 +\016\151\133\077\330\276\202\207\025\160\135\260\307\134\022\017 +\143\246\070\315\317\163\271\303\016\211\046\067\033\077\142\034 +\062\151\321\233\331\377\125\220\061\336\261\143\335\317\305\164 +\167\374\357\210\041\123\277\000\061\032\046\054\000\060\245\137 +\154\343\344\366\000\212\312\230\207\234\164\003\172\213\146\354 +\176\375\243\217\065\045\134\170\245\263\244\373\075\155\251\212 +\360\154\210\202\213\375\112\320\157\344\327\243\264\216\064\111 +\070\276\316\105\345\322\034\312\136\302\067\024\213\315\146\126 +\063\067\235\345\153\354\103\222\144\240\102\332\165\157\300\025 +\354\371\151\275\064\271\212\173\372\026\373\125\376\122\040\350 +\004\004\126\126\145\365\067\104\230\310\212\106\351\267\254\270 +\350\276\142\216\124\066\133\367\073\160\277\135\356\055\272\137 +\336\102\031\206\360\177\213\353\010\313\330\276\352\016\102\102 +\240\066\163\127\027\355\062\352\320\215\350\007\033\233\231\350 +\304\232\142\004\016\110\367\074\022\272\367\130\301\232\214\351 +\307\260\043\066\126\064\035\313\154\332\272\007\204\035\375\321 +\254\237\346\302\211\357\303\271\154\030\263\151\207\127\137\265 +\014\070\133\247\041\044\052\073\247\064\221\236\264\124\352\050 +\117\323\301\243\213\344\346\053\325\362\235\277\233\141\000\042 +\335\326\113\104\037\077\135\126\376\336\234\170\314\231\133\252 +\344\275\272\333\103\113\255\114\046\114\243\115\064\212\154\164 +\066\023\333\142\374\233\262\005\201\377\256\077\014\315\366\033 +\242\364\071\347\312\365\114\134\373\124\167\065\200\132\300\022 +\241\023\001\063\147\075\235\201\241\251\365\205\044\130\210\170 +\347\364\343\150\125\002\003\001\000\001\243\143\060\141\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\037\006\003\125\035\043\004\030\060\026\200\024\360\070\102\224 +\064\251\074\000\177\122\356\071\245\367\113\015\274\152\175\043 +\060\035\006\003\125\035\016\004\026\004\024\360\070\102\224\064 +\251\074\000\177\122\356\071\245\367\113\015\274\152\175\043\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060 +\015\006\011\052\206\110\206\367\015\001\001\013\005\000\003\202 +\002\001\000\231\117\333\360\352\326\021\372\052\375\310\253\155 +\344\016\163\142\322\102\237\025\376\174\160\122\077\144\207\202 +\061\077\105\100\056\341\042\237\006\146\051\374\226\323\055\215 +\266\070\307\331\363\047\301\131\051\240\214\366\163\044\017\050 +\042\327\116\141\335\023\335\333\237\062\122\223\373\117\314\352 +\070\074\230\152\003\253\026\257\041\321\102\256\175\105\053\352 +\304\317\212\131\237\202\160\166\072\370\142\046\311\020\227\130 +\100\044\244\055\271\057\051\200\047\341\211\153\162\312\111\010 +\161\067\123\005\361\200\316\323\102\002\322\374\302\321\224\006 +\356\007\342\366\203\342\177\237\347\273\126\303\133\277\335\225 +\223\011\036\044\301\317\046\315\255\244\256\302\264\151\347\252 +\265\355\067\224\351\335\321\143\205\153\232\172\112\126\166\334 +\031\205\050\324\344\306\244\330\270\226\101\167\320\264\131\361 +\106\005\207\207\002\037\151\271\202\030\320\103\331\046\332\032 +\147\250\326\165\166\352\362\155\016\102\377\210\046\242\156\204 +\376\176\142\033\360\306\075\355\300\034\152\307\221\326\270\000 +\067\111\233\271\204\005\241\315\156\061\326\104\352\123\213\272 +\123\230\035\241\220\212\351\205\370\033\362\223\130\303\310\334 +\232\046\117\076\040\317\117\103\363\020\214\177\020\141\172\066 +\312\252\013\175\314\237\107\104\131\256\245\225\306\231\123\343 +\007\153\075\111\020\260\030\377\135\016\205\103\024\113\347\153 +\323\112\265\262\140\141\334\151\111\002\043\135\350\222\161\303 +\234\237\105\147\171\036\334\062\206\272\252\125\074\144\157\062 +\265\020\100\025\336\162\100\170\340\156\160\273\156\353\011\350 +\071\331\254\272\222\165\335\103\312\272\001\225\255\032\201\053 +\072\360\343\305\057\014\030\115\020\306\256\300\355\376\005\122 +\177\031\005\313\251\257\065\010\014\070\042\344\376\126\345\123 +\076\277\344\326\263\331\010\303\075\325\063\062\201\044\305\251 +\341\145\021\270\062\063\060\161\030\111\035\032\105\306\232\024 +\212\130\071\050\156\363\313\121\271\111\046\144\170\003\307\221 +\021\203\251\271\220\064\266\157\252\005\236\205\050\127\231\276 +\177\047\006\111\142\115\241\374\011\341\053\106\011\114\024\233 +\126\217\105 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SSL.com Client RSA Root CA 2022" +# Issuer: CN=SSL.com Client RSA Root CA 2022,O=SSL Corporation,C=US +# Serial Number:76:af:ee:88:93:15:45:b6:50:53:9b:80:9c:a4:df:9a +# Subject: CN=SSL.com Client RSA Root CA 2022,O=SSL Corporation,C=US +# Not Valid Before: Thu Aug 25 16:31:07 2022 +# Not Valid After : Sun Aug 19 16:31:06 2046 +# Fingerprint (SHA-256): 1D:4C:A4:A2:AB:21:D0:09:36:59:80:4F:C0:EB:21:75:A6:17:27:9B:56:A2:47:52:45:C9:51:7A:FE:B5:91:53 +# Fingerprint (SHA1): AA:59:70:E5:20:32:9F:CB:D0:D5:79:9F:FB:1B:82:1D:FD:1F:79:65 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SSL.com Client RSA Root CA 2022" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\252\131\160\345\040\062\237\313\320\325\171\237\373\033\202\035 +\375\037\171\145 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\011\215\322\312\256\154\024\276\276\014\224\157\067\027\040\316 +END +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\030\060\026\006\003\125\004\012\014\017\123\123\114\040\103\157 +\162\160\157\162\141\164\151\157\156\061\050\060\046\006\003\125 +\004\003\014\037\123\123\114\056\143\157\155\040\103\154\151\145 +\156\164\040\122\123\101\040\122\157\157\164\040\103\101\040\062 +\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\166\257\356\210\223\025\105\266\120\123\233\200\234\244 +\337\232 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Atos TrustedRoot Root CA ECC G2 2020" +# +# Issuer: CN=Atos TrustedRoot Root CA ECC G2 2020,O=Atos,C=DE +# Serial Number:0b:73:28:11:18:74:30:1c:ef:6f:08:84 +# Subject: CN=Atos TrustedRoot Root CA ECC G2 2020,O=Atos,C=DE +# Not Valid Before: Tue Dec 15 08:39:10 2020 +# Not Valid After : Mon Dec 10 08:39:09 2040 +# Fingerprint (SHA-256): E3:86:55:F4:B0:19:0C:84:D3:B3:89:3D:84:0A:68:7E:19:0A:25:6D:98:05:2F:15:9E:6D:4A:39:F5:89:A6:EB +# Fingerprint (SHA1): 61:25:56:DA:62:94:E5:AE:B3:3C:F8:11:BD:B1:DC:F8:A5:D8:B3:E4 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot Root CA ECC G2 2020" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\113\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\015\060\013\006\003\125\004\012\014\004\101\164\157\163\061\055 +\060\053\006\003\125\004\003\014\044\101\164\157\163\040\124\162 +\165\163\164\145\144\122\157\157\164\040\122\157\157\164\040\103 +\101\040\105\103\103\040\107\062\040\062\060\062\060 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\113\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\015\060\013\006\003\125\004\012\014\004\101\164\157\163\061\055 +\060\053\006\003\125\004\003\014\044\101\164\157\163\040\124\162 +\165\163\164\145\144\122\157\157\164\040\122\157\157\164\040\103 +\101\040\105\103\103\040\107\062\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\013\163\050\021\030\164\060\034\357\157\010\204 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\061\060\202\001\266\240\003\002\001\002\002\014\013 +\163\050\021\030\164\060\034\357\157\010\204\060\012\006\010\052 +\206\110\316\075\004\003\003\060\113\061\013\060\011\006\003\125 +\004\006\023\002\104\105\061\015\060\013\006\003\125\004\012\014 +\004\101\164\157\163\061\055\060\053\006\003\125\004\003\014\044 +\101\164\157\163\040\124\162\165\163\164\145\144\122\157\157\164 +\040\122\157\157\164\040\103\101\040\105\103\103\040\107\062\040 +\062\060\062\060\060\036\027\015\062\060\061\062\061\065\060\070 +\063\071\061\060\132\027\015\064\060\061\062\061\060\060\070\063 +\071\060\071\132\060\113\061\013\060\011\006\003\125\004\006\023 +\002\104\105\061\015\060\013\006\003\125\004\012\014\004\101\164 +\157\163\061\055\060\053\006\003\125\004\003\014\044\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\122\157 +\157\164\040\103\101\040\105\103\103\040\107\062\040\062\060\062 +\060\060\166\060\020\006\007\052\206\110\316\075\002\001\006\005 +\053\201\004\000\042\003\142\000\004\310\134\200\312\116\302\050 +\037\127\277\070\346\141\043\374\320\251\133\226\026\026\303\014 +\136\025\245\220\011\377\070\050\264\172\036\012\326\123\052\301 +\273\220\100\164\067\351\201\350\215\057\150\001\065\174\122\056 +\330\364\130\263\021\034\133\331\207\030\223\221\055\354\235\332 +\154\236\155\204\110\374\302\211\005\353\230\023\002\001\154\123 +\036\016\111\143\130\107\261\257\302\243\143\060\141\060\017\006 +\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060\037 +\006\003\125\035\043\004\030\060\026\200\024\133\037\304\161\154 +\262\033\237\276\134\037\214\375\263\266\373\263\016\011\207\060 +\035\006\003\125\035\016\004\026\004\024\133\037\304\161\154\262 +\033\237\276\134\037\214\375\263\266\373\263\016\011\207\060\016 +\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060\012 +\006\010\052\206\110\316\075\004\003\003\003\151\000\060\146\002 +\061\000\354\340\231\375\335\344\124\301\313\037\350\076\050\327 +\025\131\112\202\312\123\060\354\353\066\245\271\310\316\223\107 +\126\310\141\246\341\155\222\123\225\217\366\343\125\123\360\335 +\172\347\002\061\000\260\207\325\033\263\140\374\221\215\200\312 +\242\033\121\113\070\124\313\252\036\173\327\345\104\225\026\057 +\074\104\170\056\045\272\352\220\344\354\122\356\127\354\003\204 +\363\136\333\026\015 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Atos TrustedRoot Root CA ECC G2 2020" +# Issuer: CN=Atos TrustedRoot Root CA ECC G2 2020,O=Atos,C=DE +# Serial Number:0b:73:28:11:18:74:30:1c:ef:6f:08:84 +# Subject: CN=Atos TrustedRoot Root CA ECC G2 2020,O=Atos,C=DE +# Not Valid Before: Tue Dec 15 08:39:10 2020 +# Not Valid After : Mon Dec 10 08:39:09 2040 +# Fingerprint (SHA-256): E3:86:55:F4:B0:19:0C:84:D3:B3:89:3D:84:0A:68:7E:19:0A:25:6D:98:05:2F:15:9E:6D:4A:39:F5:89:A6:EB +# Fingerprint (SHA1): 61:25:56:DA:62:94:E5:AE:B3:3C:F8:11:BD:B1:DC:F8:A5:D8:B3:E4 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot Root CA ECC G2 2020" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\141\045\126\332\142\224\345\256\263\074\370\021\275\261\334\370 +\245\330\263\344 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\225\320\233\116\332\275\252\035\225\265\242\302\135\337\210\214 +END +CKA_ISSUER MULTILINE_OCTAL +\060\113\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\015\060\013\006\003\125\004\012\014\004\101\164\157\163\061\055 +\060\053\006\003\125\004\003\014\044\101\164\157\163\040\124\162 +\165\163\164\145\144\122\157\157\164\040\122\157\157\164\040\103 +\101\040\105\103\103\040\107\062\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\013\163\050\021\030\164\060\034\357\157\010\204 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Atos TrustedRoot Root CA RSA G2 2020" +# +# Issuer: CN=Atos TrustedRoot Root CA RSA G2 2020,O=Atos,C=DE +# Serial Number:47:ba:29:46:55:3e:16:92:97:b0:ab:40 +# Subject: CN=Atos TrustedRoot Root CA RSA G2 2020,O=Atos,C=DE +# Not Valid Before: Tue Dec 15 08:41:23 2020 +# Not Valid After : Mon Dec 10 08:41:22 2040 +# Fingerprint (SHA-256): 78:83:3A:78:3B:B2:98:6C:25:4B:93:70:D3:C2:0E:5E:BA:8F:A7:84:0C:BF:63:FE:17:29:7A:0B:01:19:68:5E +# Fingerprint (SHA1): 32:D1:27:FA:93:B1:C1:4C:99:E2:4A:40:BC:7F:94:41:1B:5A:AC:A4 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot Root CA RSA G2 2020" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\113\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\015\060\013\006\003\125\004\012\014\004\101\164\157\163\061\055 +\060\053\006\003\125\004\003\014\044\101\164\157\163\040\124\162 +\165\163\164\145\144\122\157\157\164\040\122\157\157\164\040\103 +\101\040\122\123\101\040\107\062\040\062\060\062\060 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\113\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\015\060\013\006\003\125\004\012\014\004\101\164\157\163\061\055 +\060\053\006\003\125\004\003\014\044\101\164\157\163\040\124\162 +\165\163\164\145\144\122\157\157\164\040\122\157\157\164\040\103 +\101\040\122\123\101\040\107\062\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\107\272\051\106\125\076\026\222\227\260\253\100 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\177\060\202\003\147\240\003\002\001\002\002\014\107 +\272\051\106\125\076\026\222\227\260\253\100\060\015\006\011\052 +\206\110\206\367\015\001\001\014\005\000\060\113\061\013\060\011 +\006\003\125\004\006\023\002\104\105\061\015\060\013\006\003\125 +\004\012\014\004\101\164\157\163\061\055\060\053\006\003\125\004 +\003\014\044\101\164\157\163\040\124\162\165\163\164\145\144\122 +\157\157\164\040\122\157\157\164\040\103\101\040\122\123\101\040 +\107\062\040\062\060\062\060\060\036\027\015\062\060\061\062\061 +\065\060\070\064\061\062\063\132\027\015\064\060\061\062\061\060 +\060\070\064\061\062\062\132\060\113\061\013\060\011\006\003\125 +\004\006\023\002\104\105\061\015\060\013\006\003\125\004\012\014 +\004\101\164\157\163\061\055\060\053\006\003\125\004\003\014\044 +\101\164\157\163\040\124\162\165\163\164\145\144\122\157\157\164 +\040\122\157\157\164\040\103\101\040\122\123\101\040\107\062\040 +\062\060\062\060\060\202\002\042\060\015\006\011\052\206\110\206 +\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002\012 +\002\202\002\001\000\226\061\205\112\252\017\062\376\171\341\103 +\207\234\373\043\267\216\177\015\124\275\307\142\223\167\344\034 +\065\004\166\243\003\213\042\356\304\204\335\245\223\156\156\262 +\216\011\003\353\121\026\061\027\252\151\025\030\016\147\164\043 +\136\352\232\175\265\071\076\075\202\251\153\341\376\251\034\260 +\255\132\115\114\170\203\101\213\317\362\035\142\232\230\004\234 +\143\351\253\145\376\110\035\044\145\007\107\076\271\221\056\351 +\235\233\177\032\065\251\064\260\267\345\160\063\357\112\162\121 +\266\007\277\140\077\052\237\235\124\337\363\327\224\111\121\003 +\132\100\251\150\335\021\131\134\370\166\246\274\120\122\020\355 +\254\354\225\340\324\203\153\111\332\012\117\231\203\336\062\203 +\110\203\147\225\262\176\347\201\205\075\315\202\367\312\002\355 +\155\210\135\010\215\270\065\277\052\151\060\231\273\113\321\101 +\333\105\240\223\231\121\201\220\066\010\252\212\266\350\217\263 +\313\356\345\106\015\162\165\365\111\154\341\242\177\057\274\355 +\204\246\067\356\336\302\117\071\116\366\236\360\311\321\233\060 +\235\111\155\341\332\377\022\020\214\326\345\231\173\005\266\175 +\260\011\307\244\370\262\034\071\225\071\063\364\065\316\045\142 +\173\260\137\040\363\313\155\370\154\122\024\144\104\217\323\310 +\251\166\007\345\257\161\231\055\055\004\045\110\166\257\303\347 +\314\103\362\007\274\112\044\044\067\335\372\156\224\011\157\114 +\136\001\264\376\124\354\043\226\245\136\335\206\377\351\106\052 +\361\350\334\354\245\075\257\157\252\016\017\264\165\372\076\010 +\271\046\105\117\146\206\114\274\031\270\341\325\065\356\202\204 +\310\323\253\022\347\315\163\063\142\167\364\027\313\275\064\166 +\052\005\316\225\345\170\171\113\236\260\215\371\074\130\070\221 +\352\136\207\070\300\267\102\375\252\114\207\043\255\004\040\261 +\176\166\102\332\273\266\026\272\127\310\216\023\372\165\325\010 +\114\257\070\221\252\357\217\372\237\111\056\124\174\012\126\261 +\172\372\304\116\057\324\243\372\026\212\320\225\345\227\246\377 +\303\374\174\016\107\130\363\177\007\173\022\334\127\077\055\343 +\241\115\133\122\114\063\207\231\250\011\173\154\176\016\362\317 +\126\102\236\353\005\002\003\001\000\001\243\143\060\141\060\017 +\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377\060 +\037\006\003\125\035\043\004\030\060\026\200\024\040\045\363\007 +\375\247\157\361\226\356\221\020\151\314\232\357\175\310\150\170 +\060\035\006\003\125\035\016\004\026\004\024\040\045\363\007\375 +\247\157\361\226\356\221\020\151\314\232\357\175\310\150\170\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\206\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\003\202 +\002\001\000\044\053\116\230\362\035\027\355\331\166\046\266\060 +\063\350\151\105\241\121\113\122\330\172\072\060\266\344\022\352 +\277\237\114\340\004\244\366\065\306\376\241\060\367\123\205\222 +\255\124\005\127\137\222\345\052\336\066\047\236\173\023\107\311 +\152\165\257\374\363\067\347\014\365\075\001\163\265\151\121\370 +\275\131\321\272\013\370\272\272\144\047\103\263\174\203\225\212 +\347\236\023\226\327\157\112\226\101\111\213\016\040\255\026\306 +\367\246\207\133\210\022\211\213\211\312\022\322\126\257\042\001 +\041\106\351\253\230\077\247\210\336\344\313\052\232\165\031\372 +\071\136\011\005\327\003\062\032\270\027\121\010\307\000\100\175 +\364\276\370\014\131\364\151\166\156\323\244\130\133\136\046\163 +\344\102\125\006\136\170\100\017\323\070\237\357\046\121\160\164 +\221\361\167\142\001\350\331\313\353\241\337\071\062\035\273\153 +\375\161\376\353\317\245\346\024\375\000\200\023\306\232\000\110 +\260\231\005\351\256\200\110\373\011\077\121\024\265\271\347\140 +\115\115\312\057\201\041\356\122\014\145\172\334\365\211\111\114 +\060\222\064\130\200\062\131\261\015\377\044\141\017\347\012\102 +\320\173\274\370\216\047\107\077\160\235\047\331\266\006\075\245 +\273\313\136\217\256\016\123\307\234\152\157\073\114\017\243\100 +\160\250\232\007\316\324\156\133\007\242\322\342\124\266\275\157 +\063\162\143\255\121\230\341\217\166\361\152\007\070\045\376\366 +\142\316\137\333\143\302\156\231\357\006\334\271\336\031\032\350 +\124\075\175\322\166\165\331\136\076\062\110\247\214\362\236\162 +\014\370\270\130\270\027\043\245\024\207\165\130\172\000\201\007 +\042\071\152\114\224\240\265\242\333\247\054\301\260\361\243\233 +\300\114\367\155\160\352\061\237\361\256\175\076\163\050\331\241 +\337\372\223\360\233\260\360\342\315\045\040\165\357\342\175\062 +\005\311\233\166\356\313\275\061\036\371\224\230\113\044\130\126 +\110\300\336\006\114\275\246\064\135\355\026\141\143\163\373\031 +\342\372\133\330\227\165\324\155\236\140\071\136\224\213\002\054 +\353\231\316\140\052\156\033\214\247\113\274\375\066\346\230\037 +\145\362\177\361\343\217\114\200\106\066\130\266\241\145\313\316 +\034\104\165 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Atos TrustedRoot Root CA RSA G2 2020" +# Issuer: CN=Atos TrustedRoot Root CA RSA G2 2020,O=Atos,C=DE +# Serial Number:47:ba:29:46:55:3e:16:92:97:b0:ab:40 +# Subject: CN=Atos TrustedRoot Root CA RSA G2 2020,O=Atos,C=DE +# Not Valid Before: Tue Dec 15 08:41:23 2020 +# Not Valid After : Mon Dec 10 08:41:22 2040 +# Fingerprint (SHA-256): 78:83:3A:78:3B:B2:98:6C:25:4B:93:70:D3:C2:0E:5E:BA:8F:A7:84:0C:BF:63:FE:17:29:7A:0B:01:19:68:5E +# Fingerprint (SHA1): 32:D1:27:FA:93:B1:C1:4C:99:E2:4A:40:BC:7F:94:41:1B:5A:AC:A4 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot Root CA RSA G2 2020" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\062\321\047\372\223\261\301\114\231\342\112\100\274\177\224\101 +\033\132\254\244 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\333\077\351\043\365\264\214\335\350\263\076\250\265\137\146\066 +END +CKA_ISSUER MULTILINE_OCTAL +\060\113\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\015\060\013\006\003\125\004\012\014\004\101\164\157\163\061\055 +\060\053\006\003\125\004\003\014\044\101\164\157\163\040\124\162 +\165\163\164\145\144\122\157\157\164\040\122\157\157\164\040\103 +\101\040\122\123\101\040\107\062\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\014\107\272\051\106\125\076\026\222\227\260\253\100 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Atos TrustedRoot Root CA ECC TLS 2021" +# +# Issuer: C=DE,O=Atos,CN=Atos TrustedRoot Root CA ECC TLS 2021 +# Serial Number:3d:98:3b:a6:66:3d:90:63:f7:7e:26:57:38:04:ef:00 +# Subject: C=DE,O=Atos,CN=Atos TrustedRoot Root CA ECC TLS 2021 +# Not Valid Before: Thu Apr 22 09:26:23 2021 +# Not Valid After : Wed Apr 17 09:26:22 2041 +# Fingerprint (SHA-256): B2:FA:E5:3E:14:CC:D7:AB:92:12:06:47:01:AE:27:9C:1D:89:88:FA:CB:77:5F:A8:A0:08:91:4E:66:39:88:A8 +# Fingerprint (SHA1): 9E:BC:75:10:42:B3:02:F3:81:F4:F7:30:62:D4:8F:C3:A7:51:B2:DD +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot Root CA ECC TLS 2021" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\114\061\056\060\054\006\003\125\004\003\014\045\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\122\157 +\157\164\040\103\101\040\105\103\103\040\124\114\123\040\062\060 +\062\061\061\015\060\013\006\003\125\004\012\014\004\101\164\157 +\163\061\013\060\011\006\003\125\004\006\023\002\104\105 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\114\061\056\060\054\006\003\125\004\003\014\045\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\122\157 +\157\164\040\103\101\040\105\103\103\040\124\114\123\040\062\060 +\062\061\061\015\060\013\006\003\125\004\012\014\004\101\164\157 +\163\061\013\060\011\006\003\125\004\006\023\002\104\105 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\075\230\073\246\146\075\220\143\367\176\046\127\070\004 +\357\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\025\060\202\001\233\240\003\002\001\002\002\020\075 +\230\073\246\146\075\220\143\367\176\046\127\070\004\357\000\060 +\012\006\010\052\206\110\316\075\004\003\003\060\114\061\056\060 +\054\006\003\125\004\003\014\045\101\164\157\163\040\124\162\165 +\163\164\145\144\122\157\157\164\040\122\157\157\164\040\103\101 +\040\105\103\103\040\124\114\123\040\062\060\062\061\061\015\060 +\013\006\003\125\004\012\014\004\101\164\157\163\061\013\060\011 +\006\003\125\004\006\023\002\104\105\060\036\027\015\062\061\060 +\064\062\062\060\071\062\066\062\063\132\027\015\064\061\060\064 +\061\067\060\071\062\066\062\062\132\060\114\061\056\060\054\006 +\003\125\004\003\014\045\101\164\157\163\040\124\162\165\163\164 +\145\144\122\157\157\164\040\122\157\157\164\040\103\101\040\105 +\103\103\040\124\114\123\040\062\060\062\061\061\015\060\013\006 +\003\125\004\012\014\004\101\164\157\163\061\013\060\011\006\003 +\125\004\006\023\002\104\105\060\166\060\020\006\007\052\206\110 +\316\075\002\001\006\005\053\201\004\000\042\003\142\000\004\226 +\206\130\050\067\012\147\320\240\336\044\031\031\341\344\005\007 +\037\227\355\350\144\202\271\366\304\161\120\316\212\014\377\327 +\265\166\273\241\154\223\154\203\242\150\156\245\331\276\054\210 +\225\101\315\135\335\261\312\203\143\203\314\300\276\164\331\340 +\235\244\356\112\116\126\340\230\051\101\223\122\020\325\044\070 +\002\062\147\361\224\022\157\357\327\305\336\056\375\031\200\243 +\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024\166 +\050\045\326\175\340\146\232\172\011\262\152\073\216\063\327\066 +\323\117\242\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\206\060\012\006\010\052\206\110\316\075\004\003\003\003 +\150\000\060\145\002\060\133\231\051\363\234\061\266\211\153\154 +\326\275\167\341\174\347\121\176\270\072\315\243\066\137\174\367 +\074\167\076\344\120\255\250\347\322\131\014\046\216\060\073\156 +\010\052\302\247\132\310\002\061\000\231\343\014\347\243\303\257 +\323\111\056\106\202\043\146\135\311\000\024\022\375\070\364\341 +\230\153\167\051\172\333\044\317\145\100\277\322\334\214\021\350 +\364\175\177\040\204\251\102\344\050 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Atos TrustedRoot Root CA ECC TLS 2021" +# Issuer: C=DE,O=Atos,CN=Atos TrustedRoot Root CA ECC TLS 2021 +# Serial Number:3d:98:3b:a6:66:3d:90:63:f7:7e:26:57:38:04:ef:00 +# Subject: C=DE,O=Atos,CN=Atos TrustedRoot Root CA ECC TLS 2021 +# Not Valid Before: Thu Apr 22 09:26:23 2021 +# Not Valid After : Wed Apr 17 09:26:22 2041 +# Fingerprint (SHA-256): B2:FA:E5:3E:14:CC:D7:AB:92:12:06:47:01:AE:27:9C:1D:89:88:FA:CB:77:5F:A8:A0:08:91:4E:66:39:88:A8 +# Fingerprint (SHA1): 9E:BC:75:10:42:B3:02:F3:81:F4:F7:30:62:D4:8F:C3:A7:51:B2:DD +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot Root CA ECC TLS 2021" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\236\274\165\020\102\263\002\363\201\364\367\060\142\324\217\303 +\247\121\262\335 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\026\237\255\361\160\255\171\326\355\051\264\321\305\171\160\250 +END +CKA_ISSUER MULTILINE_OCTAL +\060\114\061\056\060\054\006\003\125\004\003\014\045\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\122\157 +\157\164\040\103\101\040\105\103\103\040\124\114\123\040\062\060 +\062\061\061\015\060\013\006\003\125\004\012\014\004\101\164\157 +\163\061\013\060\011\006\003\125\004\006\023\002\104\105 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\075\230\073\246\146\075\220\143\367\176\046\127\070\004 +\357\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Atos TrustedRoot Root CA RSA TLS 2021" +# +# Issuer: C=DE,O=Atos,CN=Atos TrustedRoot Root CA RSA TLS 2021 +# Serial Number:53:d5:cf:e6:19:93:0b:fb:2b:05:12:d8:c2:2a:a2:a4 +# Subject: C=DE,O=Atos,CN=Atos TrustedRoot Root CA RSA TLS 2021 +# Not Valid Before: Thu Apr 22 09:21:10 2021 +# Not Valid After : Wed Apr 17 09:21:09 2041 +# Fingerprint (SHA-256): 81:A9:08:8E:A5:9F:B3:64:C5:48:A6:F8:55:59:09:9B:6F:04:05:EF:BF:18:E5:32:4E:C9:F4:57:BA:00:11:2F +# Fingerprint (SHA1): 18:52:3B:0D:06:37:E4:D6:3A:DF:23:E4:98:FB:5B:16:FB:86:74:48 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot Root CA RSA TLS 2021" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\114\061\056\060\054\006\003\125\004\003\014\045\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\122\157 +\157\164\040\103\101\040\122\123\101\040\124\114\123\040\062\060 +\062\061\061\015\060\013\006\003\125\004\012\014\004\101\164\157 +\163\061\013\060\011\006\003\125\004\006\023\002\104\105 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\114\061\056\060\054\006\003\125\004\003\014\045\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\122\157 +\157\164\040\103\101\040\122\123\101\040\124\114\123\040\062\060 +\062\061\061\015\060\013\006\003\125\004\012\014\004\101\164\157 +\163\061\013\060\011\006\003\125\004\006\023\002\104\105 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\123\325\317\346\031\223\013\373\053\005\022\330\302\052 +\242\244 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\144\060\202\003\114\240\003\002\001\002\002\020\123 +\325\317\346\031\223\013\373\053\005\022\330\302\052\242\244\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\114 +\061\056\060\054\006\003\125\004\003\014\045\101\164\157\163\040 +\124\162\165\163\164\145\144\122\157\157\164\040\122\157\157\164 +\040\103\101\040\122\123\101\040\124\114\123\040\062\060\062\061 +\061\015\060\013\006\003\125\004\012\014\004\101\164\157\163\061 +\013\060\011\006\003\125\004\006\023\002\104\105\060\036\027\015 +\062\061\060\064\062\062\060\071\062\061\061\060\132\027\015\064 +\061\060\064\061\067\060\071\062\061\060\071\132\060\114\061\056 +\060\054\006\003\125\004\003\014\045\101\164\157\163\040\124\162 +\165\163\164\145\144\122\157\157\164\040\122\157\157\164\040\103 +\101\040\122\123\101\040\124\114\123\040\062\060\062\061\061\015 +\060\013\006\003\125\004\012\014\004\101\164\157\163\061\013\060 +\011\006\003\125\004\006\023\002\104\105\060\202\002\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 +\017\000\060\202\002\012\002\202\002\001\000\266\200\016\304\171 +\275\005\214\175\260\243\235\115\042\115\313\360\101\227\115\131 +\340\321\376\126\214\227\362\327\275\217\154\267\043\217\137\325 +\304\330\101\313\362\002\036\161\345\351\366\136\313\010\052\136 +\060\362\055\146\307\204\033\144\127\070\235\165\055\126\306\057 +\141\357\226\374\040\106\275\353\324\173\077\077\174\107\070\004 +\251\033\252\122\337\023\067\323\025\025\116\275\137\174\257\255 +\143\307\171\334\010\173\325\240\345\367\133\165\254\200\125\231 +\222\141\233\315\052\027\175\333\217\364\265\152\352\027\112\144 +\050\146\025\051\154\002\361\153\325\272\243\063\334\132\147\247 +\005\342\277\145\266\026\260\020\355\315\120\063\311\160\120\354 +\031\216\260\307\362\164\133\153\104\306\175\226\271\230\010\131 +\146\336\051\001\233\364\052\155\323\025\072\220\152\147\361\264 +\153\146\331\041\353\312\331\142\174\106\020\134\336\165\111\147 +\236\102\371\376\165\251\243\255\377\166\012\147\100\343\305\367 +\215\307\205\232\131\236\142\232\152\355\105\207\230\147\262\325 +\112\074\327\264\073\000\015\300\217\037\341\100\304\256\154\041 +\334\111\176\176\312\262\215\155\266\277\223\057\241\134\076\217 +\312\355\200\216\130\341\333\127\317\205\066\070\262\161\244\011 +\214\222\211\010\210\110\361\100\143\030\262\133\214\132\343\303 +\323\027\252\253\031\243\054\033\344\325\306\342\146\172\327\202 +\031\246\073\026\054\057\161\207\137\105\236\225\163\223\302\102 +\201\041\023\226\327\235\273\223\150\025\372\235\244\035\214\362 +\201\340\130\006\275\311\266\343\366\211\135\211\371\254\104\241 +\313\153\372\026\361\307\120\075\044\332\367\303\344\207\325\126 +\361\117\220\060\372\105\011\131\332\064\316\340\023\034\004\174 +\000\324\233\206\244\100\274\331\334\114\127\176\256\267\063\266 +\136\166\341\145\213\146\337\215\312\327\230\257\316\066\230\214 +\234\203\231\003\160\363\257\164\355\306\016\066\347\275\354\301 +\163\247\224\132\313\222\144\202\246\000\301\160\241\156\054\051 +\341\130\127\354\132\174\231\153\045\244\220\072\200\364\040\235 +\232\316\307\055\371\262\113\051\225\203\351\065\215\247\111\110 +\247\017\114\031\221\320\365\277\020\340\161\002\003\001\000\001 +\243\102\060\100\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\035\006\003\125\035\016\004\026\004\024 +\164\111\231\321\377\264\172\150\105\165\303\176\264\334\314\316 +\071\063\332\010\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\206\060\015\006\011\052\206\110\206\367\015\001\001 +\014\005\000\003\202\002\001\000\043\103\123\044\142\134\155\375 +\076\302\317\125\000\154\305\126\210\271\016\335\072\342\045\015 +\225\112\227\312\200\211\356\052\315\145\370\333\026\340\011\222 +\340\030\307\170\230\273\363\354\102\122\373\251\244\202\327\115 +\330\212\374\344\116\375\253\220\304\070\165\062\204\237\377\263 +\260\053\002\063\066\300\020\220\157\035\234\257\341\151\223\354 +\243\105\057\024\237\365\114\052\145\103\162\014\367\303\370\225 +\213\024\363\205\040\142\335\124\123\335\054\334\030\225\151\117 +\203\107\160\100\063\130\167\022\014\242\353\122\061\036\114\311 +\250\316\305\357\303\321\255\340\153\003\000\064\046\264\124\041 +\065\227\001\334\137\033\361\174\347\125\372\055\150\167\173\323 +\151\314\323\016\153\272\115\166\104\326\302\025\232\046\354\260 +\305\365\273\321\172\164\302\154\315\305\265\136\366\114\346\133 +\055\201\333\263\267\072\227\236\355\317\106\262\120\075\204\140 +\231\161\265\063\265\127\105\346\102\107\165\152\016\260\010\014 +\256\275\336\367\273\017\130\075\217\003\061\350\075\202\120\312 +\057\136\014\135\264\227\276\040\064\007\364\304\022\341\356\327 +\260\331\131\055\151\367\061\004\364\362\371\253\371\023\061\370 +\001\167\016\075\102\043\046\314\232\162\147\121\041\172\314\074 +\205\250\352\041\152\073\333\132\074\245\064\236\232\300\054\337 +\200\234\051\340\337\167\224\321\242\200\102\377\152\114\133\021 +\320\365\315\242\276\256\314\121\134\303\325\124\173\014\256\326 +\271\006\167\200\342\357\007\032\150\314\131\121\255\176\134\147 +\153\271\333\342\007\102\133\270\001\005\130\071\115\344\273\230 +\243\261\062\354\331\243\326\157\224\043\377\073\267\051\145\346 +\007\351\357\266\031\352\347\302\070\035\062\210\220\074\023\053 +\156\314\357\253\167\006\064\167\204\117\162\344\201\204\371\271 +\164\064\336\166\117\222\052\123\261\045\071\333\074\377\345\076 +\246\016\345\153\236\377\333\354\057\164\203\337\216\264\263\251 +\336\024\115\377\061\243\105\163\044\372\225\051\314\022\227\004 +\242\070\266\215\260\360\067\374\310\041\177\077\263\044\033\075 +\213\156\314\115\260\026\015\226\035\203\037\106\300\233\275\103 +\231\347\304\226\056\316\137\311 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Atos TrustedRoot Root CA RSA TLS 2021" +# Issuer: C=DE,O=Atos,CN=Atos TrustedRoot Root CA RSA TLS 2021 +# Serial Number:53:d5:cf:e6:19:93:0b:fb:2b:05:12:d8:c2:2a:a2:a4 +# Subject: C=DE,O=Atos,CN=Atos TrustedRoot Root CA RSA TLS 2021 +# Not Valid Before: Thu Apr 22 09:21:10 2021 +# Not Valid After : Wed Apr 17 09:21:09 2041 +# Fingerprint (SHA-256): 81:A9:08:8E:A5:9F:B3:64:C5:48:A6:F8:55:59:09:9B:6F:04:05:EF:BF:18:E5:32:4E:C9:F4:57:BA:00:11:2F +# Fingerprint (SHA1): 18:52:3B:0D:06:37:E4:D6:3A:DF:23:E4:98:FB:5B:16:FB:86:74:48 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Atos TrustedRoot Root CA RSA TLS 2021" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\030\122\073\015\006\067\344\326\072\337\043\344\230\373\133\026 +\373\206\164\110 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\324\323\106\270\232\300\234\166\135\236\072\303\271\231\061\322 +END +CKA_ISSUER MULTILINE_OCTAL +\060\114\061\056\060\054\006\003\125\004\003\014\045\101\164\157 +\163\040\124\162\165\163\164\145\144\122\157\157\164\040\122\157 +\157\164\040\103\101\040\122\123\101\040\124\114\123\040\062\060 +\062\061\061\015\060\013\006\003\125\004\012\014\004\101\164\157 +\163\061\013\060\011\006\003\125\004\006\023\002\104\105 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\123\325\317\346\031\223\013\373\053\005\022\330\302\052 +\242\244 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "TrustAsia Global Root CA G3" +# +# Issuer: CN=TrustAsia Global Root CA G3,O="TrustAsia Technologies, Inc.",C=CN +# Serial Number:64:f6:0e:65:77:61:6a:ab:3b:b4:ea:85:84:bb:b1:89:b8:71:93:0f +# Subject: CN=TrustAsia Global Root CA G3,O="TrustAsia Technologies, Inc.",C=CN +# Not Valid Before: Thu May 20 02:10:19 2021 +# Not Valid After : Sat May 19 02:10:19 2046 +# Fingerprint (SHA-256): E0:D3:22:6A:EB:11:63:C2:E4:8F:F9:BE:3B:50:B4:C6:43:1B:E7:BB:1E:AC:C5:C3:6B:5D:5E:C5:09:03:9A:08 +# Fingerprint (SHA1): 63:CF:B6:C1:27:2B:56:E4:88:8E:1C:23:9A:B6:2E:81:47:24:C3:C7 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TrustAsia Global Root CA G3" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\045\060\043\006\003\125\004\012\014\034\124\162\165\163\164\101 +\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 +\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\014 +\033\124\162\165\163\164\101\163\151\141\040\107\154\157\142\141 +\154\040\122\157\157\164\040\103\101\040\107\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\045\060\043\006\003\125\004\012\014\034\124\162\165\163\164\101 +\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 +\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\014 +\033\124\162\165\163\164\101\163\151\141\040\107\154\157\142\141 +\154\040\122\157\157\164\040\103\101\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\144\366\016\145\167\141\152\253\073\264\352\205\204\273 +\261\211\270\161\223\017 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\245\060\202\003\215\240\003\002\001\002\002\024\144 +\366\016\145\167\141\152\253\073\264\352\205\204\273\261\211\270 +\161\223\017\060\015\006\011\052\206\110\206\367\015\001\001\014 +\005\000\060\132\061\013\060\011\006\003\125\004\006\023\002\103 +\116\061\045\060\043\006\003\125\004\012\014\034\124\162\165\163 +\164\101\163\151\141\040\124\145\143\150\156\157\154\157\147\151 +\145\163\054\040\111\156\143\056\061\044\060\042\006\003\125\004 +\003\014\033\124\162\165\163\164\101\163\151\141\040\107\154\157 +\142\141\154\040\122\157\157\164\040\103\101\040\107\063\060\036 +\027\015\062\061\060\065\062\060\060\062\061\060\061\071\132\027 +\015\064\066\060\065\061\071\060\062\061\060\061\071\132\060\132 +\061\013\060\011\006\003\125\004\006\023\002\103\116\061\045\060 +\043\006\003\125\004\012\014\034\124\162\165\163\164\101\163\151 +\141\040\124\145\143\150\156\157\154\157\147\151\145\163\054\040 +\111\156\143\056\061\044\060\042\006\003\125\004\003\014\033\124 +\162\165\163\164\101\163\151\141\040\107\154\157\142\141\154\040 +\122\157\157\164\040\103\101\040\107\063\060\202\002\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 +\017\000\060\202\002\012\002\202\002\001\000\300\061\202\141\222 +\344\224\033\012\052\145\320\276\006\251\207\073\121\022\352\160 +\101\256\342\373\164\352\012\215\271\263\114\334\217\267\023\122 +\117\124\030\341\054\163\225\221\305\146\073\152\317\254\143\155 +\207\123\360\367\361\071\267\240\103\143\260\304\003\135\127\251 +\347\104\316\304\241\203\145\366\120\076\261\176\026\270\072\212 +\002\320\226\037\000\315\005\041\357\006\155\335\041\234\031\103 +\105\241\305\350\200\312\302\255\100\142\027\006\306\252\274\363 +\326\346\374\120\176\146\102\037\074\213\246\171\171\206\100\065 +\237\040\357\077\353\213\107\037\217\216\305\324\216\266\054\311 +\104\004\343\324\103\165\077\325\077\257\034\314\176\106\137\254 +\337\144\020\212\357\106\360\220\360\017\055\364\210\013\261\051 +\252\257\205\252\111\130\250\277\143\240\070\221\346\263\346\167 +\150\304\371\052\031\204\273\016\341\365\257\211\354\245\057\120 +\040\164\036\022\101\163\036\044\331\312\316\054\241\131\065\300 +\310\035\106\047\141\132\217\371\115\323\162\171\146\036\237\025 +\220\041\055\375\355\213\126\160\003\112\111\076\177\151\061\022 +\151\307\036\134\312\172\023\213\350\346\365\140\017\314\223\054 +\204\177\361\374\152\374\233\107\235\333\255\210\075\363\166\165 +\063\327\113\244\310\213\371\365\103\130\117\313\310\003\124\217 +\245\205\170\004\032\363\163\362\327\207\035\101\237\347\330\027 +\316\032\234\017\112\374\334\104\150\124\150\342\101\074\376\054 +\204\206\067\074\315\077\057\242\333\347\367\124\003\137\131\323 +\367\221\170\307\213\167\152\026\345\111\205\220\105\162\160\057 +\221\135\370\076\145\100\013\031\231\311\046\040\132\150\301\065 +\277\117\247\121\361\330\021\053\133\340\232\236\050\073\012\072 +\012\037\301\201\345\056\360\246\271\151\245\210\224\346\153\023 +\177\321\144\077\075\234\160\106\345\242\205\173\130\204\047\334 +\304\200\076\147\232\232\307\232\061\016\060\354\346\027\100\225 +\331\105\355\001\226\252\277\014\363\113\321\143\367\023\130\300 +\270\363\372\147\335\233\175\155\112\377\062\114\265\045\073\377 +\034\147\017\205\042\131\005\221\221\101\167\201\320\205\114\207 +\020\161\377\236\103\033\256\225\165\055\201\002\003\001\000\001 +\243\143\060\141\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\037\006\003\125\035\043\004\030\060\026 +\200\024\100\344\344\362\043\357\070\312\260\256\127\177\362\041 +\060\026\064\333\274\222\060\035\006\003\125\035\016\004\026\004 +\024\100\344\344\362\043\357\070\312\260\256\127\177\362\041\060 +\026\064\333\274\222\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\015\006\011\052\206\110\206\367\015\001 +\001\014\005\000\003\202\002\001\000\046\073\121\341\115\070\363 +\062\030\264\264\136\341\145\136\304\224\117\324\247\141\243\370 +\300\317\063\001\002\351\303\252\065\017\361\224\023\167\167\065 +\236\055\126\121\104\156\341\306\056\050\036\377\332\354\107\315 +\227\104\027\367\340\114\302\341\174\174\062\172\146\310\132\266 +\134\123\105\127\132\105\324\005\231\057\056\043\125\356\143\150 +\337\323\033\170\247\022\224\006\000\165\015\162\204\351\056\274 +\132\152\325\336\057\131\307\243\354\322\207\146\333\267\124\265 +\044\253\364\103\170\333\113\004\304\157\335\346\076\146\076\051 +\362\113\150\161\042\207\240\370\261\063\143\166\343\015\205\162 +\104\042\125\077\034\174\351\374\270\025\350\122\372\252\076\243 +\041\071\065\164\211\246\152\302\071\372\170\317\266\254\347\347 +\326\126\377\043\222\056\120\013\251\265\007\063\364\070\137\244 +\111\246\313\145\160\166\350\012\205\200\113\066\075\063\367\225 +\124\165\045\332\254\304\163\202\145\351\122\365\134\375\070\225 +\002\152\151\060\305\034\012\127\007\256\042\244\054\371\305\101 +\267\270\354\237\117\110\000\371\001\004\125\314\254\371\062\061 +\304\165\225\006\240\177\321\215\047\335\263\251\244\162\207\376 +\131\213\232\172\164\026\335\026\245\142\051\353\072\226\334\213 +\247\150\131\323\353\167\221\071\370\327\313\331\217\137\132\047 +\001\175\135\150\031\142\330\310\315\364\267\162\107\276\133\227 +\316\362\255\242\231\223\255\224\313\223\366\022\011\225\266\253 +\327\073\320\077\021\313\060\026\056\171\200\344\147\201\055\135 +\355\160\170\266\140\131\254\341\135\105\143\217\310\337\162\150 +\133\352\035\270\001\361\176\373\347\212\263\343\124\240\070\011 +\340\074\336\102\362\302\355\056\233\363\037\065\266\066\330\343 +\200\241\213\315\231\144\017\302\252\253\261\312\365\157\236\103 +\215\204\124\231\263\156\300\022\146\330\160\020\361\006\065\063 +\103\250\234\056\272\024\061\316\020\177\034\206\343\217\322\325 +\370\167\354\233\253\361\057\143\331\102\137\340\147\201\144\221 +\361\227\057\374\156\046\366\063\370\323\265\370\304\142\253\061 +\121\045\002\172\370\335\153\145\325\155\115\060\310\145\272\150 +\024\145\254\047\013\164\212\362\207 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "TrustAsia Global Root CA G3" +# Issuer: CN=TrustAsia Global Root CA G3,O="TrustAsia Technologies, Inc.",C=CN +# Serial Number:64:f6:0e:65:77:61:6a:ab:3b:b4:ea:85:84:bb:b1:89:b8:71:93:0f +# Subject: CN=TrustAsia Global Root CA G3,O="TrustAsia Technologies, Inc.",C=CN +# Not Valid Before: Thu May 20 02:10:19 2021 +# Not Valid After : Sat May 19 02:10:19 2046 +# Fingerprint (SHA-256): E0:D3:22:6A:EB:11:63:C2:E4:8F:F9:BE:3B:50:B4:C6:43:1B:E7:BB:1E:AC:C5:C3:6B:5D:5E:C5:09:03:9A:08 +# Fingerprint (SHA1): 63:CF:B6:C1:27:2B:56:E4:88:8E:1C:23:9A:B6:2E:81:47:24:C3:C7 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TrustAsia Global Root CA G3" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\143\317\266\301\047\053\126\344\210\216\034\043\232\266\056\201 +\107\044\303\307 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\060\102\033\267\273\201\165\065\344\026\117\123\322\224\336\004 +END +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\045\060\043\006\003\125\004\012\014\034\124\162\165\163\164\101 +\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 +\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\014 +\033\124\162\165\163\164\101\163\151\141\040\107\154\157\142\141 +\154\040\122\157\157\164\040\103\101\040\107\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\144\366\016\145\167\141\152\253\073\264\352\205\204\273 +\261\211\270\161\223\017 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "TrustAsia Global Root CA G4" +# +# Issuer: CN=TrustAsia Global Root CA G4,O="TrustAsia Technologies, Inc.",C=CN +# Serial Number:4f:23:64:b8:8e:97:63:9e:c6:53:81:c1:76:4e:cb:2a:74:15:d6:d7 +# Subject: CN=TrustAsia Global Root CA G4,O="TrustAsia Technologies, Inc.",C=CN +# Not Valid Before: Thu May 20 02:10:22 2021 +# Not Valid After : Sat May 19 02:10:22 2046 +# Fingerprint (SHA-256): BE:4B:56:CB:50:56:C0:13:6A:52:6D:F4:44:50:8D:AA:36:A0:B5:4F:42:E4:AC:38:F7:2A:F4:70:E4:79:65:4C +# Fingerprint (SHA1): 57:73:A5:61:5D:80:B2:E6:AC:38:82:FC:68:07:31:AC:9F:B5:92:5A +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TrustAsia Global Root CA G4" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\045\060\043\006\003\125\004\012\014\034\124\162\165\163\164\101 +\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 +\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\014 +\033\124\162\165\163\164\101\163\151\141\040\107\154\157\142\141 +\154\040\122\157\157\164\040\103\101\040\107\064 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\045\060\043\006\003\125\004\012\014\034\124\162\165\163\164\101 +\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 +\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\014 +\033\124\162\165\163\164\101\163\151\141\040\107\154\157\142\141 +\154\040\122\157\157\164\040\103\101\040\107\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\117\043\144\270\216\227\143\236\306\123\201\301\166\116 +\313\052\164\025\326\327 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\125\060\202\001\334\240\003\002\001\002\002\024\117 +\043\144\270\216\227\143\236\306\123\201\301\166\116\313\052\164 +\025\326\327\060\012\006\010\052\206\110\316\075\004\003\003\060 +\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061\045 +\060\043\006\003\125\004\012\014\034\124\162\165\163\164\101\163 +\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163\054 +\040\111\156\143\056\061\044\060\042\006\003\125\004\003\014\033 +\124\162\165\163\164\101\163\151\141\040\107\154\157\142\141\154 +\040\122\157\157\164\040\103\101\040\107\064\060\036\027\015\062 +\061\060\065\062\060\060\062\061\060\062\062\132\027\015\064\066 +\060\065\061\071\060\062\061\060\062\062\132\060\132\061\013\060 +\011\006\003\125\004\006\023\002\103\116\061\045\060\043\006\003 +\125\004\012\014\034\124\162\165\163\164\101\163\151\141\040\124 +\145\143\150\156\157\154\157\147\151\145\163\054\040\111\156\143 +\056\061\044\060\042\006\003\125\004\003\014\033\124\162\165\163 +\164\101\163\151\141\040\107\154\157\142\141\154\040\122\157\157 +\164\040\103\101\040\107\064\060\166\060\020\006\007\052\206\110 +\316\075\002\001\006\005\053\201\004\000\042\003\142\000\004\361 +\263\315\070\344\045\103\345\336\031\011\273\201\171\242\025\137 +\025\143\001\336\302\253\335\263\246\033\147\113\200\203\257\231 +\313\254\027\333\053\226\312\174\122\125\342\032\341\075\126\360 +\057\026\010\372\025\274\233\273\107\346\077\356\250\341\114\214 +\365\323\066\371\070\135\253\160\232\107\015\342\201\101\006\353 +\111\371\260\051\335\063\354\120\245\177\171\051\270\040\230\243 +\143\060\141\060\017\006\003\125\035\023\001\001\377\004\005\060 +\003\001\001\377\060\037\006\003\125\035\043\004\030\060\026\200 +\024\245\273\112\227\316\263\053\177\244\061\336\227\203\131\203 +\246\157\161\313\336\060\035\006\003\125\035\016\004\026\004\024 +\245\273\112\227\316\263\053\177\244\061\336\227\203\131\203\246 +\157\161\313\336\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\012\006\010\052\206\110\316\075\004\003\003 +\003\147\000\060\144\002\060\136\362\353\006\314\111\061\237\100 +\000\155\267\176\066\360\115\021\117\363\313\211\072\054\170\221 +\120\243\133\300\312\165\046\362\277\220\135\013\202\214\140\050 +\237\306\160\232\150\344\361\002\060\134\130\016\126\166\317\130 +\303\327\020\214\272\216\256\343\274\144\165\107\305\125\220\343 +\375\272\125\353\007\304\123\253\067\251\356\041\262\041\133\140 +\217\075\062\361\325\043\224\326\130 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "TrustAsia Global Root CA G4" +# Issuer: CN=TrustAsia Global Root CA G4,O="TrustAsia Technologies, Inc.",C=CN +# Serial Number:4f:23:64:b8:8e:97:63:9e:c6:53:81:c1:76:4e:cb:2a:74:15:d6:d7 +# Subject: CN=TrustAsia Global Root CA G4,O="TrustAsia Technologies, Inc.",C=CN +# Not Valid Before: Thu May 20 02:10:22 2021 +# Not Valid After : Sat May 19 02:10:22 2046 +# Fingerprint (SHA-256): BE:4B:56:CB:50:56:C0:13:6A:52:6D:F4:44:50:8D:AA:36:A0:B5:4F:42:E4:AC:38:F7:2A:F4:70:E4:79:65:4C +# Fingerprint (SHA1): 57:73:A5:61:5D:80:B2:E6:AC:38:82:FC:68:07:31:AC:9F:B5:92:5A +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TrustAsia Global Root CA G4" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\127\163\245\141\135\200\262\346\254\070\202\374\150\007\061\254 +\237\265\222\132 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\124\335\262\327\137\330\076\355\174\340\013\056\314\355\353\353 +END +CKA_ISSUER MULTILINE_OCTAL +\060\132\061\013\060\011\006\003\125\004\006\023\002\103\116\061 +\045\060\043\006\003\125\004\012\014\034\124\162\165\163\164\101 +\163\151\141\040\124\145\143\150\156\157\154\157\147\151\145\163 +\054\040\111\156\143\056\061\044\060\042\006\003\125\004\003\014 +\033\124\162\165\163\164\101\163\151\141\040\107\154\157\142\141 +\154\040\122\157\157\164\040\103\101\040\107\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\117\043\144\270\216\227\143\236\306\123\201\301\166\116 +\313\052\164\025\326\327 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "CommScope Public Trust ECC Root-01" +# +# Issuer: CN=CommScope Public Trust ECC Root-01,O=CommScope,C=US +# Serial Number:43:70:82:77:cf:4d:5d:34:f1:ca:ae:32:2f:37:f7:f4:7f:75:a0:9e +# Subject: CN=CommScope Public Trust ECC Root-01,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:35:43 2021 +# Not Valid After : Sat Apr 28 17:35:42 2046 +# Fingerprint (SHA-256): 11:43:7C:DA:7B:B4:5E:41:36:5F:45:B3:9A:38:98:6B:0D:E0:0D:EF:34:8E:0C:7B:B0:87:36:33:80:0B:C3:8B +# Fingerprint (SHA1): 07:86:C0:D8:DD:8E:C0:80:98:06:98:D0:58:7A:EF:DE:A6:CC:A2:5D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust ECC Root-01" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\103\160\202\167\317\115\135\064\361\312\256\062\057\067 +\367\364\177\165\240\236 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\035\060\202\001\243\240\003\002\001\002\002\024\103 +\160\202\167\317\115\135\064\361\312\256\062\057\067\367\364\177 +\165\240\236\060\012\006\010\052\206\110\316\075\004\003\003\060 +\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143\157 +\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157\155 +\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124\162 +\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061\060 +\036\027\015\062\061\060\064\062\070\061\067\063\065\064\063\132 +\027\015\064\066\060\064\062\070\061\067\063\065\064\062\132\060 +\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143\157 +\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157\155 +\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124\162 +\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\113\066\351\256\127\136\250\160\327 +\320\217\164\142\167\303\136\172\252\345\266\242\361\170\375\002 +\176\127\335\221\171\234\154\271\122\210\124\274\057\004\276\270 +\315\366\020\321\051\354\265\320\240\303\360\211\160\031\273\121 +\145\305\103\234\303\233\143\235\040\203\076\006\013\246\102\104 +\205\021\247\112\072\055\351\326\150\057\110\116\123\053\007\077 +\115\275\271\254\167\071\127\243\102\060\100\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003 +\125\035\016\004\026\004\024\216\007\142\300\120\335\306\031\006 +\000\106\164\004\367\363\256\175\165\115\060\060\012\006\010\052 +\206\110\316\075\004\003\003\003\150\000\060\145\002\061\000\234 +\063\337\101\343\043\250\102\066\046\227\065\134\173\353\333\113 +\370\252\213\163\125\025\134\254\170\051\017\272\041\330\304\240 +\330\321\003\335\155\321\071\075\304\223\140\322\343\162\262\002 +\060\174\305\176\210\323\120\365\036\045\350\372\116\165\346\130 +\226\244\065\137\033\145\352\141\232\160\043\265\015\243\233\222 +\122\157\151\240\214\215\112\320\356\213\016\313\107\216\320\215 +\021 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CommScope Public Trust ECC Root-01" +# Issuer: CN=CommScope Public Trust ECC Root-01,O=CommScope,C=US +# Serial Number:43:70:82:77:cf:4d:5d:34:f1:ca:ae:32:2f:37:f7:f4:7f:75:a0:9e +# Subject: CN=CommScope Public Trust ECC Root-01,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:35:43 2021 +# Not Valid After : Sat Apr 28 17:35:42 2046 +# Fingerprint (SHA-256): 11:43:7C:DA:7B:B4:5E:41:36:5F:45:B3:9A:38:98:6B:0D:E0:0D:EF:34:8E:0C:7B:B0:87:36:33:80:0B:C3:8B +# Fingerprint (SHA1): 07:86:C0:D8:DD:8E:C0:80:98:06:98:D0:58:7A:EF:DE:A6:CC:A2:5D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust ECC Root-01" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\007\206\300\330\335\216\300\200\230\006\230\320\130\172\357\336 +\246\314\242\135 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\072\100\247\374\003\214\234\070\171\057\072\242\154\266\012\026 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\103\160\202\167\317\115\135\064\361\312\256\062\057\067 +\367\364\177\165\240\236 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "CommScope Public Trust ECC Root-02" +# +# Issuer: CN=CommScope Public Trust ECC Root-02,O=CommScope,C=US +# Serial Number:28:fd:99:60:41:47:a6:01:3a:ca:14:7b:1f:ef:f9:68:08:83:5d:7d +# Subject: CN=CommScope Public Trust ECC Root-02,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:44:54 2021 +# Not Valid After : Sat Apr 28 17:44:53 2046 +# Fingerprint (SHA-256): 2F:FB:7F:81:3B:BB:B3:C8:9A:B4:E8:16:2D:0F:16:D7:15:09:A8:30:CC:9D:73:C2:62:E5:14:08:75:D1:AD:4A +# Fingerprint (SHA1): 3C:3F:EF:57:0F:FE:65:93:86:9E:A0:FE:B0:F6:ED:8E:D1:13:C7:E5 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust ECC Root-02" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\050\375\231\140\101\107\246\001\072\312\024\173\037\357 +\371\150\010\203\135\175 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\034\060\202\001\243\240\003\002\001\002\002\024\050 +\375\231\140\101\107\246\001\072\312\024\173\037\357\371\150\010 +\203\135\175\060\012\006\010\052\206\110\316\075\004\003\003\060 +\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143\157 +\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157\155 +\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124\162 +\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062\060 +\036\027\015\062\061\060\064\062\070\061\067\064\064\065\064\132 +\027\015\064\066\060\064\062\070\061\067\064\064\065\063\132\060 +\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061\022 +\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143\157 +\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157\155 +\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124\162 +\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062\060 +\166\060\020\006\007\052\206\110\316\075\002\001\006\005\053\201 +\004\000\042\003\142\000\004\170\060\201\350\143\036\345\353\161 +\121\017\367\007\007\312\071\231\174\116\325\017\314\060\060\013 +\217\146\223\076\317\275\305\206\275\371\261\267\264\076\264\007 +\310\363\226\061\363\355\244\117\370\243\116\215\051\025\130\270 +\325\157\177\356\154\042\265\260\257\110\105\012\275\250\111\224 +\277\204\103\260\333\204\112\003\043\031\147\152\157\301\156\274 +\006\071\067\321\210\042\367\243\102\060\100\060\017\006\003\125 +\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006\003 +\125\035\016\004\026\004\024\346\030\165\377\357\140\336\204\244 +\365\106\307\336\112\125\343\062\066\171\365\060\012\006\010\052 +\206\110\316\075\004\003\003\003\147\000\060\144\002\060\046\163 +\111\172\266\253\346\111\364\175\122\077\324\101\004\256\200\103 +\203\145\165\271\205\200\070\073\326\157\344\223\206\253\217\347 +\211\310\177\233\176\153\012\022\125\141\252\021\340\171\002\060 +\167\350\061\161\254\074\161\003\326\204\046\036\024\270\363\073 +\073\336\355\131\374\153\114\060\177\131\316\105\351\163\140\025 +\232\114\360\346\136\045\042\025\155\302\207\131\320\262\216\152 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CommScope Public Trust ECC Root-02" +# Issuer: CN=CommScope Public Trust ECC Root-02,O=CommScope,C=US +# Serial Number:28:fd:99:60:41:47:a6:01:3a:ca:14:7b:1f:ef:f9:68:08:83:5d:7d +# Subject: CN=CommScope Public Trust ECC Root-02,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:44:54 2021 +# Not Valid After : Sat Apr 28 17:44:53 2046 +# Fingerprint (SHA-256): 2F:FB:7F:81:3B:BB:B3:C8:9A:B4:E8:16:2D:0F:16:D7:15:09:A8:30:CC:9D:73:C2:62:E5:14:08:75:D1:AD:4A +# Fingerprint (SHA1): 3C:3F:EF:57:0F:FE:65:93:86:9E:A0:FE:B0:F6:ED:8E:D1:13:C7:E5 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust ECC Root-02" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\074\077\357\127\017\376\145\223\206\236\240\376\260\366\355\216 +\321\023\307\345 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\131\260\104\325\145\115\270\134\125\031\222\002\266\321\224\262 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\105\103\103\040\122\157\157\164\055\060\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\050\375\231\140\101\107\246\001\072\312\024\173\037\357 +\371\150\010\203\135\175 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "CommScope Public Trust RSA Root-01" +# +# Issuer: CN=CommScope Public Trust RSA Root-01,O=CommScope,C=US +# Serial Number:3e:03:49:81:75:16:74:31:8e:4c:ab:d5:c5:90:29:96:c5:39:10:dd +# Subject: CN=CommScope Public Trust RSA Root-01,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 16:45:54 2021 +# Not Valid After : Sat Apr 28 16:45:53 2046 +# Fingerprint (SHA-256): 02:BD:F9:6E:2A:45:DD:9B:F1:8F:C7:E1:DB:DF:21:A0:37:9B:A3:C9:C2:61:03:44:CF:D8:D6:06:FE:C1:ED:81 +# Fingerprint (SHA1): 6D:0A:5F:F7:B4:23:06:B4:85:B3:B7:97:64:FC:AC:75:F5:33:F2:93 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust RSA Root-01" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\076\003\111\201\165\026\164\061\216\114\253\325\305\220 +\051\226\305\071\020\335 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\154\060\202\003\124\240\003\002\001\002\002\024\076 +\003\111\201\165\026\164\061\216\114\253\325\305\220\051\226\305 +\071\020\335\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\116\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\022\060\020\006\003\125\004\012\014\011\103\157\155\155 +\123\143\157\160\145\061\053\060\051\006\003\125\004\003\014\042 +\103\157\155\155\123\143\157\160\145\040\120\165\142\154\151\143 +\040\124\162\165\163\164\040\122\123\101\040\122\157\157\164\055 +\060\061\060\036\027\015\062\061\060\064\062\070\061\066\064\065 +\065\064\132\027\015\064\066\060\064\062\070\061\066\064\065\065 +\063\132\060\116\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\022\060\020\006\003\125\004\012\014\011\103\157\155\155 +\123\143\157\160\145\061\053\060\051\006\003\125\004\003\014\042 +\103\157\155\155\123\143\157\160\145\040\120\165\142\154\151\143 +\040\124\162\165\163\164\040\122\123\101\040\122\157\157\164\055 +\060\061\060\202\002\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202 +\002\001\000\260\110\145\243\015\035\102\343\221\155\235\204\244 +\141\226\022\302\355\303\332\043\064\031\166\366\352\375\125\132 +\366\125\001\123\017\362\314\214\227\117\271\120\313\263\001\104 +\126\226\375\233\050\354\173\164\013\347\102\153\125\316\311\141 +\262\350\255\100\074\272\271\101\012\005\117\033\046\205\217\103 +\265\100\265\205\321\324\161\334\203\101\363\366\105\307\200\242 +\204\120\227\106\316\240\014\304\140\126\004\035\007\133\106\245 +\016\262\113\244\016\245\174\356\370\324\142\003\271\223\152\212 +\024\270\160\370\056\202\106\070\043\016\164\307\153\101\267\320 +\051\243\235\200\260\176\167\223\143\102\373\064\203\073\163\243 +\132\041\066\353\107\372\030\027\331\272\146\302\223\244\217\374 +\135\244\255\374\120\152\225\254\274\044\063\321\275\210\177\206 +\365\365\262\163\052\217\174\257\010\362\032\230\077\251\201\145 +\077\301\214\211\305\226\060\232\012\317\364\324\310\064\355\235 +\057\274\215\070\206\123\356\227\237\251\262\143\224\027\215\017 +\334\146\052\174\122\121\165\313\231\216\350\075\134\277\236\073 +\050\215\203\002\017\251\237\162\342\054\053\263\334\146\227\000 +\100\320\244\124\216\233\135\173\105\066\046\326\162\103\353\317 +\300\352\015\334\316\022\346\175\070\237\005\047\250\227\076\351 +\121\306\154\005\050\301\002\017\351\030\155\354\275\234\006\324 +\247\111\364\124\005\153\154\060\361\353\003\325\352\075\152\166 +\302\313\032\050\111\115\177\144\340\372\053\332\163\203\201\377 +\221\003\275\224\273\344\270\216\234\062\143\315\237\273\150\201 +\261\204\133\257\066\277\167\356\035\177\367\111\233\122\354\322 +\167\132\175\221\235\115\302\071\055\344\272\202\370\157\362\116 +\036\017\116\346\077\131\245\043\334\075\207\250\050\130\050\321 +\361\033\066\333\117\304\377\341\214\133\162\214\307\046\003\047 +\243\071\012\001\252\300\262\061\140\203\042\241\117\022\011\001 +\021\257\064\324\317\327\256\142\323\005\007\264\061\165\340\015 +\155\127\117\151\207\371\127\251\272\025\366\310\122\155\241\313 +\234\037\345\374\170\250\065\232\237\101\024\316\245\264\316\224 +\010\034\011\255\126\345\332\266\111\232\112\352\143\030\123\234 +\054\056\303\002\003\001\000\001\243\102\060\100\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006 +\003\125\035\016\004\026\004\024\067\135\246\232\164\062\302\302 +\371\307\246\025\020\131\270\344\375\345\270\155\060\015\006\011 +\052\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000 +\257\247\317\336\377\340\275\102\215\115\345\042\226\337\150\352 +\175\115\052\175\320\255\075\026\134\103\347\175\300\206\350\172 +\065\143\361\314\201\310\306\013\350\056\122\065\244\246\111\220 +\143\121\254\064\254\005\073\127\000\351\323\142\323\331\051\325 +\124\276\034\020\221\234\262\155\376\131\375\171\367\352\126\320 +\236\150\124\102\217\046\122\342\114\337\057\227\246\057\322\007 +\230\250\363\140\135\113\232\130\127\210\357\202\345\372\257\154 +\201\113\222\217\100\232\223\106\131\313\137\170\026\261\147\076 +\102\013\337\050\331\260\255\230\040\276\103\174\321\136\032\011 +\027\044\215\173\135\225\351\253\301\140\253\133\030\144\200\373 +\255\340\006\175\035\312\131\270\363\170\051\147\306\126\035\257 +\266\265\164\052\166\241\077\373\165\060\237\224\136\073\245\140 +\363\313\134\014\342\016\311\140\370\311\037\026\212\046\335\347 +\047\177\353\045\246\212\275\270\055\066\020\232\261\130\115\232 +\150\117\140\124\345\366\106\023\216\210\254\274\041\102\022\255 +\306\112\211\175\233\301\330\055\351\226\003\364\242\164\014\274 +\000\035\277\326\067\045\147\264\162\213\257\205\275\352\052\003 +\217\314\373\074\104\044\202\342\001\245\013\131\266\064\215\062 +\013\022\015\353\047\302\375\101\327\100\074\162\106\051\300\214 +\352\272\017\361\006\223\056\367\234\250\364\140\076\243\361\070 +\136\216\023\301\263\072\227\207\077\222\312\170\251\034\257\320 +\260\033\046\036\276\160\354\172\365\063\230\352\134\377\053\013 +\004\116\103\335\143\176\016\247\116\170\003\225\076\324\055\060 +\225\021\020\050\056\277\240\002\076\377\136\131\323\005\016\225 +\137\123\105\357\153\207\325\110\315\026\246\226\203\341\337\263 +\006\363\301\024\333\247\354\034\213\135\220\220\015\162\121\347 +\141\371\024\312\257\203\217\277\257\261\012\131\135\334\134\327 +\344\226\255\133\140\035\332\256\227\262\071\331\006\365\166\000 +\023\370\150\114\041\260\065\304\334\125\262\311\301\101\132\034 +\211\300\214\157\164\240\153\063\115\265\001\050\375\255\255\211 +\027\073\246\232\204\274\353\214\352\304\161\044\250\272\051\371 +\010\262\047\126\065\062\137\352\071\373\061\232\325\031\314\360 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CommScope Public Trust RSA Root-01" +# Issuer: CN=CommScope Public Trust RSA Root-01,O=CommScope,C=US +# Serial Number:3e:03:49:81:75:16:74:31:8e:4c:ab:d5:c5:90:29:96:c5:39:10:dd +# Subject: CN=CommScope Public Trust RSA Root-01,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 16:45:54 2021 +# Not Valid After : Sat Apr 28 16:45:53 2046 +# Fingerprint (SHA-256): 02:BD:F9:6E:2A:45:DD:9B:F1:8F:C7:E1:DB:DF:21:A0:37:9B:A3:C9:C2:61:03:44:CF:D8:D6:06:FE:C1:ED:81 +# Fingerprint (SHA1): 6D:0A:5F:F7:B4:23:06:B4:85:B3:B7:97:64:FC:AC:75:F5:33:F2:93 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust RSA Root-01" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\155\012\137\367\264\043\006\264\205\263\267\227\144\374\254\165 +\365\063\362\223 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\016\264\025\274\207\143\135\135\002\163\324\046\070\150\163\330 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\076\003\111\201\165\026\164\061\216\114\253\325\305\220 +\051\226\305\071\020\335 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "CommScope Public Trust RSA Root-02" +# +# Issuer: CN=CommScope Public Trust RSA Root-02,O=CommScope,C=US +# Serial Number:54:16:bf:3b:7e:39:95:71:8d:d1:aa:00:a5:86:0d:2b:8f:7a:05:4e +# Subject: CN=CommScope Public Trust RSA Root-02,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:16:43 2021 +# Not Valid After : Sat Apr 28 17:16:42 2046 +# Fingerprint (SHA-256): FF:E9:43:D7:93:42:4B:4F:7C:44:0C:1C:3D:64:8D:53:63:F3:4B:82:DC:87:AA:7A:9F:11:8F:C5:DE:E1:01:F1 +# Fingerprint (SHA1): EA:B0:E2:52:1B:89:93:4C:11:68:F2:D8:9A:AC:22:4C:A3:8A:57:AE +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust RSA Root-02" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\124\026\277\073\176\071\225\161\215\321\252\000\245\206 +\015\053\217\172\005\116 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\154\060\202\003\124\240\003\002\001\002\002\024\124 +\026\277\073\176\071\225\161\215\321\252\000\245\206\015\053\217 +\172\005\116\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\116\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\022\060\020\006\003\125\004\012\014\011\103\157\155\155 +\123\143\157\160\145\061\053\060\051\006\003\125\004\003\014\042 +\103\157\155\155\123\143\157\160\145\040\120\165\142\154\151\143 +\040\124\162\165\163\164\040\122\123\101\040\122\157\157\164\055 +\060\062\060\036\027\015\062\061\060\064\062\070\061\067\061\066 +\064\063\132\027\015\064\066\060\064\062\070\061\067\061\066\064 +\062\132\060\116\061\013\060\011\006\003\125\004\006\023\002\125 +\123\061\022\060\020\006\003\125\004\012\014\011\103\157\155\155 +\123\143\157\160\145\061\053\060\051\006\003\125\004\003\014\042 +\103\157\155\155\123\143\157\160\145\040\120\165\142\154\151\143 +\040\124\162\165\163\164\040\122\123\101\040\122\157\157\164\055 +\060\062\060\202\002\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202 +\002\001\000\341\372\016\373\150\000\022\310\115\325\254\042\304 +\065\001\073\305\124\345\131\166\143\245\177\353\301\304\152\230 +\275\062\215\027\200\353\135\272\321\142\075\045\043\031\065\024 +\351\177\211\247\033\142\074\326\120\347\064\225\003\062\261\264 +\223\042\075\247\342\261\355\346\173\116\056\207\233\015\063\165 +\012\336\252\065\347\176\345\066\230\242\256\045\236\225\263\062 +\226\244\053\130\036\357\077\376\142\064\110\121\321\264\215\102 +\255\140\332\111\152\225\160\335\322\000\342\314\127\143\002\173 +\226\335\111\227\133\222\116\225\323\371\313\051\037\030\112\370 +\001\052\322\143\011\156\044\351\211\322\345\307\042\114\334\163 +\206\107\000\252\015\210\216\256\205\175\112\351\273\063\117\016 +\122\160\235\225\343\174\155\226\133\055\075\137\241\203\106\135 +\266\343\045\270\174\247\031\200\034\352\145\103\334\221\171\066 +\054\164\174\362\147\006\311\211\311\333\277\332\150\277\043\355 +\334\153\255\050\203\171\057\354\070\245\015\067\001\147\047\232 +\351\063\331\063\137\067\241\305\360\253\075\372\170\260\347\054 +\237\366\076\237\140\340\357\110\351\220\105\036\005\121\170\032 +\054\022\054\134\050\254\015\242\043\236\064\217\005\346\242\063 +\316\021\167\023\324\016\244\036\102\037\206\315\160\376\331\056 +\025\075\035\273\270\362\123\127\333\314\306\164\051\234\030\263 +\066\165\070\056\017\124\241\370\222\037\211\226\117\273\324\356 +\235\351\073\066\102\265\012\073\052\324\144\171\066\020\341\371 +\221\003\053\173\040\124\315\015\031\032\310\101\062\064\321\260 +\231\341\220\036\001\100\066\265\267\372\251\345\167\165\244\042 +\201\135\260\213\344\047\022\017\124\210\306\333\205\164\346\267 +\300\327\246\051\372\333\336\363\223\227\047\004\125\057\012\157 +\067\305\075\023\257\012\000\251\054\213\034\201\050\327\357\206 +\061\251\256\362\156\270\312\152\054\124\107\330\052\210\056\257 +\301\007\020\170\254\021\242\057\102\360\067\305\362\270\126\335 +\016\142\055\316\055\126\176\125\362\247\104\366\053\062\364\043 +\250\107\350\324\052\001\170\317\152\303\067\250\236\145\322\054 +\345\372\272\063\301\006\104\366\346\317\245\015\247\146\010\064 +\212\054\363\002\003\001\000\001\243\102\060\100\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\016\006 +\003\125\035\017\001\001\377\004\004\003\002\001\006\060\035\006 +\003\125\035\016\004\026\004\024\107\320\347\261\042\377\235\054 +\365\331\127\140\263\261\261\160\225\357\141\172\060\015\006\011 +\052\206\110\206\367\015\001\001\013\005\000\003\202\002\001\000 +\206\151\261\115\057\351\237\117\042\223\150\216\344\041\231\243 +\316\105\123\033\163\104\123\000\201\141\315\061\343\010\272\201 +\050\050\172\222\271\266\250\310\103\236\307\023\046\115\302\330 +\345\125\234\222\135\120\330\302\053\333\376\346\250\227\317\122 +\072\044\303\145\144\134\107\061\243\145\065\023\303\223\271\367 +\371\121\227\273\244\360\142\207\305\326\006\323\227\203\040\251 +\176\273\266\041\302\245\015\204\000\341\362\047\020\203\272\335 +\003\201\325\335\150\303\146\020\310\321\166\264\263\157\051\236 +\000\371\302\051\365\261\223\031\122\151\032\054\114\240\213\340 +\025\232\061\057\323\210\225\131\156\345\304\263\120\310\024\010 +\112\233\213\023\203\261\244\162\262\073\166\063\101\334\334\252 +\246\007\157\035\044\022\237\310\166\275\057\331\216\364\054\356 +\267\322\070\020\044\066\121\057\343\134\135\201\041\247\332\273 +\116\377\346\007\250\376\271\015\047\154\273\160\132\125\172\023 +\351\361\052\111\151\307\137\207\127\114\103\171\155\072\145\351 +\060\134\101\356\353\167\245\163\022\210\350\277\175\256\345\304 +\250\037\015\216\034\155\120\002\117\046\030\103\336\217\125\205 +\261\013\067\005\140\311\125\071\022\004\241\052\317\161\026\237 +\066\121\111\277\160\073\236\147\234\373\173\171\311\071\034\170 +\254\167\221\124\232\270\165\012\201\122\227\343\146\141\153\355 +\076\070\036\226\141\125\341\221\124\214\355\214\044\037\201\311 +\020\232\163\231\053\026\116\162\000\077\124\033\370\215\272\213 +\347\024\326\266\105\117\140\354\226\256\303\057\002\116\135\235 +\226\111\162\000\262\253\165\134\017\150\133\035\145\302\137\063 +\017\036\017\360\073\206\365\260\116\273\234\367\352\045\005\334 +\255\242\233\113\027\001\276\102\337\065\041\035\255\253\256\364 +\277\256\037\033\323\342\073\374\263\162\163\034\233\050\220\211 +\023\075\035\301\000\107\011\226\232\070\033\335\261\317\015\302 +\264\104\363\226\225\316\062\072\217\064\234\340\027\307\136\316 +\256\015\333\207\070\345\077\133\375\233\031\341\061\101\172\160 +\252\043\153\001\341\105\114\315\224\316\073\236\055\347\210\002 +\042\364\156\350\310\354\326\074\363\271\262\327\167\172\254\173 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "CommScope Public Trust RSA Root-02" +# Issuer: CN=CommScope Public Trust RSA Root-02,O=CommScope,C=US +# Serial Number:54:16:bf:3b:7e:39:95:71:8d:d1:aa:00:a5:86:0d:2b:8f:7a:05:4e +# Subject: CN=CommScope Public Trust RSA Root-02,O=CommScope,C=US +# Not Valid Before: Wed Apr 28 17:16:43 2021 +# Not Valid After : Sat Apr 28 17:16:42 2046 +# Fingerprint (SHA-256): FF:E9:43:D7:93:42:4B:4F:7C:44:0C:1C:3D:64:8D:53:63:F3:4B:82:DC:87:AA:7A:9F:11:8F:C5:DE:E1:01:F1 +# Fingerprint (SHA1): EA:B0:E2:52:1B:89:93:4C:11:68:F2:D8:9A:AC:22:4C:A3:8A:57:AE +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "CommScope Public Trust RSA Root-02" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\352\260\342\122\033\211\223\114\021\150\362\330\232\254\042\114 +\243\212\127\256 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\341\051\371\142\173\166\342\226\155\363\324\327\017\256\037\252 +END +CKA_ISSUER MULTILINE_OCTAL +\060\116\061\013\060\011\006\003\125\004\006\023\002\125\123\061 +\022\060\020\006\003\125\004\012\014\011\103\157\155\155\123\143 +\157\160\145\061\053\060\051\006\003\125\004\003\014\042\103\157 +\155\155\123\143\157\160\145\040\120\165\142\154\151\143\040\124 +\162\165\163\164\040\122\123\101\040\122\157\157\164\055\060\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\124\026\277\073\176\071\225\161\215\321\252\000\245\206 +\015\053\217\172\005\116 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "D-Trust SBR Root CA 1 2022" +# +# Issuer: CN=D-Trust SBR Root CA 1 2022,O=D-Trust GmbH,C=DE +# Serial Number:52:cf:e4:8c:6d:a0:4a:f7:3f:82:97:0c:80:09:8c:95 +# Subject: CN=D-Trust SBR Root CA 1 2022,O=D-Trust GmbH,C=DE +# Not Valid Before: Wed Jul 06 11:30:00 2022 +# Not Valid After : Mon Jul 06 11:29:59 2037 +# Fingerprint (SHA-256): D9:2C:17:1F:5C:F8:90:BA:42:80:19:29:29:27:FE:22:F3:20:7F:D2:B5:44:49:CB:6F:67:5A:F4:92:21:46:E2 +# Fingerprint (SHA1): 0F:52:3A:6B:4E:7D:1D:18:05:A5:48:F9:4D:CD:E4:C3:1E:1B:E9:E6 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-Trust SBR Root CA 1 2022" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\111\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\043\060\041\006\003\125\004\003\023 +\032\104\055\124\162\165\163\164\040\123\102\122\040\122\157\157 +\164\040\103\101\040\061\040\062\060\062\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\111\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\043\060\041\006\003\125\004\003\023 +\032\104\055\124\162\165\163\164\040\123\102\122\040\122\157\157 +\164\040\103\101\040\061\040\062\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\122\317\344\214\155\240\112\367\077\202\227\014\200\011 +\214\225 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\136\060\202\001\343\240\003\002\001\002\002\020\122 +\317\344\214\155\240\112\367\077\202\227\014\200\011\214\225\060 +\012\006\010\052\206\110\316\075\004\003\003\060\111\061\013\060 +\011\006\003\125\004\006\023\002\104\105\061\025\060\023\006\003 +\125\004\012\023\014\104\055\124\162\165\163\164\040\107\155\142 +\110\061\043\060\041\006\003\125\004\003\023\032\104\055\124\162 +\165\163\164\040\123\102\122\040\122\157\157\164\040\103\101\040 +\061\040\062\060\062\062\060\036\027\015\062\062\060\067\060\066 +\061\061\063\060\060\060\132\027\015\063\067\060\067\060\066\061 +\061\062\071\065\071\132\060\111\061\013\060\011\006\003\125\004 +\006\023\002\104\105\061\025\060\023\006\003\125\004\012\023\014 +\104\055\124\162\165\163\164\040\107\155\142\110\061\043\060\041 +\006\003\125\004\003\023\032\104\055\124\162\165\163\164\040\123 +\102\122\040\122\157\157\164\040\103\101\040\061\040\062\060\062 +\062\060\166\060\020\006\007\052\206\110\316\075\002\001\006\005 +\053\201\004\000\042\003\142\000\004\131\223\071\366\214\111\146 +\050\327\141\014\310\253\177\014\243\055\337\242\244\174\222\053 +\150\325\056\176\036\100\313\264\150\111\177\022\241\253\177\127 +\237\031\056\143\056\133\376\146\161\014\063\017\271\336\153\304 +\210\303\261\357\354\071\100\343\226\253\333\345\173\256\037\334 +\371\257\106\232\152\106\006\057\307\067\144\213\027\142\376\226 +\303\242\356\204\340\260\227\071\274\243\201\217\060\201\214\060 +\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001\377 +\060\035\006\003\125\035\016\004\026\004\024\361\051\243\036\001 +\022\035\075\165\126\115\307\120\174\305\031\252\017\030\267\060 +\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060 +\112\006\003\125\035\037\004\103\060\101\060\077\240\075\240\073 +\206\071\150\164\164\160\072\057\057\143\162\154\056\144\055\164 +\162\165\163\164\056\156\145\164\057\143\162\154\057\144\055\164 +\162\165\163\164\137\163\142\162\137\162\157\157\164\137\143\141 +\137\061\137\062\060\062\062\056\143\162\154\060\012\006\010\052 +\206\110\316\075\004\003\003\003\151\000\060\146\002\061\000\227 +\371\336\256\113\217\230\265\036\100\177\062\175\115\124\103\332 +\211\315\302\252\222\074\321\202\036\163\317\372\114\222\040\373 +\143\047\305\365\163\075\011\075\367\247\141\206\214\363\152\002 +\061\000\347\057\174\270\365\045\214\073\071\037\066\253\215\365 +\206\242\056\341\172\144\332\147\071\002\376\376\063\077\331\163 +\266\130\133\072\374\262\244\331\140\170\167\314\171\247\246\256 +\125\275 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "D-Trust SBR Root CA 1 2022" +# Issuer: CN=D-Trust SBR Root CA 1 2022,O=D-Trust GmbH,C=DE +# Serial Number:52:cf:e4:8c:6d:a0:4a:f7:3f:82:97:0c:80:09:8c:95 +# Subject: CN=D-Trust SBR Root CA 1 2022,O=D-Trust GmbH,C=DE +# Not Valid Before: Wed Jul 06 11:30:00 2022 +# Not Valid After : Mon Jul 06 11:29:59 2037 +# Fingerprint (SHA-256): D9:2C:17:1F:5C:F8:90:BA:42:80:19:29:29:27:FE:22:F3:20:7F:D2:B5:44:49:CB:6F:67:5A:F4:92:21:46:E2 +# Fingerprint (SHA1): 0F:52:3A:6B:4E:7D:1D:18:05:A5:48:F9:4D:CD:E4:C3:1E:1B:E9:E6 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-Trust SBR Root CA 1 2022" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\017\122\072\153\116\175\035\030\005\245\110\371\115\315\344\303 +\036\033\351\346 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\023\074\033\202\352\156\352\355\144\142\351\132\171\005\151\004 +END +CKA_ISSUER MULTILINE_OCTAL +\060\111\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\043\060\041\006\003\125\004\003\023 +\032\104\055\124\162\165\163\164\040\123\102\122\040\122\157\157 +\164\040\103\101\040\061\040\062\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\122\317\344\214\155\240\112\367\077\202\227\014\200\011 +\214\225 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "D-Trust SBR Root CA 2 2022" +# +# Issuer: CN=D-Trust SBR Root CA 2 2022,O=D-Trust GmbH,C=DE +# Serial Number:54:d5:a3:95:1e:3d:95:ba:72:1b:9a:d0:31:21:4a:ba +# Subject: CN=D-Trust SBR Root CA 2 2022,O=D-Trust GmbH,C=DE +# Not Valid Before: Thu Jul 07 07:30:00 2022 +# Not Valid After : Tue Jul 07 07:29:59 2037 +# Fingerprint (SHA-256): DB:A8:4D:D7:EF:62:2D:48:54:63:A9:01:37:EA:4D:57:4D:F8:55:09:28:F6:AF:A0:3B:4D:8B:11:41:E6:36:CC +# Fingerprint (SHA1): 27:FF:63:B9:EF:34:29:31:03:38:1A:D8:60:60:DA:CC:60:28:35:E1 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-Trust SBR Root CA 2 2022" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\111\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\043\060\041\006\003\125\004\003\023 +\032\104\055\124\162\165\163\164\040\123\102\122\040\122\157\157 +\164\040\103\101\040\062\040\062\060\062\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\111\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\043\060\041\006\003\125\004\003\023 +\032\104\055\124\162\165\163\164\040\123\102\122\040\122\157\157 +\164\040\103\101\040\062\040\062\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\124\325\243\225\036\075\225\272\162\033\232\320\061\041 +\112\272 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\254\060\202\003\224\240\003\002\001\002\002\020\124 +\325\243\225\036\075\225\272\162\033\232\320\061\041\112\272\060 +\015\006\011\052\206\110\206\367\015\001\001\015\005\000\060\111 +\061\013\060\011\006\003\125\004\006\023\002\104\105\061\025\060 +\023\006\003\125\004\012\023\014\104\055\124\162\165\163\164\040 +\107\155\142\110\061\043\060\041\006\003\125\004\003\023\032\104 +\055\124\162\165\163\164\040\123\102\122\040\122\157\157\164\040 +\103\101\040\062\040\062\060\062\062\060\036\027\015\062\062\060 +\067\060\067\060\067\063\060\060\060\132\027\015\063\067\060\067 +\060\067\060\067\062\071\065\071\132\060\111\061\013\060\011\006 +\003\125\004\006\023\002\104\105\061\025\060\023\006\003\125\004 +\012\023\014\104\055\124\162\165\163\164\040\107\155\142\110\061 +\043\060\041\006\003\125\004\003\023\032\104\055\124\162\165\163 +\164\040\123\102\122\040\122\157\157\164\040\103\101\040\062\040 +\062\060\062\062\060\202\002\042\060\015\006\011\052\206\110\206 +\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002\012 +\002\202\002\001\000\257\054\274\216\066\214\353\144\257\121\152 +\326\156\074\136\221\072\352\232\303\312\154\373\252\047\236\144 +\042\251\100\337\271\050\105\132\354\123\141\026\050\230\302\212 +\244\165\170\120\204\335\372\040\110\222\007\145\101\065\146\121 +\022\164\141\235\007\006\205\071\061\127\173\050\077\325\234\245 +\354\132\351\034\113\047\237\316\047\006\363\067\365\122\330\021 +\063\026\101\072\037\365\143\170\145\143\206\311\277\310\001\004 +\037\156\356\342\354\254\014\356\202\222\342\366\032\015\077\071 +\371\235\145\223\255\370\271\005\301\075\370\067\201\126\303\240 +\376\005\354\340\224\026\072\043\026\004\332\246\012\223\205\162 +\155\141\073\241\215\105\326\343\177\276\025\275\066\204\010\366 +\013\203\153\046\252\242\275\340\260\347\252\340\256\147\304\323 +\202\245\014\251\244\360\063\171\015\120\077\360\357\220\075\044 +\271\177\322\040\154\352\227\363\277\234\334\107\336\011\141\275 +\224\171\225\132\002\166\065\140\304\107\042\015\367\166\143\003 +\323\306\373\203\306\135\253\255\355\151\045\053\003\133\115\045 +\000\101\343\214\207\027\122\250\340\005\053\103\115\024\023\312 +\347\077\103\042\274\067\244\165\361\366\277\072\357\062\036\256 +\356\130\206\220\162\272\004\254\100\110\357\134\304\170\247\251 +\217\047\132\313\172\354\130\362\302\010\130\220\155\115\003\205 +\171\161\025\005\016\116\076\371\337\017\005\367\137\024\110\126 +\041\015\063\222\261\254\214\345\030\376\277\017\356\340\004\252 +\275\041\362\130\266\134\211\012\213\030\011\042\032\263\065\306 +\146\302\365\063\025\231\200\340\010\371\226\057\023\214\356\332 +\267\210\304\351\067\265\327\152\327\072\204\115\253\160\214\323 +\116\024\125\240\242\020\374\144\332\147\350\361\313\063\335\311 +\232\212\217\226\057\130\201\331\370\232\000\103\314\220\373\125 +\166\373\206\343\067\001\050\014\157\364\351\131\115\025\167\121 +\102\112\314\064\270\200\103\120\201\357\127\245\023\333\247\224 +\171\017\113\312\176\027\175\257\243\041\144\350\161\125\126\217 +\006\260\107\354\131\017\135\160\133\054\026\102\360\206\236\165 +\336\153\115\110\230\204\342\127\030\266\234\202\231\145\072\213 +\200\170\127\014\111\002\003\001\000\001\243\201\217\060\201\214 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\035\006\003\125\035\016\004\026\004\024\135\263\200\224 +\033\345\206\277\150\272\024\064\244\366\356\155\362\335\337\347 +\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001\006 +\060\112\006\003\125\035\037\004\103\060\101\060\077\240\075\240 +\073\206\071\150\164\164\160\072\057\057\143\162\154\056\144\055 +\164\162\165\163\164\056\156\145\164\057\143\162\154\057\144\055 +\164\162\165\163\164\137\163\142\162\137\162\157\157\164\137\143 +\141\137\062\137\062\060\062\062\056\143\162\154\060\015\006\011 +\052\206\110\206\367\015\001\001\015\005\000\003\202\002\001\000 +\064\124\056\130\030\126\315\112\275\227\323\365\175\053\334\257 +\017\121\341\115\274\041\113\223\364\000\104\023\007\020\013\045 +\030\076\110\131\226\367\241\341\223\220\170\146\032\075\043\353 +\042\253\001\246\216\014\121\063\346\155\214\061\356\254\244\001 +\160\071\110\336\307\146\054\153\015\313\163\237\207\222\351\076 +\107\037\270\357\057\356\267\126\214\110\211\360\070\247\025\071 +\262\356\300\077\027\244\163\002\010\234\274\006\212\244\302\267 +\141\141\371\303\333\304\320\172\174\141\336\261\130\221\365\335 +\145\114\057\013\370\353\075\265\355\212\276\167\034\272\131\002 +\022\146\161\345\230\047\316\016\075\257\121\242\105\371\202\373 +\132\245\224\160\367\213\204\303\114\145\045\233\173\342\037\060 +\160\263\100\216\072\356\275\364\347\150\305\235\311\051\107\161 +\016\223\310\265\110\116\365\146\273\007\210\161\151\153\173\110 +\216\157\360\021\304\264\311\160\024\230\040\275\355\247\352\001 +\332\156\245\233\022\376\076\104\060\263\360\353\165\122\300\364 +\303\372\167\046\244\167\202\055\157\363\050\036\116\225\360\060 +\367\211\370\054\242\120\133\362\276\062\176\154\124\333\162\311 +\052\132\340\034\266\013\330\122\232\131\241\343\260\001\047\305 +\240\026\120\146\334\353\256\155\364\233\133\075\204\155\133\207 +\347\251\211\273\156\270\340\233\123\211\300\377\056\100\032\211 +\104\056\030\103\147\070\344\174\162\137\331\243\051\045\101\101 +\075\034\167\033\144\250\303\125\356\143\161\146\142\203\364\177 +\046\231\240\124\073\241\022\155\160\142\316\323\371\270\275\042 +\374\324\232\324\273\342\070\026\057\267\175\071\302\260\251\003 +\351\234\317\176\030\215\166\334\137\021\273\353\102\354\120\011 +\076\134\354\220\061\330\032\162\272\077\151\007\356\230\064\302 +\064\244\326\332\023\326\251\204\362\000\206\300\124\272\036\021 +\260\342\271\304\007\264\221\347\252\346\061\126\157\261\104\304 +\052\142\274\311\260\145\234\064\374\014\032\123\337\041\027\273 +\302\155\241\012\346\361\260\252\104\011\120\111\070\172\135\161 +\342\061\056\031\260\337\225\102\004\175\204\210\316\012\043\147 +\153\070\235\026\336\006\376\050\160\070\245\132\256\374\203\355 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "D-Trust SBR Root CA 2 2022" +# Issuer: CN=D-Trust SBR Root CA 2 2022,O=D-Trust GmbH,C=DE +# Serial Number:54:d5:a3:95:1e:3d:95:ba:72:1b:9a:d0:31:21:4a:ba +# Subject: CN=D-Trust SBR Root CA 2 2022,O=D-Trust GmbH,C=DE +# Not Valid Before: Thu Jul 07 07:30:00 2022 +# Not Valid After : Tue Jul 07 07:29:59 2037 +# Fingerprint (SHA-256): DB:A8:4D:D7:EF:62:2D:48:54:63:A9:01:37:EA:4D:57:4D:F8:55:09:28:F6:AF:A0:3B:4D:8B:11:41:E6:36:CC +# Fingerprint (SHA1): 27:FF:63:B9:EF:34:29:31:03:38:1A:D8:60:60:DA:CC:60:28:35:E1 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "D-Trust SBR Root CA 2 2022" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\047\377\143\271\357\064\051\061\003\070\032\330\140\140\332\314 +\140\050\065\341 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\220\361\364\053\074\247\312\112\210\073\005\053\010\124\205\336 +END +CKA_ISSUER MULTILINE_OCTAL +\060\111\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\025\060\023\006\003\125\004\012\023\014\104\055\124\162\165\163 +\164\040\107\155\142\110\061\043\060\041\006\003\125\004\003\023 +\032\104\055\124\162\165\163\164\040\123\102\122\040\122\157\157 +\164\040\103\101\040\062\040\062\060\062\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\124\325\243\225\036\075\225\272\162\033\232\320\061\041 +\112\272 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Telekom Security SMIME ECC Root 2021" +# +# Issuer: CN=Telekom Security SMIME ECC Root 2021,O=Deutsche Telekom Security GmbH,C=DE +# Serial Number:15:2a:dd:14:c9:18:d1:a4:56:40:86:a6:25:af:07:5f +# Subject: CN=Telekom Security SMIME ECC Root 2021,O=Deutsche Telekom Security GmbH,C=DE +# Not Valid Before: Thu Mar 18 11:08:30 2021 +# Not Valid After : Sat Mar 17 23:59:59 2046 +# Fingerprint (SHA-256): 3A:E6:DF:7E:0D:63:7A:65:A8:C8:16:12:EC:6F:9A:14:2F:85:A1:68:34:C1:02:80:D8:8E:70:70:28:51:87:55 +# Fingerprint (SHA1): B7:F9:1D:98:EC:25:93:F3:50:14:84:9A:A8:7E:22:10:3C:C4:39:27 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telekom Security SMIME ECC Root 2021" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\055\060\053\006\003\125\004 +\003\014\044\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\123\115\111\115\105\040\105\103\103\040\122\157 +\157\164\040\062\060\062\061 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\055\060\053\006\003\125\004 +\003\014\044\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\123\115\111\115\105\040\105\103\103\040\122\157 +\157\164\040\062\060\062\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\025\052\335\024\311\030\321\244\126\100\206\246\045\257 +\007\137 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\107\060\202\001\315\240\003\002\001\002\002\020\025 +\052\335\024\311\030\321\244\126\100\206\246\045\257\007\137\060 +\012\006\010\052\206\110\316\075\004\003\003\060\145\061\013\060 +\011\006\003\125\004\006\023\002\104\105\061\047\060\045\006\003 +\125\004\012\014\036\104\145\165\164\163\143\150\145\040\124\145 +\154\145\153\157\155\040\123\145\143\165\162\151\164\171\040\107 +\155\142\110\061\055\060\053\006\003\125\004\003\014\044\124\145 +\154\145\153\157\155\040\123\145\143\165\162\151\164\171\040\123 +\115\111\115\105\040\105\103\103\040\122\157\157\164\040\062\060 +\062\061\060\036\027\015\062\061\060\063\061\070\061\061\060\070 +\063\060\132\027\015\064\066\060\063\061\067\062\063\065\071\065 +\071\132\060\145\061\013\060\011\006\003\125\004\006\023\002\104 +\105\061\047\060\045\006\003\125\004\012\014\036\104\145\165\164 +\163\143\150\145\040\124\145\154\145\153\157\155\040\123\145\143 +\165\162\151\164\171\040\107\155\142\110\061\055\060\053\006\003 +\125\004\003\014\044\124\145\154\145\153\157\155\040\123\145\143 +\165\162\151\164\171\040\123\115\111\115\105\040\105\103\103\040 +\122\157\157\164\040\062\060\062\061\060\166\060\020\006\007\052 +\206\110\316\075\002\001\006\005\053\201\004\000\042\003\142\000 +\004\260\031\217\242\153\265\307\315\017\060\231\067\014\303\140 +\133\361\361\047\040\125\075\300\222\213\253\127\241\157\163\203 +\041\302\103\023\014\136\211\252\307\005\065\171\223\142\220\326 +\135\023\037\321\172\240\274\236\020\247\146\174\106\012\260\127 +\154\277\346\124\071\070\041\154\022\134\161\314\323\132\137\155 +\267\247\206\337\263\337\356\302\347\211\101\226\065\366\057\112 +\265\243\102\060\100\060\035\006\003\125\035\016\004\026\004\024 +\053\313\001\014\143\303\123\022\245\250\127\257\320\234\203\373 +\275\220\072\113\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\016\006\003\125\035\017\001\001\377\004 +\004\003\002\001\006\060\012\006\010\052\206\110\316\075\004\003 +\003\003\150\000\060\145\002\061\000\326\274\110\222\207\107\003 +\307\160\073\045\266\037\256\106\147\163\164\000\047\113\344\245 +\004\242\003\337\136\050\255\156\136\003\310\335\150\234\266\277 +\224\020\110\225\057\017\377\030\213\002\060\001\100\063\236\227 +\227\115\005\362\164\124\014\315\071\375\152\153\011\301\044\077 +\141\216\070\241\267\350\327\104\025\021\142\377\016\141\067\107 +\113\100\177\112\137\262\147\132\163\165\302 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Telekom Security SMIME ECC Root 2021" +# Issuer: CN=Telekom Security SMIME ECC Root 2021,O=Deutsche Telekom Security GmbH,C=DE +# Serial Number:15:2a:dd:14:c9:18:d1:a4:56:40:86:a6:25:af:07:5f +# Subject: CN=Telekom Security SMIME ECC Root 2021,O=Deutsche Telekom Security GmbH,C=DE +# Not Valid Before: Thu Mar 18 11:08:30 2021 +# Not Valid After : Sat Mar 17 23:59:59 2046 +# Fingerprint (SHA-256): 3A:E6:DF:7E:0D:63:7A:65:A8:C8:16:12:EC:6F:9A:14:2F:85:A1:68:34:C1:02:80:D8:8E:70:70:28:51:87:55 +# Fingerprint (SHA1): B7:F9:1D:98:EC:25:93:F3:50:14:84:9A:A8:7E:22:10:3C:C4:39:27 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telekom Security SMIME ECC Root 2021" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\267\371\035\230\354\045\223\363\120\024\204\232\250\176\042\020 +\074\304\071\047 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\165\275\136\355\174\015\146\076\007\244\233\274\002\007\330\264 +END +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\055\060\053\006\003\125\004 +\003\014\044\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\123\115\111\115\105\040\105\103\103\040\122\157 +\157\164\040\062\060\062\061 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\025\052\335\024\311\030\321\244\126\100\206\246\045\257 +\007\137 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Telekom Security TLS ECC Root 2020" +# +# Issuer: CN=Telekom Security TLS ECC Root 2020,O=Deutsche Telekom Security GmbH,C=DE +# Serial Number:36:3a:96:8c:c9:5c:b2:58:cd:d0:01:5d:c5:e5:57:00 +# Subject: CN=Telekom Security TLS ECC Root 2020,O=Deutsche Telekom Security GmbH,C=DE +# Not Valid Before: Tue Aug 25 07:48:20 2020 +# Not Valid After : Fri Aug 25 23:59:59 2045 +# Fingerprint (SHA-256): 57:8A:F4:DE:D0:85:3F:4E:59:98:DB:4A:EA:F9:CB:EA:8D:94:5F:60:B6:20:A3:8D:1A:3C:13:B2:BC:7B:A8:E1 +# Fingerprint (SHA1): C0:F8:96:C5:A9:3B:01:06:21:07:DA:18:42:48:BC:E9:9D:88:D5:EC +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telekom Security TLS ECC Root 2020" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\143\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\053\060\051\006\003\125\004 +\003\014\042\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\124\114\123\040\105\103\103\040\122\157\157\164 +\040\062\060\062\060 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\143\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\053\060\051\006\003\125\004 +\003\014\042\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\124\114\123\040\105\103\103\040\122\157\157\164 +\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\066\072\226\214\311\134\262\130\315\320\001\135\305\345 +\127\000 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\102\060\202\001\311\240\003\002\001\002\002\020\066 +\072\226\214\311\134\262\130\315\320\001\135\305\345\127\000\060 +\012\006\010\052\206\110\316\075\004\003\003\060\143\061\013\060 +\011\006\003\125\004\006\023\002\104\105\061\047\060\045\006\003 +\125\004\012\014\036\104\145\165\164\163\143\150\145\040\124\145 +\154\145\153\157\155\040\123\145\143\165\162\151\164\171\040\107 +\155\142\110\061\053\060\051\006\003\125\004\003\014\042\124\145 +\154\145\153\157\155\040\123\145\143\165\162\151\164\171\040\124 +\114\123\040\105\103\103\040\122\157\157\164\040\062\060\062\060 +\060\036\027\015\062\060\060\070\062\065\060\067\064\070\062\060 +\132\027\015\064\065\060\070\062\065\062\063\065\071\065\071\132 +\060\143\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\053\060\051\006\003\125\004 +\003\014\042\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\124\114\123\040\105\103\103\040\122\157\157\164 +\040\062\060\062\060\060\166\060\020\006\007\052\206\110\316\075 +\002\001\006\005\053\201\004\000\042\003\142\000\004\316\277\376 +\127\250\277\325\252\367\020\232\315\274\321\021\242\275\147\102 +\314\220\353\025\030\220\331\242\315\014\052\045\353\076\117\316 +\265\322\217\017\363\065\332\103\213\002\200\276\157\121\044\035 +\017\153\053\312\237\302\157\120\062\345\067\040\266\040\377\210 +\015\017\155\111\273\333\006\244\207\220\222\224\364\011\320\317 +\177\310\200\013\301\227\263\273\065\047\311\302\033\243\102\060 +\100\060\035\006\003\125\035\016\004\026\004\024\343\162\314\156 +\225\231\107\261\346\263\141\114\321\313\253\343\272\315\336\237 +\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001\001 +\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002\001 +\006\060\012\006\010\052\206\110\316\075\004\003\003\003\147\000 +\060\144\002\060\165\122\213\267\244\020\117\256\112\020\213\262 +\204\133\102\341\346\052\066\002\332\240\156\031\077\045\277\332 +\131\062\216\344\373\220\334\223\144\316\255\264\101\107\140\342 +\317\247\313\036\002\060\067\101\214\146\337\101\153\326\203\000 +\101\375\057\132\367\120\264\147\321\054\250\161\327\103\312\234 +\047\044\221\203\110\015\317\315\367\124\201\257\354\177\344\147 +\333\270\220\356\335\045 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Telekom Security TLS ECC Root 2020" +# Issuer: CN=Telekom Security TLS ECC Root 2020,O=Deutsche Telekom Security GmbH,C=DE +# Serial Number:36:3a:96:8c:c9:5c:b2:58:cd:d0:01:5d:c5:e5:57:00 +# Subject: CN=Telekom Security TLS ECC Root 2020,O=Deutsche Telekom Security GmbH,C=DE +# Not Valid Before: Tue Aug 25 07:48:20 2020 +# Not Valid After : Fri Aug 25 23:59:59 2045 +# Fingerprint (SHA-256): 57:8A:F4:DE:D0:85:3F:4E:59:98:DB:4A:EA:F9:CB:EA:8D:94:5F:60:B6:20:A3:8D:1A:3C:13:B2:BC:7B:A8:E1 +# Fingerprint (SHA1): C0:F8:96:C5:A9:3B:01:06:21:07:DA:18:42:48:BC:E9:9D:88:D5:EC +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telekom Security TLS ECC Root 2020" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\300\370\226\305\251\073\001\006\041\007\332\030\102\110\274\351 +\235\210\325\354 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\301\253\376\152\020\054\003\215\274\034\042\062\300\205\247\375 +END +CKA_ISSUER MULTILINE_OCTAL +\060\143\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\053\060\051\006\003\125\004 +\003\014\042\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\124\114\123\040\105\103\103\040\122\157\157\164 +\040\062\060\062\060 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\066\072\226\214\311\134\262\130\315\320\001\135\305\345 +\127\000 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Telekom Security SMIME RSA Root 2023" +# +# Issuer: CN=Telekom Security SMIME RSA Root 2023,O=Deutsche Telekom Security GmbH,C=DE +# Serial Number:0c:7e:62:f5:79:73:3b:9d:43:8e:8b:63:ed:91:95:b8 +# Subject: CN=Telekom Security SMIME RSA Root 2023,O=Deutsche Telekom Security GmbH,C=DE +# Not Valid Before: Tue Mar 28 12:09:22 2023 +# Not Valid After : Fri Mar 27 23:59:59 2048 +# Fingerprint (SHA-256): 78:A6:56:34:4F:94:7E:9C:C0:F7:34:D9:05:3D:32:F6:74:20:86:B6:B9:CD:2C:AE:4F:AE:1A:2E:4E:FD:E0:48 +# Fingerprint (SHA1): 89:3F:6F:1C:E2:4D:7F:FB:C3:D3:14:7A:05:80:A7:DE:E1:0A:5E:4D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telekom Security SMIME RSA Root 2023" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\055\060\053\006\003\125\004 +\003\014\044\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\123\115\111\115\105\040\122\123\101\040\122\157 +\157\164\040\062\060\062\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\055\060\053\006\003\125\004 +\003\014\044\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\123\115\111\115\105\040\122\123\101\040\122\157 +\157\164\040\062\060\062\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\014\176\142\365\171\163\073\235\103\216\213\143\355\221 +\225\270 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\267\060\202\003\237\240\003\002\001\002\002\020\014 +\176\142\365\171\163\073\235\103\216\213\143\355\221\225\270\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\145 +\061\013\060\011\006\003\125\004\006\023\002\104\105\061\047\060 +\045\006\003\125\004\012\014\036\104\145\165\164\163\143\150\145 +\040\124\145\154\145\153\157\155\040\123\145\143\165\162\151\164 +\171\040\107\155\142\110\061\055\060\053\006\003\125\004\003\014 +\044\124\145\154\145\153\157\155\040\123\145\143\165\162\151\164 +\171\040\123\115\111\115\105\040\122\123\101\040\122\157\157\164 +\040\062\060\062\063\060\036\027\015\062\063\060\063\062\070\061 +\062\060\071\062\062\132\027\015\064\070\060\063\062\067\062\063 +\065\071\065\071\132\060\145\061\013\060\011\006\003\125\004\006 +\023\002\104\105\061\047\060\045\006\003\125\004\012\014\036\104 +\145\165\164\163\143\150\145\040\124\145\154\145\153\157\155\040 +\123\145\143\165\162\151\164\171\040\107\155\142\110\061\055\060 +\053\006\003\125\004\003\014\044\124\145\154\145\153\157\155\040 +\123\145\143\165\162\151\164\171\040\123\115\111\115\105\040\122 +\123\101\040\122\157\157\164\040\062\060\062\063\060\202\002\042 +\060\015\006\011\052\206\110\206\367\015\001\001\001\005\000\003 +\202\002\017\000\060\202\002\012\002\202\002\001\000\357\305\016 +\213\276\062\322\147\107\377\012\114\147\263\052\277\310\303\305 +\221\353\265\307\036\221\341\146\250\210\213\125\040\200\037\121 +\136\167\227\236\031\012\134\307\153\067\041\174\003\066\001\364 +\210\045\331\250\056\101\252\374\330\046\340\226\100\142\171\256 +\127\236\003\070\032\034\262\167\024\076\351\241\162\320\344\340 +\067\321\027\106\355\120\134\172\130\305\370\053\367\165\057\317 +\201\236\132\054\267\072\254\240\131\230\004\121\014\377\111\305 +\120\375\036\323\107\205\113\063\117\242\067\265\257\004\232\047 +\062\235\126\325\077\125\141\343\213\157\256\121\376\227\376\151 +\007\372\142\133\046\346\024\171\025\245\023\070\256\137\067\276 +\224\112\326\015\200\026\151\244\221\262\072\111\230\165\235\106 +\020\212\134\172\177\204\245\350\257\036\307\253\263\132\106\265 +\243\113\365\246\043\066\000\106\261\333\005\266\033\316\236\172 +\062\134\232\325\162\303\235\206\115\053\204\323\036\265\210\332 +\020\170\234\042\303\073\043\265\353\023\007\275\157\123\354\233 +\354\233\323\145\365\007\011\343\135\247\231\265\176\206\216\325 +\002\377\267\205\011\343\107\024\335\226\146\030\064\336\010\325 +\337\313\030\231\142\013\053\354\000\135\122\104\323\306\226\374 +\062\126\045\221\317\315\031\073\225\071\076\002\207\231\143\266 +\325\076\064\172\017\021\165\201\274\175\004\312\140\264\050\165 +\327\002\121\335\122\000\056\307\375\211\361\134\363\313\244\047 +\022\070\217\273\373\211\360\344\304\070\054\276\202\240\161\141 +\142\221\217\110\014\057\053\251\260\361\313\020\004\347\164\277 +\067\220\357\117\052\103\065\227\022\306\052\160\015\336\054\125 +\107\171\143\051\365\312\037\152\006\122\034\256\055\044\042\203 +\042\257\320\252\060\267\052\037\377\145\043\130\145\223\310\216 +\175\100\020\061\206\170\331\125\313\074\060\360\336\121\052\000 +\066\322\047\105\137\330\350\241\041\075\176\106\126\073\051\105 +\361\035\005\011\316\266\103\060\334\105\220\020\060\114\244\153 +\206\213\077\075\057\061\221\161\357\046\271\366\276\235\260\154 +\337\021\356\130\077\103\171\206\071\200\361\046\027\007\230\360 +\231\252\060\054\103\131\024\316\355\342\100\023\205\002\003\001 +\000\001\243\143\060\141\060\016\006\003\125\035\017\001\001\377 +\004\004\003\002\001\006\060\035\006\003\125\035\016\004\026\004 +\024\232\316\254\052\354\001\372\145\160\336\227\235\361\322\000 +\214\245\243\144\273\060\017\006\003\125\035\023\001\001\377\004 +\005\060\003\001\001\377\060\037\006\003\125\035\043\004\030\060 +\026\200\024\232\316\254\052\354\001\372\145\160\336\227\235\361 +\322\000\214\245\243\144\273\060\015\006\011\052\206\110\206\367 +\015\001\001\014\005\000\003\202\002\001\000\343\120\375\365\100 +\026\042\011\226\072\015\251\357\201\347\056\062\360\241\361\111 +\136\173\210\015\004\162\327\276\147\250\272\035\356\120\273\162 +\156\172\321\273\014\162\060\106\310\325\327\002\022\026\231\116 +\036\337\132\226\356\217\221\276\256\206\370\020\167\245\304\156 +\107\141\300\362\046\331\117\141\150\005\110\165\010\025\245\241 +\173\325\270\263\211\171\346\355\361\363\141\000\206\173\056\061 +\376\243\134\370\171\075\264\133\210\173\340\043\273\015\241\027 +\372\313\150\015\230\167\161\010\342\155\103\164\153\304\066\305 +\224\101\244\000\326\127\055\231\212\213\040\022\025\002\062\016 +\322\111\354\201\110\305\152\047\122\327\262\163\125\123\226\074 +\236\117\114\265\240\320\117\127\320\147\050\110\144\276\306\270 +\272\354\144\317\310\173\305\152\347\052\346\131\127\266\326\324 +\326\300\147\134\331\236\050\011\100\277\363\251\065\061\145\140 +\003\313\031\154\202\225\003\036\137\077\341\275\352\111\161\345 +\133\267\013\107\026\033\040\211\155\224\231\014\176\210\154\035 +\015\364\267\041\032\131\227\254\313\350\276\027\037\225\174\123 +\233\257\120\122\252\215\013\056\257\132\327\140\362\052\151\052 +\271\356\124\160\030\252\275\365\241\077\322\335\241\143\031\000 +\370\247\014\353\243\171\362\160\131\243\370\242\022\003\354\023 +\377\344\002\206\066\327\301\303\244\265\324\244\302\067\105\266 +\224\160\075\305\275\353\243\025\035\343\066\172\025\151\052\126 +\064\071\317\245\232\066\252\310\355\171\274\317\366\316\004\123 +\013\332\262\120\043\174\274\076\046\255\360\016\103\273\046\313 +\256\302\100\336\067\037\012\240\121\315\143\235\266\117\330\306 +\107\174\274\330\264\355\236\213\363\021\342\250\265\076\354\256 +\160\076\176\042\273\065\110\027\140\142\024\221\060\243\166\075 +\246\121\066\213\037\015\335\152\061\034\245\355\335\226\243\156 +\162\017\023\115\252\247\251\134\170\371\003\022\030\223\067\105 +\022\211\075\370\276\312\275\331\276\014\331\030\144\247\310\101 +\076\165\202\041\070\175\145\364\240\324\023\113\007\170\051\371 +\235\176\314\207\077\304\332\056\210\335\343\013\334\132\121\132 +\351\331\022\117\236\002\333\367\005\045\121 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Telekom Security SMIME RSA Root 2023" +# Issuer: CN=Telekom Security SMIME RSA Root 2023,O=Deutsche Telekom Security GmbH,C=DE +# Serial Number:0c:7e:62:f5:79:73:3b:9d:43:8e:8b:63:ed:91:95:b8 +# Subject: CN=Telekom Security SMIME RSA Root 2023,O=Deutsche Telekom Security GmbH,C=DE +# Not Valid Before: Tue Mar 28 12:09:22 2023 +# Not Valid After : Fri Mar 27 23:59:59 2048 +# Fingerprint (SHA-256): 78:A6:56:34:4F:94:7E:9C:C0:F7:34:D9:05:3D:32:F6:74:20:86:B6:B9:CD:2C:AE:4F:AE:1A:2E:4E:FD:E0:48 +# Fingerprint (SHA1): 89:3F:6F:1C:E2:4D:7F:FB:C3:D3:14:7A:05:80:A7:DE:E1:0A:5E:4D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telekom Security SMIME RSA Root 2023" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\211\077\157\034\342\115\177\373\303\323\024\172\005\200\247\336 +\341\012\136\115 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\353\335\044\371\050\017\243\302\303\156\012\077\320\303\015\033 +END +CKA_ISSUER MULTILINE_OCTAL +\060\145\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\055\060\053\006\003\125\004 +\003\014\044\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\123\115\111\115\105\040\122\123\101\040\122\157 +\157\164\040\062\060\062\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\014\176\142\365\171\163\073\235\103\216\213\143\355\221 +\225\270 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "Telekom Security TLS RSA Root 2023" +# +# Issuer: CN=Telekom Security TLS RSA Root 2023,O=Deutsche Telekom Security GmbH,C=DE +# Serial Number:21:9c:54:2d:e8:f6:ec:71:77:fa:4e:e8:c3:70:57:97 +# Subject: CN=Telekom Security TLS RSA Root 2023,O=Deutsche Telekom Security GmbH,C=DE +# Not Valid Before: Tue Mar 28 12:16:45 2023 +# Not Valid After : Fri Mar 27 23:59:59 2048 +# Fingerprint (SHA-256): EF:C6:5C:AD:BB:59:AD:B6:EF:E8:4D:A2:23:11:B3:56:24:B7:1B:3B:1E:A0:DA:8B:66:55:17:4E:C8:97:86:46 +# Fingerprint (SHA1): 54:D3:AC:B3:BD:57:56:F6:85:9D:CE:E5:C3:21:E2:D4:AD:83:D0:93 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telekom Security TLS RSA Root 2023" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\143\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\053\060\051\006\003\125\004 +\003\014\042\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\124\114\123\040\122\123\101\040\122\157\157\164 +\040\062\060\062\063 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\143\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\053\060\051\006\003\125\004 +\003\014\042\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\124\114\123\040\122\123\101\040\122\157\157\164 +\040\062\060\062\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\041\234\124\055\350\366\354\161\167\372\116\350\303\160 +\127\227 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\263\060\202\003\233\240\003\002\001\002\002\020\041 +\234\124\055\350\366\354\161\167\372\116\350\303\160\127\227\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\143 +\061\013\060\011\006\003\125\004\006\023\002\104\105\061\047\060 +\045\006\003\125\004\012\014\036\104\145\165\164\163\143\150\145 +\040\124\145\154\145\153\157\155\040\123\145\143\165\162\151\164 +\171\040\107\155\142\110\061\053\060\051\006\003\125\004\003\014 +\042\124\145\154\145\153\157\155\040\123\145\143\165\162\151\164 +\171\040\124\114\123\040\122\123\101\040\122\157\157\164\040\062 +\060\062\063\060\036\027\015\062\063\060\063\062\070\061\062\061 +\066\064\065\132\027\015\064\070\060\063\062\067\062\063\065\071 +\065\071\132\060\143\061\013\060\011\006\003\125\004\006\023\002 +\104\105\061\047\060\045\006\003\125\004\012\014\036\104\145\165 +\164\163\143\150\145\040\124\145\154\145\153\157\155\040\123\145 +\143\165\162\151\164\171\040\107\155\142\110\061\053\060\051\006 +\003\125\004\003\014\042\124\145\154\145\153\157\155\040\123\145 +\143\165\162\151\164\171\040\124\114\123\040\122\123\101\040\122 +\157\157\164\040\062\060\062\063\060\202\002\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 +\060\202\002\012\002\202\002\001\000\355\065\241\201\200\363\313 +\112\151\133\302\373\121\203\256\046\375\341\156\363\201\022\175 +\161\100\377\207\165\102\051\041\355\201\122\054\337\022\301\031 +\204\211\301\275\305\050\325\325\113\154\104\326\114\333\007\226 +\112\125\172\312\066\202\004\066\250\245\374\047\366\111\361\325 +\162\236\221\371\043\326\160\173\273\365\233\301\354\223\317\031 +\352\145\176\210\160\240\163\374\366\377\265\126\142\341\163\152 +\064\230\076\202\270\254\225\123\364\001\240\047\007\162\243\000 +\123\240\344\262\253\203\070\127\063\045\224\237\276\110\035\230 +\341\243\272\236\134\315\004\161\121\175\165\170\253\363\131\252 +\304\340\140\276\217\203\122\270\165\032\101\065\355\274\363\072 +\143\351\251\024\105\327\346\122\321\156\322\336\274\343\365\013 +\073\346\340\304\275\103\144\023\246\316\364\230\067\154\212\225 +\250\227\310\107\017\360\136\020\213\347\035\034\376\261\073\240 +\005\063\150\005\101\202\301\003\053\001\310\347\217\115\253\350 +\265\366\315\153\104\265\347\335\213\354\352\045\264\000\042\127 +\115\260\261\262\061\301\026\316\377\375\024\204\267\107\372\262 +\361\160\336\333\213\154\066\130\244\174\263\021\321\303\167\177 +\137\266\045\340\015\305\322\263\371\270\270\167\333\067\161\161 +\107\343\140\030\117\044\266\165\067\170\271\243\142\257\275\311 +\162\216\057\314\273\256\333\344\025\122\031\007\063\373\152\267 +\055\113\220\050\202\163\376\030\213\065\215\333\247\004\152\276 +\352\301\115\066\073\026\066\221\062\357\266\100\211\221\103\340 +\362\242\253\004\056\346\362\114\016\026\064\040\254\207\301\055 +\176\311\146\107\027\024\021\244\363\367\241\044\211\253\330\032 +\310\241\134\261\243\367\214\155\310\001\311\117\311\354\304\374 +\254\121\063\321\310\203\321\311\237\035\324\107\064\051\076\313 +\260\016\372\203\013\050\130\345\051\334\077\174\250\237\311\266 +\012\273\246\350\106\026\017\226\345\173\344\152\172\110\155\166 +\230\005\245\334\155\036\102\036\102\332\032\340\122\367\265\203 +\300\032\173\170\065\054\070\365\037\375\111\243\056\322\131\143 +\277\200\260\214\223\163\313\065\246\231\225\042\141\145\003\140 +\373\057\223\113\372\232\234\200\073\002\003\001\000\001\243\143 +\060\141\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\006\060\035\006\003\125\035\016\004\026\004\024\266\247\227 +\202\075\164\205\233\367\074\237\223\232\225\171\165\122\214\155 +\107\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\037\006\003\125\035\043\004\030\060\026\200\024\266 +\247\227\202\075\164\205\233\367\074\237\223\232\225\171\165\122 +\214\155\107\060\015\006\011\052\206\110\206\367\015\001\001\014 +\005\000\003\202\002\001\000\250\314\141\246\276\165\236\025\120 +\244\153\373\250\160\105\174\272\176\261\132\374\133\043\372\012 +\167\370\230\161\202\014\155\340\136\106\252\223\364\036\240\303 +\341\223\333\113\255\262\246\135\253\260\324\142\313\136\273\146 +\365\055\356\227\100\074\142\353\136\326\024\326\214\342\226\213 +\101\151\223\065\346\271\231\153\142\264\241\027\146\064\246\153 +\143\306\271\116\362\042\351\130\015\126\101\321\372\014\112\360 +\063\315\073\273\155\041\072\256\216\162\265\303\112\373\351\175 +\345\261\233\206\356\342\340\175\264\367\062\375\042\204\361\205 +\311\067\171\351\265\077\277\134\344\164\262\217\021\142\000\335 +\030\146\241\331\173\043\137\361\216\325\147\350\124\332\133\072 +\153\066\157\371\201\261\063\107\063\167\100\371\122\252\335\324 +\203\317\205\170\231\232\223\271\163\147\102\106\021\041\352\376 +\012\251\033\032\145\151\263\217\256\026\266\366\113\126\262\055 +\371\245\310\354\073\142\243\355\153\320\116\325\100\011\244\037 +\230\327\072\245\222\131\040\344\260\175\315\133\163\150\275\155 +\304\242\023\016\147\031\270\215\102\176\154\014\232\156\240\044 +\055\325\105\033\334\304\002\024\376\205\133\145\227\312\116\220 +\120\010\172\102\065\371\352\302\146\324\370\001\256\036\264\276 +\303\250\357\376\166\232\242\246\037\106\366\204\355\374\333\316 +\304\002\316\167\110\054\214\262\354\303\000\243\354\054\125\030 +\301\176\031\356\341\057\362\255\203\233\236\253\031\337\306\212 +\057\214\167\345\267\005\354\073\301\354\276\206\263\206\274\300 +\367\334\347\352\133\256\262\314\265\065\206\113\320\342\077\266 +\330\370\016\000\356\135\343\367\215\130\377\317\213\067\351\143 +\137\156\367\011\161\066\302\022\135\127\362\310\264\315\363\356 +\002\337\021\334\152\271\127\204\035\131\115\214\316\310\016\043 +\302\267\046\232\020\024\161\376\223\262\212\270\200\360\016\020 +\236\323\250\120\014\067\202\057\352\340\212\235\341\054\071\377 +\265\264\163\000\344\367\110\246\163\254\277\262\336\167\004\207 +\264\243\315\233\065\044\067\372\220\223\023\201\102\306\230\046 +\165\067\146\101\020\254\273\365\224\343\302\061\053\255\347\043 +\126\314\065\045\222\263\120 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "Telekom Security TLS RSA Root 2023" +# Issuer: CN=Telekom Security TLS RSA Root 2023,O=Deutsche Telekom Security GmbH,C=DE +# Serial Number:21:9c:54:2d:e8:f6:ec:71:77:fa:4e:e8:c3:70:57:97 +# Subject: CN=Telekom Security TLS RSA Root 2023,O=Deutsche Telekom Security GmbH,C=DE +# Not Valid Before: Tue Mar 28 12:16:45 2023 +# Not Valid After : Fri Mar 27 23:59:59 2048 +# Fingerprint (SHA-256): EF:C6:5C:AD:BB:59:AD:B6:EF:E8:4D:A2:23:11:B3:56:24:B7:1B:3B:1E:A0:DA:8B:66:55:17:4E:C8:97:86:46 +# Fingerprint (SHA1): 54:D3:AC:B3:BD:57:56:F6:85:9D:CE:E5:C3:21:E2:D4:AD:83:D0:93 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "Telekom Security TLS RSA Root 2023" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\124\323\254\263\275\127\126\366\205\235\316\345\303\041\342\324 +\255\203\320\223 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\277\133\353\124\100\315\110\161\304\040\215\175\336\012\102\362 +END +CKA_ISSUER MULTILINE_OCTAL +\060\143\061\013\060\011\006\003\125\004\006\023\002\104\105\061 +\047\060\045\006\003\125\004\012\014\036\104\145\165\164\163\143 +\150\145\040\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\107\155\142\110\061\053\060\051\006\003\125\004 +\003\014\042\124\145\154\145\153\157\155\040\123\145\143\165\162 +\151\164\171\040\124\114\123\040\122\123\101\040\122\157\157\164 +\040\062\060\062\063 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\041\234\124\055\350\366\354\161\167\372\116\350\303\160 +\127\227 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "FIRMAPROFESIONAL CA ROOT-A WEB" +# +# Issuer: CN=FIRMAPROFESIONAL CA ROOT-A WEB,OID.2.5.4.97=VATES-A62634068,O=Firmaprofesional SA,C=ES +# Serial Number:31:97:21:ed:af:89:42:7f:35:41:87:a1:67:56:4c:6d +# Subject: CN=FIRMAPROFESIONAL CA ROOT-A WEB,OID.2.5.4.97=VATES-A62634068,O=Firmaprofesional SA,C=ES +# Not Valid Before: Wed Apr 06 09:01:36 2022 +# Not Valid After : Sun Mar 31 09:01:36 2047 +# Fingerprint (SHA-256): BE:F2:56:DA:F2:6E:9C:69:BD:EC:16:02:35:97:98:F3:CA:F7:18:21:A0:3E:01:82:57:C5:3C:65:61:7F:3D:4A +# Fingerprint (SHA1): A8:31:11:74:A6:14:15:0D:CA:77:DD:0E:E4:0C:5D:58:FC:A0:72:A5 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "FIRMAPROFESIONAL CA ROOT-A WEB" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\156\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\034\060\032\006\003\125\004\012\014\023\106\151\162\155\141\160 +\162\157\146\145\163\151\157\156\141\154\040\123\101\061\030\060 +\026\006\003\125\004\141\014\017\126\101\124\105\123\055\101\066 +\062\066\063\064\060\066\070\061\047\060\045\006\003\125\004\003 +\014\036\106\111\122\115\101\120\122\117\106\105\123\111\117\116 +\101\114\040\103\101\040\122\117\117\124\055\101\040\127\105\102 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\156\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\034\060\032\006\003\125\004\012\014\023\106\151\162\155\141\160 +\162\157\146\145\163\151\157\156\141\154\040\123\101\061\030\060 +\026\006\003\125\004\141\014\017\126\101\124\105\123\055\101\066 +\062\066\063\064\060\066\070\061\047\060\045\006\003\125\004\003 +\014\036\106\111\122\115\101\120\122\117\106\105\123\111\117\116 +\101\114\040\103\101\040\122\117\117\124\055\101\040\127\105\102 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\061\227\041\355\257\211\102\177\065\101\207\241\147\126 +\114\155 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\172\060\202\002\000\240\003\002\001\002\002\020\061 +\227\041\355\257\211\102\177\065\101\207\241\147\126\114\155\060 +\012\006\010\052\206\110\316\075\004\003\003\060\156\061\013\060 +\011\006\003\125\004\006\023\002\105\123\061\034\060\032\006\003 +\125\004\012\014\023\106\151\162\155\141\160\162\157\146\145\163 +\151\157\156\141\154\040\123\101\061\030\060\026\006\003\125\004 +\141\014\017\126\101\124\105\123\055\101\066\062\066\063\064\060 +\066\070\061\047\060\045\006\003\125\004\003\014\036\106\111\122 +\115\101\120\122\117\106\105\123\111\117\116\101\114\040\103\101 +\040\122\117\117\124\055\101\040\127\105\102\060\036\027\015\062 +\062\060\064\060\066\060\071\060\061\063\066\132\027\015\064\067 +\060\063\063\061\060\071\060\061\063\066\132\060\156\061\013\060 +\011\006\003\125\004\006\023\002\105\123\061\034\060\032\006\003 +\125\004\012\014\023\106\151\162\155\141\160\162\157\146\145\163 +\151\157\156\141\154\040\123\101\061\030\060\026\006\003\125\004 +\141\014\017\126\101\124\105\123\055\101\066\062\066\063\064\060 +\066\070\061\047\060\045\006\003\125\004\003\014\036\106\111\122 +\115\101\120\122\117\106\105\123\111\117\116\101\114\040\103\101 +\040\122\117\117\124\055\101\040\127\105\102\060\166\060\020\006 +\007\052\206\110\316\075\002\001\006\005\053\201\004\000\042\003 +\142\000\004\107\123\352\054\021\244\167\307\052\352\363\326\137 +\173\323\004\221\134\372\210\306\042\271\203\020\142\167\204\063 +\055\351\003\210\324\340\063\367\355\167\054\112\140\352\344\157 +\255\155\264\370\114\212\244\344\037\312\352\117\070\112\056\202 +\163\053\307\146\233\012\214\100\234\174\212\366\362\071\140\262 +\336\313\354\270\344\157\352\233\135\267\123\220\030\062\125\305 +\040\267\224\243\143\060\141\060\017\006\003\125\035\023\001\001 +\377\004\005\060\003\001\001\377\060\037\006\003\125\035\043\004 +\030\060\026\200\024\223\341\103\143\134\074\235\326\047\363\122 +\354\027\262\251\257\054\367\166\370\060\035\006\003\125\035\016 +\004\026\004\024\223\341\103\143\134\074\235\326\047\363\122\354 +\027\262\251\257\054\367\166\370\060\016\006\003\125\035\017\001 +\001\377\004\004\003\002\001\006\060\012\006\010\052\206\110\316 +\075\004\003\003\003\150\000\060\145\002\060\035\174\244\173\303 +\211\165\063\341\073\251\105\277\106\351\351\241\335\311\042\026 +\267\107\021\013\330\232\272\361\310\013\160\120\123\002\221\160 +\205\131\251\036\244\346\352\043\061\240\000\002\061\000\375\342 +\370\263\257\026\271\036\163\304\226\343\301\060\031\330\176\346 +\303\227\336\034\117\270\211\057\063\353\110\017\031\367\207\106 +\135\046\220\245\205\305\271\172\224\076\207\250\275\000 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "FIRMAPROFESIONAL CA ROOT-A WEB" +# Issuer: CN=FIRMAPROFESIONAL CA ROOT-A WEB,OID.2.5.4.97=VATES-A62634068,O=Firmaprofesional SA,C=ES +# Serial Number:31:97:21:ed:af:89:42:7f:35:41:87:a1:67:56:4c:6d +# Subject: CN=FIRMAPROFESIONAL CA ROOT-A WEB,OID.2.5.4.97=VATES-A62634068,O=Firmaprofesional SA,C=ES +# Not Valid Before: Wed Apr 06 09:01:36 2022 +# Not Valid After : Sun Mar 31 09:01:36 2047 +# Fingerprint (SHA-256): BE:F2:56:DA:F2:6E:9C:69:BD:EC:16:02:35:97:98:F3:CA:F7:18:21:A0:3E:01:82:57:C5:3C:65:61:7F:3D:4A +# Fingerprint (SHA1): A8:31:11:74:A6:14:15:0D:CA:77:DD:0E:E4:0C:5D:58:FC:A0:72:A5 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "FIRMAPROFESIONAL CA ROOT-A WEB" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\250\061\021\164\246\024\025\015\312\167\335\016\344\014\135\130 +\374\240\162\245 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\202\262\255\105\000\202\260\146\143\370\137\303\147\116\316\243 +END +CKA_ISSUER MULTILINE_OCTAL +\060\156\061\013\060\011\006\003\125\004\006\023\002\105\123\061 +\034\060\032\006\003\125\004\012\014\023\106\151\162\155\141\160 +\162\157\146\145\163\151\157\156\141\154\040\123\101\061\030\060 +\026\006\003\125\004\141\014\017\126\101\124\105\123\055\101\066 +\062\066\063\064\060\066\070\061\047\060\045\006\003\125\004\003 +\014\036\106\111\122\115\101\120\122\117\106\105\123\111\117\116 +\101\114\040\103\101\040\122\117\117\124\055\101\040\127\105\102 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\061\227\041\355\257\211\102\177\065\101\207\241\147\126 +\114\155 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "TWCA CYBER Root CA" +# +# Issuer: CN=TWCA CYBER Root CA,OU=Root CA,O=TAIWAN-CA,C=TW +# Serial Number:40:01:34:8c:c2:00:00:00:00:00:00:00:01:3c:f2:c6 +# Subject: CN=TWCA CYBER Root CA,OU=Root CA,O=TAIWAN-CA,C=TW +# Not Valid Before: Tue Nov 22 06:54:29 2022 +# Not Valid After : Fri Nov 22 15:59:59 2047 +# Fingerprint (SHA-256): 3F:63:BB:28:14:BE:17:4E:C8:B6:43:9C:F0:8D:6D:56:F0:B7:C4:05:88:3A:56:48:A3:34:42:4D:6B:3E:C5:58 +# Fingerprint (SHA1): F6:B1:1C:1A:83:38:E9:7B:DB:B3:A8:C8:33:24:E0:2D:9C:7F:26:66 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TWCA CYBER Root CA" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\033\060\031\006\003\125\004\003\023\022 +\124\127\103\101\040\103\131\102\105\122\040\122\157\157\164\040 +\103\101 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\033\060\031\006\003\125\004\003\023\022 +\124\127\103\101\040\103\131\102\105\122\040\122\157\157\164\040 +\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\100\001\064\214\302\000\000\000\000\000\000\000\001\074 +\362\306 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\215\060\202\003\165\240\003\002\001\002\002\020\100 +\001\064\214\302\000\000\000\000\000\000\000\001\074\362\306\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\120 +\061\013\060\011\006\003\125\004\006\023\002\124\127\061\022\060 +\020\006\003\125\004\012\023\011\124\101\111\127\101\116\055\103 +\101\061\020\060\016\006\003\125\004\013\023\007\122\157\157\164 +\040\103\101\061\033\060\031\006\003\125\004\003\023\022\124\127 +\103\101\040\103\131\102\105\122\040\122\157\157\164\040\103\101 +\060\036\027\015\062\062\061\061\062\062\060\066\065\064\062\071 +\132\027\015\064\067\061\061\062\062\061\065\065\071\065\071\132 +\060\120\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\033\060\031\006\003\125\004\003\023\022 +\124\127\103\101\040\103\131\102\105\122\040\122\157\157\164\040 +\103\101\060\202\002\042\060\015\006\011\052\206\110\206\367\015 +\001\001\001\005\000\003\202\002\017\000\060\202\002\012\002\202 +\002\001\000\306\370\312\036\331\011\040\176\035\154\116\316\217 +\343\107\063\104\234\307\311\151\252\072\133\170\356\160\322\222 +\370\004\263\122\122\035\147\162\050\241\337\213\135\225\012\376 +\352\315\355\367\051\316\360\157\177\254\315\075\357\263\034\105 +\152\367\050\220\361\141\127\305\014\304\243\120\135\336\324\265 +\313\031\312\200\271\165\316\051\316\322\205\042\354\002\143\314 +\104\060\040\332\352\221\133\126\346\035\034\325\235\146\307\077 +\337\206\312\113\123\304\331\215\262\035\352\370\334\047\123\243 +\107\341\141\314\175\265\260\370\356\163\221\305\316\163\157\316 +\356\020\037\032\006\317\351\047\140\305\117\031\344\353\316\042 +\046\105\327\140\231\335\316\117\067\340\177\347\143\255\260\270 +\131\270\320\006\150\065\140\323\066\256\161\103\004\361\151\145 +\170\174\363\037\363\312\050\237\132\040\225\146\264\315\267\356 +\217\170\244\105\030\351\046\057\215\233\051\050\261\244\267\072 +\155\271\324\034\070\162\105\130\261\136\353\360\050\233\267\202 +\312\375\317\326\063\017\237\373\227\236\261\034\234\236\352\137 +\136\333\252\335\124\351\060\041\050\155\216\171\363\165\222\214 +\046\376\334\305\366\303\260\337\104\131\103\243\266\003\050\366 +\010\060\252\015\063\341\357\234\251\007\042\343\131\133\100\217 +\332\210\267\151\010\250\267\043\056\104\011\131\067\133\307\343 +\027\362\042\353\156\071\122\305\336\124\247\230\311\113\040\225 +\334\106\211\137\264\022\371\205\051\216\353\310\047\025\040\300 +\113\324\314\174\014\154\064\014\046\233\046\061\246\074\247\366 +\331\320\113\242\144\377\073\231\101\162\301\340\160\227\361\044 +\273\053\304\164\042\261\254\153\042\062\044\323\170\052\300\300 +\241\057\361\122\005\311\077\357\166\146\342\105\330\015\075\255 +\225\310\307\211\046\310\017\256\247\003\056\373\301\137\372\040 +\341\160\255\260\145\040\067\063\140\260\325\257\327\014\034\302 +\220\160\327\112\030\274\176\001\260\260\353\025\036\104\006\315 +\244\117\350\014\321\303\040\020\341\124\145\236\266\121\320\032 +\166\153\102\132\130\166\064\352\267\067\031\256\056\165\371\226 +\345\301\131\367\224\127\051\045\215\072\114\253\115\232\101\320 +\137\046\003\002\003\001\000\001\243\143\060\141\060\016\006\003 +\125\035\017\001\001\377\004\004\003\002\001\006\060\017\006\003 +\125\035\023\001\001\377\004\005\060\003\001\001\377\060\037\006 +\003\125\035\043\004\030\060\026\200\024\235\205\141\024\174\301 +\142\157\227\150\344\117\067\100\341\255\340\015\126\067\060\035 +\006\003\125\035\016\004\026\004\024\235\205\141\024\174\301\142 +\157\227\150\344\117\067\100\341\255\340\015\126\067\060\015\006 +\011\052\206\110\206\367\015\001\001\014\005\000\003\202\002\001 +\000\144\217\172\304\142\016\265\210\314\270\307\206\016\241\112 +\026\315\160\013\267\247\205\013\263\166\266\017\247\377\010\213 +\013\045\317\250\324\203\165\052\270\226\210\266\373\337\055\055 +\264\151\123\041\065\127\326\211\115\163\277\151\217\160\243\141 +\314\232\333\036\232\340\040\370\154\273\233\042\235\135\204\061 +\232\054\212\335\152\241\327\050\151\312\376\166\125\172\106\147 +\353\314\103\210\026\242\003\326\271\027\370\031\154\155\043\002 +\177\361\137\320\012\051\043\073\321\252\012\355\251\027\046\124 +\012\115\302\245\115\370\305\375\270\201\317\053\054\170\243\147 +\114\251\007\232\363\337\136\373\174\365\211\315\164\227\141\020 +\152\007\053\201\132\322\216\267\347\040\321\040\156\044\250\204 +\047\241\127\254\252\125\130\057\334\331\312\372\150\004\236\355 +\104\044\371\164\100\073\043\063\253\203\132\030\046\102\266\155 +\124\265\026\140\060\154\261\240\370\270\101\240\135\111\111\322 +\145\005\072\352\376\235\141\274\206\331\277\336\323\272\072\261 +\177\176\222\064\216\311\000\156\334\230\275\334\354\200\005\255 +\002\075\337\145\355\013\003\367\367\026\204\004\061\272\223\224 +\330\362\022\370\212\343\277\102\257\247\324\315\021\027\026\310 +\102\035\024\250\102\366\322\100\206\240\117\043\312\226\105\126 +\140\006\315\267\125\001\246\001\224\145\376\156\005\011\272\264 +\244\252\342\357\130\276\275\047\126\330\357\163\161\133\104\063 +\362\232\162\352\260\136\076\156\251\122\133\354\160\155\265\207 +\217\067\136\074\214\234\316\344\360\316\014\147\101\314\316\366 +\200\253\116\314\114\126\365\301\141\131\223\264\076\246\332\270 +\067\022\237\052\062\343\213\270\041\354\303\053\145\014\357\042 +\336\210\051\073\114\327\372\376\267\341\107\276\234\076\076\203 +\373\121\135\365\150\367\056\041\205\334\277\361\132\342\174\327 +\305\344\203\301\152\353\272\200\132\336\134\055\160\166\370\310 +\345\207\207\312\240\235\241\345\042\022\047\017\104\075\035\154 +\352\324\302\213\057\157\171\253\177\120\246\304\031\247\241\172 +\267\226\371\301\037\142\132\242\103\007\100\136\046\306\254\355 +\256\160\026\305\252\312\162\212\115\260\317\001\213\003\077\156 +\327 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "TWCA CYBER Root CA" +# Issuer: CN=TWCA CYBER Root CA,OU=Root CA,O=TAIWAN-CA,C=TW +# Serial Number:40:01:34:8c:c2:00:00:00:00:00:00:00:01:3c:f2:c6 +# Subject: CN=TWCA CYBER Root CA,OU=Root CA,O=TAIWAN-CA,C=TW +# Not Valid Before: Tue Nov 22 06:54:29 2022 +# Not Valid After : Fri Nov 22 15:59:59 2047 +# Fingerprint (SHA-256): 3F:63:BB:28:14:BE:17:4E:C8:B6:43:9C:F0:8D:6D:56:F0:B7:C4:05:88:3A:56:48:A3:34:42:4D:6B:3E:C5:58 +# Fingerprint (SHA1): F6:B1:1C:1A:83:38:E9:7B:DB:B3:A8:C8:33:24:E0:2D:9C:7F:26:66 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TWCA CYBER Root CA" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\366\261\034\032\203\070\351\173\333\263\250\310\063\044\340\055 +\234\177\046\146 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\013\063\240\227\122\225\324\251\375\273\333\156\243\125\133\121 +END +CKA_ISSUER MULTILINE_OCTAL +\060\120\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\033\060\031\006\003\125\004\003\023\022 +\124\127\103\101\040\103\131\102\105\122\040\122\157\157\164\040 +\103\101 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\100\001\064\214\302\000\000\000\000\000\000\000\001\074 +\362\306 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "TWCA Global Root CA G2" +# +# Issuer: CN=TWCA Global Root CA G2,OU=Root CA,O=TAIWAN-CA,C=TW +# Serial Number:40:01:34:8c:c2:00:00:00:00:00:00:00:01:97:58:f4 +# Subject: CN=TWCA Global Root CA G2,OU=Root CA,O=TAIWAN-CA,C=TW +# Not Valid Before: Tue Nov 22 06:42:21 2022 +# Not Valid After : Fri Nov 22 15:59:59 2047 +# Fingerprint (SHA-256): 3A:00:72:D4:9F:FC:04:E9:96:C5:9A:EB:75:99:1D:3C:34:0F:36:15:D6:FD:4D:CE:90:AC:0B:3D:88:EA:D4:F4 +# Fingerprint (SHA1): 73:FE:92:2F:83:63:91:FF:C8:C6:C4:DA:D6:20:2F:6B:07:2E:7F:1B +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TWCA Global Root CA G2" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\037\060\035\006\003\125\004\003\023\026 +\124\127\103\101\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101\040\107\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\037\060\035\006\003\125\004\003\023\026 +\124\127\103\101\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\100\001\064\214\302\000\000\000\000\000\000\000\001\227 +\130\364 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\225\060\202\003\175\240\003\002\001\002\002\020\100 +\001\064\214\302\000\000\000\000\000\000\000\001\227\130\364\060 +\015\006\011\052\206\110\206\367\015\001\001\014\005\000\060\124 +\061\013\060\011\006\003\125\004\006\023\002\124\127\061\022\060 +\020\006\003\125\004\012\023\011\124\101\111\127\101\116\055\103 +\101\061\020\060\016\006\003\125\004\013\023\007\122\157\157\164 +\040\103\101\061\037\060\035\006\003\125\004\003\023\026\124\127 +\103\101\040\107\154\157\142\141\154\040\122\157\157\164\040\103 +\101\040\107\062\060\036\027\015\062\062\061\061\062\062\060\066 +\064\062\062\061\132\027\015\064\067\061\061\062\062\061\065\065 +\071\065\071\132\060\124\061\013\060\011\006\003\125\004\006\023 +\002\124\127\061\022\060\020\006\003\125\004\012\023\011\124\101 +\111\127\101\116\055\103\101\061\020\060\016\006\003\125\004\013 +\023\007\122\157\157\164\040\103\101\061\037\060\035\006\003\125 +\004\003\023\026\124\127\103\101\040\107\154\157\142\141\154\040 +\122\157\157\164\040\103\101\040\107\062\060\202\002\042\060\015 +\006\011\052\206\110\206\367\015\001\001\001\005\000\003\202\002 +\017\000\060\202\002\012\002\202\002\001\000\252\016\325\040\222 +\001\255\202\371\014\010\221\064\153\212\026\320\106\026\377\003 +\270\330\215\352\223\064\373\377\053\275\375\156\252\334\233\362 +\206\201\125\365\211\034\304\215\165\152\130\170\221\023\036\002 +\023\160\075\357\276\012\347\000\217\270\061\345\164\305\060\276 +\377\175\326\231\345\302\102\243\317\041\326\263\010\177\221\325 +\141\346\242\225\020\015\357\136\227\013\111\070\325\042\260\327 +\213\131\157\237\065\233\177\322\221\314\172\177\273\240\237\336 +\125\063\366\113\215\012\352\175\011\300\171\334\275\104\342\376 +\034\347\144\041\050\317\004\112\342\264\277\206\171\052\273\016 +\223\311\217\136\254\060\071\122\220\007\271\352\234\046\102\024 +\304\147\106\376\321\032\150\241\076\120\031\243\046\012\047\051 +\220\302\366\264\353\163\232\170\036\341\230\364\145\014\065\041 +\006\370\013\336\142\345\115\301\263\135\331\271\372\141\227\052 +\343\352\307\104\125\044\222\376\022\247\077\304\167\340\055\002 +\201\007\325\373\175\346\020\236\072\264\250\357\354\373\120\352 +\065\317\314\176\273\102\271\104\154\122\351\277\052\162\037\077 +\336\233\160\351\334\132\305\073\273\277\360\131\205\257\057\301 +\260\024\171\005\254\165\237\045\365\021\047\006\140\041\307\155 +\145\276\250\211\234\345\254\106\337\370\135\104\003\215\140\275 +\367\261\015\314\057\357\101\124\057\356\153\225\271\116\174\064 +\337\073\371\167\235\175\315\007\075\034\006\063\022\200\354\162 +\234\362\055\202\332\325\073\304\307\371\004\303\144\002\174\365 +\065\140\247\264\106\051\056\033\357\245\130\200\056\172\211\121 +\070\066\074\375\241\167\270\200\060\320\212\336\215\247\064\046 +\354\043\273\030\125\030\066\105\356\355\001\006\252\115\277\144 +\014\312\230\227\032\061\002\146\370\170\150\133\210\337\011\250 +\347\233\372\064\155\160\034\041\255\010\213\362\241\266\254\166 +\152\277\361\200\045\000\276\074\036\115\256\271\074\266\225\143 +\275\153\176\107\022\220\125\105\021\215\354\027\037\301\276\047 +\201\223\127\143\151\000\046\167\213\303\131\345\173\321\015\104 +\362\250\360\367\205\232\005\367\302\056\160\232\223\205\330\225 +\220\061\220\124\246\354\013\237\067\105\017\002\003\001\000\001 +\243\143\060\141\060\016\006\003\125\035\017\001\001\377\004\004 +\003\002\001\006\060\017\006\003\125\035\023\001\001\377\004\005 +\060\003\001\001\377\060\037\006\003\125\035\043\004\030\060\026 +\200\024\222\214\324\066\321\133\107\123\304\161\015\204\335\144 +\052\365\066\144\100\347\060\035\006\003\125\035\016\004\026\004 +\024\222\214\324\066\321\133\107\123\304\161\015\204\335\144\052 +\365\066\144\100\347\060\015\006\011\052\206\110\206\367\015\001 +\001\014\005\000\003\202\002\001\000\045\374\113\332\220\264\332 +\165\347\101\072\201\321\246\376\240\152\363\030\161\142\152\044 +\010\213\251\172\115\311\125\316\317\020\050\056\004\031\226\005 +\317\135\002\040\052\073\263\125\077\001\315\102\315\262\167\355 +\377\165\363\174\167\333\226\245\317\214\147\006\364\244\233\162 +\366\041\111\011\230\243\062\136\167\132\143\011\357\142\103\227 +\002\070\265\352\074\030\120\150\374\131\133\331\171\324\361\344 +\126\110\023\126\330\323\161\013\136\170\224\070\021\105\372\005 +\027\365\016\165\036\142\122\141\106\272\056\031\255\206\264\210 +\017\261\120\346\100\000\064\032\225\235\223\340\121\371\324\125 +\106\351\225\074\045\206\056\227\327\001\061\030\104\354\034\140 +\351\175\151\257\062\370\227\100\045\044\266\215\032\125\074\305 +\267\367\274\006\122\073\161\060\160\076\161\027\176\361\146\004 +\136\135\274\212\061\103\246\222\035\173\124\322\245\066\213\157 +\215\326\136\332\324\303\056\035\337\071\125\140\202\060\236\047 +\377\216\200\335\143\114\246\125\065\330\320\063\251\200\155\076 +\136\235\314\250\147\200\146\372\231\127\014\122\312\031\165\260 +\070\065\125\052\201\305\214\036\126\327\137\220\362\040\330\332 +\340\146\161\351\262\170\253\147\271\044\156\153\066\162\374\157 +\215\375\177\162\071\050\147\122\221\005\037\127\145\322\243\247 +\015\141\372\241\347\325\065\106\225\311\006\207\366\060\354\062 +\121\251\254\126\300\041\116\243\024\164\005\072\274\343\277\155 +\075\116\077\136\245\244\155\051\277\204\121\165\123\216\206\032 +\365\121\160\052\015\034\116\100\341\375\243\343\245\053\147\220 +\222\307\154\256\205\277\072\233\027\025\312\234\052\223\324\115 +\071\015\274\040\010\243\215\210\154\011\015\214\256\104\041\115 +\311\161\354\330\046\327\027\236\055\021\030\074\243\042\175\270 +\047\124\277\150\310\073\102\314\217\136\116\347\334\302\305\372 +\152\104\017\215\126\210\172\337\211\204\154\240\263\076\075\361 +\145\000\011\210\352\052\353\100\316\263\135\254\062\027\256\301 +\233\351\320\301\365\111\224\335\247\316\174\132\007\353\256\040 +\234\027\060\222\151\223\162\363\232\133\161\233\376\152\337\172 +\060\151\216\263\056\333\017\054\335 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "TWCA Global Root CA G2" +# Issuer: CN=TWCA Global Root CA G2,OU=Root CA,O=TAIWAN-CA,C=TW +# Serial Number:40:01:34:8c:c2:00:00:00:00:00:00:00:01:97:58:f4 +# Subject: CN=TWCA Global Root CA G2,OU=Root CA,O=TAIWAN-CA,C=TW +# Not Valid Before: Tue Nov 22 06:42:21 2022 +# Not Valid After : Fri Nov 22 15:59:59 2047 +# Fingerprint (SHA-256): 3A:00:72:D4:9F:FC:04:E9:96:C5:9A:EB:75:99:1D:3C:34:0F:36:15:D6:FD:4D:CE:90:AC:0B:3D:88:EA:D4:F4 +# Fingerprint (SHA1): 73:FE:92:2F:83:63:91:FF:C8:C6:C4:DA:D6:20:2F:6B:07:2E:7F:1B +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "TWCA Global Root CA G2" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\163\376\222\057\203\143\221\377\310\306\304\332\326\040\057\153 +\007\056\177\033 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\023\215\135\372\031\265\346\253\144\173\020\164\160\032\043\056 +END +CKA_ISSUER MULTILINE_OCTAL +\060\124\061\013\060\011\006\003\125\004\006\023\002\124\127\061 +\022\060\020\006\003\125\004\012\023\011\124\101\111\127\101\116 +\055\103\101\061\020\060\016\006\003\125\004\013\023\007\122\157 +\157\164\040\103\101\061\037\060\035\006\003\125\004\003\023\026 +\124\127\103\101\040\107\154\157\142\141\154\040\122\157\157\164 +\040\103\101\040\107\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\020\100\001\064\214\302\000\000\000\000\000\000\000\001\227 +\130\364 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SecureSign Root CA12" +# +# Issuer: CN=SecureSign Root CA12,O="Cybertrust Japan Co., Ltd.",C=JP +# Serial Number:66:f9:c7:c1:af:ec:c2:51:b4:ed:53:97:e6:e6:82:c3:2b:1c:90:16 +# Subject: CN=SecureSign Root CA12,O="Cybertrust Japan Co., Ltd.",C=JP +# Not Valid Before: Wed Apr 08 05:36:46 2020 +# Not Valid After : Sun Apr 08 05:36:46 2040 +# Fingerprint (SHA-256): 3F:03:4B:B5:70:4D:44:B2:D0:85:45:A0:20:57:DE:93:EB:F3:90:5F:CE:72:1A:CB:C7:30:C0:6D:DA:EE:90:4E +# Fingerprint (SHA1): 7A:22:1E:3D:DE:1B:06:AC:9E:C8:47:70:16:8E:3C:E5:F7:6B:06:F4 +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SecureSign Root CA12" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\043\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164 +\162\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040 +\114\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123 +\145\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103 +\101\061\062 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\043\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164 +\162\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040 +\114\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123 +\145\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103 +\101\061\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\146\371\307\301\257\354\302\121\264\355\123\227\346\346 +\202\303\053\034\220\026 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\003\162\060\202\002\132\240\003\002\001\002\002\024\146 +\371\307\301\257\354\302\121\264\355\123\227\346\346\202\303\053 +\034\220\026\060\015\006\011\052\206\110\206\367\015\001\001\013 +\005\000\060\121\061\013\060\011\006\003\125\004\006\023\002\112 +\120\061\043\060\041\006\003\125\004\012\023\032\103\171\142\145 +\162\164\162\165\163\164\040\112\141\160\141\156\040\103\157\056 +\054\040\114\164\144\056\061\035\060\033\006\003\125\004\003\023 +\024\123\145\143\165\162\145\123\151\147\156\040\122\157\157\164 +\040\103\101\061\062\060\036\027\015\062\060\060\064\060\070\060 +\065\063\066\064\066\132\027\015\064\060\060\064\060\070\060\065 +\063\066\064\066\132\060\121\061\013\060\011\006\003\125\004\006 +\023\002\112\120\061\043\060\041\006\003\125\004\012\023\032\103 +\171\142\145\162\164\162\165\163\164\040\112\141\160\141\156\040 +\103\157\056\054\040\114\164\144\056\061\035\060\033\006\003\125 +\004\003\023\024\123\145\143\165\162\145\123\151\147\156\040\122 +\157\157\164\040\103\101\061\062\060\202\001\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\001\017\000 +\060\202\001\012\002\202\001\001\000\272\071\301\067\172\150\105 +\053\024\264\353\344\023\353\127\165\043\115\217\044\055\026\350 +\256\216\311\175\244\127\073\052\166\045\063\203\154\352\062\212 +\224\233\116\074\226\344\375\121\277\231\311\223\176\277\371\255 +\247\262\110\053\007\034\047\365\114\274\160\022\167\244\205\124 +\265\375\220\172\344\243\344\121\130\003\315\020\171\171\356\153 +\223\037\144\216\153\144\253\243\023\343\161\376\175\253\234\335 +\047\123\067\263\252\030\302\131\046\354\133\037\322\346\145\174 +\357\223\275\330\130\134\013\300\343\145\157\074\307\312\131\343 +\376\156\137\254\203\276\375\135\045\116\052\051\073\326\013\253 +\027\062\170\244\341\076\224\106\276\142\156\233\336\106\250\261 +\026\347\205\156\364\010\100\105\021\240\236\124\104\204\367\330 +\066\316\365\120\107\334\054\060\233\356\300\365\226\322\376\011 +\206\307\006\131\256\117\256\216\021\230\173\363\013\122\252\142 +\046\252\041\337\216\045\063\171\227\026\111\215\365\076\325\107 +\237\067\061\111\063\162\005\115\014\266\125\214\361\127\217\212 +\207\321\255\305\021\022\071\240\255\002\003\001\000\001\243\102 +\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\035\006\003\125\035\016\004\026\004\024\127\064 +\363\164\317\004\113\325\045\346\361\100\266\054\114\331\055\351 +\240\255\060\015\006\011\052\206\110\206\367\015\001\001\013\005 +\000\003\202\001\001\000\076\273\333\027\026\322\362\024\001\040 +\054\070\203\113\255\276\312\205\172\232\266\233\153\246\341\374 +\245\072\254\255\264\050\072\257\327\001\203\111\053\143\242\335 +\232\144\016\230\134\157\335\216\273\212\124\042\055\112\023\363 +\256\100\103\333\117\221\267\206\032\354\000\264\101\201\244\117 +\372\152\213\210\263\166\010\162\052\111\100\303\323\303\205\211 +\230\020\245\235\157\031\267\273\317\172\145\125\333\067\353\074 +\212\162\062\227\036\232\051\076\255\215\346\243\033\155\365\165 +\032\346\260\150\271\133\242\356\151\107\047\065\241\206\231\200 +\363\063\113\341\153\244\046\303\357\164\131\154\172\242\144\266 +\036\104\303\120\340\017\071\075\251\063\361\245\363\322\275\142 +\204\254\216\034\251\315\132\275\067\073\156\012\042\264\364\025 +\347\221\130\305\072\104\323\225\050\331\300\145\351\162\312\320 +\017\275\037\263\025\331\251\343\244\107\011\236\340\313\067\373 +\375\275\227\325\276\030\032\151\242\071\201\331\032\365\253\177 +\310\343\342\147\013\235\364\014\352\124\337\322\262\257\261\042 +\361\040\337\274\104\034 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SecureSign Root CA12" +# Issuer: CN=SecureSign Root CA12,O="Cybertrust Japan Co., Ltd.",C=JP +# Serial Number:66:f9:c7:c1:af:ec:c2:51:b4:ed:53:97:e6:e6:82:c3:2b:1c:90:16 +# Subject: CN=SecureSign Root CA12,O="Cybertrust Japan Co., Ltd.",C=JP +# Not Valid Before: Wed Apr 08 05:36:46 2020 +# Not Valid After : Sun Apr 08 05:36:46 2040 +# Fingerprint (SHA-256): 3F:03:4B:B5:70:4D:44:B2:D0:85:45:A0:20:57:DE:93:EB:F3:90:5F:CE:72:1A:CB:C7:30:C0:6D:DA:EE:90:4E +# Fingerprint (SHA1): 7A:22:1E:3D:DE:1B:06:AC:9E:C8:47:70:16:8E:3C:E5:F7:6B:06:F4 +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SecureSign Root CA12" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\172\042\036\075\336\033\006\254\236\310\107\160\026\216\074\345 +\367\153\006\364 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\306\211\312\144\102\233\142\010\111\013\036\177\351\007\075\350 +END +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\043\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164 +\162\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040 +\114\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123 +\145\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103 +\101\061\062 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\146\371\307\301\257\354\302\121\264\355\123\227\346\346 +\202\303\053\034\220\026 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SecureSign Root CA14" +# +# Issuer: CN=SecureSign Root CA14,O="Cybertrust Japan Co., Ltd.",C=JP +# Serial Number:64:db:5a:0c:20:4e:e8:d7:29:77:c8:50:27:a2:5a:27:dd:2d:f2:cb +# Subject: CN=SecureSign Root CA14,O="Cybertrust Japan Co., Ltd.",C=JP +# Not Valid Before: Wed Apr 08 07:06:19 2020 +# Not Valid After : Sat Apr 08 07:06:19 2045 +# Fingerprint (SHA-256): 4B:00:9C:10:34:49:4F:9A:B5:6B:BA:3B:A1:D6:27:31:FC:4D:20:D8:95:5A:DC:EC:10:A9:25:60:72:61:E3:38 +# Fingerprint (SHA1): DD:50:C0:F7:79:B3:64:2E:74:A2:B8:9D:9F:D3:40:DD:BB:F0:F2:4F +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SecureSign Root CA14" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\043\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164 +\162\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040 +\114\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123 +\145\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103 +\101\061\064 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\043\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164 +\162\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040 +\114\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123 +\145\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103 +\101\061\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\144\333\132\014\040\116\350\327\051\167\310\120\047\242 +\132\047\335\055\362\313 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\005\162\060\202\003\132\240\003\002\001\002\002\024\144 +\333\132\014\040\116\350\327\051\167\310\120\047\242\132\047\335 +\055\362\313\060\015\006\011\052\206\110\206\367\015\001\001\014 +\005\000\060\121\061\013\060\011\006\003\125\004\006\023\002\112 +\120\061\043\060\041\006\003\125\004\012\023\032\103\171\142\145 +\162\164\162\165\163\164\040\112\141\160\141\156\040\103\157\056 +\054\040\114\164\144\056\061\035\060\033\006\003\125\004\003\023 +\024\123\145\143\165\162\145\123\151\147\156\040\122\157\157\164 +\040\103\101\061\064\060\036\027\015\062\060\060\064\060\070\060 +\067\060\066\061\071\132\027\015\064\065\060\064\060\070\060\067 +\060\066\061\071\132\060\121\061\013\060\011\006\003\125\004\006 +\023\002\112\120\061\043\060\041\006\003\125\004\012\023\032\103 +\171\142\145\162\164\162\165\163\164\040\112\141\160\141\156\040 +\103\157\056\054\040\114\164\144\056\061\035\060\033\006\003\125 +\004\003\023\024\123\145\143\165\162\145\123\151\147\156\040\122 +\157\157\164\040\103\101\061\064\060\202\002\042\060\015\006\011 +\052\206\110\206\367\015\001\001\001\005\000\003\202\002\017\000 +\060\202\002\012\002\202\002\001\000\305\322\172\241\326\212\277 +\026\061\320\230\321\072\224\374\132\270\156\042\301\142\367\247 +\012\047\357\120\366\056\261\236\150\022\360\154\044\143\071\361 +\360\337\020\306\336\267\122\040\325\122\133\102\231\236\363\240 +\276\122\037\137\314\147\155\247\056\120\242\301\227\215\266\370 +\225\365\260\272\334\235\340\276\313\337\367\070\362\107\365\246 +\232\222\225\052\142\131\120\013\242\261\065\347\145\262\141\262 +\352\222\161\151\344\051\360\117\201\201\004\074\262\245\133\324 +\305\250\131\147\173\125\034\111\253\172\235\302\347\163\115\357 +\315\011\302\304\127\022\333\001\016\043\171\011\007\073\242\350 +\374\212\317\217\300\106\044\234\070\047\340\203\235\033\240\277 +\170\025\020\353\206\116\012\132\375\337\332\054\202\176\356\312 +\366\051\341\372\161\241\367\210\150\234\234\360\215\276\017\111 +\221\330\352\072\371\375\320\150\161\333\351\265\053\116\202\222 +\157\146\037\340\360\334\114\354\312\321\352\272\164\006\371\263 +\204\220\224\321\137\216\163\031\020\135\002\345\160\245\300\020 +\320\020\174\157\305\130\111\264\260\156\232\332\175\225\365\314 +\332\002\257\270\054\175\171\217\276\103\361\371\050\050\215\011 +\103\370\010\335\153\310\213\054\044\261\215\122\007\275\170\233 +\313\312\150\262\244\335\014\114\171\140\306\231\321\223\361\060 +\032\007\323\256\042\302\352\316\361\204\011\314\340\024\156\177 +\077\176\322\202\205\254\334\251\026\116\205\240\140\313\366\234 +\327\310\263\216\355\306\233\230\165\015\125\350\137\345\225\213 +\002\244\256\103\051\050\021\244\346\022\060\001\113\165\153\036 +\146\235\171\057\245\166\057\035\100\264\155\311\175\171\010\354 +\321\152\266\135\052\262\245\146\275\153\205\364\164\126\303\365 +\347\165\122\050\054\245\377\146\107\245\324\376\376\236\124\277 +\145\176\001\326\060\217\245\066\234\242\120\034\356\070\200\001 +\110\306\307\164\364\306\254\303\100\111\026\141\164\054\257\214 +\157\065\355\173\030\000\133\066\074\234\120\015\312\222\063\020 +\361\046\111\155\337\165\044\067\202\042\327\350\226\375\025\113 +\002\226\076\007\162\225\176\253\075\114\056\327\312\360\337\340 +\130\077\055\057\004\232\070\243\001\002\003\001\000\001\243\102 +\060\100\060\017\006\003\125\035\023\001\001\377\004\005\060\003 +\001\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003 +\002\001\006\060\035\006\003\125\035\016\004\026\004\024\006\223 +\243\012\136\050\151\067\252\141\035\353\353\374\055\157\043\344 +\363\240\060\015\006\011\052\206\110\206\367\015\001\001\014\005 +\000\003\202\002\001\000\226\200\162\011\006\176\234\314\223\004 +\026\273\240\072\215\222\116\267\021\032\012\161\161\020\315\004 +\255\177\245\105\120\020\146\116\112\101\242\003\331\021\117\172 +\067\271\113\342\306\217\062\146\165\045\373\353\316\077\003\051 +\046\215\270\026\035\366\037\063\156\110\346\350\370\127\262\033 +\171\337\073\207\012\342\144\272\000\312\154\357\176\320\043\353 +\170\217\377\144\233\064\067\237\065\145\242\244\000\075\022\043 +\226\130\135\312\143\207\306\243\007\210\115\347\151\166\212\123 +\315\361\117\354\102\362\223\343\231\244\067\074\207\270\142\333 +\360\354\037\067\077\067\137\103\314\121\235\265\360\227\302\267 +\205\152\150\013\104\036\345\121\356\223\316\113\156\206\301\322 +\014\044\131\066\032\237\054\221\217\343\030\333\224\225\012\355 +\221\252\016\231\334\226\123\343\141\203\306\026\272\043\272\334 +\335\176\032\306\173\102\266\331\132\005\334\232\137\325\337\270 +\332\107\175\332\070\333\254\071\325\036\153\154\052\027\214\141 +\315\261\155\162\001\303\303\040\000\142\150\026\061\325\166\252 +\206\273\016\252\236\306\371\360\331\370\015\041\002\344\305\050 +\026\131\021\271\331\151\163\052\222\170\270\222\127\233\010\362 +\072\345\057\225\260\130\267\153\040\024\155\024\357\012\274\176 +\330\125\330\210\332\057\372\031\245\373\213\340\177\071\365\162 +\053\205\304\054\254\357\031\105\222\114\263\141\007\334\115\037 +\156\322\201\023\134\232\363\022\147\203\317\233\077\213\237\235 +\244\271\250\226\003\172\305\356\040\336\063\332\057\236\032\172 +\164\036\341\356\314\132\072\004\335\263\032\004\250\024\143\254 +\267\107\022\203\232\154\365\346\351\025\025\221\032\204\031\016 +\224\104\347\022\216\045\133\200\147\031\334\143\223\020\013\145 +\056\212\372\011\232\116\332\206\050\175\252\141\065\330\016\247 +\050\032\273\122\340\170\370\154\272\154\260\156\271\207\136\351 +\231\065\067\361\075\144\053\251\240\064\223\317\143\057\325\201 +\337\256\143\047\245\036\116\215\334\051\170\131\370\371\241\040 +\214\247\046\100\156\202\162\315\170\262\310\217\074\036\163\347 +\301\037\277\317\316\245\052\233\333\104\144\062\240\273\177\134 +\045\023\110\265\177\222 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SecureSign Root CA14" +# Issuer: CN=SecureSign Root CA14,O="Cybertrust Japan Co., Ltd.",C=JP +# Serial Number:64:db:5a:0c:20:4e:e8:d7:29:77:c8:50:27:a2:5a:27:dd:2d:f2:cb +# Subject: CN=SecureSign Root CA14,O="Cybertrust Japan Co., Ltd.",C=JP +# Not Valid Before: Wed Apr 08 07:06:19 2020 +# Not Valid After : Sat Apr 08 07:06:19 2045 +# Fingerprint (SHA-256): 4B:00:9C:10:34:49:4F:9A:B5:6B:BA:3B:A1:D6:27:31:FC:4D:20:D8:95:5A:DC:EC:10:A9:25:60:72:61:E3:38 +# Fingerprint (SHA1): DD:50:C0:F7:79:B3:64:2E:74:A2:B8:9D:9F:D3:40:DD:BB:F0:F2:4F +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SecureSign Root CA14" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\335\120\300\367\171\263\144\056\164\242\270\235\237\323\100\335 +\273\360\362\117 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\161\015\162\372\222\031\145\136\211\004\254\026\063\360\274\325 +END +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\043\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164 +\162\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040 +\114\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123 +\145\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103 +\101\061\064 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\144\333\132\014\040\116\350\327\051\167\310\120\047\242 +\132\047\335\055\362\313 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE + +# +# Certificate "SecureSign Root CA15" +# +# Issuer: CN=SecureSign Root CA15,O="Cybertrust Japan Co., Ltd.",C=JP +# Serial Number:16:15:c7:c3:d8:49:a7:be:69:0c:8a:88:ed:f0:70:f9:dd:b7:3e:87 +# Subject: CN=SecureSign Root CA15,O="Cybertrust Japan Co., Ltd.",C=JP +# Not Valid Before: Wed Apr 08 08:32:56 2020 +# Not Valid After : Sat Apr 08 08:32:56 2045 +# Fingerprint (SHA-256): E7:78:F0:F0:95:FE:84:37:29:CD:1A:00:82:17:9E:53:14:A9:C2:91:44:28:05:E1:FB:1D:8F:B6:B8:88:6C:3A +# Fingerprint (SHA1): CB:BA:83:C8:C1:5A:5D:F1:F9:73:6F:CA:D7:EF:28:13:06:4A:07:7D +CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SecureSign Root CA15" +CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 +CKA_SUBJECT MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\043\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164 +\162\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040 +\114\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123 +\145\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103 +\101\061\065 +END +CKA_ID UTF8 "0" +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\043\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164 +\162\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040 +\114\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123 +\145\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103 +\101\061\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\026\025\307\303\330\111\247\276\151\014\212\210\355\360 +\160\371\335\267\076\207 +END +CKA_VALUE MULTILINE_OCTAL +\060\202\002\043\060\202\001\251\240\003\002\001\002\002\024\026 +\025\307\303\330\111\247\276\151\014\212\210\355\360\160\371\335 +\267\076\207\060\012\006\010\052\206\110\316\075\004\003\003\060 +\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061\043 +\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164\162 +\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040\114 +\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123\145 +\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103\101 +\061\065\060\036\027\015\062\060\060\064\060\070\060\070\063\062 +\065\066\132\027\015\064\065\060\064\060\070\060\070\063\062\065 +\066\132\060\121\061\013\060\011\006\003\125\004\006\023\002\112 +\120\061\043\060\041\006\003\125\004\012\023\032\103\171\142\145 +\162\164\162\165\163\164\040\112\141\160\141\156\040\103\157\056 +\054\040\114\164\144\056\061\035\060\033\006\003\125\004\003\023 +\024\123\145\143\165\162\145\123\151\147\156\040\122\157\157\164 +\040\103\101\061\065\060\166\060\020\006\007\052\206\110\316\075 +\002\001\006\005\053\201\004\000\042\003\142\000\004\013\120\164 +\215\144\062\231\231\263\322\140\010\270\042\216\106\164\054\170 +\300\053\104\055\155\137\035\311\256\113\122\040\203\075\270\024 +\155\123\207\140\236\137\154\205\333\006\024\225\340\307\050\377 +\235\137\344\252\361\263\213\155\355\117\057\113\311\112\224\221 +\144\165\376\001\354\301\330\353\172\224\170\126\030\103\137\153 +\201\313\366\274\332\264\014\266\051\223\010\151\217\243\102\060 +\100\060\017\006\003\125\035\023\001\001\377\004\005\060\003\001 +\001\377\060\016\006\003\125\035\017\001\001\377\004\004\003\002 +\001\006\060\035\006\003\125\035\016\004\026\004\024\353\101\310 +\256\374\325\236\121\110\365\275\213\364\207\040\223\101\053\323 +\364\060\012\006\010\052\206\110\316\075\004\003\003\003\150\000 +\060\145\002\061\000\331\056\211\176\136\116\244\021\007\275\131 +\302\007\336\253\062\070\123\052\106\104\006\027\172\316\121\351 +\340\377\146\055\011\116\340\117\364\005\321\205\366\065\140\334 +\365\162\263\106\175\002\060\104\230\106\032\202\205\036\141\151 +\211\113\007\113\146\265\236\252\272\240\036\101\331\001\164\072 +\156\105\072\211\200\031\173\062\230\125\143\253\353\143\156\223 +\155\253\033\011\140\061\116 +END +CKA_NSS_MOZILLA_CA_POLICY CK_BBOOL CK_TRUE +CKA_NSS_SERVER_DISTRUST_AFTER CK_BBOOL CK_FALSE +CKA_NSS_EMAIL_DISTRUST_AFTER CK_BBOOL CK_FALSE + +# Trust for "SecureSign Root CA15" +# Issuer: CN=SecureSign Root CA15,O="Cybertrust Japan Co., Ltd.",C=JP +# Serial Number:16:15:c7:c3:d8:49:a7:be:69:0c:8a:88:ed:f0:70:f9:dd:b7:3e:87 +# Subject: CN=SecureSign Root CA15,O="Cybertrust Japan Co., Ltd.",C=JP +# Not Valid Before: Wed Apr 08 08:32:56 2020 +# Not Valid After : Sat Apr 08 08:32:56 2045 +# Fingerprint (SHA-256): E7:78:F0:F0:95:FE:84:37:29:CD:1A:00:82:17:9E:53:14:A9:C2:91:44:28:05:E1:FB:1D:8F:B6:B8:88:6C:3A +# Fingerprint (SHA1): CB:BA:83:C8:C1:5A:5D:F1:F9:73:6F:CA:D7:EF:28:13:06:4A:07:7D +CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST +CKA_TOKEN CK_BBOOL CK_TRUE +CKA_PRIVATE CK_BBOOL CK_FALSE +CKA_MODIFIABLE CK_BBOOL CK_FALSE +CKA_LABEL UTF8 "SecureSign Root CA15" +CKA_CERT_SHA1_HASH MULTILINE_OCTAL +\313\272\203\310\301\132\135\361\371\163\157\312\327\357\050\023 +\006\112\007\175 +END +CKA_CERT_MD5_HASH MULTILINE_OCTAL +\023\060\374\304\142\246\251\336\265\301\150\257\265\322\061\107 +END +CKA_ISSUER MULTILINE_OCTAL +\060\121\061\013\060\011\006\003\125\004\006\023\002\112\120\061 +\043\060\041\006\003\125\004\012\023\032\103\171\142\145\162\164 +\162\165\163\164\040\112\141\160\141\156\040\103\157\056\054\040 +\114\164\144\056\061\035\060\033\006\003\125\004\003\023\024\123 +\145\143\165\162\145\123\151\147\156\040\122\157\157\164\040\103 +\101\061\065 +END +CKA_SERIAL_NUMBER MULTILINE_OCTAL +\002\024\026\025\307\303\330\111\247\276\151\014\212\210\355\360 +\160\371\335\267\076\207 +END +CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NSS_TRUSTED_DELEGATOR +CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_MUST_VERIFY_TRUST +CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 2d13578dfa..bcc330c6f6 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -11,8 +11,8 @@ logs/invalid-auths.log - %d %p %c{1} [%thread] %m%n - + %d %p %c{1} [%thread] %m%n + @@ -21,12 +21,12 @@ - + logs/info.log - %d %p %c{1} [%thread] %m%n - + %d %p %c{1} [%thread] %m%n + @@ -43,7 +43,8 @@ - + diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index bcfaa61877..ed82d1cebf 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -82,6 +82,7 @@ pages=ØĩŲØ­Ø§ØĒ loading=ØŦØ§ØąŲ Ø§Ų„ØĒØ­Ų…ŲŠŲ„... addToDoc=ØĨØļØ§ŲØŠ ØĨŲ„Ų‰ Ø§Ų„Ų…ØŗØĒŲ†Ø¯ reset=ØĨؚدا؊ ØļØ¨Øˇ +apply=Apply legal.privacy=ØŗŲŠØ§ØŗØŠ Ø§Ų„ØŽØĩ؈ØĩŲŠØŠ legal.terms=Ø´ØąŲˆØˇ Ø§Ų„Ø§ØŗØĒØŽØ¯Ø§Ų… @@ -238,11 +239,13 @@ database.creationDate=ØĒØ§ØąŲŠØŽ Ø§Ų„ØĨŲ†Ø´Ø§ØĄ database.fileSize=Ø­ØŦŲ… Ø§Ų„Ų…Ų„Ų database.deleteBackupFile=Ø­Ø°Ų ؅؄؁ Ø§Ų„Ų†ØŗØŽ Ø§Ų„Ø§Ø­ØĒŲŠØ§ØˇŲŠ database.importBackupFile=Ø§ØŗØĒŲŠØąØ§Ø¯ ؅؄؁ Ø§Ų„Ų†ØŗØŽ Ø§Ų„Ø§Ø­ØĒŲŠØ§ØˇŲŠ +database.createBackupFile=Create Backup File database.downloadBackupFile=ØĒŲ†Ø˛ŲŠŲ„ ؅؄؁ Ø§Ų„Ų†ØŗØŽ Ø§Ų„Ø§Ø­ØĒŲŠØ§ØˇŲŠ database.info_1=ØšŲ†Ø¯ Ø§ØŗØĒŲŠØąØ§Ø¯ Ø§Ų„Ø¨ŲŠØ§Ų†Ø§ØĒ، Ų…Ų† Ø§Ų„ØļØąŲˆØąŲŠ ØļŲ…Ø§Ų† Ø§Ų„Ų‡ŲŠŲƒŲ„ Ø§Ų„ØĩØ­ŲŠØ­. ØĨذا ŲƒŲ†ØĒ ØēŲŠØą Ų…ØĒØŖŲƒØ¯ Ų…Ų…Ø§ ØĒŲØšŲ„Ų‡ØŒ Ø§ØˇŲ„Ø¨ Ø§Ų„Ų…Ø´ŲˆØąØŠ ŲˆØ§Ų„Ø¯ØšŲ… Ų…Ų† Ų…Ø­ØĒØąŲ. ŲŠŲ…ŲƒŲ† ØŖŲ† ŲŠØ¤Ø¯ŲŠ Ø§Ų„ØŽØˇØŖ ؁؊ Ø§Ų„Ų‡ŲŠŲƒŲ„ ØĨŲ„Ų‰ Ø­Ø¯ŲˆØĢ ØŖØšØˇØ§Ų„ ؁؊ Ø§Ų„ØĒØˇØ¨ŲŠŲ‚ØŒ Ø­ØĒŲ‰ ØšØ¯Ų… Ø§Ų„Ų‚Ø¯ØąØŠ ØšŲ„Ų‰ ØĒØ´ØēŲŠŲ„ Ø§Ų„ØĒØˇØ¨ŲŠŲ‚ Ø¨Ø§Ų„ŲƒØ§Ų…Ų„. database.info_2=Ų„Ø§ ŲŠŲ‡Ų… Ø§ØŗŲ… Ø§Ų„Ų…Ų„Ų ØšŲ†Ø¯ Ø§Ų„ØĒØ­Ų…ŲŠŲ„. ØŗŲŠØĒŲ… ØĨؚاد؊ ØĒØŗŲ…ŲŠØĒŲ‡ بؚد Ø°Ų„Ųƒ Ų„Ø§ØĒباؚ Ø§Ų„ØĒŲ†ØŗŲŠŲ‚ backup_user_yyyyMMddHHmm.sql، Ų…Ų…Ø§ ؊ØļŲ…Ų† اØĒØŗØ§Ų‚ ØĒØŗŲ…ŲŠØŠ Ų…ØĒŲ†Ø§ØŗŲ‚. database.submit=Ø§ØŗØĒŲŠØąØ§Ø¯ Ø§Ų„Ų†ØŗØŽØŠ Ø§Ų„Ø§Ø­ØĒŲŠØ§ØˇŲŠØŠ database.importIntoDatabaseSuccessed=ØĒŲ… Ø§ØŗØĒŲŠØąØ§Ø¯ Ų‚Ø§ØšØ¯ØŠ Ø§Ų„Ø¨ŲŠØ§Ų†Ø§ØĒ Ø¨Ų†ØŦاح +database.backupCreated=Database backup successful database.fileNotFound=Ų„Ų… ؊ØĒŲ… Ø§Ų„ØšØĢŲˆØą ØšŲ„Ų‰ Ø§Ų„Ų…Ų„Ų database.fileNullOrEmpty=؊ØŦب ØŖŲ„Ø§ ŲŠŲƒŲˆŲ† Ø§Ų„Ų…Ų„Ų ŲØ§ØąØēŲ‹Ø§ ØŖŲˆ ØŽØ§Ų„ŲŠŲ‹Ø§ database.failedImportFile=ŲØ´Ų„ Ø§ØŗØĒŲŠØąØ§Ø¯ Ø§Ų„Ų…Ų„Ų @@ -472,6 +475,10 @@ home.autoRedact.title=Ø­ØŦب ØĒŲ„Ų‚Ø§ØĻ؊ home.autoRedact.desc=ŲŠØ­ØŦب (ŲŠØŗŲˆØ¯) Ø§Ų„Ų†Øĩ ؁؊ PDF ØĒŲ„Ų‚Ø§ØĻŲŠŲ‹Ø§ Ø¨Ų†Ø§ØĄŲ‹ ØšŲ„Ų‰ Ø§Ų„Ų†Øĩ Ø§Ų„Ų…Ø¯ØŽŲ„ autoRedact.tags=Ø­ØŦب,ØĨØŽŲØ§ØĄ,ØĒØŗŲˆŲŠØ¯,ØŖØŗŲˆØ¯,ØšŲ„Ø§Ų…ØŠ,Ų…ØŽŲŲŠ +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF ØĨŲ„Ų‰ CSV home.tableExtraxt.desc=ŲŠØŗØĒØŽØąØŦ Ø§Ų„ØŦØ¯Ø§ŲˆŲ„ Ų…Ų† PDF ŲˆŲŠØ­ŲˆŲ„Ų‡Ø§ ØĨŲ„Ų‰ CSV tableExtraxt.tags=CSV,Ø§ØŗØĒØŽØąØ§ØŦ Ø§Ų„ØŦØ¯ŲˆŲ„,Ø§ØŗØĒØŽØąØ§ØŦ,ØĒØ­ŲˆŲŠŲ„ @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=ØĒØŦØ˛ØĻØŠ Ø§Ų„Ų…ØŗØĒŲ†Ø¯Ø§ØĒ PDF Ø­ØŗØ¨ Ø§Ų„ŲØĩ home.splitPdfByChapters.desc=Ų‚ØŗŲ… Ų…ØŗØĒŲ†Ø¯ PDF ØĨŲ„Ų‰ Ų…Ų„ŲØ§ØĒ Ų…ØĒؚدد؊ Ø¨Ų†Ø§ØĄŲ‹ ØšŲ„Ų‰ Ų‡ŲŠŲƒŲ„ ؁ØĩŲˆŲ„Ų‡. splitPdfByChapters.tags=ØĒØŦØ˛ØĻØŠØŒ ؁ØĩŲˆŲ„ØŒ ØšŲ„Ø§Ų…Ø§ØĒ ØĒØ¨ŲˆŲŠØ¨ØŒ ØĒŲ†Ø¸ŲŠŲ… +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=ØĨØŗØĒØ¨Ø¯Ø§Ų„-ØšŲƒØŗ Ø§Ų„Ų„ŲˆŲ† replace-color.header=Ø§ØŗØĒØ¨Ø¯Ø§Ų„-ØšŲƒØŗ Ų„ŲˆŲ† PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=ØˇŲ„Ø¨ ØēŲŠØą ØĩØ§Ų„Ø­ login.oauth2AccessDenied=ØĒŲ… ØąŲØļ Ø§Ų„ŲˆØĩŲˆŲ„ login.oauth2InvalidTokenResponse=Ø§ØŗØĒØŦاب؊ Ø§Ų„ØąŲ…Ø˛ Ø§Ų„Ų…Ų…ŲŠØ˛ ØēŲŠØą ØĩØ§Ų„Ø­ØŠ login.oauth2InvalidIdToken=ØąŲ…Ø˛ Ø§Ų„Ų‡ŲˆŲŠØŠ ØēŲŠØą ØĩØ§Ų„Ø­ +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=ØĒŲ… ØĒØšØˇŲŠŲ„ Ø§Ų„Ų…ØŗØĒØŽØ¯Ų…ØŒ ØĒŲ… Ø­Ø¸Øą ØĒØŗØŦŲŠŲ„ Ø§Ų„Ø¯ØŽŲˆŲ„ Ø­Ø§Ų„ŲŠŲ‹Ø§ Ø¨Ø§ØŗØĒØŽØ¯Ø§Ų… Ø§ØŗŲ… Ø§Ų„Ų…ØŗØĒØŽØ¯Ų… Ų‡Ø°Ø§. ŲŠØąØŦŲ‰ Ø§Ų„Ø§ØĒØĩØ§Ų„ Ø¨Ø§Ų„Ų…ØŗØ¤ŲˆŲ„. login.alreadyLoggedIn=Ų„Ų‚Ø¯ ØĒØŗØŦŲ„ Ø¯ØŽŲˆŲ„Ų‹Ø§ ØĨŲ„Ų‰ login.alreadyLoggedIn2=ØŖØŦŲ‡Ø˛ØŠ ØŖØŽØąŲ‰. ŲŠØąØŦŲ‰ ØĒØŗØŦŲŠŲ„ Ø§Ų„ØŽØąŲˆØŦ Ų…Ų† Ø§Ų„ØŖØŦŲ‡Ø˛ØŠ ŲˆØ­Ø§ŲˆŲ„ Ų…ØąØŠ ØŖØŽØąŲ‰. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Ø­Ø´Ųˆ ØĨØļØ§ŲŲŠ Ų…ØŽØĩØĩ autoRedact.convertPDFToImageLabel=ØĒØ­ŲˆŲŠŲ„ PDF ØĨŲ„Ų‰ ØĩŲˆØąØŠ PDF (ŲŠØŗØĒØŽØ¯Ų… Ų„ØĨØ˛Ø§Ų„ØŠ Ø§Ų„Ų†Øĩ ØŽŲ„Ų Ø§Ų„Ų…ØąØ¨Øš) autoRedact.submitButton=ØĨØąØŗØ§Ų„ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=ØĨØ¸Ų‡Ø§Øą ØŦØ§ŲØ§ ØŗŲƒØąŲŠØ¨ØĒ @@ -818,8 +839,13 @@ sign.save=Ø­ŲØ¸ ØĒŲˆŲ‚ŲŠØš sign.personalSigs=ØĒŲˆŲ‚ŲŠØšØ§ØĒ Ø´ØŽØĩŲŠØŠ sign.sharedSigs=ØĒŲˆŲ‚ŲŠØšØ§ØĒ Ų…Ø´ØĒØąŲƒØŠ sign.noSavedSigs=Ų„Ų… ؊ØĒŲ… Ø§Ų„ØšØĢŲˆØą ØšŲ„Ų‰ ØĒŲˆŲ‚ŲŠØšØ§ØĒ Ų…Ø­ŲŲˆØ¸ØŠ - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=ØĨØĩŲ„Ø§Ø­ repair.header=ØĨØĩŲ„Ø§Ø­ Ų…Ų„ŲØ§ØĒ PDF @@ -863,7 +889,7 @@ ocr.selectText.10=؈ØļØš Ø§Ų„ØĒØšØąŲ Ø§Ų„Øļ؈ØĻ؊ ØšŲ„Ų‰ Ø§Ų„Ø­ØąŲˆŲ ocr.selectText.11=ØĨØ˛Ø§Ų„ØŠ Ø§Ų„ØĩŲˆØą بؚد Ø§Ų„ØĒØšØąŲ Ø§Ų„Øļ؈ØĻ؊ ØšŲ„Ų‰ Ø§Ų„Ø­ØąŲˆŲ (ŲŠØ˛ŲŠŲ„ ŲƒŲ„ Ø§Ų„ØĩŲˆØąØŒ ŲŠŲƒŲˆŲ† Ų…ŲŲŠØ¯Ų‹Ø§ ŲŲ‚Øˇ ØĨذا ŲƒØ§Ų† ØŦØ˛ØĄŲ‹Ø§ Ų…Ų† ØŽØˇŲˆØŠ Ø§Ų„ØĒØ­ŲˆŲŠŲ„) ocr.selectText.12=Ų†ŲˆØš Ø§Ų„ØšØąØļ (Ų…ØĒŲ‚Ø¯Ų…) ocr.help=ŲŠØąØŦŲ‰ Ų‚ØąØ§ØĄØŠ Ų‡Ø°Ų‡ Ø§Ų„ŲˆØĢاØĻŲ‚ Ø­ŲˆŲ„ ŲƒŲŠŲŲŠØŠ Ø§ØŗØĒØŽØ¯Ø§Ų… Ų‡Ø°Ø§ Ų„Ų„ØēاØĒ ØŖØŽØąŲ‰ ؈/ØŖŲˆ Ø§Ų„Ø§ØŗØĒØŽØ¯Ø§Ų… Ų„ŲŠØŗ ؁؊ Docker -ocr.credit=ØĒØŗØĒØŽØ¯Ų… Ų‡Ø°Ų‡ Ø§Ų„ØŽØ¯Ų…ØŠ OCRmyPDF ؈ Tesseract Ų„Ų„ØĒØšØąŲ Ø§Ų„Øļ؈ØĻ؊ ØšŲ„Ų‰ Ø§Ų„Ø­ØąŲˆŲ. +ocr.credit=ØĒØŗØĒØŽØ¯Ų… Ų‡Ø°Ų‡ Ø§Ų„ØŽØ¯Ų…ØŠ qpdf ؈ Tesseract Ų„Ų„ØĒØšØąŲ Ø§Ų„Øļ؈ØĻ؊ ØšŲ„Ų‰ Ø§Ų„Ø­ØąŲˆŲ. ocr.submit=Ų…ØšØ§Ų„ØŦØŠ PDF Ø¨Ø§ØŗØĒØŽØ¯Ø§Ų… OCR @@ -887,7 +913,7 @@ fileToPDF.submit=ØĒØ­ŲˆŲŠŲ„ ØĨŲ„Ų‰ PDF #compress compress.title=ØļØēØˇ compress.header=ØļØēØˇ ؅؄؁ PDF -compress.credit=ØĒØŗØĒØŽØ¯Ų… Ų‡Ø°Ų‡ Ø§Ų„ØŽØ¯Ų…ØŠ OCRmyPDF Ų„ØļØēØˇ / ØĒØ­ØŗŲŠŲ† PDF. +compress.credit=ØĒØŗØĒØŽØ¯Ų… Ų‡Ø°Ų‡ Ø§Ų„ØŽØ¯Ų…ØŠ qpdf Ų„ØļØēØˇ / ØĒØ­ØŗŲŠŲ† PDF. compress.selectText.1=Ø§Ų„ŲˆØļØš Ø§Ų„ŲŠØ¯ŲˆŲŠ - Ų…Ų† 1 ØĨŲ„Ų‰ 4 compress.selectText.2=Ų…ØŗØĒŲˆŲ‰ Ø§Ų„ØĒØ­ØŗŲŠŲ†: compress.selectText.3=4 (ØąŲ‡ŲŠØ¨ Ų„Ų„ØĩŲˆØą Ø§Ų„Ų†ØĩŲŠØŠ) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Ø­Ø°Ų Ø§Ų„Ų…Ø­Ø¯Ø¯ multiTool.downloadAll=ØĒØĩØ¯ŲŠØą multiTool.downloadSelected=ØĒØĩØ¯ŲŠØą Ø§Ų„Ų…Ø­Ø¯Ø¯ +multiTool.insertPageBreak=ØĨØ¯ØąØ§ØŦ ŲØ§ØĩŲ„ ØĩŲØ­Ø§ØĒ +multiTool.addFile=ØĨØļØ§ŲØŠ ؅؄؁ +multiTool.rotateLeft=ØĒØ¯ŲˆŲŠØą ØĨŲ„Ų‰ Ø§Ų„ŲŠØŗØ§Øą +multiTool.rotateRight=ØĒØ¯ŲˆŲŠØą ØĨŲ„Ų‰ Ø§Ų„ŲŠŲ…ŲŠŲ† +multiTool.split=ØĒŲ‚ØŗŲŠŲ… +multiTool.moveLeft=ØĒØ­ØąŲŠŲƒ ØĨŲ„Ų‰ Ø§Ų„ŲŠØŗØ§Øą +multiTool.moveRight=ØĒØ­ØąŲŠŲƒ ØĨŲ„Ų‰ Ø§Ų„ŲŠŲ…ŲŠŲ† +multiTool.delete=Ø­Ø°Ų +multiTool.dragDropMessage=Ø§Ų„ØĩŲØ­Ø§ØĒ Ø§Ų„Ų…Ø­Ø¯Ø¯ØŠ +multiTool.undo=ØĒØąØ§ØŦØš +multiTool.redo=ØĨؚاد؊ ØĨØŦØąØ§ØĄ + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=Ų‡Ø°Ų‡ Ø§Ų„Ų…ŲŠØ˛ØŠ Ų…ØĒŲˆŲØąØŠ ؁؊ ØĩŲØ­ØŠ Ø§Ų„ØŖØ¯ŲˆØ§ØĒ Ø§Ų„Ų…ØĒؚدد؊ Ų„Ø¯ŲŠŲ†Ø§. Ø§ØˇŲ„Øš ØšŲ„ŲŠŲ‡Ø§ Ų„Ų„Ø­ØĩŲˆŲ„ ØšŲ„Ų‰ ŲˆØ§ØŦŲ‡ØŠ Ų…ØŗØĒØŽØ¯Ų… Ų…Ø­ØŗŲ‘Ų†ØŠ Ų„ŲƒŲ„ ØĩŲØ­ØŠ ŲˆŲ…ŲŠØ˛Ø§ØĒ ØĨØļØ§ŲŲŠØŠ! @@ -1008,6 +1056,7 @@ pdfToImage.grey=ØĒØ¯ØąØŦ Ø§Ų„ØąŲ…Ø§Ø¯ŲŠ pdfToImage.blackwhite=ØŖØ¨ŲŠØļ ŲˆØŖØŗŲˆØ¯ (Ų‚Ø¯ ŲŠŲŲ‚Ø¯ Ø§Ų„Ø¨ŲŠØ§Ų†Ø§ØĒ!) pdfToImage.submit=ØĒØ­ŲˆŲŠŲ„ pdfToImage.info=Python ØēŲŠØą Ų…ØĢبØĒ. Ų…ØˇŲ„ŲˆØ¨ Ų„ØĒØ­ŲˆŲŠŲ„ WebP. +pdfToImage.placeholder=(Ų…ØĢØ§Ų„: 1,2,8 ØŖŲˆ 4,7,12-16 ØŖŲˆ 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=ØĒØ´ŲŲŠØą #watermark watermark.title=ØĨØļØ§ŲØŠ ØšŲ„Ø§Ų…ØŠ Ų…Ø§ØĻŲŠØŠ watermark.header=ØĨØļØ§ŲØŠ ØšŲ„Ø§Ų…ØŠ Ų…Ø§ØĻŲŠØŠ +watermark.customColor=Ų„ŲˆŲ† Ų†Øĩ Ų…ØŽØĩØĩ watermark.selectText.1=حدد PDF Ų„ØĨØļØ§ŲØŠ Ø§Ų„ØšŲ„Ø§Ų…ØŠ Ø§Ų„Ų…Ø§ØĻŲŠØŠ ØĨŲ„ŲŠŲ‡: watermark.selectText.2=Ų†Øĩ Ø§Ų„ØšŲ„Ø§Ų…ØŠ Ø§Ų„Ų…Ø§ØĻŲŠØŠ: watermark.selectText.3=Ø­ØŦŲ… Ø§Ų„ØŽØˇ: @@ -1097,7 +1147,7 @@ changeMetadata.submit=ØĒØēŲŠŲŠØą #pdfToPDFA pdfToPDFA.title=PDF ØĨŲ„Ų‰ PDF/A pdfToPDFA.header=PDF ØĨŲ„Ų‰ PDF/A -pdfToPDFA.credit=ØĒØŗØĒØŽØ¯Ų… Ų‡Ø°Ų‡ Ø§Ų„ØŽØ¯Ų…ØŠ ghostscript Ų„ØĒØ­ŲˆŲŠŲ„ PDF/A. +pdfToPDFA.credit=ØĒØŗØĒØŽØ¯Ų… Ų‡Ø°Ų‡ Ø§Ų„ØŽØ¯Ų…ØŠ qpdf Ų„ØĒØ­ŲˆŲŠŲ„ PDF/A. pdfToPDFA.submit=ØĒØ­ŲˆŲŠŲ„ pdfToPDFA.tip=Ų„Ø§ ŲŠØšŲ…Ų„ Ø­Ø§Ų„ŲŠŲ‹Ø§ Ų„Ų…Ø¯ØŽŲ„Ø§ØĒ Ų…ØĒؚدد؊ ؁؊ ŲˆŲ‚ØĒ ŲˆØ§Ø­Ø¯ pdfToPDFA.outputFormat=ØĒŲ†ØŗŲŠŲ‚ Ø§Ų„ØĨØŽØąØ§ØŦ @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Ų…ØŗØĒŲˆŲ‰ Ø§Ų„ØĨØ´Ø§ØąØŠ Ø§Ų„Ų…ØąØŦØšŲŠØŠ: ا؎ØĒØą Ų…Øŗ splitByChapters.desc.3=ØĒŲ…ØĢŲŠŲ„ Ø§Ų„Ø¨ŲŠØ§Ų†Ø§ØĒ Ø§Ų„ØŖØĩŲ„ŲŠØŠ: ØĨذا ØĒŲ… ا؎ØĒŲŠØ§ØąŲ‡Ø§ØŒ ØŗØĒØąŲ…Ø˛ Ø§Ų„Ø¨ŲŠØ§Ų†Ø§ØĒ Ø§Ų„Ų…ØąØŦØšŲŠØŠ Ø§Ų„ØŖØĩŲ„ŲŠØŠ ØĨŲ„Ų‰ ŲƒŲ„ PDF Ų…ØŦØ˛ØŖ. splitByChapters.desc.4=ØŗŲ…Ø§Ø­ Ø¨Ø§Ų„ØĒŲƒØąØ§Øą: ØĨذا ØĒŲ… ا؎ØĒŲŠØ§ØąŲ‡ØŒ ŲŠØŗŲ…Ø­ Ø¨ŲˆØŦŲˆØ¯ Ų…ØšØ§ŲŠŲ†Ø§ØĒ Ų…ØĒؚدد؊ ؁؊ Ø§Ų„ØĩŲØ­ØŠ Ų†ŲØŗŲ‡Ø§ Ų„ØŽŲ„Ų‚ Ų…Ų„ŲØ§ØĒ PDF ؅؆؁ØĩŲ„ØŠ. splitByChapters.submit=ØĒŲ‚ØˇŲŠØš ؅؄؁ PDF + +#File Chooser +fileChooser.click=Ø§Ų†Ų‚Øą Ų‡Ų†Ø§ +fileChooser.or=ØŖŲˆ +fileChooser.dragAndDrop=Ų‚Ų… Ø¨ØŗØ­Ø¨ Ø§Ų„Ų…Ų„ŲØ§ØĒ ؈ØĨŲŲ„Ø§ØĒŲ‡Ø§ +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Ų‚Ų… Ø¨ØŗØ­Ø¨ Ø§Ų„Ų…ŲØ§ØĒ ؈ØĨŲŲ„Ø§ØĒŲ‡Ø§ Ų‡Ų†Ø§ + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_az_AZ.properties b/src/main/resources/messages_az_AZ.properties new file mode 100644 index 0000000000..6034b301f0 --- /dev/null +++ b/src/main/resources/messages_az_AZ.properties @@ -0,0 +1,1347 @@ +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=ltr +addPageNumbers.fontSize=Şrift ÖlçÃŧsÃŧ +addPageNumbers.fontName=Şrift AdÄą +pdfPrompt=PDF(lər)i Seç +multiPdfPrompt=PDFləri Seç (2+) +multiPdfDropPrompt=EhtiyacÄąnÄąz olan bÃŧtÃŧn PDFləri seçin (və ya sÃŧrÃŧkləyib buraxÄąn) +imgPrompt=Şəkil(lər)i Seç +genericSubmit=Təsdiq Et +processTimeWarning=XəbərdarlÄąq: Bu proses fayl ÃļlçÃŧsÃŧndən asÄąlÄą olaraq bir dəqiqəyə qədər vaxt ala bilər +pageOrderPrompt=XÃŧsusi Səhifə ArdÄącÄąllığı (VergÃŧllə ayrÄąlmÄąÅŸ səhifə nÃļmrələri listini və ya 2n+1 tərzində Funksiyalar daxil edin) : +pageSelectionPrompt=XÃŧsusi Səhifə Seçimi (1, 5, 6 tərzində vergÃŧllə ayrÄąlmÄąÅŸ səhifə nÃļmrələri listini və ya 2n+1 tərzində Funksiyalar daxil edin) : +goToPage=Get +true=Doğru +false=YanlÄąÅŸ +unknown=Bilinməyən +save=Saxla +saveToBrowser=Brauzerdə Saxla +close=Bağla +filesSelected=seçilmiş fayllar +noFavourites=Sevimlilər əlavə edilmədi +downloadComplete=YÃŧkləmə TamamlandÄą +bored=GÃļzləməkdən SÄąxÄąldÄąnÄąz? +alphabet=Əlifba +downloadPdf=PDF YÃŧklə +text=YazÄą +font=Şrift +selectFillter=-- Seç -- +pageNum=Səhifə nÃļmrəsi +sizes.small=Kiçik +sizes.medium=Orta +sizes.large=BÃļyÃŧk +sizes.x-large=Ekstra BÃļyÃŧk +error.pdfPassword=PDF sənədi şifrlənmişdir və şifr təmin edilməmişdir və ya yanlÄąÅŸdÄąr. +delete=Sil +username=İstifadəçi AdÄą +password=Şifr +welcome=Xoş gəldiniz +property=XÃŧsusiyyət +black=Qara +white=Ağ +red=QÄąrmÄązÄą +green=YaÅŸÄąl +blue=Mavi +custom=XÃŧsusi... +WorkInProgess=İş davam edir, İşləməyə bilər və ya xətalarla Ãŧzləşə bilərsiniz, Zəhmət olmasa problemləri bildirin! +poweredBy=Təchiz edilmişdir +yes=Bəli +no=Xeyr +changedCredsMessage=Etibarnamələr dəyişdirildi! +notAuthenticatedMessage=İstifadəçinin kimliyi təsdiqlənməyib. +userNotFoundMessage=İstifadəçi tapÄąlmadÄą. +incorrectPasswordMessage=Cari şifr yanlÄąÅŸdÄąr. +usernameExistsMessage=İstifadəçi adÄą mÃļvcuddur. +invalidUsernameMessage=YanlÄąÅŸ istifadəçi adÄą, istifadəçi adÄą sadəcə hərflərdən, rəqəmlərdən və @._+- xÃŧsusi simvollarÄąndan ibarət ola bilər və ya dÃŧzgÃŧn email ÃŧnvanÄą olmalÄądÄąr. +invalidPasswordMessage=Şifr boş olmamalÄądÄąr, başlanğıc və sonunda boşluqdan istifadə edilməməlidir. +confirmPasswordErrorMessage=Yeni Şifr və Yeni Şifri Doğrula uyğun olmalÄądÄąr. +deleteCurrentUserMessage=HazÄąrda daxil olmuş istifadəçini silmək mÃŧmkÃŧn deyil. +deleteUsernameExistsMessage=İstifadəçi adÄą mÃļvcud deyildir və silinə bilməz. +downgradeCurrentUserMessage=Cari istifadəçinin rolunu aşağı salmaq mÃŧmkÃŧn deyil +disabledCurrentUserMessage=Cari istifadəçi deaktivləşdirilə bilməz +downgradeCurrentUserLongMessage=Cari istifadəçinin rolunu aşağı salmaq mÃŧmkÃŧn deyil. Deməli, cari istifadəçi gÃļstərilməyəcək. +userAlreadyExistsOAuthMessage=İstifadəçi OAuth2 istifadəçisi olaraq mÃļvcuddur. +userAlreadyExistsWebMessage=İstifadəçi veb istifadəçisi olaraq mÃļvcuddur. +error=Xəta +oops=Oops! +help=YardÄąm +goHomepage=Ana səhifəyə get +joinDiscord=Discord serverimizə qatÄąl +seeDockerHub=Docker Hub-a bax +visitGithub=Github Repository-ə Baş Çək +donate=İanə Ver +color=Rəng +sponsor=Sponsor +info=Məlumat +pro=Pro +page=Səhifə +pages=Səhifələr +loading=YÃŧklənir... +addToDoc=Sənədə Əlavə Et +reset=SÄąfÄąrla +apply=Apply + +legal.privacy=Məxfilik Siyasəti +legal.terms=Qaydalar və Şərtlər +legal.accessibility=ƏlçatanlÄąq +legal.cookie=Kuki Siyasəti +legal.impressum=TəəssÃŧrat + +############### +# Pipeline # +############### +pipeline.header=Pipeline Menyusu (Beta) +pipeline.uploadButton=Fərdi YÃŧklə +pipeline.configureButton=Konfiqurasiya Et +pipeline.defaultOption=Fərdi +pipeline.submitButton=Təsdiqlə +pipeline.help=Pipeline KÃļməyi +pipeline.scanHelp=Qovluq Skanlama KÃļməyi +pipeline.deletePrompt=Pipeline-Äą silmək istədiyinizə əminsiniz? + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=Pipeline KonfiqurasiyasÄą +pipelineOptions.pipelineNameLabel=Pipeline AdÄą +pipelineOptions.saveSettings=Əməliyyat Parametrlərini Saxla +pipelineOptions.pipelineNamePrompt=Pipeline adÄąnÄą bura daxil et +pipelineOptions.selectOperation=Əməliyyat seç +pipelineOptions.addOperationButton=Əməliyyat əlavə et +pipelineOptions.pipelineHeader=Pipeline: +pipelineOptions.saveButton=Endir +pipelineOptions.validateButton=Doğrula + +######################## +# ENTERPRISE EDITION # +######################## +enterpriseEdition.button=Pro versiyaya keç +enterpriseEdition.warning=Bu xÃŧsusiyyət yalnÄąz pro istifadəçilər ÃŧçÃŧn əlçatandÄąr. +enterpriseEdition.yamlAdvert=Stirling PDF Pro YAML konfiqurasiya fayllarÄąnÄą və digər SSO xÃŧsusiyyətlərini dəstəkləyir. +enterpriseEdition.ssoAdvert=Daha çox istifadəçi-idarəetmə xÃŧsusiyyətləri axtarÄąrsÄąnÄąz? Stirling PDF Pro-nu nəzərdən keçirin + + +################# +# Analytics # +################# +analytics.title=Stirling PDF-i daha yaxÅŸÄą etmək istəyirsinizmi? +analytics.paragraph1=Stirling PDF bizə məhsulu inkişaf etdirməyə kÃļmək etmək ÃŧçÃŧn analitikaya ÃŧstÃŧnlÃŧk verib. Biz heç bir şəxsi məlumatÄą və ya fayl məzmununu izləmirik. +analytics.paragraph2=Zəhmət olmasa, Stringling-PDF-ə inkişaf etməkdə və istifadəçilərimizi daha yaxÅŸÄą anlamaqda yardÄąm etmək ÃŧçÃŧn analitikanÄą aktivləşdirməyi nəzərə alÄąn. +analytics.enable=AnalitikanÄą aktivləşdir +analytics.disable=AnalitikanÄą deaktivləşdir +analytics.settings=AnalitikanÄąn parametrlərini config/settings.yml faylÄąndan dəyişə bilərsiniz. + +############# +# NAVBAR # +############# +navbar.favorite=Sevimlilər +navbar.darkmode=QaranlÄąq Tema +navbar.language=Dillər +navbar.settings=Parametrlər +navbar.allTools=Alətlər +navbar.multiTool=Multi-Alət +navbar.search=Axtar +navbar.sections.organize=Təşkil et +navbar.sections.convertTo=PDF-ə Çevir +navbar.sections.convertFrom=PDF-dən Çevir +navbar.sections.security=İmza & TəhlÃŧkəsizlik +navbar.sections.advance=QabaqcÄąl +navbar.sections.edit=Bax & Redaktə et +navbar.sections.popular=Populyar + +############# +# SETTINGS # +############# +settings.title=Parametrlər +settings.update=Yeniləmə mÃļvcuddur +settings.updateAvailable={0} cari quraşdÄąrÄąlmÄąÅŸ versiyadÄąr. Yeni ({1}) versiyasÄą mÃļvcuddur. +settings.appVersion=Proqram VersiyasÄą: +settings.downloadOption.title=YÃŧkləmə versiyasÄąnÄą seçin (Tək fayllÄą zip olmayan yÃŧkləmələr ÃŧçÃŧn): +settings.downloadOption.1=Eyni pəncərədə aÃ§Äąn +settings.downloadOption.2=Yeni pəncərədə aÃ§Äąn +settings.downloadOption.3=FaylÄą endirin +settings.zipThreshold=YÃŧklənmiş fayllarÄąn sayÄą artÄąq olduqda zip fayllarÄą +settings.signOut=Ã‡ÄąxÄąn +settings.accountSettings=Hesab Parametrləri +settings.bored.help=Easter egg oyununu aktivləşdirir +settings.cacheInputs.name=Formada daxil edilən bilgiləri yadda saxlayÄąn +settings.cacheInputs.help=Gələcək əməliyyatlar ÃŧçÃŧn əvvəllər istifadə edilmiş daxil edilmiş bilgiləri saxlamağa imkan verin + +changeCreds.title=MəlumatlarÄą dəyişdirin +changeCreds.header=Hesab MəlumatlarÄąnÄązÄą Yeniləyin +changeCreds.changePassword=Siz standart giriş məlumatlarÄąndan istifadə edirsiniz. Zəhmət olmasa, yeni şifr daxil edin +changeCreds.newUsername=Yeni İstifadəçi AdÄą +changeCreds.oldPassword=Cari Şifr +changeCreds.newPassword=Yeni Şifr +changeCreds.confirmNewPassword=Yeni Şifri Təsdiqləyin +changeCreds.submit=Dəyişiklikləri Təsdiqlə + + + +account.title=Hesab Parametrləri +account.accountSettings=Hesab Parametrləri +account.adminSettings=Admin Paramterləri - İstifadəçilər Əlavə Et və Onlara Bax +account.userControlSettings=İstifadəçi İdarəetmə Parametrləri +account.changeUsername=İstifadəçi AdÄąnÄą Dəyiş +account.newUsername=Yeni İstifadəçi AdÄą +account.password=Təsdiqləmə Şifri +account.oldPassword=Keçmiş Şifr +account.newPassword=Yeni Şifr +account.changePassword=Şifri Dəyiş +account.confirmNewPassword=Yeni Şifri Təsdiqlə +account.signOut=Ã‡ÄąxÄąÅŸ +account.yourApiKey=Sizin API AçarÄąnÄąz +account.syncTitle=Brauzer parametrlərini hesabla sinxronlaşdÄąrÄąn +account.settingsCompare=Parametrlərin mÃŧqayisəsi: +account.property=XÃŧsusiyyət +account.webBrowserSettings=Veb Brauzer Parametrləri +account.syncToBrowser=HesabÄą SinxronlaşdÄąr -> Brauzer +account.syncToAccount=HesabÄą SinxronlaşdÄąr <- Brauzer + + +adminUserSettings.title=İstifadəçi İdarəetmə Parametrləri +adminUserSettings.header=Admin İstifadəçi Nəzarəti Parametrləri +adminUserSettings.admin=Admin +adminUserSettings.user=İstifadəçi +adminUserSettings.addUser=Yeni İstifadəçi Əlavə Et +adminUserSettings.deleteUser=İstifadəçi Sil +adminUserSettings.confirmDeleteUser=İstifadəçi silinməlidirmi? +adminUserSettings.confirmChangeUserStatus=İstifadəçi aktivləşdirilməli/deaktivləşdirilməlidirmi? +adminUserSettings.usernameInfo=İstifadəçi adÄą sadəcə hərflərdən, rəqəmlərdən və @._+- xÃŧsusi simvollarÄąndan ibarət ola bilər və ya dÃŧzgÃŧn email ÃŧnvanÄą olmalÄądÄąr. +adminUserSettings.roles=Rollar +adminUserSettings.role=Rol +adminUserSettings.actions=Fəaliyyətlər +adminUserSettings.apiUser=MəhdudlaşdÄąrÄąlmÄąÅŸ API İstifadəçisi +adminUserSettings.extraApiUser=Əlavə MəhdudlaşdÄąrÄąlmÄąÅŸ API İstifadəçisi +adminUserSettings.webOnlyUser=YalnÄąz Veb İstifadəçisi +adminUserSettings.demoUser=Demo İstifadəçisi (Fərdi parametrlər yoxdur) +adminUserSettings.internalApiUser=Daxili API İstifadəçisi +adminUserSettings.forceChange=İstifadəçini giriş zamanÄą parolu dəyişməyə məcbur et +adminUserSettings.submit=İstifadəçini Saxla +adminUserSettings.changeUserRole=İstifadəçinin rolunu dəyişdir +adminUserSettings.authenticated=DoğrulanmÄąÅŸ +adminUserSettings.editOwnProfil=Öz profilini redaktə et +adminUserSettings.enabledUser=aktivləşdirilmiş istifadəçi +adminUserSettings.disabledUser=deaktivləşdirilmiş istifadəçi +adminUserSettings.activeUsers=Aktiv İstifadəçilər: +adminUserSettings.disabledUsers=Deaktiv İstifadəçilər: +adminUserSettings.totalUsers=Ümumi İstifadəçilər: +adminUserSettings.lastRequest=Son sorğu + + +database.title=Verilənlər bazasÄąnÄą Daxil/Xaric Et +database.header=Verilənlər bazasÄąnÄą Daxil/Xaric Et +database.fileName=Fayl AdÄą +database.creationDate=YaradÄąlma tarixi +database.fileSize=Fayl ÖlçÃŧsÃŧ +database.deleteBackupFile=Yedək FaylÄąnÄą Sil +database.importBackupFile=Yedək FaylÄąnÄą Daxil Et +database.createBackupFile=Create Backup File +database.downloadBackupFile=Yedək FaylÄąnÄą YÃŧklə +database.info_1=MəlumatÄą daxil edərkən doğru strukturun mÃļvcudluğundan əmin olmaq vacibdir. Əgər nə etdiyinizdən əmin deyilsinizsə, professional birindən məsləhət və yardÄąm alÄąn. StrukturdakÄą xəta proqramdakÄą nasazlÄąqlardan proqramÄą çalÄąÅŸdÄąrma qabiliyyətinin tamamilə aradan qalxmasÄąna qədər bir sÄąra problemlərə səbəb ola bilər. +database.info_2=FaylÄąn adÄą fayl yÃŧklənərkən Ãļnəmli deyildir. FaylÄąn adÄą sonradan sabit adlandÄąrmanÄąn varlığından əmin olmaq məqsədilə backup_user_yyyyMMddHHmm.sql tərzində formata dəyişdiriləcəkdir. +database.submit=Yedəkləməni Daxil Et +database.importIntoDatabaseSuccessed=Verilənlər bazasÄąna daxil etmə uğurla nəticələndi +database.backupCreated=Database backup successful +database.fileNotFound=Fayl TapÄąlmadÄą +database.fileNullOrEmpty=Fayl boş və ya "null" olmamalÄądÄąr +database.failedImportFile=FaylÄą daxil etmək alÄąnmadÄą + +session.expired=SessiyanÄązÄąn vaxtÄą bitdi. Səhifəni yeniləyin və yenidən cəhd edin. +session.refreshPage=Səhifəni Yenilə + +############# +# HOME-PAGE # +############# +home.desc=BÃŧtÃŧn PDF ehtiyaclarÄąnÄąz ÃŧçÃŧn lokal-host edilən biraddÄąmlÄąq həll. +home.searchBar=XÃŧsusiyyətləri axtar... + + +home.viewPdf.title=PDF-ə bax +home.viewPdf.desc=Bax, sitat gÃļtÃŧr, mətn və ya şəkil əlavə et +viewPdf.tags=bax,oxu,sitat gÃļtÃŧr,mətn,şəkil + +home.multiTool.title=PDF Multi-alət +home.multiTool.desc=Səhifələri Birləşdir, Çevir, Yenidən SÄąrala, BÃļl və Sil +multiTool.tags=Multi-alət,Çoxlu əməliyyat,UI,tut-sÃŧrÃŧşdÃŧr,front end,istifadəçi-tərəf,interaktiv,qarÅŸÄąlÄąqlÄą,yerini dəyiş,sil,kÃļçÃŧr,bÃļl + +home.merge.title=Birləşdir +home.merge.desc=Bir neçə PDF-i asanlÄąqla bir PDF-də birləşdir. +merge.tags=birləşdir,Səhifə əməliyyatlarÄą,Back end,server-tərəf + +home.split.title=BÃļl +home.split.desc=PDF-ləri bir neçə sənədə bÃļl +split.tags=Səhifə əməliyyarlarÄą,bÃļl,Çoxlu Səhifə,kəs,server-tərəf + +home.rotate.title=Çevir +home.rotate.desc=PDF-lərinizi asanlÄąqla çevirin. +rotate.tags=server-tərəf + + +home.imageToPdf.title=Şəkildən PDF-ə +home.imageToPdf.desc=Şəkli (PNG, JPEG, GIF) PDF-ə Çevir. +imageToPdf.tags=çevirmə,şəkil,jpg,fotoşəkil,foto + +home.pdfToImage.title=PDF-dən Şəkilə +home.pdfToImage.desc=PDF-i Şəkilə Çevir. (PNG, JPEG, GIF) +pdfToImage.tags=çevirmə,şəkil,jpg,fotoşəkil,foto + +home.pdfOrganiser.title=Səhifələri SÄąrala +home.pdfOrganiser.desc=Səhifələri Sil/SÄąrasÄąnÄą Dəyiş +pdfOrganiser.tags=duplex,tək,cÃŧt,sÄąrala,yerini dəyiş + + +home.addImage.title=Şəkil əlavə et +home.addImage.desc=PDF-də təyin edilmiş yerə şəkil əlavə edir +addImage.tags=şəkil,jpg,fotoşəkil,foto + +home.watermark.title=Watermark əlavə et +home.watermark.desc=PDF sənədinə fərdi watermark əlavə et. +watermark.tags=Mətn,təkrarlanan,nişan,sahib olmaq,mÃŧəllif hÃŧquqlarÄą,əmtəə nişanÄą,şəkil,jpg,fotoşəkil,foto + +home.permissions.title=İcazəni Dəyiş +home.permissions.desc=PDF Sənədinin icazələrini dəyiş +permissions.tags=oxu,yaz,redaktə et,çap et + + +home.removePages.title=Sil +home.removePages.desc=PDF Sənədindən istəmədiyin şəkilləri sil. +removePages.tags=Səhifələri təmizlə,səhifələri sil + +home.addPassword.title=Şifr Əlavə Et +home.addPassword.desc=Sənədini şifr ilə kilidlə. +addPassword.tags=təhlÃŧkəsiz,təhlÃŧkəsizlik + +home.removePassword.title=Şifri Sil +home.removePassword.desc=PDF Sənədindən şifr qorumasÄąnÄą gÃļtÃŧr. +removePassword.tags=təhlÃŧkəsiz,deşifr,təhlÃŧkəsizlik,kodu aç,kodu sil + +home.compressPdfs.title=SÄąx +home.compressPdfs.desc=PDF fayllarÄąnÄą sÄąxaraq onlarÄąn ÃļlçÃŧsÃŧnÃŧ azalt. +compressPdfs.tags=sÄąx,balaca,kiçik + + +home.changeMetadata.title=MetadatanÄą Dəyiş +home.changeMetadata.desc=PDF sənədindəki MetadatanÄą Dəyiş/Sil/Əlavə et +changeMetadata.tags=BaşlÄąq,mÃŧəllif,tarix,yaradÄąlÄąÅŸ,zaman,yayÄąmÃ§Äą,istehsalÃ§Äą,statistika + +home.fileToPDF.title=FaylÄą PDF-ə Çevir +home.fileToPDF.desc=Hardasa bÃŧtÃŧn fayllarÄą PDF-ə çevir (DOCX, PNG, XLS, PPT, TXT və daha çox) +fileToPDF.tags=çevirmə,format,sənəd,şəkil,slayd,mətn,çevirmə,ofis,docs,word,excel,powerpoint + +home.ocr.title=OCR / SkanlarÄą Təmizlə +home.ocr.desc=SkanlarÄą təmizləyir və PDF-in içərisindəki şəkillərdəki yazÄąnÄą tapÄąb mətn olaraq əlavə edir. +ocr.tags=tanÄąma,mətn,şəkil,skan,oxu,tanÄą,təyin et,redaktəediləbilən + + +home.extractImages.title=Şəkilləri Xaric Et +home.extractImages.desc=PDF-dəki şəkilləri xaric edib onlarÄą zip faylÄąnda saxlayÄąr +extractImages.tags=şəkil,foto,saxla,arxiv,zip,çək,gÃļtÃŧr + +home.pdfToPDFA.title=PDF-dən PDF/A-a +home.pdfToPDFA.desc=PDF faylÄąnÄą uzunmÃŧddətli saxlama ÃŧçÃŧn PDF/A-a çevir +pdfToPDFA.tags=arxiv,uzunmÃŧddətli,standard,çevirmə,yaddaş,saxlama + +home.PDFToWord.title=PDF-dən Word-ə +home.PDFToWord.desc=PDF-i Word formatlarÄąna çevir (DOC, DOCX və ODT) +PDFToWord.tags=doc,docx,odt,word,dəyişmə,format,çevirmə,ofis,microsoft,docfile + +home.PDFToPresentation.title=PDF-dən Təqdimata +home.PDFToPresentation.desc=PDF-i Təqdimat formatlarÄąna çevir (PPT, PPTX və ODP) +PDFToPresentation.tags=slaydlar,şou,ofis,microsoft + +home.PDFToText.title=PDF-də RTF-ə (Mətn) +home.PDFToText.desc=PDF-i mətn və ya RTF formatÄąna çevir +PDFToText.tags=richformat,richtextformat,zəngin mətn formatÄą + +home.PDFToHTML.title=PDF-dən HTML-ə +home.PDFToHTML.desc=PDF-i HTML-ə çevir +PDFToHTML.tags=veb-məzmun,brauzerə uyğun + + +home.PDFToXML.title=PDF-dən XML-ə +home.PDFToXML.desc=PDF-i XML FormatÄąna Çevir +PDFToXML.tags=data-xaricetmə,strukturlu-məzmun,interop,çevirmə,dəyişmə + +home.ScannerImageSplit.title=Skan Edilmiş Şəkilləri Detektə et/AyÄąr +home.ScannerImageSplit.desc=Şəkil/PDF-dən çoxlu şəkilləri ayÄąrÄąr +ScannerImageSplit.tags=ayÄąr,avtodetektə,skan,çoxlu şəkil,nizamla + +home.sign.title=İmzala +home.sign.desc=Mətn, şəkil və ya əllə çəkmə Ãŧsulu ilə PDF-ə imza əlavə edir +sign.tags=təsdiqlə,baş hərflər,çəkilmiş-imza,mətn-imza,şəkil-imza + +home.flatten.title=Sadələşdir +home.flatten.desc=BÃŧtÃŧn interaktiv elementləri və anketləri PDF-dən sil +flatten.tags=statik,deaktiv,qeyri-interaktiv,streamline + +home.repair.title=Bərpa Et +home.repair.desc=Pozulmuş PDF-i Bərpa Etməyə ÇalÄąÅŸÄąr +repair.tags=dÃŧzəlt,bərpa et,korreksiya et,geri qaytar + +home.removeBlanks.title=Boş Səhifələri Sil +home.removeBlanks.desc=Sənəddə boş səhifələri tapÄąr və silir +removeBlanks.tags=təmizləmə,streamline,qeyri-məzmun,nizamla + +home.removeAnnotations.title=SitatlarÄą Sil +home.removeAnnotations.desc=PDF-dən bÃŧtÃŧn şərhləri və sitatlarÄą silir +removeAnnotations.tags=şərhlər,Ãļnə Ã§Äąxanlar,qeydlər,işarələmə,sil + +home.compare.title=MÃŧqayisə Et +home.compare.desc=2 PDF Sənədini mÃŧqayisə edir və fərqləri gÃļstərir +compare.tags=fərqləndir,təzad yarat,dəyişikliklər,analiz + +home.certSign.title=Sertifikat İlə İmzala +home.certSign.desc=PDF-i Sertifikat/Açar (PEM/P12) ilə imzalayÄąr +certSign.tags=Doğrula,PEM,P12,rəsmi,şifrlə + +home.removeCertSign.title=Sertifikat İmzasÄąnÄą Sil +home.removeCertSign.desc=PDF-dən Sertifikat imzasÄąnÄą gÃļtÃŧr +removeCertSign.tags=Doğrula,PEM,P12,rəsmi,deşifr + +home.pageLayout.title=Çoxsəhifəli Tərtibat +home.pageLayout.desc=PDF-in birdən çox səhifəsini bir səhifədə birləşdir +pageLayout.tags=birləşdir,sintez,tək-baxÄąÅŸ,nizamla + +home.scalePages.title=Səhifə ÃļlçÃŧsÃŧnÃŧ/MiqyasÄąnÄą Dəyiş +home.scalePages.desc=Səhifənin və/və ya onun məzmununun ÃļlçÃŧsÃŧnÃŧ və miqyasÄąnÄą dəyiş +scalePages.tags=ÃļlçÃŧsÃŧnÃŧ dəyiş,modifikasiya et,ÃļlçÃŧlər,uyğunlaş + +home.pipeline.title=Pipeline +home.pipeline.desc=Pipeline Skriptləri təyin edərək PDF-lər Ãŧzərində bir neçə prosesi eyni vaxtda reallaşdÄąrÄąn. +pipeline.tags=avtomatlaşdÄąr,ardÄącÄąllÄąq,skriptlənmiş,kÃŧtləvi-proses + +home.add-page-numbers.title=Səhifələri NÃļmrələ +home.add-page-numbers.desc=Sənədin səhifələrinə təyin edilmiş yerdə nÃļmrələr əlavə edin +add-page-numbers.tags=nÃļmrələ,taq,səliqələ,indeks + +home.auto-rename.title=PDF FaylÄąnÄą Avtomatik Yenidən AdlandÄąr +home.auto-rename.desc=TapÄąlmÄąÅŸ başlığa əsasən PDF faylÄąnÄąn adÄąnÄą dəyişir +auto-rename.tags=avtodetektə,başlÄąq-əsaslÄą,səliqələ,yenidən adlandÄąr + +home.adjust-contrast.title=Rəngləri/KontrastÄą Tənzimlə +home.adjust-contrast.desc=PDF-in kontrastÄąnÄą, parlaqlığınÄą, rəng doyğunluğunu tənzimlə +adjust-contrast.tags=rəng-tənzimləmə,kÃļklə,modifikasiya et,yaxÅŸÄąlaşdÄąr + +home.crop.title=PDF-i Kəs +home.crop.desc=ÖlçÃŧsÃŧnÃŧ azaltmaq ÃŧçÃŧn PDF-i kəs (mətni saxlayÄąr!) +crop.tags=kəs,kiçilt,redaktə et,forma + +home.autoSplitPDF.title=Səhifələri Avtomatik AyÄąr +home.autoSplitPDF.desc=Fiziki skan olunmuş səhifələri QR koda əsasən ayÄąr +autoSplitPDF.tags=QR-əsaslÄą,ayrÄą,skan-seqment,nizamla + +home.sanitizePdf.title=Təmizlə +home.sanitizePdf.desc=Skriptləri və digər elementləri PDF faylÄąndan sil +sanitizePdf.tags=təmiz,təhlÃŧkəsiz,gÃŧvənli,sil + +home.URLToPDF.title=URL/Veb-Sayt-dan PDF-ə +home.URLToPDF.desc=Hər hansÄą http(s)URL-i PDF-ə çevirir +URLToPDF.tags=veb,səhifəni-saxla,webdən-sənədə,arxiv + +home.HTMLToPDF.title=HTML-dən PDF-ə +home.HTMLToPDF.desc=Hər hansÄą HTML faylÄąnÄą və ya ZİP-i PDF-ə çevirir +HTMLToPDF.tags=işarələmə,veb-məzmun,çevirmə,dəyişmə + + +home.MarkdownToPDF.title=Markdown-dan PDF-ə +home.MarkdownToPDF.desc=Hər hansÄą Markdown faylÄąnÄą PDF-ə çevirir +MarkdownToPDF.tags=işarələmə,web-məzmun,dəyişmə,çevirmə + + +home.getPdfInfo.title=PDF-in BÃŧtÃŧn MəlumatlarÄą +home.getPdfInfo.desc=PDF barədə mÃŧmkÃŧn olan bÃŧtÃŧn məlumatlarÄą əldə edir +getPdfInfo.tags=informasiy,data,məlumatlar,statistika + + +home.extractPage.title=Səhifə(lər)i xaric et +home.extractPage.desc=Seçilmiş səhifələri PDF-dən xaric edərək əldə et +extractPage.tags=Ã§Äąxar + + +home.PdfToSinglePage.title=PDF-dən 1 BÃļyÃŧk Səhifəyə +home.PdfToSinglePage.desc=BÃŧtÃŧn PDF səhifələrini bir bÃļyÃŧk səhifəyə çevirir +PdfToSinglePage.tags=tək səhifə + + +home.showJS.title=Javascript-i GÃļstər +home.showJS.desc=PDF-in tərkibinə əlavə edilmiş JS-i axtarÄąr və gÃļstərir +showJS.tags=JS + +home.autoRedact.title=Avtomatik Gizlətmə +home.autoRedact.desc=Daxil edilmiş data əsasÄąnda PDF-dəki mÃŧəyyən mətn hissəsini qara qutu ilə gizlədir +autoRedact.tags=Qarala,gizlət,sil,qara,marker,gizli + +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + +home.tableExtraxt.title=PDF-dən CSV-ə +home.tableExtraxt.desc=PDF-dən cədvəlləri CSV-ə çevirərək xaric edir +tableExtraxt.tags=CSV,Cədvəl xaricetmə,xaric et,çevir + + +home.autoSizeSplitPDF.title=Say/ÖlçÃŧyə Əsasən Avtomatik AyÄąr +home.autoSizeSplitPDF.desc=PDF-i ÃļlçÃŧyə, səhifə sayÄąna və ya sənəd sayÄąna əsasən bir neçə PDF-ə ayÄąr. +autoSizeSplitPDF.tags=pdf,ayÄąr,sənəd,nizamla + + +home.overlay-pdfs.title=Üst-Üstə Qoy +home.overlay-pdfs.desc=Bir PDF-i digərinin ÃŧstÃŧnə qoyur +overlay-pdfs.tags=Ãŧst-Ãŧstə + +home.split-by-sections.title=PDF-i Hissələrə Əsasən BÃļl +home.split-by-sections.desc=PDF-in hər səhifəsini daha kiçik Ãŧfuqi və şaquli hissələrə bÃļl +split-by-sections.tags=Hissə BÃļlgÃŧsÃŧ, AyÄąr, Fərdiləşdir + +home.AddStampRequest.title=PDF-i MÃļhÃŧrlə +home.AddStampRequest.desc=Təyin edilmiş hissələrə mətn və ya şəkil mÃļhÃŧrləri əlavə edin +AddStampRequest.tags=MÃļhÃŧr, Şəkil əlavə et, şəkli ortala, Watermark, PDF, Embed, Fərdiləşdir + + +home.PDFToBook.title=PDF-dən Kitaba +home.PDFToBook.desc=PDF-i Calibre istifadə edərək Kitab/Komiks formatÄąna çevirir +PDFToBook.tags=Kitab,Comic,Calibre,Çevir,manqa,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf + +home.BookToPDF.title=Kitabdan PDF-ə +home.BookToPDF.desc=Kitab/Komiks formatlarÄąnÄą Calibre istifadə edərək PDF-ə çevirir +BookToPDF.tags=Kitab,Komiks,Calibre,Çevir,manqa,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf + +home.removeImagePdf.title=Şəkli Sil +home.removeImagePdf.desc=Fayl ÃļlçÃŧsÃŧnÃŧ azaltmaq ÃŧçÃŧn PDF-dən şəkil sil +removeImagePdf.tags=Şəkil Sil,Səhifə ƏməliyyatlarÄą,Back end,server-tərəf + + +home.splitPdfByChapters.title=PDF-i Fəsillərə Əsasən BÃļl +home.splitPdfByChapters.desc=Fəsil strukturuna əsasən PDF-i bir neçə fayla bÃļl. +splitPdfByChapters.tags=bÃļl,fəsillər,əlfəcinlər,nizamla + +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + +#replace-invert-color +replace-color.title=QabaqcÄąl Rəng Seçimləri +replace-color.header=PDF-də Rəngləri Dəyiş-Tərsinə Çevir +home.replaceColorPdf.title=QabaqcÄąl Rəng Seçimləri +home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replaceColorPdf.tags=Rəngləri Dəyiş,Səhifə əməliyyatlarÄą,Back end,server-tərəf +replace-color.selectText.1=Rəngi dəyişmə və tərsinə çevirmə seçimləri +replace-color.selectText.2=Defolt(Defolt yÃŧksək kontrastlÄą rənglər) +replace-color.selectText.3=Fərdi(Fərdiləşdirilmiş rənglər) +replace-color.selectText.4=BÃŧtÃļv Tərsinə Çevir(BÃŧtÃŧn rəngləri tərsinə çevir) +replace-color.selectText.5=YÃŧksək kontrastlÄą rəng seçimləri +replace-color.selectText.6=Qara arxaplanda ağ mətn +replace-color.selectText.7=Ağ arxaplanda qara mətn +replace-color.selectText.8=Qara arxaplanda sarÄą mətn +replace-color.selectText.9=Qara arxaplanda yaÅŸÄąl mətn +replace-color.selectText.10=Mətn rəngi seç +replace-color.selectText.11=Arxaplan rəngi seç +replace-color.submit=Əvəzlə + + + +########################### +# # +# WEB PAGES # +# # +########################### +#login +login.title=Daxil olun +login.header=Daxil olun +login.signin=Daxil olun +login.rememberme=Məni xatÄąrla +login.invalid=EtibarsÄąz istifadəçi adÄą və ya şifr. +login.locked=Sizin hesabÄąnÄąz kilidlənmişdir. +login.signinTitle=Zəhmət olmasa, daxil olun +login.ssoSignIn=Single Sign-on vasitəsilə daxil olun +login.oauth2AutoCreateDisabled=OAUTH2 Auto-Create İstifadəçisi Deaktivləşdirilmişdir +login.oauth2AdminBlockedUser=Qeydiyyatdan keçməmiş istifadəçilərin qeydiyyatÄą və daxil olmasÄą hal-hazÄąrda bloklanmÄąÅŸdÄąr. Zəhmət olmasa, administratorla əlaqə saxlayÄąn. +login.oauth2RequestNotFound=Təsdiqlənmə sorğusu tapÄąlmadÄą +login.oauth2InvalidUserInfoResponse=YanlÄąÅŸ İstifadəçi MəlumatÄą CavabÄą +login.oauth2invalidRequest=EtibarsÄąz Sorğu +login.oauth2AccessDenied=Giriş rədd edildi +login.oauth2InvalidTokenResponse=EtibarsÄąz Token CavabÄą +login.oauth2InvalidIdToken=EtibarsÄąz Id Token +login.relyingPartyRegistrationNotFound=No relying party registration found +login.userIsDisabled=İstifadəçi deaktivləşdirilmişdir, bu istifadəçi adÄą ilə giriş hal-hazÄąrda bloklanmÄąÅŸdÄąr. Zəhmət olmasa, administratorla əlaqə saxlayÄąn. +login.alreadyLoggedIn=Siz artÄąq daxil olmusunuz +login.alreadyLoggedIn2=cihazlar. Zəhmət olmasa, cihazlardan Ã§ÄąxÄąÅŸ edin və yenidən cəhd edin. +login.toManySessions=Həddindən artÄąq aktiv sessiyanÄąz var + +#auto-redact +autoRedact.title=Avtomatik Gizlətmə +autoRedact.header=Avtomatik Gizlətmə +autoRedact.colorLabel=Rəng +autoRedact.textsToRedactLabel=Gizlədiləcək Mətn (Yeni sətirlə ayrÄąlmÄąÅŸ) +autoRedact.textsToRedactPlaceholder=e.g. \nKonfidensial \nTam-Məxfi +autoRedact.useRegexLabel=Regex İstifadə Et +autoRedact.wholeWordSearchLabel=BÃŧtÃļv SÃļz Axtar +autoRedact.customPaddingLabel=Fərdi Əlavə BaşlÄąq +autoRedact.convertPDFToImageLabel=PDF-i PDF-Şəkil-ə çevir (Qutunun arxasÄąndakÄą yazÄąnÄą silmək ÃŧçÃŧn istifadə edilir) +autoRedact.submitButton=Təsdiqlə + +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color + +#showJS +showJS.title=Javascripti GÃļstər +showJS.header=Javascripti GÃļstər +showJS.downloadJS=Javascripti Endir +showJS.submit=GÃļstər + + +#pdfToSinglePage +pdfToSinglePage.title=PDF-dən Tək Səhifəyə +pdfToSinglePage.header=PDF-dən Tək Səhifəyə +pdfToSinglePage.submit=Tək Səhifəyə Çevir + + +#pageExtracter +pageExtracter.title=Səhifələri Ã§Äąxar +pageExtracter.header=Səhifələri Ã§Äąxar +pageExtracter.submit=Ã‡Äąxar +pageExtracter.placeholder=(məsələn, 1,2,8 və ya 4,7,12-16 və ya 2n-1) + + +#getPdfInfo +getPdfInfo.title=PDF Barəsində Məlumat Əldə Et +getPdfInfo.header=PDF Barəsində Məlumat Əldə Et +getPdfInfo.submit=Məlumat Əldə Et +getPdfInfo.downloadJson=JSON yÃŧklə + + +#markdown-to-pdf +MarkdownToPDF.title=Markdown-dan PDF-ə +MarkdownToPDF.header=Markdown-dan PDF-ə +MarkdownToPDF.submit=Çevir +MarkdownToPDF.help=İş davam edir +MarkdownToPDF.credit=WeasyPrint İstifadə Edir + + + +#url-to-pdf +URLToPDF.title=URL-i PDF-ə +URLToPDF.header=URL-i PDF-ə +URLToPDF.submit=Çevir +URLToPDF.credit=WeasyPrint İstifadə Edir + + +#html-to-pdf +HTMLToPDF.title=HTML-dən PDF-ə +HTMLToPDF.header=HTML-dən PDF-ə +HTMLToPDF.help=HTML fayllarÄąnÄą və tərkibində mÃŧtləq html/css/images və s. olan ZIP fayllarÄąnÄą qəbul edir +HTMLToPDF.submit=Çevir +HTMLToPDF.credit=WeasyPrint İstifadə Edir +HTMLToPDF.zoom=VebsaytÄą gÃļstərmək ÃŧçÃŧn yaxÄąnlaşdÄąrma dərəcəsi. +HTMLToPDF.pageWidth=Səhifənin eninin santimetrlərlə ÃļlçÃŧsÃŧ. (Standart ÃŧçÃŧn boş buraxÄąn) +HTMLToPDF.pageHeight=Səhifənin hÃŧndÃŧrlÃŧyÃŧnÃŧn santimetrlərlə ÃļlçÃŧsÃŧ. (Standart ÃŧçÃŧn boş buraxÄąn) +HTMLToPDF.marginTop=Səhifənin yuxarÄą kənarÄąnÄąn millimetrlə ÃļlçÃŧsÃŧ. (Standart ÃŧçÃŧn boş buraxÄąn) +HTMLToPDF.marginBottom=Səhifənin alt kənarÄąnÄąn millimetrlə ÃļlçÃŧsÃŧ. (Standart ÃŧçÃŧn boş buraxÄąn) +HTMLToPDF.marginLeft=Səhifənin sol kənarÄąnÄąn millimetrlə ÃļlçÃŧsÃŧ. (Standart ÃŧçÃŧn boş buraxÄąn) +HTMLToPDF.marginRight=Səhifənin sağ kənarÄąnÄąn millimetrlə ÃļlçÃŧsÃŧ. (Standart ÃŧçÃŧn boş buraxÄąn) +HTMLToPDF.printBackground=VebsaytlarÄąn arxa fonunu renderlə. +HTMLToPDF.defaultHeader=Standart Başlığı Aktivləşdir (Ad və səhifə nÃļmrəsi) +HTMLToPDF.cssMediaType=Səhifənin CSS media nÃļvÃŧnÃŧ dəyişdir. +HTMLToPDF.none=Heç biri +HTMLToPDF.print=Çap et +HTMLToPDF.screen=Ekran + + +#AddStampRequest +AddStampRequest.header=PDF-i MÃļhÃŧrlə +AddStampRequest.title=PDF-i MÃļhÃŧrlə +AddStampRequest.stampType=MÃļhÃŧr Tipi +AddStampRequest.stampText=MÃļhÃŧr YazÄąsÄą +AddStampRequest.stampImage=MÃļhÃŧr Fotosu +AddStampRequest.alphabet=Əlifba +AddStampRequest.fontSize=Font/Şəkil ÖlçÃŧsÃŧ +AddStampRequest.rotation=İstiqamət +AddStampRequest.opacity=ŞəffaflÄąq +AddStampRequest.position=Yerləşmə +AddStampRequest.overrideX=X KoordinatÄąnÄąn ÜstÃŧnə Yaz +AddStampRequest.overrideY=Y KoordinatÄąnÄąn ÜstÃŧnə Yaz +AddStampRequest.customMargin=Fərdi Boşluq ÖlçÃŧsÃŧ +AddStampRequest.customColor=Fərdi Mətn Rəngi +AddStampRequest.submit=Təsdiqlə + + +#sanitizePDF +sanitizePDF.title=PDF-i Təmizlə +sanitizePDF.header=PDF FaylÄąnÄą Təmizlə +sanitizePDF.selectText.1=JavaScript Fəaliyyətlərini Sil +sanitizePDF.selectText.2=Daxil Edilmiş FayllarÄą Sil +sanitizePDF.selectText.3=MetadatanÄą Sil +sanitizePDF.selectText.4=Linkləri Sil +sanitizePDF.selectText.5=Şriftləri Sil +sanitizePDF.submit=PDF-i Təmizlə + + +#addPageNumbers +addPageNumbers.title=Səhifə NÃļmrələri əlavə edin +addPageNumbers.header=Səhifə NÃļmrələri əlavə edin +addPageNumbers.selectText.1=PDF faylÄąnÄą seçin: +addPageNumbers.selectText.2=Margin ÖlçÃŧsÃŧ +addPageNumbers.selectText.3=MÃļvqe +addPageNumbers.selectText.4=Başlanğıc nÃļmrəsi +addPageNumbers.selectText.5=Səhifələrə nÃļmrə əlavə edin +addPageNumbers.selectText.6=Fərdi Mətn +addPageNumbers.customTextDesc=Fərdi Mətn +addPageNumbers.numberPagesDesc=HansÄą səhifələrin nÃļmrələnəcəyini seçin, default 'all', və ya 1-5, 2,5,9 kimi yazÄąlÄąÅŸ qəbul olunur +addPageNumbers.customNumberDesc=Defolt olaraq {n}, və ya 'Page {n} of {total}', 'Text-{n}', '{filename}-{n} +addPageNumbers.submit=Səhifə NÃļmrələri əlavə edin + + +#auto-rename +auto-rename.title=Avtomatik Yenidən AdlandÄąr +auto-rename.header=Pdf-in AdÄąnÄą Avtomatik Yenidən AdlandÄąr +auto-rename.submit=Avtomatik Yenidən AdlandÄąr + + +#adjustContrast +adjustContrast.title=KontrastÄą tənzimləyin +adjustContrast.header=KontrastÄą tənzimləyin +adjustContrast.contrast=Kontrast: +adjustContrast.brightness=ParlaqlÄąq: +adjustContrast.saturation=Doyma: +adjustContrast.download=YÃŧklə + + +#crop +crop.title=Kəs +crop.header=Pdf-ləri Kəs +crop.submit=Təsdiq Et + + +#autoSplitPDF +autoSplitPDF.title=PDF-i avtomatik bÃļlmə +autoSplitPDF.header=PDF-i avtomatik bÃļlmə +autoSplitPDF.description=Sənədlərinizi çap edin, daxil edin, skan edin, yÃŧkləyin və bizə icazə verin. Əl işinin çeşidlənməsinə ehtiyac yoxdur. +autoSplitPDF.selectText.1=Aşağıdan bəzi ayÄąrÄącÄą vərəqləri çap edin (qara və ağ yaxÅŸÄądÄąr). +autoSplitPDF.selectText.2=AralarÄąna ayÄąrÄącÄą vərəq daxil edərək bÃŧtÃŧn sənədlərinizi bir anda skan edin. +autoSplitPDF.selectText.3=Tək bÃļyÃŧk skan edilmiş PDF faylÄąnÄą yÃŧkləyin və Stirling PDF-in qalanÄąnÄą idarə etməsinə icazə verin. +autoSplitPDF.selectText.4=AyÄąrÄącÄą səhifələr avtomatik aşkarlanÄąr və silinir, səliqəli yekun sənədə zəmanət verir. +autoSplitPDF.formPrompt=Stirling-PDF ə Səhifə bÃļlÃŧcÃŧləri olan PDF-i təqdim edin: +autoSplitPDF.duplexMode=Dupleks rejimi (Ön və arxa skanlama) +autoSplitPDF.dividerDownload1='Auto Splitter Divider (minimal).pdf'-Äą yÃŧkləyin +autoSplitPDF.dividerDownload2='Auto Splitter Divider (with instructions).pdf'-Äą yÃŧkləyin +autoSplitPDF.submit=Təsdiq edin + + +#pipeline +pipeline.title=Pipeline + + +#pageLayout +pageLayout.title=Çoxsəhifəli Tərtibat +pageLayout.header=Çoxsəhifəli Tərtibat +pageLayout.pagesPerSheet=Vərəqdəki Səhifə SayÄą: +pageLayout.addBorder=Çərçivə Əlavə Et +pageLayout.submit=Təsdiq et + + +#scalePages +scalePages.title=Səhifə miqyasÄąnÄą tənzimləyin +scalePages.header=Səhifə miqyasÄąnÄą tənzimləyin +scalePages.pageSize=Sənədin bir səhifəsinin ÃļlçÃŧsÃŧ. +scalePages.keepPageSize=Orijinal ÖlçÃŧ +scalePages.scaleFactor=Səhifənin bÃļyÃŧtmə səviyyəsi (kəsmə). +scalePages.submit=Təsdiq edin + + +#certSign +certSign.title=Sertifikatla İmzala +certSign.header=PDF-i SertifikatÄąnÄązla İmzalayÄąn (İşlənilir) +certSign.selectPDF=İmzalamaq ÃŧçÃŧn PDF FaylÄą seçin: +certSign.jksNote=Note: Əgər sertifikatÄąnÄązÄąn tipi aşağıda gÃļstərilməyibsə, zəhmət olmasa "Keytool command line tool" istifadə edərək onu "Java Keystroke" (.jks) faylÄąna çevirin. Sonra, aşağıdan .jks faylÄąnÄą seçin. +certSign.selectKey=Şəxsi Açar faylÄąnÄązÄą seçin (PKCS#8 format, .pem və ya .der ola bilər): +certSign.selectCert=Sertifikat faylÄąnÄązÄą seçin (X.509 format, .pem və ya .der ola bilər): +certSign.selectP12=PKCS#12 Keystore FaylÄąnÄązÄą seçin (.p12 və ya .pfx) (İstəyə bağlÄą, əgər təmin olunarsa, şəxsi açar və sertifikatÄąnÄązÄą ehtiva etməlidir): +certSign.selectJKS=Java Keystore FaylÄąnÄązÄą seçin (.jks və ya .keystore): +certSign.certType=Sertifikat Tipi +certSign.password=Keystore və ya Şəxsi Açar daxil edin (Əgər varsa): +certSign.showSig=İmzanÄą GÃļstər +certSign.reason=Səbəb +certSign.location=Məkan +certSign.name=Ad +certSign.showLogo=Loqonu GÃļstər +certSign.submit=PDF-i İmzala + + +#removeCertSign +removeCertSign.title=Sertifikat İmzasÄąnÄą Sil +removeCertSign.header=Rəqəmsal sertifikatÄą PDF-dən Ã§ÄąxarÄąn +removeCertSign.selectPDF=PDF faylÄą seçin: +removeCertSign.submit=İmzanÄą silin + + +#removeBlanks +removeBlanks.title=Boş Səhifələri Sil +removeBlanks.header=Boş SƏhifələri Silir +removeBlanks.threshold=Minimal Piksel Bəyazlığı: +removeBlanks.thresholdDesc=Pikselin "Ağ" hesab olunmasÄą ÃŧçÃŧn minimal nə qədər bəyaz olmalÄą olduğunu təyin edin. 0 = Qara, 255 Ağappaq. +removeBlanks.whitePercent=Bəyaz Faizi (%): +removeBlanks.whitePercentDesc=Silinmək ÃŧçÃŧn səhifənin neçə faizi "ağ" piksellərdən təşkil olunmalÄądÄąr +removeBlanks.submit=Boş Səhifələri Sil + + +#removeAnnotations +removeAnnotations.title=AnnotasiyalarÄą silin +removeAnnotations.header=AnnotasiyalarÄą silin +removeAnnotations.submit=Sil + + +#compare +compare.title=MÃŧqayisə Et +compare.header=PDF-ləri MÃŧqayisə Et +compare.highlightColor.1=Önə Ã‡Äąxarma Rəngi 1: +compare.highlightColor.2=Önə Ã‡Äąxarma Rəngi 2: +compare.document.1=Sənəd 1 +compare.document.2=Sənəd 2 +compare.submit=MÃŧqayisə Et +compare.complex.message=Fayllardan biri və ya ikisi də bÃļyÃŧk fayldÄąr. MÃŧqayisə effektivliyi azala bilər. +compare.large.file.message=Fayllardan biri və ya ikisi də işləmək ÃŧçÃŧn çox bÃļyÃŧkdÃŧr. +compare.no.text.message=Fayllardan birində və ya ikisində də mətn məzmunu yoxdur. Zəhmət olmasa, mÃŧqayisə ÃŧçÃŧn mətn məzmunlu PDF seçin. + +#BookToPDF +BookToPDF.title=KitablarÄą və Komiksləri PDF-ə +BookToPDF.header=KitabÄą PDF-ə +BookToPDF.credit=Calibre İstifadə Edir +BookToPDF.submit=Çevir + +#PDFToBook +PDFToBook.title=PDF-i Kitaba +PDFToBook.header=PDF-i Kitaba +PDFToBook.selectText.1=Format +PDFToBook.credit=Calibre İstifadə Edir +PDFToBook.submit=Çevir + +#sign +sign.title=İmza +sign.header=PDF sənədlərini imzalayÄąn +sign.upload=Şəkil YÃŧklə +sign.draw=İmza çəkmək +sign.text=Mətn daxil etmə +sign.clear=Təmizləmək +sign.add=Əlavə et +sign.saved=Saxlanan İmzalar +sign.save=İmzanÄą yadda Saxla +sign.personalSigs=Şəxsi İmzalar +sign.sharedSigs=PaylaÅŸÄąlan İmzalar +sign.noSavedSigs=SaxlanmÄąÅŸ imza tapÄąlmadÄą +sign.addToAll=BÃŧtÃŧn səhiflərə əlavə et +sign.delete=Sil +sign.first=İlk səhifə +sign.last=Son səhifə +sign.next=NÃļvbəti səhifə +sign.previous=Əvvəlki səhifə +sign.maintainRatio=Toggle maintain aspect ratio +#repair +repair.title=Bərpa Et +repair.header=PDFləri Bərpa Et +repair.submit=Bərpa Et + + +#flatten +flatten.title=DÃŧzləşdirin +flatten.header=PDF-i dÃŧzləşdirin +flatten.flattenOnlyForms=YalnÄąz formalarÄą dÃŧzəldin +flatten.submit=DÃŧzləşdirin + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=Bucaq Aşağı Limiti: +ScannerImageSplit.selectText.2=Şəklin fÄąrladÄąlmasÄą ÃŧçÃŧn lazÄąm olan minimal mÃŧtləq bucağı təyin edir (defolt: 10). +ScannerImageSplit.selectText.3=Rəng ToleransÄą: +ScannerImageSplit.selectText.4=Təxmin olunan arxaplan rənginin ətrafÄąndakÄą rəng fərqliliyi intervalÄąnÄą təyin edir (defolt: 30). +ScannerImageSplit.selectText.5=Minimal Sahə: +ScannerImageSplit.selectText.6=Foto ÃŧçÃŧn minimal sahənin aşağı limitini təyin edir (defolt: 10000). +ScannerImageSplit.selectText.7=Minimal Kontur Sahəsi: +ScannerImageSplit.selectText.8=Fotonun kontur sahəsi ÃŧçÃŧn minimal aşağı limiti təyin edir +ScannerImageSplit.selectText.9=Sərhəd ÖlçÃŧsÃŧ: +ScannerImageSplit.selectText.10=Faylda ağ sərhədlərin olmasÄąnÄąn qarÅŸÄąsÄąnÄą almaq ÃŧçÃŧn əlavə ediləcək sərhədin ÃļlçÃŧsÃŧnÃŧ təyin edir (defolt: 1). +ScannerImageSplit.info=Python yÃŧklənməyib. İşə salmaq ÃŧçÃŧn Python lazÄąmdÄąr. + + +#OCR +ocr.title=OST (OCR) / Skan Təmizləmə +ocr.header=SkanlarÄą Təmizlə / OST (Optik Simvol TanÄąnmasÄą) +ocr.selectText.1=PDF-də aşkar olunacaq dilləri seçin (GÃļstərilmiş dillər hazÄąrda aşkar olunmuşlardÄąr): +ocr.selectText.2=OST-lənmiş PDF ilə yanaÅŸÄą daxilində OST edilmiş mətn olan PDF yaradÄąn +ocr.selectText.3=Əyri skan olunmuş səhifələri yerinə fÄąrladaraq dÃŧzəldin +ocr.selectText.4=OST-in arxaplandakÄą artÄąq mətni aşkar etməsinin qarÅŸÄąsÄąnÄą almaq ÃŧçÃŧn səhifəni təmizləyin. (Ã‡ÄąxÄąÅŸ dəyişmir) +ocr.selectText.5=OST-in arxaplandakÄą artÄąq mətni aşkar etməsinin qarÅŸÄąsÄąnÄą almaq ÃŧçÃŧn səhifəni təmizləyin, təmizləməni Ã§ÄąxÄąÅŸa verilən faylda saxlayÄąr. +ocr.selectText.6=Üzərində interaktiv yazÄą olan səhifələri nəzərə almÄąr, yalnÄąz şəkil olan səhifələri OST edir. +ocr.selectText.7=OST-ə məcbur et, bÃŧtÃŧn orijinal mətn elementlərini silərək hər səhifəni OST edir +ocr.selectText.8=Normal (PDF-də mətn varsa, xəta verəcək) +ocr.selectText.9=Əlavə Parametrlər +ocr.selectText.10=OST (OCR) Rejimi +ocr.selectText.11=OST-dən sonra şəkilləri sil (BÜTÜN şəkilləri silir, ancaq çevirmə prosesinin bir hissəsi olduqda işə yarayÄąr) +ocr.selectText.12=Render Tipi (QabaqcÄąl) +ocr.help=Bunu digər dillər ÃŧçÃŧn necə istifadə etmək və/və ya docker-də istifadə etməmək ÃŧçÃŧn bu dokumentasiyanÄą oxuyun +ocr.credit=Bu servis OST (OCR) ÃŧçÃŧn "OCRmyPDF" və "Tesseract" istifadə edir. +ocr.submit=PDF-i OST ilə işlə + + +#extractImages +extractImages.title=Şəkilləri Ã§ÄąxarÄąn +extractImages.header=Şəkilləri Ã§ÄąxarÄąn +extractImages.selectText=Ã‡ÄąxarÄąlan şəkilləri çevirmək ÃŧçÃŧn şəkil formatÄąnÄą seçin +extractImages.allowDuplicates=Dublikat şəkilləri yadda saxlayÄąn +extractImages.submit=Ã‡ÄąxarÄąÅŸ + + +#File to PDF +fileToPDF.title=FaylÄą PDF-ə +fileToPDF.header=Hər HansÄą Bir FaylÄą PDF-ə Çevir +fileToPDF.credit=Bu Servis Fayl Çevirmək ÜçÃŧn LibreOffice və Unoconv İşlədir +fileToPDF.supportedFileTypesInfo=Dəstəklənən Fayl Tipləri +fileToPDF.supportedFileTypes=Dəstəklənən Fayl Tipləri AşagÄądakÄąlarÄą Təşkil Etməlidir,ancaq Dəstəklənmiş FayllarÄąn HamÄąsÄąnÄąn Yenilənmiş SiyahÄąsÄą ÜçÃŧn LibreOffice Sənədlərinə Baş Çəkin +fileToPDF.submit=PDF-ə Çevir + + +#compress +compress.title=SÄąxÄąÅŸdÄąr +compress.header=PDF-i SÄąxÄąÅŸdÄąr +compress.credit=Bu servis PDF sÄąxÄąÅŸdÄąrÄąlmasÄą/OptimizasiyasÄą ÃŧçÃŧn Ghostscript istifadə edir. +compress.selectText.1=Manual Mod - 1-dən 4-ə +compress.selectText.2=Optimizasiya səviyyəsi: +compress.selectText.3=4 (Mətn şəkilləri ÃŧçÃŧn yaxÅŸÄą deyil) +compress.selectText.4=Avto mod - PDF-in dəqiq ÃļlçÃŧsÃŧnÃŧ əldə etmək ÃŧçÃŧn keyfiyyəti avtomatik tənzimləyir +compress.selectText.5=GÃļzlənilən PDF ÖlçÃŧsÃŧ (məsələn, 25MB, 10.8MB, 25KB) +compress.submit=SÄąxÄąÅŸdÄąr + + +#Add image +addImage.title=Şəkli Əlavə Et +addImage.header=Şəkli PDF-ə Əlavə Et +addImage.everyPage=BÃŧtÃŧn Səhifələr? +addImage.upload=Şəkli Əlavə Et +addImage.submit=Şəkli Əlavə Et + + +#merge +merge.title=Birləşdirin +merge.header=ÇoxsaylÄą PDF-ləri birləşdirin (2+) +merge.sortByName=Ada gÃļrə çeşidləyin +merge.sortByDate=Tarixə gÃļrə çeşidləyin +merge.removeCertSign=Birləşdirilmiş faylda rəqəmsal imza silinsin? +merge.submit=Birləşdirin + + +#pdfOrganiser +pdfOrganiser.title=Səhifə Tənzimləyicisi +pdfOrganiser.header=PDF Səhifə Tənzimləyicisi +pdfOrganiser.submit=Səhifələri Yenidən Təşkil Edin +pdfOrganiser.mode=Rejim +pdfOrganiser.mode.1=Fərdi Səhifə DÃŧzÃŧlÃŧşÃŧ +pdfOrganiser.mode.2=Tərs DÃŧzÃŧlÃŧş +pdfOrganiser.mode.3=İkitərəfli Çeşidləmə +pdfOrganiser.mode.4=Kitabça Çeşidləmə +pdfOrganiser.mode.5=Yan Tikiş KitabçasÄąnÄąn Çeşidlənməsi +pdfOrganiser.mode.6=Tək-CÃŧt BÃļlÃŧnmə +pdfOrganiser.mode.7=Birincini Sil +pdfOrganiser.mode.8=Sonuncunu Sil +pdfOrganiser.mode.9=Birinci və Sonuncunu Sil +pdfOrganiser.mode.10=Tək-CÃŧt Birləşdirmə +pdfOrganiser.placeholder=(məs., 1,3,2 və ya 4-8,2,10-12 və ya 2n-1) + + +#multiTool +multiTool.title=PDF Multi-Alət +multiTool.header=PDF Multi-Alət +multiTool.uploadPrompts=Fayl AdÄą +multiTool.selectAll=HamÄąsÄąnÄą Seç +multiTool.deselectAll=HamÄąsÄąnÄą Seçməni Ləğv Et +multiTool.selectPages=Səhifə Seçimi +multiTool.selectedPages=Seçilmiş Səhifələr +multiTool.page=Səhifə +multiTool.deleteSelected=Seçilmişi Sil +multiTool.downloadAll=İxrac Et +multiTool.downloadSelected=Seçilmişi İxrac Et + +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Seçilmiş Səhifə(lər) +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + +#multiTool-advert +multiTool-advert.message=Bu xÃŧsusiyyət bizim multi-alət səhifəmizdə də mÃļvcuddur. Əlavə xÃŧsusiyyətlər və səhifə-səhifə interfeys ÃŧçÃŧn sÄąnaqdan keçirin! + +#view pdf +viewPdf.title=PDF-ə baxÄąn +viewPdf.header=PDF-ə baxÄąn + +#pageRemover +pageRemover.title=Səhifə Silici +pageRemover.header=PDF səhifə silici +pageRemover.pagesToDelete=Silinəcək səhifələr (Səhifə nÃļmrələrinin vergÃŧllə ayrÄąlmÄąÅŸ siyahÄąsÄąnÄą daxil edin): +pageRemover.submit=Səhifələri Sil +pageRemover.placeholder=(məsələn, 1,2,6 və ya 1-10,15-30) + + +#rotate +rotate.title=PDF fÄąrladÄąn +rotate.header=PDF fÄąrladÄąn +rotate.selectAngle=FÄąrlanma bucağınÄą seçin (90 dərəcə ilə): +rotate.submit=FÄąrladÄąn + + +#split-pdfs +split.title=PDF-i BÃļlÃŧn +split.header=PDF-i BÃļlÃŧn +split.desc.1=Seçdiyiniz NÃļmrələr BÃļlmək İstədiyiniz Səhifə NÃļmrəsidir +split.desc.2=Beləliklə, 1,3,7-9 Seçimi 10 Səhifəlik Sənədi 6 AyrÄą PDF-ə BÃļləcək: +split.desc.3=Sənəd #1: Səhifə 1 +split.desc.4=Sənəd #2: Səhifə 2 və 3 +split.desc.5=Sənəd #3: Səhifə 4, 5, 6 və 7 +split.desc.6=Sənəd #4: Səhifə 8 +split.desc.7=Sənəd #5: Səhifə 9 +split.desc.8=Sənəd #6: Səhifə 10 +split.splitPages=BÃļlÃŧnəcək Səhifələri Daxil Edin: +split.submit=BÃļlÃŧn + + +#merge +imageToPDF.title=Şəkli PDF-ə +imageToPDF.header=Şəkli PDF-ə +imageToPDF.submit=Çevir +imageToPDF.selectLabel=Şəkil Uyğunluğu Seçimləri +imageToPDF.fillPage=Səhifəni Doldur +imageToPDF.fitDocumentToImage=Şəklə Uyğun Səhifə +imageToPDF.maintainAspectRatio=Aspekt Nisbətlərini Qoruyun +imageToPDF.selectText.2=PDF-i Avtomatik FÄąrlat +imageToPDF.selectText.3=ÇoxsaylÄą Fayl Məntiqi (YalnÄąz Birdən Çox Şəkil İlə İşləyərkən Aktivdir) +imageToPDF.selectText.4=Tək Bir PDF-ə Birləşdir +imageToPDF.selectText.5=AyrÄą PDF-lərə Çevirin + + +#pdfToImage +pdfToImage.title=PDF-i Şəklə +pdfToImage.header=PDF-i Şəklə +pdfToImage.selectText=Şəkil FormatÄą +pdfToImage.singleOrMultiple=Nəticə Şəkil Tipi +pdfToImage.single=BÃŧtÃŧn Səhifələri birləşdirən Tək BÃļyÃŧk Şəkil +pdfToImage.multi=Çoxlu Şəkil, Səhifə BaÅŸÄąna Bir Şəkil +pdfToImage.colorType=Rəng Tipi +pdfToImage.color=Rəng +pdfToImage.grey=Boz Tonlama +pdfToImage.blackwhite=Qara və Ağ (Data İtə Bilər) +pdfToImage.submit=Çevir +pdfToImage.info=Python YÃŧklÃŧ Deyil.WebP Çevirməsi ÜçÃŧn Vacibdir +pdfToImage.placeholder=(məsələn, 1,2,8 və ya 4,7,12-16 və ya 2n-1) + + +#addPassword +addPassword.title=Şifr Əlavə Et +addPassword.header=Şifr Əlavə Et (Şifrləmə) +addPassword.selectText.1=Şifrlənəcək PDF-i seç +addPassword.selectText.2=İstifadəçi Şifri +addPassword.selectText.3=Şifrləmə AçarÄą Uzunluğu +addPassword.selectText.4=BÃļyÃŧk dəyərlər daha gÃŧclÃŧdÃŧr, lakin kiçik dəyərlərin uyğunluğu yÃŧksəkdir. +addPassword.selectText.5=Təyin olunacaq icazə (Sahib (Owner) Şifri ilə birgə istifadə olunmasÄą tÃļvsiyə olunur.) +addPassword.selectText.6=Sənədin strukturunun dəyişilməsinin qarÅŸÄąsÄąnÄą al +addPassword.selectText.7=Məzmun xaric edilməsinin qarÅŸÄąsÄąnÄą al +addPassword.selectText.8=ƏlçatanlÄąq ÃŧçÃŧn xaricetmənin qarÅŸÄąsÄąnÄą al +addPassword.selectText.9=Anketin doldurulmasÄąnÄąn qarÅŸÄąsÄąnÄą al +addPassword.selectText.10=ModifikasiyanÄąn qarÅŸÄąsÄąnÄą al +addPassword.selectText.11=Sitat modifikasiyasÄąnÄąn qarÅŸÄąsÄąnÄą al +addPassword.selectText.12=Çap etmənin qarÅŸÄąsÄąnÄą al +addPassword.selectText.13=MÃŧxtəlif formatlarÄąn çap edilməsinin qarÅŸÄąsÄąnÄą al +addPassword.selectText.14=Sahib Şifri +addPassword.selectText.15=Sənəd aÃ§ÄąldÄąqdan sonra onunla nə edilə biləcəyini limitləndir (BÃŧtÃŧn oxuyucular dəstəkləmir) +addPassword.selectText.16=Sənədin ÃļzÃŧnÃŧn aÃ§ÄąlmağınÄą limitləndirir +addPassword.submit=Şifrlə + + +#watermark +watermark.title=Watermark Əlavə Et +watermark.header=Watermark Əlavə Et +watermark.customColor=Fərdi Mətn Rəngi +watermark.selectText.1=Watermark əlavə olunacaq PDF-i seç +watermark.selectText.2=Watermark Mətni: +watermark.selectText.3=Şrift ÖlçÃŧsÃŧ: +watermark.selectText.4=FÄąrlatma (0-360): +watermark.selectText.5=enBoşluq (Üfuqi olaraq watermark-lar arasÄąndakÄą məsafə): +watermark.selectText.6=uzunluqBoşluq (Şaquli olaraq watermark-lar arasÄąndakÄą məsafə): +watermark.selectText.7=ŞəffaflÄąq (0% - 100%): +watermark.selectText.8=Watermark Tipi: +watermark.selectText.9=Watermark Şəkili: +watermark.selectText.10=PDF-i PDF-Şəkil-ə çevir +watermark.submit=Watermark Əlavə Et +watermark.type.1=Mətn +watermark.type.2=Şəkil + + +#Change permissions +permissions.title=İcazələri Dəyişdir +permissions.header=İcazələri Dəyişdir +permissions.warning=Bu İcazələrin Dəyişməz OlmasÄą İlə BağlÄą XəbərdarlÄąq Edərək, OnlarÄą Parol Əlavə Et Səhifəsi Vasitəsilə Parolla Təyin Etmək TÃļvsiyə Olunur. +permissions.selectText.1=İcazələri Dəyişdirmək ÜçÃŧn PDF-i Seç +permissions.selectText.2=Tənzimlənmiş İcazələr +permissions.selectText.3=Sənədin YığılmasÄąnÄąn QarÅŸÄąsÄąnÄą Al +permissions.selectText.4=Məzmunun Ã‡ÄąxarÄąlmasÄąnÄąn QarÅŸÄąsÄąnÄą Al +permissions.selectText.5=ƏlçatanlÄąq ÜçÃŧn Ã‡ÄąxarÄąlmasÄąnÄąn QarÅŸÄąsÄąnÄą AlÄąn +permissions.selectText.6=FormanÄąn DoldurulmasÄąnÄąn QarÅŸÄąsÄąnÄą AlÄąr +permissions.selectText.7=ModifikasiyanÄąn QarÅŸÄąsÄąnÄą Al +permissions.selectText.8=AnnotasiyanÄąn Dəyişdirilməsinin QarÅŸÄąsÄąnÄą Almaq +permissions.selectText.9=ÇapÄąn QarÅŸÄąsÄąnÄą Al +permissions.selectText.10=Fərqli Formatlarda ÇapÄąn QarÅŸÄąsÄąnÄą Al +permissions.submit=Dəyiş + + +#remove password +removePassword.title=Şifri Sil +removePassword.header=Şifri Sil (Deşifr) +removePassword.selectText.1=Deşifr ÜçÃŧn PDF-i Seç +removePassword.selectText.2=Şifr +removePassword.submit=Sil + + +#changeMetadata +changeMetadata.title=Metadata-nÄą Dəyiş +changeMetadata.header=Metadata-nÄą Dəyiş +changeMetadata.selectText.1=Dəyişmək istədiyiniz dəyişənləri redaktə edin +changeMetadata.selectText.2=BÃŧtÃŧn Metadata-nÄą Sil +changeMetadata.selectText.3=Fərdi MetadatanÄą gÃļstərin: +changeMetadata.author=MÃŧəllif: +changeMetadata.creationDate=YaradÄąlma Tarixi (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=YaradÄącÄą: +changeMetadata.keywords=Açar SÃļzlər: +changeMetadata.modDate=Dəyişiklik Tarixi (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=İstehsalÃ§Äą: +changeMetadata.subject=MÃļvzu: +changeMetadata.trapped=Tələ: +changeMetadata.selectText.4=Digər Metadata: +changeMetadata.selectText.5=XÃŧsusi Metadata girişi əlavə edin +changeMetadata.submit=Dəyiş + + +#pdfToPDFA +pdfToPDFA.title=PDF-i PDF/A-ya +pdfToPDFA.header=PDF-i PDF/A-ya +pdfToPDFA.credit=Bu Servis PDF/A Çevirmək ÜçÃŧn ghostscript İşlədir +pdfToPDFA.submit=Çevir +pdfToPDFA.tip=HazÄąrda Birdən Çox Giriş ÜçÃŧn İşləmir +pdfToPDFA.outputFormat=Ã‡ÄąxÄąÅŸ FormatÄą +pdfToPDFA.pdfWithDigitalSignature=PDF Rəqəmsal İmza Ehtiva Edir.Bu, nÃļvbəti addÄąmda silinəcək. + + +#PDFToWord +PDFToWord.title=PDF-i Word-ə +PDFToWord.header=PDF-i Word-ə +PDFToWord.selectText.1=Ã‡ÄąxÄąÅŸ Fayl FormatÄą +PDFToWord.credit=Bu Servis Fayl Çevirmək ÜçÃŧn LibreOffice İşlədir +PDFToWord.submit=Çevir + + +#PDFToPresentation +PDFToPresentation.title=PDF-i Təqdimata +PDFToPresentation.header=PDF-i Təqdimata +PDFToPresentation.selectText.1=Ã‡ÄąxÄąÅŸ Fayl FormatÄą +PDFToPresentation.credit=Bu Servis Fayl Çevirmək ÜçÃŧn LibreOffice İşlədir +PDFToPresentation.submit=Çevir + + +#PDFToText +PDFToText.title=PDF-i RTF (Mətn)-ə +PDFToText.header=PDF-i RTF (Mətn)-ə +PDFToText.selectText.1=Ã‡ÄąxÄąÅŸ Fayl FormatÄą +PDFToText.credit=Bu Servis Fayl Çevirmək ÜçÃŧn LibreOffice İşlədir +PDFToText.submit=Çevir + + +#PDFToHTML +PDFToHTML.title=PDF-i HTML-ə +PDFToHTML.header=PDF-i HTML-ə +PDFToHTML.credit=Bu Servis Fayl Çevirmək ÜçÃŧn pdftohtml İşlədir +PDFToHTML.submit=Çevir + + +#PDFToXML +PDFToXML.title=PDF-i XML-ə +PDFToXML.header=PDF-i XML-ə +PDFToXML.credit=Bu Servis Fayl Çevirmək ÜçÃŧn LibreOffice İşlədir +PDFToXML.submit=Çevir + +#PDFToCSV +PDFToCSV.title=PDF-i CSV-ə +PDFToCSV.header=PDF-i CSV-ə +PDFToCSV.prompt=Ã‡Äąxartmaq ÜçÃŧn Səhifə Seç +PDFToCSV.submit=Ã‡Äąxart + +#split-by-size-or-count +split-by-size-or-count.title=PDF-i ÖlçÃŧ və ya SayÄąna gÃļrə bÃļlÃŧn +split-by-size-or-count.header=PDF-i ÖlçÃŧ və ya SayÄąna gÃļrə bÃļlÃŧn +split-by-size-or-count.type.label=BÃļlmə nÃļvÃŧnÃŧ seçin +split-by-size-or-count.type.size=ÖlçÃŧyə gÃļrə +split-by-size-or-count.type.pageCount=Səhifə sayÄąna gÃļrə +split-by-size-or-count.type.docCount=Sənədlərin sayÄąna gÃļrə +split-by-size-or-count.value.label=Dəyəri daxil edin +split-by-size-or-count.value.placeholder=ÖlçÃŧ daxil edin (məsələn, 2MB və ya 3 KB) və ya sayÄąn daxil edin (məsələn, 5) +split-by-size-or-count.submit=Təsdiq et + + +#overlay-pdfs +overlay-pdfs.header=Overlay PDF fayllarÄą +overlay-pdfs.baseFile.label=Əsas PDF faylÄąnÄą seçin +overlay-pdfs.overlayFiles.label=Overlay PDF fayllarÄąnÄą seçin +overlay-pdfs.mode.label=Overlay Modu seçin +overlay-pdfs.mode.sequential=Sequential Overlay +overlay-pdfs.mode.interleaved=Interleaved Overlay +overlay-pdfs.mode.fixedRepeat=Sabit Təkrar Yerləşdirmə +overlay-pdfs.counts.label=Overlay SaylarÄą (Sabit Təkrar Rejimi ÃŧçÃŧn) +overlay-pdfs.counts.placeholder=SaylarÄą vergÃŧllə ayrÄąlmÄąÅŸ şəkildə daxil edin (məsələn, 2,3,1) +overlay-pdfs.position.label=Overlay Position seçin +overlay-pdfs.position.foreground=Ön plan +overlay-pdfs.position.background=Arxa plan +overlay-pdfs.submit=Təsdiq et + + +#split-by-sections +split-by-sections.title=PDF-i hissələrə bÃļlÃŧn +split-by-sections.header=PDF-i hissələrə bÃļlÃŧn +split-by-sections.horizontal.label=ÜfÃŧqi bÃļlmələr +split-by-sections.vertical.label=Şaquli bÃļlmələr +split-by-sections.horizontal.placeholder=ÜfÃŧqi bÃļlmələrin sayÄąnÄą daxil edin +split-by-sections.vertical.placeholder=Şaquli bÃļlmələrin sayÄąnÄą daxil edin +split-by-sections.submit=Pdf-i bÃļlmək +split-by-sections.merge=Bir PDF-ə birləşdirin + + +#printFile +printFile.title=FaylÄą çap edin +printFile.header=FaylÄą printerdə çap edin +printFile.selectText.1=Çap etmək ÃŧçÃŧn Fayl seçin +printFile.selectText.2=Printer adÄąnÄą daxil edin +printFile.submit=Çap et + + +#licenses +licenses.nav=Lisenziya +licenses.title=3-cÃŧ Tərəf Lisenziyalar +licenses.header=3-cÃŧ Tərəf Lisenziyalar +licenses.module=Modul +licenses.version=Versiya +licenses.license=Lisenziya + +#survey +survey.nav=Sorğu +survey.title=Stirling-PDF sorğusu +survey.description=Stirling-PDF-də izləmə yoxdur, ona gÃļrə də Stirling-PDF-ni təkmilləşdirmək ÃŧçÃŧn istifadəçilərimizi eşitmək istəyirik! +survey.changes=Stirling-PDF son sorğudan bəri dəyişdi! Daha çox məlumat əldə etmək ÃŧçÃŧn lÃŧtfən, buradakÄą blog yazÄąmÄązÄą yoxlayÄąn: +survey.changes2=Bu dəyişikliklərlə biz Ãļdənişli biznes dəstəyi və maliyyə alÄąrÄąq +survey.please=LÃŧtfən, Stirling-PDF-nin gələcəyi ilə bağlÄą məlumat əldə etmək ÃŧçÃŧn sorğumuzda iştirak edin! +survey.disabled=(Sorğu pop-up nÃļvbəti yeniləmələrdə deaktiv ediləcək, lakin səhifənin altÄąnda mÃļvcuddur) +survey.button=Sorğuda iştirak edin +survey.dontShowAgain=Bir daha gÃļstərmə + + +#error +error.sorry=Problem ÃŧçÃŧn Ãŧzr istəyirik! +error.needHelp=KÃļmək lazÄąmdÄąr / Problem tapdÄąnÄąz? +error.contactTip=Əgər hələ də problem yaşayÄąrsÄąnÄązsa, kÃļmək ÃŧçÃŧn bizə mÃŧraciət etməkdən çəkinməyin. GitHub səhifəmizdə bilet təqdim edə və ya Discord vasitəsilə bizimlə əlaqə saxlaya bilərsiniz: +error.404.head=404 - Səhifə tapÄąlmadÄą | Ups, kodu səhv saldÄąq! +error.404.1=AxtardığınÄąz səhifəni tapa bilmirik. +error.404.2=Xəta baş verdi +error.github=GitHub-da bilet təqdim edin +error.showStack=Yığın İzini gÃļstərin +error.copyStack=Stack Trace-i kopyalayÄąn +error.githubSubmit=GitHub - Bilet təqdim edin +error.discordSubmit=Discord - Dəstək postunu gÃļndərin + + +#remove-image +removeImage.title=Şəkli silin +removeImage.header=Şəkli silin +removeImage.removeImage=Şəkli silin +removeImage.submit=Şəkli silin + + +splitByChapters.title=PDF-i hissələrə bÃļlÃŧn +splitByChapters.header=PDF-i hissələrə bÃļlÃŧn +splitByChapters.bookmarkLevel=Bookmark Səviyyəsi +splitByChapters.includeMetadata=Metadata daxil edin +splitByChapters.allowDuplicates=Dublikatlara icazə verin +splitByChapters.desc.1=Bu alət fəsil strukturuna əsasən bir PDF faylÄąnÄą çoxlu PDF-lərə bÃļlÃŧr. +splitByChapters.desc.2=Bookmark Səviyyəsi: BÃļlmə ÃŧçÃŧn istifadə ediləcək Bookmark səviyyəsini seçin (Ãŧst səviyyə ÃŧçÃŧn 0, ikinci səviyyə ÃŧçÃŧn 1 və s.). +splitByChapters.desc.3=MetadatanÄą daxil edin: Əgər yoxlanÄąlÄąbsa, orijinal PDF-in metadatasÄą hər bir bÃļlÃŧnmÃŧş PDF-ə daxil ediləcək. +splitByChapters.desc.4=Allow Duplicates: Dublikatlara icazə verin: Əgər işarələnərsə, eyni səhifədə birdən çox bookmarka ayrÄą-ayrÄą PDF sənədləri yaratmağa icazə verin. +splitByChapters.submit=PDF-i AyÄąr + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=BuraxÄąlÄąÅŸlar +releases.title=BuraxÄąlÄąÅŸ Qeydləri +releases.header=BuraxÄąlÄąÅŸ Qeydləri +releases.current.version=HazÄąrki BuraxÄąlÄąÅŸ +releases.note=BuraxÄąlÄąÅŸ Qeydləri yalnÄąz ingiliscə mÃļvcuddur + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 6867385898..8ff7747f91 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -82,6 +82,7 @@ pages=ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ¸ loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=ПоĐģĐ¸Ņ‚Đ¸Đēа Са ĐŋОвĐĩŅ€Đ¸Ņ‚ĐĩĐģĐŊĐžŅŅ‚ legal.terms=ĐŸŅ€Đ°Đ˛Đ¸Đģа и ҃ҁĐģĐžĐ˛Đ¸Ņ @@ -238,11 +239,13 @@ database.creationDate=Đ”Đ°Ņ‚Đ° ĐŊа ŅŅŠĐˇĐ´Đ°Đ˛Đ°ĐŊĐĩ database.fileSize=РаСĐŧĐĩŅ€ ĐŊа Ņ„Đ°ĐšĐģа database.deleteBackupFile=Đ˜ĐˇŅ‚Ņ€Đ¸Đ˛Đ°ĐŊĐĩ ĐŊа Đ°Ņ€Ņ…Đ¸Đ˛ĐĩĐŊ Ņ„Đ°ĐšĐģ database.importBackupFile=ИĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа Đ°Ņ€Ņ…Đ¸Đ˛ĐĩĐŊ Ņ„Đ°ĐšĐģ +database.createBackupFile=Create Backup File database.downloadBackupFile=Đ˜ĐˇŅ‚ĐĩĐŗĐģĐĩŅ‚Đĩ Đ°Ņ€Ņ…Đ¸Đ˛ĐĩĐŊ Ņ„Đ°ĐšĐģ database.info_1=ĐšĐžĐŗĐ°Ņ‚Đž иĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€Đ°Ņ‚Đĩ даĐŊĐŊи, Đĩ ĐžŅ‚ Ņ€ĐĩŅˆĐ°Đ˛Đ°Ņ‰Đž СĐŊĐ°Ņ‡ĐĩĐŊиĐĩ да ĐžŅĐ¸ĐŗŅƒŅ€Đ¸Ņ‚Đĩ ĐŋŅ€Đ°Đ˛Đ¸ĐģĐŊĐ°Ņ‚Đ° ŅŅ‚Ņ€ŅƒĐēŅ‚ŅƒŅ€Đ°. АĐēĐž ĐŊĐĩ ҁ҂Đĩ ŅĐ¸ĐŗŅƒŅ€ĐŊи в Ņ‚ĐžĐ˛Đ°, ĐēĐžĐĩŅ‚Đž ĐŋŅ€Đ°Đ˛Đ¸Ņ‚Đĩ, ĐŋĐžŅ‚ŅŠŅ€ŅĐĩŅ‚Đĩ ŅŅŠĐ˛ĐĩŅ‚ и ĐŋОдĐēŅ€ĐĩĐŋа ĐžŅ‚ ĐŋŅ€ĐžŅ„ĐĩŅĐ¸ĐžĐŊаĐģĐ¸ŅŅ‚. Đ“Ņ€Đĩ҈Đēа в ŅŅ‚Ņ€ŅƒĐēŅ‚ŅƒŅ€Đ°Ņ‚Đ° ĐŧĐžĐļĐĩ да ĐŋŅ€Đ¸Ņ‡Đ¸ĐŊи ĐŊĐĩиСĐŋŅ€Đ°Đ˛ĐŊĐžŅŅ‚ ĐŊа ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩŅ‚Đž, вĐēĐģŅŽŅ‡Đ¸Ņ‚ĐĩĐģĐŊĐž ĐŋҊĐģĐŊа ĐŊĐĩĐ˛ŅŠĐˇĐŧĐžĐļĐŊĐžŅŅ‚ Са ŅŅ‚Đ°Ņ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиĐĩŅ‚Đž. database.info_2=ИĐŧĐĩŅ‚Đž ĐŊа Ņ„Đ°ĐšĐģа ĐŊŅĐŧа СĐŊĐ°Ņ‡ĐĩĐŊиĐĩ ĐŋŅ€Đ¸ ĐēĐ°Ņ‡Đ˛Đ°ĐŊĐĩ. ĐĄĐģĐĩĐ´ Ņ‚ĐžĐ˛Đ° ҉Đĩ ĐąŅŠĐ´Đĩ ĐŋŅ€ĐĩиĐŧĐĩĐŊŅƒĐ˛Đ°ĐŊ, Са да ҁĐģĐĩдва Ņ„ĐžŅ€ĐŧĐ°Ņ‚Đ° backup_user_yyyyMMddHHmm.sql, ĐžŅĐ¸ĐŗŅƒŅ€ŅĐ˛Đ°ĐšĐēи ĐŋĐžŅĐģĐĩĐ´ĐžĐ˛Đ°Ņ‚ĐĩĐģĐŊа ĐēĐžĐŊвĐĩĐŊŅ†Đ¸Ņ Са иĐŧĐĩĐŊŅƒĐ˛Đ°ĐŊĐĩ. database.submit=ИĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа Ņ€ĐĩСĐĩŅ€Đ˛ĐŊĐž ĐēĐžĐŋиĐĩ database.importIntoDatabaseSuccessed=ИĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩŅ‚Đž в ĐąĐ°ĐˇĐ°Ņ‚Đ° даĐŊĐŊи ĐąĐĩ ҃ҁĐŋĐĩ҈ĐŊĐž +database.backupCreated=Database backup successful database.fileNotFound=ФаКĐģŅŠŅ‚ ĐŊĐĩ Đĩ ĐŊаĐŧĐĩŅ€ĐĩĐŊ database.fileNullOrEmpty=ФаКĐģŅŠŅ‚ ĐŊĐĩ Ņ‚Ņ€ŅĐąĐ˛Đ° да Đĩ ĐŊ҃ĐģĐĩв иĐģи ĐŋŅ€Đ°ĐˇĐĩĐŊ database.failedImportFile=НĐĩ҃ҁĐŋĐĩ҈ĐŊĐž иĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа Ņ„Đ°ĐšĐģ @@ -472,6 +475,10 @@ home.autoRedact.title=ĐĐ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐŊĐž Ņ€ĐĩдаĐēŅ‚Đ¸Ņ€Đ°ĐŊĐĩ home.autoRedact.desc=ĐĐ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐŊĐž Ņ€ĐĩдаĐēŅ‚Đ¸Ņ€Đ° (ĐˇĐ°Ņ‡ĐĩŅ€ĐŊŅĐ˛Đ°) Ņ‚ĐĩĐēҁ҂ в PDF Đ˛ŅŠĐˇ ĐžŅĐŊОва ĐŊа Đ˛ŅŠĐ˛ĐĩĐ´ĐĩĐŊ Ņ‚ĐĩĐēҁ҂ autoRedact.tags=Đ ĐĩдаĐēŅ‚Đ¸Ņ€Đ°ĐŊĐĩ,ĐĄĐēŅ€Đ¸Đ˛Đ°ĐŊĐĩ,ĐˇĐ°Ņ‚ŅŠĐŧĐŊŅĐ˛Đ°ĐŊĐĩ,҇ĐĩŅ€ĐĩĐŊ,ĐŧĐ°Ņ€ĐēĐĩŅ€,ҁĐēŅ€Đ¸Ņ‚ +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF в CSV home.tableExtraxt.desc=ИСвĐģĐ¸Ņ‡Đ° Ņ‚Đ°ĐąĐģĐ¸Ņ†Đ¸ ĐžŅ‚ PDF, ĐēĐ°Ņ‚Đž ĐŗĐ¸ ĐēĐžĐŊвĐĩŅ€Ņ‚Đ¸Ņ€Đ° в CSV tableExtraxt.tags=CSV,иСвĐģĐ¸Ņ‡Đ°ĐŊĐĩ ĐŊа Ņ‚Đ°ĐąĐģĐ¸Ņ†Đ°,иСвĐģĐ¸Ņ‡Đ°ĐŊĐĩ,ĐēĐžĐŊвĐĩŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=РаСдĐĩĐģĐĩŅ‚Đĩ PDF ĐŋĐž ĐŗĐģави home.splitPdfByChapters.desc=РаСдĐĩĐģĐĩŅ‚Đĩ PDF ĐŊа ĐŧĐŊĐžĐļĐĩŅŅ‚Đ˛Đž Ņ„Đ°ĐšĐģОвĐĩ Đ˛ŅŠĐˇ ĐžŅĐŊОва ĐŊа ĐŊĐĩĐŗĐžĐ˛Đ°Ņ‚Đ° ŅŅ‚Ņ€ŅƒĐēŅ‚ŅƒŅ€Đ° ĐŊа ĐŗĐģави. splitPdfByChapters.tags=Ņ€Đ°ĐˇĐ´ĐĩĐģŅĐŊĐĩ, ĐŗĐģави, ĐžŅ‚ĐŧĐĩŅ‚Đēи, ĐžŅ€ĐŗĐ°ĐŊĐ¸ĐˇĐ¸Ņ€Đ°ĐŊĐĩ +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=ЗаĐŧĐĩĐŊи-иĐŊвĐĩŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ-ĐŊа-Ņ†Đ˛ŅŅ‚ replace-color.header=ЗаĐŧŅĐŊа-иĐŊвĐĩŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа Ņ†Đ˛ŅŅ‚ PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=НĐĩваĐģидĐŊа ĐˇĐ°ŅĐ˛Đēа login.oauth2AccessDenied=ĐžŅ‚ĐēаСаĐŊ Đ´ĐžŅŅ‚ŅŠĐŋ login.oauth2InvalidTokenResponse=НĐĩваĐģидĐĩĐŊ ĐžŅ‚ĐŗĐžĐ˛ĐžŅ€ ĐŊа Ņ‚ĐžĐēĐĩĐŊа login.oauth2InvalidIdToken=НĐĩваĐģидĐĩĐŊ Ņ‚ĐžĐēĐĩĐŊ Са идĐĩĐŊŅ‚Đ¸Ņ„Đ¸ĐēĐ°Ņ‚ĐžŅ€ +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=ĐŸĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģŅŅ‚ Đĩ Đ´ĐĩаĐēŅ‚Đ¸Đ˛Đ¸Ņ€Đ°ĐŊ, вĐģиСаĐŊĐĩŅ‚Đž в ĐŧĐžĐŧĐĩĐŊŅ‚Đ° Đĩ ĐąĐģĐžĐēĐ¸Ņ€Đ°ĐŊĐž ҁ Ņ‚ĐžĐ˛Đ° ĐŋĐžŅ‚Ņ€ĐĩĐąĐ¸Ņ‚ĐĩĐģҁĐēĐž иĐŧĐĩ. МоĐģŅ, ŅĐ˛ŅŠŅ€ĐļĐĩŅ‚Đĩ ҁĐĩ ҁ адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Đ°. login.alreadyLoggedIn=ВĐĩ҇Đĩ ҁ҂Đĩ вĐģĐĩСĐģи в login.alreadyLoggedIn2=ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛Đ°. МоĐģŅ, иСĐģĐĩĐˇŅ‚Đĩ ĐžŅ‚ ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛Đ°Ņ‚Đ° и ĐžĐŋĐ¸Ņ‚Đ°ĐšŅ‚Đĩ ĐžŅ‚ĐŊОвО. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=ПĐĩŅ€ŅĐžĐŊаĐģĐ¸ĐˇĐ¸Ņ€Đ°ĐŊа Đ´ĐžĐŋҊĐģĐŊĐ¸Ņ‚Đĩ autoRedact.convertPDFToImageLabel=ĐŸŅ€ĐĩĐžĐąŅ€Đ°ĐˇŅƒĐ˛Đ°ĐŊĐĩ ĐŊа PDF ĐēҊĐŧ PDF-Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊиĐĩ (иСĐŋĐžĐģСва ҁĐĩ Са ĐŋŅ€ĐĩĐŧĐ°Ņ…Đ˛Đ°ĐŊĐĩ ĐŊа Ņ‚ĐĩĐēҁ҂ Сад ĐŋĐžĐģĐĩŅ‚Đž) autoRedact.submitButton=ИСĐŋŅ€Đ°Ņ‰Đ°ĐŊĐĩ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=ПоĐēаĐļи Javascript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=ПоĐŋŅ€Đ°Đ˛Đ¸ repair.header=ПоĐŋŅ€Đ°Đ˛Đ¸ PDF-и @@ -863,7 +889,7 @@ ocr.selectText.10=OCR Ņ€ĐĩĐļиĐŧ ocr.selectText.11=ĐŸŅ€ĐĩĐŧĐ°Ņ…Đ˛Đ°ĐŊĐĩ ĐŊа Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸Ņ ҁĐģĐĩĐ´ OCR (ĐŸŅ€ĐĩĐŧĐ°Ņ…Đ˛Đ° ВСИЧКИ Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸Ņ, ĐŋĐžĐģĐĩСĐŊĐž ŅĐ°ĐŧĐž аĐēĐž Đĩ Ņ‡Đ°ŅŅ‚ ĐžŅ‚ ŅŅ‚ŅŠĐŋĐēĐ°Ņ‚Đ° ĐŊа ĐŋŅ€ĐĩĐžĐąŅ€Đ°ĐˇŅƒĐ˛Đ°ĐŊĐĩ) ocr.selectText.12=ĐĸиĐŋ Đ¸ĐˇĐžĐąŅ€Đ°ĐˇŅĐ˛Đ°ĐŊĐĩ (Đ Đ°ĐˇŅˆĐ¸Ņ€ĐĩĐŊ) ocr.help=МоĐģŅ, ĐŋŅ€ĐžŅ‡ĐĩŅ‚ĐĩŅ‚Đĩ Ņ‚Đ°ĐˇĐ¸ Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Đ¸Ņ Са Ņ‚ĐžĐ˛Đ° ĐēаĐē да иСĐŋĐžĐģĐˇĐ˛Đ°Ņ‚Đĩ Ņ‚ĐžĐ˛Đ° Са Đ´Ņ€ŅƒĐŗĐ¸ ĐĩĐˇĐ¸Ņ†Đ¸ и/иĐģи да ĐŊĐĩ иСĐŋĐžĐģĐˇĐ˛Đ°Ņ‚Đĩ в docker -ocr.credit=ĐĸаСи ҃ҁĐģŅƒĐŗĐ° иСĐŋĐžĐģСва OCRmyPDF и Tesseract Са OCR. +ocr.credit=ĐĸаСи ҃ҁĐģŅƒĐŗĐ° иСĐŋĐžĐģСва qpdf и Tesseract Са OCR. ocr.submit=ĐžĐąŅ€Đ°ĐąĐžŅ‚Đēа ĐŊа PDF ҇ҀĐĩС OCR @@ -887,7 +913,7 @@ fileToPDF.submit=ĐŸŅ€ĐĩĐžĐąŅ€Đ°ĐˇŅƒĐ˛Đ°ĐŊĐĩ ĐēҊĐŧ PDF #compress compress.title=КоĐŧĐŋŅ€ĐĩŅĐ¸Ņ€Đ°ĐŊĐĩ compress.header=КоĐŧĐŋŅ€ĐĩŅĐ¸Ņ€Đ°ĐŊĐĩ ĐŊа PDF -compress.credit=ĐĸаСи ҃ҁĐģŅƒĐŗĐ° иСĐŋĐžĐģСва Ghostscript Са PDF ĐēĐžĐŧĐŋŅ€ĐĩŅĐ¸Ņ€Đ°ĐŊĐĩ/ĐžĐŋŅ‚Đ¸ĐŧĐ¸ĐˇĐ¸Ņ€Đ°ĐŊĐĩ. +compress.credit=ĐĸаСи ҃ҁĐģŅƒĐŗĐ° иСĐŋĐžĐģСва qpdf Са PDF ĐēĐžĐŧĐŋŅ€ĐĩŅĐ¸Ņ€Đ°ĐŊĐĩ/ĐžĐŋŅ‚Đ¸ĐŧĐ¸ĐˇĐ¸Ņ€Đ°ĐŊĐĩ. compress.selectText.1=Đ ŅŠŅ‡ĐĩĐŊ Ņ€ĐĩĐļиĐŧ - ĐžŅ‚ 1 Đ´Đž 4 compress.selectText.2=Ниво ĐŊа ĐžĐŋŅ‚Đ¸ĐŧĐ¸ĐˇĐ°Ņ†Đ¸Ņ: compress.selectText.3=4 (ĐŖĐļĐ°ŅĐŊĐž Са Ņ‚ĐĩĐēŅŅ‚ĐžĐ˛Đ¸ Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸Ņ) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=ĐĄĐēаĐģа ĐŊа ŅĐ¸Đ˛ĐžŅ‚Đž pdfToImage.blackwhite=ЧĐĩŅ€ĐŊĐž и ĐąŅĐģĐž (ĐŧĐžĐļĐĩ да ĐˇĐ°ĐŗŅƒĐąĐ¸Ņ‚Đĩ даĐŊĐŊи!) pdfToImage.submit=ĐŸŅ€ĐĩĐžĐąŅ€Đ°ĐˇŅƒĐ˛Đ°ĐŊĐĩ pdfToImage.info=Python ĐŊĐĩ Đĩ иĐŊŅŅ‚Đ°ĐģĐ¸Ņ€Đ°ĐŊ. Đ˜ĐˇĐ¸ŅĐēва ҁĐĩ Са ĐēĐžĐŊвĐĩŅ€Ņ‚Đ¸Ņ€Đ°ĐŊĐĩ ĐŊа WebP. +pdfToImage.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Đ¨Đ¸Ņ„Ņ€ĐžĐ˛Đ°ĐŊĐĩ #watermark watermark.title=Đ”ĐžĐąĐ°Đ˛ŅĐŊĐĩ ĐŊа вОдĐĩĐŊ СĐŊаĐē watermark.header=Đ”ĐžĐąĐ°Đ˛ŅĐŊĐĩ ĐŊа вОдĐĩĐŊ СĐŊаĐē +watermark.customColor=ПĐĩŅ€ŅĐžĐŊаĐģĐ¸ĐˇĐ¸Ņ€Đ°ĐŊ Ņ†Đ˛ŅŅ‚ ĐŊа Ņ‚ĐĩĐēŅŅ‚Đ° watermark.selectText.1=ИСйĐĩŅ€ĐĩŅ‚Đĩ PDF, ĐēҊĐŧ ĐēĐžĐšŅ‚Đž да Đ´ĐžĐąĐ°Đ˛Đ¸Ņ‚Đĩ вОдĐĩĐŊ СĐŊаĐē: watermark.selectText.2=ĐĸĐĩĐēҁ҂ ĐŊа вОдĐĩĐŊ СĐŊаĐē: watermark.selectText.3=РаСĐŧĐĩŅ€ ĐŊа ŅˆŅ€Đ¸Ņ„Ņ‚Đ°: @@ -1097,7 +1147,7 @@ changeMetadata.submit=ĐŸŅ€ĐžĐŧĐĩĐŊи #pdfToPDFA pdfToPDFA.title=PDF ĐēҊĐŧ PDF/A pdfToPDFA.header=PDF ĐēҊĐŧ PDF/A -pdfToPDFA.credit=ĐĸаСи ҃ҁĐģŅƒĐŗĐ° иСĐŋĐžĐģСва ghostscript Са PDF/A ĐŋŅ€ĐĩĐžĐąŅ€Đ°ĐˇŅƒĐ˛Đ°ĐŊĐĩ. +pdfToPDFA.credit=ĐĸаСи ҃ҁĐģŅƒĐŗĐ° иСĐŋĐžĐģСва qpdf Са PDF/A ĐŋŅ€ĐĩĐžĐąŅ€Đ°ĐˇŅƒĐ˛Đ°ĐŊĐĩ. pdfToPDFA.submit=ĐŸŅ€ĐĩĐžĐąŅ€Đ°ĐˇŅƒĐ˛Đ°ĐŊĐĩ pdfToPDFA.tip=В ĐŧĐžĐŧĐĩĐŊŅ‚Đ° ĐŊĐĩ Ņ€Đ°ĐąĐžŅ‚Đ¸ Са ĐŊŅĐēĐžĐģĐēĐž Đ˛Ņ…ĐžĐ´Đ° ĐŊавĐĩĐ´ĐŊҊĐļ pdfToPDFA.outputFormat=Đ˜ĐˇŅ…ĐžĐ´ĐĩĐŊ Ņ„ĐžŅ€ĐŧĐ°Ņ‚ @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Ниво ĐŊа ĐžŅ‚ĐŧĐĩŅ‚Đēа: ИСйĐĩŅ€ĐĩŅ‚Đĩ ĐŊĐ¸Đ˛ĐžŅ‚ splitByChapters.desc.3=ВĐēĐģŅŽŅ‡Đ˛Đ°ĐŊĐĩ ĐŊа ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊи: АĐēĐž Đĩ ĐžŅ‚ĐŧĐĩŅ‚ĐŊĐ°Ņ‚Đž, ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊĐ¸Ņ‚Đĩ ĐŊа ĐžŅ€Đ¸ĐŗĐ¸ĐŊаĐģĐŊĐ¸Ņ PDF ҉Đĩ ĐąŅŠĐ´Đ°Ņ‚ вĐēĐģŅŽŅ‡ĐĩĐŊи Đ˛ŅŠĐ˛ Đ˛ŅĐĩĐēи Ņ€Đ°ĐˇĐ´ĐĩĐģĐĩĐŊ PDF. splitByChapters.desc.4=Đ Đ°ĐˇŅ€ĐĩŅˆĐ°Đ˛Đ°ĐŊĐĩ ĐŊа Đ´ŅƒĐąĐģиĐēĐ°Ņ‚Đ¸: АĐēĐž Đĩ ĐžŅ‚ĐŧĐĩŅ‚ĐŊĐ°Ņ‚Đž, ĐŋОСвОĐģŅĐ˛Đ° ĐŧĐŊĐžĐļĐĩŅŅ‚Đ˛Đž ĐžŅ‚ĐŧĐĩŅ‚Đēи ĐŊа ĐĩĐ´ĐŊа и ŅŅŠŅ‰Đ° ŅŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đ° Са ŅŅŠĐˇĐ´Đ°Đ˛Đ°ĐŊĐĩ ĐŊа ĐžŅ‚Đ´ĐĩĐģĐŊи PDF Ņ„Đ°ĐšĐģОвĐĩ. splitByChapters.submit=РаСдĐĩĐģŅĐŊĐĩ ĐŊа PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index d1374e4273..1ff8fb6afa 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -82,6 +82,7 @@ pages=Pàgines loading=Carregant... addToDoc=Afegeix al document reset=Reset +apply=Apply legal.privacy=Política de Privacitat legal.terms=Termes i condicions @@ -238,11 +239,13 @@ database.creationDate=Data de CreaciÃŗ database.fileSize=Mida del Fitxer database.deleteBackupFile=Elimina el Fitxer de CÃ˛pia de Seguretat database.importBackupFile=Importa el Fitxer de CÃ˛pia de Seguretat +database.createBackupFile=Create Backup File database.downloadBackupFile=Descarrega el Fitxer de CÃ˛pia de Seguretat database.info_1=Quan importis dades, Ês crucial assegurar-se que l'estructura sigui correcta. Si no estàs segur del que fas, busca l'assessorament d'un professional. Un error en l'estructura pot causar malfuncionaments de l'aplicaciÃŗ, fins i tot impossibilitar-ne l'execuciÃŗ. database.info_2=El nom del fitxer no importa quan es puja. Es renombrarà desprÊs per seguir el format backup_user_yyyyMMddHHmm.sql, assegurant una convenciÃŗ de nomenclatura consistent. database.submit=Importa la CÃ˛pia de Seguretat database.importIntoDatabaseSuccessed=ImportaciÃŗ a la base de dades completada amb èxit +database.backupCreated=Database backup successful database.fileNotFound=Fitxer no trobat database.fileNullOrEmpty=El fitxer no ha de ser nul o buit database.failedImportFile=Error en la importaciÃŗ del fitxer @@ -472,6 +475,10 @@ home.autoRedact.title=RedacciÃŗ Automàtica home.autoRedact.desc=Redacta automàticament (enfosqueix) text en un PDF basat en el text introduït autoRedact.tags=Redact,Hide,black out,black,marker,hidden +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF a CSV home.tableExtraxt.desc=Extreu taules d'un PDF convertint-les a CSV tableExtraxt.tags=CSV,Table Extraction,extract,convert @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Divideix PDF per Capítols home.splitPdfByChapters.desc=Divideix un PDF en mÃēltiples fitxers segons la seva estructura de capítols. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Reemplaça-Inverteix-Color replace-color.header=Reemplaça-Inverteix Color en PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Sol¡licitud no vàlida login.oauth2AccessDenied=AccÊs denegat login.oauth2InvalidTokenResponse=Resposta de token no vàlida login.oauth2InvalidIdToken=ID Token no vàlid +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=L'usuari està desactivat, l'inici de sessiÃŗ està actualment bloquejat amb aquest nom d'usuari. Si us plau, contacta amb l'administrador. login.alreadyLoggedIn=Ja has iniciat sessiÃŗ a login.alreadyLoggedIn2=dispositius. Si us plau, tanca la sessiÃŗ en els dispositius i torna-ho a intentar. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Espai Extra Personalitzat autoRedact.convertPDFToImageLabel=Converteix PDF a Imatge PDF (S'utilitza per eliminar text darrere del quadre) autoRedact.submitButton=Envia +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Mostra Javascript @@ -818,8 +839,13 @@ sign.save=Desa Signatura sign.personalSigs=Signatures Personals sign.sharedSigs=Signatures Compartides sign.noSavedSigs=No s'han trobat signatures desades - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Reparar repair.header=Repara els PDF @@ -863,7 +889,7 @@ ocr.selectText.10=Mode OCR ocr.selectText.11=Elimina Imatges desprÊs de l'OCR (Elimina TOTES les imatges, Ãētil si forma part d'un procÊs de conversiÃŗ) ocr.selectText.12=Tipus de RenderitzaciÃŗ (Avançat) ocr.help=Llegeix aquesta documentaciÃŗ sobre com utilitzar-la per a altres idiomes i/o no utilitzar-la a Docker -ocr.credit=Aquest servei fa servir OCRmyPDF i Tesseract per a OCR. +ocr.credit=Aquest servei fa servir qpdf i Tesseract per a OCR. ocr.submit=Processa PDF amb OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Converteix a PDF #compress compress.title=Comprimir compress.header=Comprimir PDF -compress.credit=Aquest servei utilitza Ghostscript per a la compressiÃŗ/optimitzaciÃŗ de PDF. +compress.credit=Aquest servei utilitza qpdf per a la compressiÃŗ/optimitzaciÃŗ de PDF. compress.selectText.1=Mode manual: de l'1 al 4 compress.selectText.2=Nivell d'optimitzaciÃŗ: compress.selectText.3=4 (terrible per a imatges de text) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Escala de Grisos pdfToImage.blackwhite=Blanc i Negre (Pot perdre dades!) pdfToImage.submit=Converteix pdfToImage.info=Python no està instal¡lat. És necessari per a la conversiÃŗ a WebP. +pdfToImage.placeholder=(p. ex. 1,2,8 o 4,7,12-16 o 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Encripta #watermark watermark.title=Afegir Marca d'Aigua watermark.header=Afegir Marca d'Aigua +watermark.customColor=Color de Text Personalitzat watermark.selectText.1=Selecciona el PDF per afegir la Marca d'Aigua: watermark.selectText.2=Text de la Marca d'Aigua watermark.selectText.3=Mida de la Font: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Canvia #pdfToPDFA pdfToPDFA.title=PDF a PDF/A pdfToPDFA.header=PDF a PDF/A -pdfToPDFA.credit=Utilitza Ghostscript per a la conversiÃŗ a PDF/A +pdfToPDFA.credit=Utilitza qpdf per a la conversiÃŗ a PDF/A pdfToPDFA.submit=Converteix pdfToPDFA.tip=Actualment no funciona per a mÃēltiples entrades al mateix temps pdfToPDFA.outputFormat=Format de sortida @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Nivell de Marcadors: Tria el nivell de marcadors que s'ut splitByChapters.desc.3=Incloure Metadades: Si està marcat, les metadades del PDF original s'inclouran en cada PDF dividit. splitByChapters.desc.4=Permetre Duplicats: Si està marcat, permet diversos marcadors a la mateixa pàgina per crear PDFs separats. splitByChapters.submit=Divideix PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties index 7f39eb4341..03aa28dcf4 100644 --- a/src/main/resources/messages_cs_CZ.properties +++ b/src/main/resources/messages_cs_CZ.properties @@ -82,6 +82,7 @@ pages=Strany loading=NačítÃĄní... addToDoc=Přidat do dokumentu reset=Reset +apply=Apply legal.privacy=Politika soukromí legal.terms=Podmínky pouÅžití @@ -238,11 +239,13 @@ database.creationDate=Datum vytvoření database.fileSize=Velikost souboru database.deleteBackupFile=Smazat zÃĄloÅžní soubor database.importBackupFile=Import zÃĄlohy souboru +database.createBackupFile=Create Backup File database.downloadBackupFile=StÃĄhnout zÃĄlohovÃŊ soubor database.info_1=Při importu dat je důleÅžitÊ zajistit sprÃĄvnou strukturu. Pokud jste nejistí, jak se chovat, hledajte konzultaci a podporu od profesionala. Chyba v struktuře můŞe vÊst k selhÃĄní aplikace, dokonce i k tomu, Åže by aplikace nemohla bÃŊt spuÅĄtěna. database.info_2=NÃĄzev souboru nezÃĄleŞí při nahrÃĄvÃĄní. Bude jeho zpětně znovu pojmenovÃĄn podle formÃĄŅ‚Ņƒ backup_user_yyyyMMddHHmm.sql, coÅž zajiÅĄÅĨuje konzistentní pravidlo označení. database.submit=Import zÃĄlohy database.importIntoDatabaseSuccessed=Import do databÃĄze byl ÃēspÄ›ÅĄnÃŊ +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=Soubor nemůŞe bÃŊt null nebo prÃĄzdnÃŊ database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=AutomatickÊ odstranění home.autoRedact.desc=Automaticky zakrÃŊvÃĄ text v PDF na zÃĄkladě vstupního textu autoRedact.tags=Odstranit,SkrytÃŊ,černÃŊ,zakrÃŊt,značka,skrytÃŊ +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF na CSV home.tableExtraxt.desc=Extrahuje tabulky z PDF a konvertuje je do formÃĄtu CSV tableExtraxt.tags=CSV,Extrakce tabulky,extrahovat,konvertovat @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Rozdělit PDF podle kapitol home.splitPdfByChapters.desc=Rozdělit PDF do více souborů na zÃĄkladě jeho struktury kapitol. splitPdfByChapters.tags=rozdělení, kapitoly, zÃĄpisky, organizace +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Nahradit inverzní barvu PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=NeplatnÃŊ poÅžadavek login.oauth2AccessDenied=Přístup zazobÃĄn login.oauth2InvalidTokenResponse=NeplatnÃĄ odpověď tokenu login.oauth2InvalidIdToken=NeplatnÃŊ identifikační token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=UÅživatel je deaktivovÃĄn, přihlÃĄÅĄení aktuÃĄlně pro tuto uÅživatelskou jmena je zakÃĄzÃĄno. Kontaktujte sprÃĄvce. login.alreadyLoggedIn=Jste jiÅž přihlÃĄÅĄeni na login.alreadyLoggedIn2=zariadení. OdhlaÅĄujte se z těchto zařízení a zkuste to znovu. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Vlastní doplňující vzdÃĄlenost autoRedact.convertPDFToImageLabel=PřevÊst PDF do PDF-ObrÃĄzku (Pro odstranění textu za obdÊlníkem) autoRedact.submitButton=Odeslat +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Zobrazit JavaScript @@ -818,8 +839,13 @@ sign.save=UloÅžit podpis sign.personalSigs=Osobní podpisy sign.sharedSigs=SdílenÊ podpisy sign.noSavedSigs=NenaÅĄly se ÅžÃĄdnÊ uloÅženÊ podpisy - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Opravit repair.header=Opravit PDF @@ -863,7 +889,7 @@ ocr.selectText.10=ReÅžim OCR ocr.selectText.11=Odstranit obrÃĄzky po OCR (Odstraní VÅ ECHNY obrÃĄzky, uÅžitečnÊ pouze jako souÄÃĄst kroku konverze) ocr.selectText.12=Typ vykreslení (PokročilÊ) ocr.help=Prosím, přečtěte si tuto dokumentaci o pouÅžití pro jinÊ jazyky a/nebo pouÅžití mimo Docker -ocr.credit=Tato sluÅžba pouŞívÃĄ OCRmyPDF a Tesseract pro OCR. +ocr.credit=Tato sluÅžba pouŞívÃĄ qpdf a Tesseract pro OCR. ocr.submit=Zpracovat PDF s OCR @@ -887,7 +913,7 @@ fileToPDF.submit=PřevÊst na PDF #compress compress.title=Komprese compress.header=Komprimovat PDF -compress.credit=Tato sluÅžba pouŞívÃĄ Ghostscript pro kompresi/optimalizaci PDF. +compress.credit=Tato sluÅžba pouŞívÃĄ qpdf pro kompresi/optimalizaci PDF. compress.selectText.1=Ruční reÅžim - Od 1 do 4 compress.selectText.2=Úroveň optimalizace: compress.selectText.3=4 (HroznÊ pro textovÊ obrÃĄzky) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Stupně ÅĄedi pdfToImage.blackwhite=ČernobílÃŊ (MůŞe dojít k ztrÃĄtě dat!) pdfToImage.submit=PřevÊst pdfToImage.info=Python není nainstalovÃĄn. Potřebuje se pro konverzi do WebP. +pdfToImage.placeholder=(např. 1,2,8 nebo 4,7,12-16 nebo 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Å ifrovat #watermark watermark.title=Přidat vodoznak watermark.header=Přidat vodoznak +watermark.customColor=Vlastní barva textu watermark.selectText.1=Vyberte PDF, ke kterÊmu chcete přidat vodoznak: watermark.selectText.2=Text vodoznaku: watermark.selectText.3=Velikost písma: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Změnit #pdfToPDFA pdfToPDFA.title=PDF na PDF/A pdfToPDFA.header=PDF na PDF/A -pdfToPDFA.credit=Tato sluÅžba pouŞívÃĄ ghostscript pro konverzi do formÃĄtu PDF/A +pdfToPDFA.credit=Tato sluÅžba pouŞívÃĄ qpdf pro konverzi do formÃĄtu PDF/A pdfToPDFA.submit=PřevÊst pdfToPDFA.tip=V současnÊ době nepracuje pro více vstupů najednou pdfToPDFA.outputFormat=VÃŊstupní formÃĄt @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Úroveň zÃĄhlaví: Zvolte Ãēroveň zÃĄhlaví pro pouÅžit splitByChapters.desc.3=Zahrnout metadatů: Pokud je zaÅĄkrtnuto, původní metadata PDF souboru budou zahrnuty do kaÅždÊho oddělenÊho PDF souboru. splitByChapters.desc.4=Povolit duplicitní zÃĄznamy: Pokud je zaÅĄkrtnuto, nÃĄvÅĄtěvníci mohou vytvořit samostatnÊ PDF soubory z více zÃĄhlaví na stejnÊ straně. splitByChapters.submit=Podělit se PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_da_DK.properties b/src/main/resources/messages_da_DK.properties index 7acaf3f761..8da8d3ddbe 100644 --- a/src/main/resources/messages_da_DK.properties +++ b/src/main/resources/messages_da_DK.properties @@ -82,6 +82,7 @@ pages=Sideantal loading=Laster... addToDoc=Tilføj til Dokument reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=VilkÃĨr og betingelser @@ -238,11 +239,13 @@ database.creationDate=Oprettelsesdato database.fileSize=Filstørrelse database.deleteBackupFile=Slet Backup-fil database.importBackupFile=ImportÊr Backup-fil +database.createBackupFile=Create Backup File database.downloadBackupFile=Download Backup-fil database.info_1=Ved import af data er det afgørende at sikre den korrekte struktur. Hvis du er usikker pÃĨ, hvad du gør, søg rÃĨd og støtte fra en professionel. En fejl i strukturen kan forÃĨrsage applikationsfejl, op til og med fuldstÃĻndig manglende evne til at køre applikationen. database.info_2=Filnavnet er ligegyldigt ved upload. Det vil blive omdøbt bagefter for at følge formatet backup_user_yyyyMMddHHmm.sql, hvilket sikrer en konsistent navngivningskonvention. database.submit=ImportÊr Backup database.importIntoDatabaseSuccessed=Import i database lykkedes +database.backupCreated=Database backup successful database.fileNotFound=Fil ikke fundet database.fileNullOrEmpty=Fil mÃĨ ikke vÃĻre null eller tom database.failedImportFile=Kunne ikke importere fil @@ -472,6 +475,10 @@ home.autoRedact.title=Auto Rediger home.autoRedact.desc=Auto Redigerer (SvÃĻrter) tekst i en PDF baseret pÃĨ input tekst autoRedact.tags=Rediger,Skjul,svÃĻrte,sort,markør,skjult +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF til CSV home.tableExtraxt.desc=UdtrÃĻkker Tabeller fra en PDF og konverterer dem til CSV tableExtraxt.tags=CSV,TabeludtrÃĻkning,udtrÃĻk,konvertÊr @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Partitioner PDF efter kapitler home.splitPdfByChapters.desc=Partitioner en PDF i flere filer baseret pÃĨ dens kapitelstruktur. splitPdfByChapters.tags=partitionering,kapitler,merker,organisering +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Erstat-omgivende Farve PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Ugyldig Anmodning login.oauth2AccessDenied=Adgang NÃĻgtet login.oauth2InvalidTokenResponse=Ugyldigt Token Svar login.oauth2InvalidIdToken=Ugyldigt Id Token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=Bruger er deaktiveret, login er i øjeblikket blokeret med dette brugernavn. Kontakt venligst administratoren. login.alreadyLoggedIn=Du er allerede logget ind pÃĨ login.alreadyLoggedIn2=enheder. Log ud af disse enheder og prøv igen. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Brugerdefineret Ekstra Polstring autoRedact.convertPDFToImageLabel=KonvertÊr PDF til PDF-Billede (Bruges til at fjerne tekst bag boksen) autoRedact.submitButton=Indsend +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Vis Javascript @@ -818,8 +839,13 @@ sign.save=Gem Signatur sign.personalSigs=Personlige Signaturer sign.sharedSigs=Delte Signaturer sign.noSavedSigs=Ingen Gemte Signaturer Fundet - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=ReparÊr repair.header=ReparÊr PDF'er @@ -863,7 +889,7 @@ ocr.selectText.10=OCR-tilstand ocr.selectText.11=Fjern billeder efter OCR (Fjerner ALLE billeder, kun nyttigt hvis det er en del af konverteringstrinnet) ocr.selectText.12=Renderingstype (Avanceret) ocr.help=LÃĻs venligst denne dokumentation om, hvordan man bruger dette til andre sprog og/eller brug uden for docker -ocr.credit=Denne tjeneste bruger OCRmyPDF og Tesseract til OCR. +ocr.credit=Denne tjeneste bruger qpdf og Tesseract til OCR. ocr.submit=Behandl PDF med OCR @@ -887,7 +913,7 @@ fileToPDF.submit=KonvertÊr til PDF #compress compress.title=Komprimer compress.header=Komprimer PDF -compress.credit=Denne tjeneste bruger Ghostscript til PDF Komprimering/Optimering. +compress.credit=Denne tjeneste bruger qpdf til PDF Komprimering/Optimering. compress.selectText.1=Manuel Tilstand - Fra 1 til 4 compress.selectText.2=Optimeringsniveau: compress.selectText.3=4 (ForfÃĻrdelig for tekstbilleder) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=GrÃĨtone pdfToImage.blackwhite=Sort og Hvid (Kan miste data!) pdfToImage.submit=KonvertÊr pdfToImage.info=Python er ikke installeret. PÃĨkrÃĻvet for WebP-konvertering. +pdfToImage.placeholder=(f.eks. 1,2,8 eller 4,7,12-16 eller 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=KryptÊr #watermark watermark.title=Tilføj VandmÃĻrke watermark.header=Tilføj VandmÃĻrke +watermark.customColor=Brugerdefineret Tekstfarve watermark.selectText.1=VÃĻlg PDF til at tilføje vandmÃĻrke: watermark.selectText.2=VandmÃĻrketekst: watermark.selectText.3=Skriftstørrelse: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Ændre #pdfToPDFA pdfToPDFA.title=PDF Til PDF/A pdfToPDFA.header=PDF Til PDF/A -pdfToPDFA.credit=Denne tjeneste bruger ghostscript til PDF/A-konvertering +pdfToPDFA.credit=Denne tjeneste bruger qpdf til PDF/A-konvertering pdfToPDFA.submit=KonvertÊr pdfToPDFA.tip=Fungerer i øjeblikket ikke for flere input pÃĨ Ên gang pdfToPDFA.outputFormat=Outputformat @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=BogmÃĻrke niveau: VÃĻlg nivÃĨet af bogmÃĻrker, der skal b splitByChapters.desc.3=Inkluder metadata: Hvis markeret, vil den originale PDF's metadata inkluderes i hver splitterdels PDF. splitByChapters.desc.4=Tillad duplikater: Hvis markeret, tillader det flere bogmÃĻrker pÃĨ samme side til at oprette separate PDF'er. splitByChapters.submit=Splitter PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 5f601c9ecc..dc3648a49b 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -82,6 +82,7 @@ pages=Seiten loading=Laden... addToDoc=In Dokument hinzufÃŧgen reset=ZurÃŧcksetzen +apply=Apply legal.privacy=Datenschutz legal.terms=AGB @@ -146,8 +147,8 @@ navbar.search=Suche navbar.sections.organize=Organisieren navbar.sections.convertTo=In PDF konvertieren navbar.sections.convertFrom=Konvertieren von PDF -navbar.sections.security=Zeichen und Sicherheit -navbar.sections.advance=Fortschrittlich +navbar.sections.security=Signieren und Sicherheit +navbar.sections.advance=Erweiterte Funktionen navbar.sections.edit=Anzeigen und Bearbeiten navbar.sections.popular=Beliebt @@ -238,17 +239,19 @@ database.creationDate=Erstellungsdatum database.fileSize=DateigrÃļße database.deleteBackupFile=Sicherungsdatei lÃļschen database.importBackupFile=Sicherungsdatei importieren +database.createBackupFile=Sicherungsdatei erstellen database.downloadBackupFile=Sicherungsdatei herunterladen database.info_1=Beim Importieren der Daten ist es von grÃļßter Bedeutung, die korrekte Struktur zu gewährleisten. Wenn Sie nicht sicher sind, was Sie tun, suchen Sie Rat und UnterstÃŧtzung von einem Fachmann. Ein Fehler in der Struktur kann zu Fehlfunktionen der Anwendung fÃŧhren, bis hin zur vollständigen Nicht-Lauffähigkeit der Anwendung. database.info_2=Der Dateiname spielt beim Hochladen keine Rolle. Dieser wird nachträglich in das Format backup_user_yyyyMMddHHmm.sql geändert, um eine einheitliche Benennung zu gewährleisten. database.submit=Sicherungsdatei importieren database.importIntoDatabaseSuccessed=Import in die Datenbank erfolgreich +database.backupCreated=Datenbanksicherung erfolgreich database.fileNotFound=Datei nicht gefunden database.fileNullOrEmpty=Datei darf nicht null oder leer sein database.failedImportFile=Dateiimport fehlgeschlagen session.expired=Ihre Sitzung ist abgelaufen. Bitte laden Sie die Seite neu und versuchen Sie es erneut. -session.refreshPage=Refresh Page +session.refreshPage=Seite aktualisieren ############# # HOME-PAGE # @@ -472,6 +475,10 @@ home.autoRedact.title=Automatisch zensieren/schwärzen home.autoRedact.desc=Automatisches Zensieren (Schwärzen) von Text in einer PDF-Datei basierend auf dem eingegebenen Text autoRedact.tags=zensieren,schwärzen +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=Tabelle extrahieren home.tableExtraxt.desc=Tabelle aus PDF in CSV extrahieren tableExtraxt.tags=CSV,tabelle,extrahieren @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=PDF-Datei nach Kapiteln aufteilen home.splitPdfByChapters.desc=Aufteilung einer PDF-Datei in mehrere Dateien auf Basis der Kapitelstruktur. splitPdfByChapters.tags=aufteilen,kapitel,lesezeichen,organisieren +home.validateSignature.title=PDF-Signatur ÃŧberprÃŧfen +home.validateSignature.desc=Digitale Signaturen und Zertifikate in PDF-Dokumenten ÃŧberprÃŧfen +validateSignature.tags=signature,verify,validate,pdf,digitale signatur,signatur validieren,ÃŧberprÃŧfen,Zertifikat,cert + #replace-invert-color replace-color.title=Farbe Ersetzen-Invertieren replace-color.header=Farb-PDF Ersetzen-Invertieren @@ -555,6 +566,7 @@ login.oauth2invalidRequest=ungÃŧltige Anfrage login.oauth2AccessDenied=Zugriff abgelehnt login.oauth2InvalidTokenResponse=UngÃŧltige Token-Antwort login.oauth2InvalidIdToken=UngÃŧltiges ID-Token +login.relyingPartyRegistrationNotFound=Keine Relying-Party-Registrierung gefunden login.userIsDisabled=Benutzer ist deaktiviert, die Anmeldung ist mit diesem Benutzernamen derzeit gesperrt. Bitte wenden Sie sich an den Administrator. login.alreadyLoggedIn=Sie sind bereits an login.alreadyLoggedIn2=Geräten angemeldet. Bitte melden Sie sich dort ab und versuchen es dann erneut. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Zensierten Bereich vergrÃļßern autoRedact.convertPDFToImageLabel=PDF in PDF-Bild konvertieren (zum Entfernen von Text hinter dem Kasten) autoRedact.submitButton=Zensieren +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Javascript anzeigen @@ -818,8 +839,13 @@ sign.save=Signature speichern sign.personalSigs=PersÃļnliche Signaturen sign.sharedSigs=Geteilte Signaturen sign.noSavedSigs=Es wurden keine gespeicherten Signaturen gefunden - - +sign.addToAll=Zu allen Seiten hinzufÃŧgen +sign.delete=LÃļschen +sign.first=Erste Seite +sign.last=Letzte Seite +sign.next=Nächste Seite +sign.previous=Vorherige Seite +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Reparieren repair.header=PDFs reparieren @@ -863,7 +889,7 @@ ocr.selectText.10=OCR-Modus ocr.selectText.11=Bilder nach OCR entfernen (Entfernt ALLE Bilder, nur sinnvoll, wenn Teil des Konvertierungsschritts) ocr.selectText.12=Rendertyp (Erweitert) ocr.help=Bitte lesen Sie diese Dokumentation, um zu erfahren, wie Sie dies fÃŧr andere Sprachen verwenden und/oder nicht in Docker verwenden kÃļnnen -ocr.credit=Dieser Dienst verwendet OCRmyPDF und Tesseract fÃŧr OCR. +ocr.credit=Dieser Dienst verwendet qpdf und Tesseract fÃŧr OCR. ocr.submit=PDF mit OCR verarbeiten @@ -887,7 +913,7 @@ fileToPDF.submit=In PDF konvertieren #compress compress.title=Komprimieren compress.header=PDF komprimieren -compress.credit=Dieser Dienst verwendet Ghostscript fÃŧr die PDF-Komprimierung/-Optimierung. +compress.credit=Dieser Dienst verwendet qpdf fÃŧr die PDF-Komprimierung/-Optimierung. compress.selectText.1=Manueller Modus – Von 1 bis 4 compress.selectText.2=Optimierungsstufe: compress.selectText.3=4 (Schrecklich fÃŧr Textbilder) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Auswahl lÃļschen multiTool.downloadAll=Downloaden multiTool.downloadSelected=Auswahl downloaden +multiTool.insertPageBreak=Seitenumbruch einfÃŧgen +multiTool.addFile=Datei hinzufÃŧgen +multiTool.rotateLeft=Nach links drehen +multiTool.rotateRight=Nach rechts drehen +multiTool.split=Teilen +multiTool.moveLeft=Nach links verschieben +multiTool.moveRight=Nach rechts verschieben +multiTool.delete=LÃļschen +multiTool.dragDropMessage=Ausgewählte Seite(n) +multiTool.undo=RÃŧckgängig machen +multiTool.redo=Wiederherstellen + +#decrypt +decrypt.passwordPrompt=Diese Datei ist passwortgeschÃŧtzt. Bitte geben Sie das Passwort ein: +decrypt.cancelled=Vorgang fÃŧr PDF abgebrochen: {0} +decrypt.noPassword=Kein Passwort fÃŧr verschlÃŧsseltes PDF angegeben: {0} +decrypt.invalidPassword=Bitte versuchen Sie es erneut mit dem richtigen Passwort. +decrypt.invalidPasswordHeader=Falsches Passwort oder nicht unterstÃŧtzte VerschlÃŧsselung fÃŧr PDF: {0} +decrypt.unexpectedError=Bei der Verarbeitung der Datei ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut. +decrypt.serverError=Serverfehler beim EntschlÃŧsseln: {0} +decrypt.success=Datei erfolgreich entschlÃŧsselt. + #multiTool-advert multiTool-advert.message=Diese Funktion ist auch auf unserer PDF-Multitool-Seite verfÃŧgbar. Probieren Sie sie aus, denn sie bietet eine verbesserte Benutzeroberfläche und zusätzliche Funktionen! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Graustufen pdfToImage.blackwhite=Schwarzweiß (Datenverlust mÃļglich!) pdfToImage.submit=Umwandeln pdfToImage.info=Python ist nicht installiert. Erforderlich fÃŧr die WebP-Konvertierung. +pdfToImage.placeholder=(z.B. 1,2,8 oder 4,7,12-16 oder 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=VerschlÃŧsseln #watermark watermark.title=Wasserzeichen hinzufÃŧgen watermark.header=Wasserzeichen hinzufÃŧgen +watermark.customColor=Benutzerdefinierte Textfarbe watermark.selectText.1=PDF auswählen, dem ein Wasserzeichen hinzugefÃŧgt werden soll: watermark.selectText.2=Wasserzeichen Text: watermark.selectText.3=SchriftgrÃļße: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Ändern #pdfToPDFA pdfToPDFA.title=PDF zu PDF/A pdfToPDFA.header=PDF zu PDF/A -pdfToPDFA.credit=Dieser Dienst verwendet ghostscript fÃŧr die PDF/A-Konvertierung +pdfToPDFA.credit=Dieser Dienst verwendet qpdf fÃŧr die PDF/A-Konvertierung pdfToPDFA.submit=Konvertieren pdfToPDFA.tip=Dieser Dienst kann nur einzelne Eingangsdateien verarbeiten. pdfToPDFA.outputFormat=Ausgabeformat @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Lesezeichenebene: Wählen Sie die Ebene der Lesezeichen, splitByChapters.desc.3=Metadaten einschließen: Wenn diese Option aktiviert ist, werden die Metadaten der ursprÃŧnglichen PDF-Datei in jede aufgeteilte PDF-Datei Ãŧbernommen. splitByChapters.desc.4=Duplikate erlauben: Wenn diese Option aktiviert ist, kÃļnnen mehrere Lesezeichen auf derselben Seite separate PDF Dateien erstellen. splitByChapters.submit=PDF teilen + +#File Chooser +fileChooser.click=Klicken +fileChooser.or=oder +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Datei(en) hierhin Ziehen & Fallenlassen + +#release notes +releases.footer=VerÃļffentlichungen +releases.title=Versionshinweise +releases.header=Versionshinweise +releases.current.version=Aktuelle Version +releases.note=Versionshinweise sind nur auf Englisch verfÃŧgbar + +#Validate Signature +validateSignature.title=PDF-Signaturen ÃŧberprÃŧfen +validateSignature.header=Digitale Signaturen ÃŧberprÃŧfen +validateSignature.selectPDF=Signierte PDF-Datei auswählen +validateSignature.submit=Signaturen ÃŧberprÃŧfen +validateSignature.results=GÃŧltigkeitsprÃŧfungsergebnisse +validateSignature.status=Status +validateSignature.signer=Unterzeichner +validateSignature.date=Datum +validateSignature.reason=Grund +validateSignature.location=Ort +validateSignature.noSignatures=Keine digitalen Signaturen in diesem Dokument gefunden +validateSignature.status.valid=GÃŧltig +validateSignature.status.invalid=UngÃŧltig +validateSignature.chain.invalid=ZertifikatskettenprÃŧfung fehlgeschlagen - kann die Identität des Unterzeichners nicht verifizieren +validateSignature.trust.invalid=Zertifikat nicht im Truststore - Quelle kann nicht verifiziert werden +validateSignature.cert.expired=Zertifikat ist abgelaufen +validateSignature.cert.revoked=Zertifikat wurde widerrufen +validateSignature.signature.info=Signaturinformationen +validateSignature.signature=Signatur +validateSignature.signature.mathValid=Signatur ist mathematisch gÃŧltig ABER: +validateSignature.selectCustomCert=Benutzerdefinierte Zertifikatsdatei X.509 (Optional) +validateSignature.cert.info=Zertifikat Details +validateSignature.cert.issuer=Aussteller +validateSignature.cert.subject=Betreff +validateSignature.cert.serialNumber=Seriennummer +validateSignature.cert.validFrom=GÃŧltig von +validateSignature.cert.validUntil=GÃŧltig bis +validateSignature.cert.algorithm=Algorithmus +validateSignature.cert.keySize=SchlÃŧsselgrÃļße +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=SchlÃŧsselverwendung +validateSignature.cert.selfSigned=Selbstsigniert +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index c616bd2b98..4b39167d29 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -82,6 +82,7 @@ pages=ÎŖÎĩÎģίδÎĩĪ‚ loading=ÎĻĪŒĪĪ„Ī‰ĪƒÎˇ... addToDoc=Î ĪĪŒĪƒÎ¸ÎĩĪƒÎˇ ĪƒĪ„Îŋ ΕÎēĪ€ÎŋÎŧĪ€ĪŽÎŧÎąĪ„Îŋ reset=Reset +apply=Apply legal.privacy=ΠÎŋÎģÎšĪ„ÎšÎēÎŽ Î ĪÎŋÎŊÎŋÎŧίÎŋĪ…Ī‚ legal.terms=ÎĻ΁ÎŦ΃ÎĩÎšĪ‚ ÎĨĪ€Îŋ·΁ÎĩĪ‰Ī„ÎšÎēĪŒĪ„ÎˇĪ„ÎąĪ‚ @@ -238,11 +239,13 @@ database.creationDate=ΗÎŧÎĩ΁ÎŋÎŧΡÎŊÎ¯Îą δΡÎŧΚÎŋĪ…ĪÎŗÎ¯ÎąĪ‚ database.fileSize=ÎœÎ­ÎŗÎĩθÎŋĪ‚ ÎąĪĪ‡ÎĩίÎŋĪ… database.deleteBackupFile=Î”ÎšÎąÎŗĪÎąĪ†ÎŽ Î ĪÎŋÎŗĪÎŦÎŧÎŧÎąĪ„ÎŋĪ‚ ΑÎŊÎąĪƒĪ…ÎŗÎēĪĪŒĪ„ÎˇĪƒÎˇĪ‚ database.importBackupFile=Î•ÎšĪƒÎŦÎŗĪ‰ÎŊĪ„ÎąĪ‚ Î ĪÎŋÎŗĪÎŦÎŧÎŧÎąĪ„ÎŋĪ‚ ΑÎŊÎąĪƒĪ…ÎŗÎēĪĪŒĪ„ÎˇĪƒÎˇĪ‚ +database.createBackupFile=Create Backup File database.downloadBackupFile=ÎšÎąĪ„Î­Î˛ÎąĪƒÎŧÎą Î ĪÎŋÎŗĪÎŦÎŧÎŧÎąĪ„ÎŋĪ‚ ΑÎŊÎąĪƒĪ…ÎŗÎēĪĪŒĪ„ÎˇĪƒÎˇĪ‚ database.info_1=ÎŒĪ„ÎąÎŊ ÎĩÎšĪƒÎŦÎŗÎĩĪ„Îĩ δÎĩδÎŋÎŧέÎŊÎą, ÎĩίÎŊιΚ ĪƒÎˇÎŧÎąÎŊĪ„ÎšÎēΌ ÎŊÎą ÎĩÎžÎąĪƒĪ†ÎąÎģÎ¯ĪƒÎĩĪ„Îĩ Ī„Îˇ ĪƒĪ‰ĪƒĪ„ÎŽ ÎŧÎŋ΁ΆÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ. ΑÎŊ δÎĩÎŊ ÎĩÎ¯ĪƒĪ„Îĩ ĪƒÎ¯ÎŗÎŋ΅΁ÎŋΚ ÎŗÎšÎą Ī„Îŋ Ī€ÎŋΚι ΀΁ÎŦÎŗÎŧÎąĪ„Îą ÎēÎŦÎŊÎĩĪ„Îĩ, ÎąÎšĪ„ÎŽĪƒĪ„Îĩ Ī…Ī€ÎŋβÎŋÎģÎŽ ÎēιΚ Ī…Ī€ÎŋĪƒĪ„ÎŽĪÎšÎžÎˇ ÎąĪ€ĪŒ ÎĩĪ…ÎĩÎģίÎē΄Ή. Μια ĪƒĪ†ÎŦÎģÎŧÎą ĪƒĪ„Îˇ ÎŧÎŋ΁ΆÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ ÎŧĪ€Îŋ΁Îĩί ÎŊÎą ΀΁ÎŋÎēÎąÎģÎ­ĪƒÎĩΚ ÎēÎąĪ„ÎąĪƒĪ„ÎŦ΃ÎĩÎšĪ‚ ÎģÎŦθÎŋĪ…Ī‚ ĪƒĪ„ÎˇÎŊ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽ, ÎąÎŊ ĪŒĪ‡Îš ÎŋÎģΌÎēÎģÎˇĪÎˇ Ī„ÎˇÎŊ ÎąĪ€ÎŋĪ‡ĪŽĪÎˇĪƒÎˇ Ī„ÎˇĪ‚ ÎĩĪ†ÎąĪÎŧÎŋÎŗÎŽĪ‚. database.info_2=ΤÎŋ ÎŋÎŊΌÎŧÎą Ī„ÎŋĪ… ÎąĪĪ‡ÎĩίÎŋĪ… δÎĩÎŊ Î­Ī‡ÎĩΚ ĪƒÎˇÎŧÎąĪƒÎ¯Îą ĪŒĪ„ÎąÎŊ ΞÎĩÎēΚÎŊÎŦĪ„Îĩ ÎŧΚι ÎĩĪ€Î­ÎŧÎ˛ÎąĪƒÎˇ. ΑÎģÎģÎąÎŗÎŽĪ„ÎąÎš ÎąĪÎŗĪŒĪ„ÎĩĪÎą ÎŗÎšÎą ÎŊÎą ÎąÎēÎŋÎģÎŋĪ…Î¸ÎŽĪƒÎĩΚ Ī„Îŋ ĪƒĪ‡ÎŽÎŧÎą backup_Ī‰Ī‚ĪŽÎŊĪ„ÎąĪ‚_YYYYMMDDHHmm.sql, ÎĩĪ€ÎšĪ„ĪÎ­Ī€ÎŋÎŊĪ„ÎąĪ‚ ÎŧΚι ĪƒĪ…ÎŊÎĩĪ‡Î­Ī‚ ÎēÎąĪ„ÎŦÎģÎˇĪˆÎˇ ÎŋÎŊΌÎŧÎąĪ„ÎŋĪ‚. database.submit=Î•ÎšĪƒÎŦÎŗĪ‰ÎŊĪ„ÎąĪ‚ Î ĪÎŋÎŗĪÎŦÎŧÎŧÎąĪ„ÎŋĪ‚ ΑÎŊÎąĪƒĪ…ÎŗÎēĪĪŒĪ„ÎˇĪƒÎˇĪ‚ database.importIntoDatabaseSuccessed=ΤÎĩÎģÎĩÎ¯Ī‰ĪƒÎˇ ÎĩÎšĪƒÎąÎŗĪ‰ÎŗÎŽĪ‚ ĪƒĪ„Îˇ βÎŦĪƒÎˇ δÎĩδÎŋÎŧέÎŊΉÎŊ. +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=ΤÎŋ ÎąĪĪ‡ÎĩίÎŋ δÎĩÎŊ ÎŧĪ€Îŋ΁Îĩί ÎŊÎą ÎĩίÎŊιΚ Ī„Ī…Ī‡ĪŒÎŊ ÎŽ ÎēÎĩÎŊΌ. database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=Î‘Ī…Ī„ĪŒÎŧÎąĪ„Îŋ ÎœÎąĪĪÎšĪƒÎŧÎą ΚÎĩΚÎŧέÎŊÎŋĪ… home.autoRedact.desc=Î‘Ī…Ī„ĪŒÎŧÎąĪ„Îˇ ÎĩĪ€ÎĩΞÎĩĪÎŗÎąĪƒÎ¯Îą (ÎœÎąĪĪÎšĪƒÎŧÎą) ÎēÎĩίÎŧÎĩÎŊÎŋĪ… ΃Îĩ PDF ÎŧÎĩ βÎŦĪƒÎˇ Ī„Îŋ ÎēÎĩίÎŧÎĩÎŊÎŋ ÎĩÎšĪƒÎąÎŗĪ‰ÎŗÎŽĪ‚ autoRedact.tags=ΞÎĩÎē΁ÎŦÎļΉ,Ά΅ÎģÎąÎēίÎļΉ,ÎĩΚÎēΌÎŊÎŋ-ÎēÎŋĪ…Ī€Î­Ī‚,ÎēĪÎąĪ„ÎŽĪƒĪ„Îĩ ÎąĪƒĪ†ÎąÎģÎĩÎ¯Ī‚,δΡÎŧΚÎŋĪ…ĪÎŗÎŽĪƒĪ„Îĩ +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF ΃Îĩ CSV home.tableExtraxt.desc=ΕξÎŦÎŗÎĩΚ Ī€Î¯ÎŊÎąÎēÎĩĪ‚ ÎąĪ€ĪŒ PDF ÎŧÎĩĪ„ÎąĪ„ĪÎ­Ī€ÎŋÎŊĪ„ÎŦĪ‚ Ī„Îŋ ΃Îĩ CSV tableExtraxt.tags=CSV,ÎēÎąĪ„ÎąÎ¸Î­ĪƒÎĩÎšĪ‚-Ī„ÎŦβÎģÎĩĪ‚,ÎąĪ€ÎŋÎ´ÎšÎąĪ„ĪĪ€Ī‰ĪƒÎˇ,ÎŧÎĩĪ„ÎąĪ„ĪÎŋĪ€ÎŽ @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Î”ÎšĪ‡ÎŋĪ„ÎŋÎŧÎ¯Îą PDF ÎąÎŊÎŦ ΠÎĩĪÎšÎŗĪÎąĪ†Î­Ī‚ home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=Î´ÎšĪ‡ÎŋĪ„ÎŋÎŧÎ¯Îą,Ī€ÎĩĪÎšÎŗĪÎąĪ†Î­Ī‚,ÎēÎĩΆÎŦÎģιΚι,ĪƒĪ…ÎŊÎŋĪÎ¯Îą +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=ΑÎŊĪ„ÎšÎēÎąĪ„ÎŦĪƒĪ„ÎąĪƒÎˇ-ΑÎŊĪ„Î¯ĪƒĪ„ĪÎŋĪ†Îˇ Î ÎąÎ¸Ī‰ÎŧέÎŊΡ ΠίÎŊĪ„ĪƒÎŋ΅΁ @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Î‘ĪĪ‡ÎąÎ¯Ī‰Ī‚ ÎąĪ€ÎąÎšĪ„ÎŽĪƒÎĩÎšĪ‚ Ī€ÎģÎˇĪÎŋΆÎŋ΁ login.oauth2AccessDenied=Î ĪĪŒĪƒÎ˛ÎąĪƒÎˇ ÎŋĪÎšĪƒÎŧέÎŊÎĩĪ‚ Ī„ÎŋĪ€ÎŋθÎĩĪ„ÎŽĪƒÎĩÎšĪ‚ login.oauth2InvalidTokenResponse=Î‘Ī€ÎŦÎŊĪ„ÎˇĪƒÎˇ ÎŦ΁ÎēÎĩĪ„Îŋ ĪĪŒĪ„ÎąÎŧÎą login.oauth2InvalidIdToken=Î›ÎšÎ´ĪŒĪ‚ Ό΁ÎēÎŋĪ… ÎŧΡ ÎąĪÎēÎĩĪ„ĪŒĪ‚ +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=Ο Ī‡ĪÎŽĪƒĪ„ÎˇĪ‚ ÎĩίÎŊιΚ δÎĩĪ…Ī„Îĩ΁ÎŋβιθÎŧΚιÎēÎŦ δΚιÎēΉÎŧέÎŊÎŋĪ‚, Ī„Îŋ ĪƒĪĪƒĪ„ÎˇÎŧÎą ÎŦÎģÎģιΞÎĩ Ī„ÎŋÎŊ ÎēÎąÎ¸ĪŽĪ‚ Î˛ĪÎĩθÎĩί. Î ÎąĪÎąÎēÎąÎģÎĩÎ¯ĪƒĪ„Îĩ Ī„ÎŋĪ…Ī‚ ÎąĪĪ‡ÎˇÎŗÎŋĪĪ‚ ÎŊÎą ÎĩĪ€ÎšÎ˛ÎĩÎ˛ÎąÎšĪŽĪƒÎŋĪ…ÎŊ Ī„Îˇ ĪƒĪ…ÎŧĪ€ÎĩĪÎšĪ†Îŋ΁ÎŦ Ī‡ĪÎŽĪƒĪ„Îˇ. login.alreadyLoggedIn=Î•Î¯ĪƒĪ„Îĩ ΎδΡ ĪƒĪÎŊδÎĩδÎĩĪ‚ ΃Îĩ login.alreadyLoggedIn2=ÎēÎąĪ„ÎŋĪ‡ĪŒÎš. Î ÎąĪÎąÎēÎąÎģĪŽ Î´Ī…ĪƒÎēέÎŊĪ„ĪĪ‰ĪƒÎˇ Ī„ÎŋĪ…Ī‚ ÎēιΚ ΀΁ÎŋĪƒĪ€ÎąÎ¸ÎŽĪƒĪ„Îĩ ΞιÎŊÎŦ. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=ΕÎŧĪ€ÎŊÎĩĪ…ĪƒÎŧέÎŊΡ Î ĪÎŋĪƒÎ¸ÎŽÎēΡ ΑÎŊÎŦÎē΁ autoRedact.convertPDFToImageLabel=ΜÎĩĪ„ÎąĪ„ĪÎŋĪ€ÎŽ PDF ΃Îĩ PDF-ΕιÎēΌÎŊÎą (Î§ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩÎ¯Ī„ÎąÎš ÎŗÎšÎą Ī„ÎˇÎŊ ÎąĪ†ÎąÎ¯ĪÎĩĪƒÎˇ ÎēÎĩΚÎŧέÎŊÎŋĪ… Ī€Î¯ĪƒĪ‰ ÎąĪ€ĪŒ Ī„Îŋ Ī€ÎģÎąÎ¯ĪƒÎšÎŋ) autoRedact.submitButton=ÎĨĪ€ÎŋβÎŋÎģÎŽ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=ΕÎŧΆÎŦÎŊÎšĪƒÎˇ Javascript @@ -818,8 +839,13 @@ sign.save=Î‘Ī€ÎŋθΎÎēÎĩĪ…ĪƒÎˇ ΑÎģΚÎŦĪƒÎˇĪ‚ sign.personalSigs=Î ĪÎŋĪƒĪ‰Ī€ÎšÎēÎ­Ī‚ ΑÎģΚÎŦ΃ÎĩÎšĪ‚ sign.sharedSigs=ΜÎĩĪ„ÎąÎ´ĪŒĪ„ÎĩĪ‚ ΑÎģΚÎŦ΃ÎĩÎšĪ‚ sign.noSavedSigs=ΔÎĩÎŊ Î˛ĪÎ­Î¸ÎˇÎēÎąÎŊ ÎąĪ€ÎŋθΡÎēÎĩĪ…ÎŧέÎŊÎĩĪ‚ ÎąÎģΚÎŦ΃ÎĩÎšĪ‚ - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Î•Ī€ÎšÎ´ÎšĪŒĪÎ¸Ī‰ĪƒÎˇ repair.header=Î•Ī€ÎšÎ´ÎšĪŒĪÎ¸Ī‰ĪƒÎˇ PDFs @@ -863,7 +889,7 @@ ocr.selectText.10=ΛÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą OCR ocr.selectText.11=ÎšÎąĪ„ÎŦĪÎŗÎˇĪƒÎˇ ÎĩΚÎēΌÎŊΉÎŊ ÎŧÎĩĪ„ÎŦ Ī„Îŋ OCR (ÎšÎąĪ„ÎąĪÎŗÎĩί ÎŸÎ›Î•ÎŖ Ī„ÎšĪ‚ ÎĩΚÎēΌÎŊÎĩĪ‚, ÎĩίÎŊιΚ Ī‡ĪÎŽĪƒÎšÎŧÎŋ ÎŧΌÎŊÎŋ ÎąÎŊ ÎąĪ€ÎŋĪ„ÎĩÎģÎĩί ÎŧÎ­ĪÎŋĪ‚ Ī„ÎŋĪ… βΎÎŧÎąĪ„ÎŋĪ‚ ÎŧÎĩĪ„ÎąĪ„ĪÎŋĪ€ÎŽĪ‚) ocr.selectText.12=Î¤ĪĪ€ÎŋĪ‚ ÎąĪ€ĪŒÎ´ÎŋĪƒÎˇĪ‚ (Για ΀΁ÎŋĪ‡Ī‰ĪÎˇÎŧέÎŊÎŋĪ…Ī‚) ocr.help=ΔιαβÎŦĪƒĪ„Îĩ ÎąĪ…Ī„ÎŽÎŊ Ī„ÎˇÎŊ Ī„ÎĩÎēÎŧÎˇĪÎ¯Ī‰ĪƒÎˇ ĪƒĪ‡ÎĩĪ„ÎšÎēÎŦ ÎŧÎĩ Ī„ÎŋÎŊ Ī„ĪĪŒĪ€Îŋ Ī‡ĪÎŽĪƒÎˇĪ‚ ÎąĪ…Ī„ÎŽĪ‚ ÎŗÎšÎą ÎŦÎģÎģÎĩĪ‚ ÎŗÎģĪŽĪƒĪƒÎĩĪ‚ ÎŽ/ÎēιΚ ÎŧΡ Ī‡ĪÎŽĪƒÎˇĪ‚ ΃Îĩ docker -ocr.credit=Î‘Ī…Ī„ÎŽ Ρ Ī…Ī€ÎˇĪÎĩĪƒÎ¯Îą Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩί OCRmyPDF ÎēιΚ Tesseract ÎŗÎšÎą OCR. +ocr.credit=Î‘Ī…Ī„ÎŽ Ρ Ī…Ī€ÎˇĪÎĩĪƒÎ¯Îą Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩί qpdf ÎēιΚ Tesseract ÎŗÎšÎą OCR. ocr.submit=Î•Ī€ÎĩΞÎĩĪÎŗÎąĪƒÎ¯Îą PDF ÎŧÎĩ OCR @@ -887,7 +913,7 @@ fileToPDF.submit=ΜÎĩĪ„ÎąĪ„ĪÎŋĪ€ÎŽ ΃Îĩ PDF #compress compress.title=ÎŖĪ…ÎŧĪ€Î¯ÎĩĪƒÎˇ compress.header=ÎŖĪ…ÎŧĪ€Î¯ÎĩĪƒÎˇ PDF -compress.credit=Î‘Ī…Ī„ÎŽ Ρ Ī…Ī€ÎˇĪÎĩĪƒÎ¯Îą Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩί Ghostscript ÎŗÎšÎą PDF ÎŖĪ…ÎŧĪ€Î¯ÎĩĪƒÎˇ/ΒÎĩÎģĪ„ÎšĪƒĪ„ÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ. +compress.credit=Î‘Ī…Ī„ÎŽ Ρ Ī…Ī€ÎˇĪÎĩĪƒÎ¯Îą Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩί qpdf ÎŗÎšÎą PDF ÎŖĪ…ÎŧĪ€Î¯ÎĩĪƒÎˇ/ΒÎĩÎģĪ„ÎšĪƒĪ„ÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇ. compress.selectText.1=ΧÎĩÎšĪÎŋÎēίÎŊÎˇĪ„Îˇ ΛÎĩÎšĪ„ÎŋĪ…ĪÎŗÎ¯Îą - Î‘Ī€ĪŒ 1 Î­Ī‰Ī‚ 4 compress.selectText.2=Î•Ī€Î¯Ī€ÎĩδÎŋ ΒÎĩÎģĪ„ÎšĪƒĪ„ÎŋĪ€ÎŋÎ¯ÎˇĪƒÎˇĪ‚: compress.selectText.3=4 (ΠÎŋÎģĪ ÎēÎąÎēΌ ÎŗÎšÎą ÎĩΚÎēΌÎŊÎĩĪ‚ ÎēÎĩΚÎŧέÎŊÎŋĪ…) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=ΚÎģίÎŧÎąÎēÎą Ī„ÎŋĪ… ÎŗÎēĪÎš pdfToImage.blackwhite=Î‘ĪƒĪ€ĪĪŒÎŧÎąĪ…ĪÎŋ (ÎœĪ€Îŋ΁Îĩί ÎŊÎą Ī‡ÎąÎ¸ÎŋĪÎŊ δÎĩδÎŋÎŧέÎŊÎą!) pdfToImage.submit=ΜÎĩĪ„ÎąĪ„ĪÎŋĪ€ÎŽ pdfToImage.info=ΔÎĩÎŊ ÎĩίÎŊιΚ ÎšĪƒĪ„ÎŦÎŧÎĩÎŊÎŋĪ‚ Python. ΕίÎŊιΚ ÎąĪ€ÎąÎšĪ„ÎŽĪ„Ī‰ÎŊ ÎŗÎšÎą Ī„Îˇ ÎŧÎĩĪ„ÎąĪ„ĪÎŋĪ€ÎŽ ΃Îĩ WebP. +pdfToImage.placeholder=(Ī€.·. 1,2,8 ÎŽ 4,7,12-16 ÎŽ 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=ÎšĪĪ…Ī€Ī„ÎŋÎŗĪÎŦĪ†ÎˇĪƒÎˇ #watermark watermark.title=Î ĪÎŋĪƒÎ¸ÎŽÎēΡ ÎĨÎ´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚ watermark.header=Î ĪÎŋĪƒÎ¸ÎŽÎēΡ ÎĨÎ´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚ +watermark.customColor=Î ĪÎŋĪƒÎąĪÎŧÎŋ΃ÎŧέÎŊÎŋ Ī‡ĪĪŽÎŧÎą ÎēÎĩΚÎŧέÎŊÎŋĪ… watermark.selectText.1=Î•Ī€ÎšÎģÎ­ÎžĪ„Îĩ PDF ÎŗÎšÎą Ī„ÎˇÎŊ ΀΁ÎŋĪƒÎ¸ÎŽÎēΡ Ī„ÎŋĪ… Ī…Î´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚: watermark.selectText.2=ΚÎĩίÎŧÎĩÎŊÎŋ ÎĨÎ´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚: watermark.selectText.3=ÎœÎ­ÎŗÎĩθÎŋĪ‚ ΚÎĩΚÎŧέÎŊÎŋĪ…: watermark.selectText.4=ΠÎĩĪÎšĪƒĪ„ĪÎŋĪ†ÎŽ (0-360): -watermark.selectText.5=widthSpacer (ΚÎĩÎŊΌ ÎŧÎĩĪ„ÎąÎžĪ ÎēÎŦθÎĩ Ī…Î´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚ ÎŋĪÎšÎļΌÎŊĪ„ÎšÎą): -watermark.selectText.6=heightSpacer (ΚÎĩÎŊΌ ÎŧÎĩĪ„ÎąÎžĪ ÎēÎŦθÎĩ Ī…Î´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚ ÎēÎŦθÎĩĪ„Îą): +watermark.selectText.5=Width Spacer (ΚÎĩÎŊΌ ÎŧÎĩĪ„ÎąÎžĪ ÎēÎŦθÎĩ Ī…Î´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚ ÎŋĪÎšÎļΌÎŊĪ„ÎšÎą): +watermark.selectText.6=Height Spacer (ΚÎĩÎŊΌ ÎŧÎĩĪ„ÎąÎžĪ ÎēÎŦθÎĩ Ī…Î´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚ ÎēÎŦθÎĩĪ„Îą): watermark.selectText.7=Î‘Î´ÎšÎąĪ†ÎŦÎŊÎĩΚι (Opacity) (0% - 100%): watermark.selectText.8=Î¤ĪĪ€ÎŋĪ‚ ÎĨÎ´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚: watermark.selectText.9=ΕιÎēΌÎŊÎą ÎĨÎ´ÎąĪ„ÎŋÎŗĪÎąĪ†ÎŽÎŧÎąĪ„ÎŋĪ‚: @@ -1097,7 +1147,7 @@ changeMetadata.submit=ΑÎģÎģÎąÎŗÎŽ #pdfToPDFA pdfToPDFA.title=PDF ΃Îĩ PDF/A pdfToPDFA.header=PDF ΃Îĩ PDF/A -pdfToPDFA.credit=Î‘Ī…Ī„ÎŽ Ρ Ī…Ī€ÎˇĪÎĩĪƒÎ¯Îą Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩί ghostscript ÎŗÎšÎą PDF/A ÎŧÎĩĪ„ÎąĪ„ĪÎŋĪ€ÎŽ +pdfToPDFA.credit=Î‘Ī…Ī„ÎŽ Ρ Ī…Ī€ÎˇĪÎĩĪƒÎ¯Îą Ī‡ĪÎˇĪƒÎšÎŧÎŋĪ€ÎŋΚÎĩί qpdf ÎŗÎšÎą PDF/A ÎŧÎĩĪ„ÎąĪ„ĪÎŋĪ€ÎŽ pdfToPDFA.submit=ΜÎĩĪ„ÎąĪ„ĪÎŋĪ€ÎŽ pdfToPDFA.tip=Î ĪÎŋĪ‚ Ī„Îŋ Ī€ÎąĪĪŒÎŊ δÎĩÎŊ ÎģÎĩÎšĪ„ÎŋĪ…ĪÎŗÎĩί ÎŗÎšÎą Ī€ÎŋÎģÎģÎąĪ€ÎģÎ­Ī‚ ÎĩÎšĪƒĪŒÎ´ÎŋĪ…Ī‚ Ī„ÎąĪ…Ī„ĪŒĪ‡ĪÎŋÎŊÎą pdfToPDFA.outputFormat=Î•ÎžĪŒÎ´ÎŋĪ‚ ÎąÎŊÎąÎŧÎŋĪĪ†ĪŽĪƒÎĩΉÎŊ @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Î•Ī€Î¯Ī€ÎĩδÎŋ ÎŖÎŽÎŧÎąÎŊĪƒÎˇĪ‚ ÎŖÎēÎ­ĪˆÎˇĪ‚: Î•Ī€ÎšÎģέ splitByChapters.desc.3=Î ĪĪŒĪƒÎ¸ÎĩĪƒÎˇ Metadata: ΑÎŊ ÎĩĪ€ÎĩΞÎĩĪÎŗÎąĪƒĪ„ÎĩÎ¯Ī„ÎąÎš, ÎŋΚ ÎąĪĪ‡ÎšÎēÎ­Ī‚ metadata Ī„ÎŋĪ… PDF θι ΀΁ÎŋĪƒĪ„ÎĩθÎŋĪÎŊ ΃Îĩ ÎēÎŦθÎĩ δΚιÎģĪ…ÎŧέÎŊÎŋ PDF. splitByChapters.desc.4=ΔιÎŦÎģĪ…ĪƒÎˇ Î ÎąĪĪŒÎŊ΄ΉÎŊ Î¤Î¯Ī„ÎģΉÎŊ Î•Ī€ÎšĪ€Î­Î´ÎŋĪ…: ΑÎŊ ÎĩĪ€ÎĩΞÎĩĪÎŗÎąĪƒĪ„ÎĩÎ¯Ī„ÎąÎš, ÎĩĪ€ÎšĪ„ĪÎ­Ī€ÎĩΚ Ī„Îˇ δΡÎŧΚÎŋĪ…ĪÎŗÎ¯Îą ÎąĪ€ÎŋÎēÎŋĪ€ĪŽÎŊ PDF ÎŧÎĩ βÎŦĪƒÎˇ Ī€ÎģÎŽĪĪ‰Ī‚ ÎēιθÎŋĪÎšĪƒÎŧέÎŊÎŋĪ…Ī‚ ĪƒÎŽÎŧÎąÎŊĪ„ÎĩĪ‚ Î­Î´ĪÎąĪ‚. splitByChapters.submit=ΔιαÎģĪĪƒĪ„Îĩ Ī„Îŋ PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index d9f71870ce..4a27fa77e5 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -73,7 +73,7 @@ joinDiscord=Join our Discord server seeDockerHub=See Docker Hub visitGithub=Visit Github Repository donate=Donate -color=Color +color=Colour sponsor=Sponsor info=Info pro=Pro @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=Creation Date database.fileSize=File Size database.deleteBackupFile=Delete Backup File database.importBackupFile=Import Backup File +database.createBackupFile=Create Backup File database.downloadBackupFile=Download Backup File database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. database.submit=Import Backup database.importIntoDatabaseSuccessed=Import into database successed +database.backupCreated=Database backup successful database.fileNotFound=File not found database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed to import file @@ -419,9 +422,9 @@ home.auto-rename.title=Auto Rename PDF File home.auto-rename.desc=Auto renames a PDF file based on its detected header auto-rename.tags=auto-detect,header-based,organize,relabel -home.adjust-contrast.title=Adjust Colors/Contrast +home.adjust-contrast.title=Adjust Colours/Contrast home.adjust-contrast.desc=Adjust Contrast, Saturation and Brightness of a PDF -adjust-contrast.tags=color-correction,tune,modify,enhance +adjust-contrast.tags=color-correction,tune,modify,enhance,colour-correction home.crop.title=Crop PDF home.crop.desc=Crop a PDF to reduce its size (maintains text!) @@ -472,6 +475,10 @@ home.autoRedact.title=Auto Redact home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text autoRedact.tags=Redact,Hide,black out,black,marker,hidden +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF to CSV home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV tableExtraxt.tags=CSV,Table Extraction,extract,convert @@ -488,11 +495,11 @@ overlay-pdfs.tags=Overlay home.split-by-sections.title=Split PDF by Sections home.split-by-sections.desc=Divide each page of a PDF into smaller horizontal and vertical sections -split-by-sections.tags=Section Split, Divide, Customize +split-by-sections.tags=Section Split, Divide, Customize,Customise home.AddStampRequest.title=Add Stamp to PDF home.AddStampRequest.desc=Add text or add image stamps at set locations -AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize +AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize,Customise home.PDFToBook.title=PDF to Book @@ -512,23 +519,27 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Advanced Colour options -replace-color.header=Replace-Invert Color PDF +replace-color.header=Replace-Invert Colour PDF home.replaceColorPdf.title=Advanced Colour options -home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size -replaceColorPdf.tags=Replace Color,Page operations,Back end,server side -replace-color.selectText.1=Replace or Invert color Options -replace-color.selectText.2=Default(Default high contrast colors) -replace-color.selectText.3=Custom(Customized colors) -replace-color.selectText.4=Full-Invert(Invert all colors) -replace-color.selectText.5=High contrast color options +home.replaceColorPdf.desc=Replace colour for text and background in PDF and invert full colour of pdf to reduce file size +replaceColorPdf.tags=Replace Colour,Page operations,Back end,server side +replace-color.selectText.1=Replace or Invert colour Options +replace-color.selectText.2=Default(Default high contrast colours) +replace-color.selectText.3=Custom(Customised colours) +replace-color.selectText.4=Full-Invert(Invert all colours) +replace-color.selectText.5=High contrast colour options replace-color.selectText.6=white text on black background replace-color.selectText.7=Black text on white background replace-color.selectText.8=Yellow text on black background replace-color.selectText.9=Green text on black background -replace-color.selectText.10=Choose text Color -replace-color.selectText.11=Choose background Color +replace-color.selectText.10=Choose text Colour +replace-color.selectText.11=Choose background Colour replace-color.submit=Replace @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response login.oauth2InvalidIdToken=Invalid Id Token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Custom Extra Padding autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) autoRedact.submitButton=Submit +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Show Javascript @@ -651,7 +672,7 @@ AddStampRequest.position=Position AddStampRequest.overrideX=Override X Coordinate AddStampRequest.overrideY=Override Y Coordinate AddStampRequest.customMargin=Custom Margin -AddStampRequest.customColor=Custom Text Color +AddStampRequest.customColor=Custom Text Colour AddStampRequest.submit=Submit @@ -783,8 +804,8 @@ removeAnnotations.submit=Remove #compare compare.title=Compare compare.header=Compare PDFs -compare.highlightColor.1=Highlight Color 1: -compare.highlightColor.2=Highlight Color 2: +compare.highlightColor.1=Highlight Colour 1: +compare.highlightColor.2=Highlight Colour 2: compare.document.1=Document 1 compare.document.2=Document 2 compare.submit=Compare @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Repair repair.header=Repair PDFs @@ -837,7 +863,7 @@ flatten.submit=Flatten ScannerImageSplit.selectText.1=Angle Threshold: ScannerImageSplit.selectText.2=Sets the minimum absolute angle required for the image to be rotated (default: 10). ScannerImageSplit.selectText.3=Tolerance: -ScannerImageSplit.selectText.4=Determines the range of color variation around the estimated background color (default: 30). +ScannerImageSplit.selectText.4=Determines the range of colour variation around the estimated background colour (default: 30). ScannerImageSplit.selectText.5=Minimum Area: ScannerImageSplit.selectText.6=Sets the minimum area threshold for a photo (default: 10000). ScannerImageSplit.selectText.7=Minimum Contour Area: @@ -863,7 +889,7 @@ ocr.selectText.10=OCR Mode ocr.selectText.11=Remove images after OCR (Removes ALL images, only useful if part of conversion step) ocr.selectText.12=Render Type (Advanced) ocr.help=Please read this documentation on how to use this for other languages and/or use not in docker -ocr.credit=This service uses OCRmyPDF and Tesseract for OCR. +ocr.credit=This service uses qpdf and Tesseract for OCR. ocr.submit=Process PDF with OCR @@ -887,9 +913,9 @@ fileToPDF.submit=Convert to PDF #compress compress.title=Compress compress.header=Compress PDF -compress.credit=This service uses Ghostscript for PDF Compress/Optimisation. +compress.credit=This service uses qpdf for PDF Compress/Optimisation. compress.selectText.1=Manual Mode - From 1 to 4 -compress.selectText.2=Optimization level: +compress.selectText.2=Optimisation level: compress.selectText.3=4 (Terrible for text images) compress.selectText.4=Auto mode - Auto adjusts quality to get PDF to exact size compress.selectText.5=Expected PDF Size (e.g. 25MB, 10.8MB, 25KB) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Greyscale pdfToImage.blackwhite=Black and White (May lose data!) pdfToImage.submit=Convert pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=Encrypt #watermark watermark.title=Add Watermark watermark.header=Add Watermark +watermark.customColor=Custom Text Colour watermark.selectText.1=Select PDF to add watermark to: watermark.selectText.2=Watermark Text: watermark.selectText.3=Font Size: watermark.selectText.4=Rotation (0-360): -watermark.selectText.5=widthSpacer (Space between each watermark horizontally): -watermark.selectText.6=heightSpacer (Space between each watermark vertically): +watermark.selectText.5=Width Spacer (Space between each watermark horizontally): +watermark.selectText.6=Height Spacer (Space between each watermark vertically): watermark.selectText.7=Opacity (0% - 100%): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Change #pdfToPDFA pdfToPDFA.title=PDF To PDF/A pdfToPDFA.header=PDF To PDF/A -pdfToPDFA.credit=This service uses ghostscript for PDF/A conversion +pdfToPDFA.credit=This service uses qpdf for PDF/A conversion pdfToPDFA.submit=Convert pdfToPDFA.tip=Currently does not work for multiple inputs at once pdfToPDFA.outputFormat=Output format @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 647cbf00cc..025f6cf65f 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=Creation Date database.fileSize=File Size database.deleteBackupFile=Delete Backup File database.importBackupFile=Import Backup File +database.createBackupFile=Create Backup File database.downloadBackupFile=Download Backup File database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. database.submit=Import Backup database.importIntoDatabaseSuccessed=Import into database successed +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=Auto Redact home.autoRedact.desc=Auto Redacts(Blacks out) text in a PDF based on input text autoRedact.tags=Redact,Hide,black out,black,marker,hidden +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF to CSV home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV tableExtraxt.tags=CSV,Table Extraction,extract,convert @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response login.oauth2InvalidIdToken=Invalid Id Token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Custom Extra Padding autoRedact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) autoRedact.submitButton=Submit +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Show Javascript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Repair repair.header=Repair PDFs @@ -863,7 +889,7 @@ ocr.selectText.10=OCR Mode ocr.selectText.11=Remove images after OCR (Removes ALL images, only useful if part of conversion step) ocr.selectText.12=Render Type (Advanced) ocr.help=Please read this documentation on how to use this for other languages and/or use not in docker -ocr.credit=This service uses OCRmyPDF and Tesseract for OCR. +ocr.credit=This service uses qpdf and Tesseract for OCR. ocr.submit=Process PDF with OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Convert to PDF #compress compress.title=Compress compress.header=Compress PDF -compress.credit=This service uses Ghostscript for PDF Compress/Optimisation. +compress.credit=This service uses qpdf for PDF Compress/Optimisation. compress.selectText.1=Manual Mode - From 1 to 4 compress.selectText.2=Optimization level: compress.selectText.3=4 (Terrible for text images) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Grayscale pdfToImage.blackwhite=Black and White (May lose data!) pdfToImage.submit=Convert pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=Encrypt #watermark watermark.title=Add Watermark watermark.header=Add Watermark +watermark.customColor=Custom Text Color watermark.selectText.1=Select PDF to add watermark to: watermark.selectText.2=Watermark Text: watermark.selectText.3=Font Size: watermark.selectText.4=Rotation (0-360): -watermark.selectText.5=widthSpacer (Space between each watermark horizontally): -watermark.selectText.6=heightSpacer (Space between each watermark vertically): +watermark.selectText.5=Width Spacer (Space between each watermark horizontally): +watermark.selectText.6=Height Spacer (Space between each watermark vertically): watermark.selectText.7=Opacity (0% - 100%): watermark.selectText.8=Watermark Type: watermark.selectText.9=Watermark Image: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Change #pdfToPDFA pdfToPDFA.title=PDF To PDF/A pdfToPDFA.header=PDF To PDF/A -pdfToPDFA.credit=This service uses ghostscript for PDF/A conversion +pdfToPDFA.credit=This service uses qpdf for PDF/A conversion pdfToPDFA.submit=Convert pdfToPDFA.tip=Currently does not work for multiple inputs at once pdfToPDFA.outputFormat=Output format @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 2c234b2c96..8d4b5fb79a 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -82,6 +82,7 @@ pages=PÃĄginas loading=Cargando... addToDoc=Agregar al Documento reset=Reset +apply=Apply legal.privacy=Política de Privacidad legal.terms=TÊrminos y Condiciones @@ -238,11 +239,13 @@ database.creationDate=Fecha de creaciÃŗn database.fileSize=TamaÃąo de archivo database.deleteBackupFile=Eliminar archivo de copia de seguridad database.importBackupFile=Importar archivo de copia de seguridad +database.createBackupFile=Create Backup File database.downloadBackupFile=Descargar archivo de copia de seguridad database.info_1=Al importar datos, es fundamental garantizar la estructura correcta. Si no estÃĄ seguro de lo que estÃĄ haciendo, busque consejo y apoyo de un profesional. Un error en la estructura puede causar un mal funcionamiento de la aplicaciÃŗn, incluyendo la imposibilidad total de ejecutar la aplicaciÃŗn. database.info_2=El nombre del archivo no importa al cargarlo. Posteriormente se le cambiarÃĄ el nombre para que siga el formato backup_user_yyyyMMddHHmm.sql, lo que garantiza una convenciÃŗn de nomenclatura coherente. database.submit=Importar Copia de Seguridad database.importIntoDatabaseSuccessed=ImportaciÃŗn a la base de datos ha sido exitosa +database.backupCreated=Database backup successful database.fileNotFound=Archivo no encontrado database.fileNullOrEmpty=El archivo no debe ser nulo o vacío. database.failedImportFile=Archivo de importaciÃŗn fallido @@ -472,6 +475,10 @@ home.autoRedact.title=Auto Redactar home.autoRedact.desc=Redactar automÃĄticamente (ocultar) texto en un PDF segÃēn el texto introducido autoRedact.tags=Redactar,Ocultar,ocultar,negro,subrayador,oculto +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF a CSV home.tableExtraxt.desc=Extraer Tablas de un PDF convirtiÊndolas a CSV tableExtraxt.tags=CSV,Extraer tabla,extraer,convertir @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Dividir PDF por capítulos home.splitPdfByChapters.desc=Divida un PDF en varios archivos segÃēn su estructura de capítulos. splitPdfByChapters.tags=dividir,capítulos,marcadores,organizar +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Reemplazar-Invertir-Color replace-color.header=Reemplazar-Invertir Color en PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Solicitud no vÃĄlida login.oauth2AccessDenied=Acceso denegado login.oauth2InvalidTokenResponse=Respuesta de token no vÃĄlida login.oauth2InvalidIdToken=Token de identificaciÃŗn no vÃĄlido +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=El usuario estÃĄ desactivado, actualmente el acceso estÃĄ bloqueado para ese nombre de usuario. Por favor, pÃŗngase en contacto con el administrador. login.alreadyLoggedIn=Ya has iniciado sesiÃŗn en login.alreadyLoggedIn2=dispositivos. Cierra sesiÃŗn en los dispositivos y vuelve a intentarlo. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Extra Padding personalizado autoRedact.convertPDFToImageLabel=Convertir PDF a imagen PDF (Utilizado para quitar el texto detrÃĄs del cajetín) autoRedact.submitButton=Enviar +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Mostrar Javascript @@ -818,8 +839,13 @@ sign.save=Guardar Firma sign.personalSigs=Firmas Personales sign.sharedSigs=Firmas compartidas sign.noSavedSigs=No se encontraron firmas guardadas - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Reparar repair.header=Reparar archivos PDF @@ -863,7 +889,7 @@ ocr.selectText.10=Modo OCR ocr.selectText.11=Eliminar imÃĄgenes despuÊs de OCR (Elimina TODAS las imÃĄgenes, solo es Ãētil si es parte del paso de conversiÃŗn) ocr.selectText.12=Tipo de procesamiento (avanzado) ocr.help=Lea esta documentaciÃŗn sobre cÃŗmo usar esto para otros idiomas y/o no usarlo en Docker -ocr.credit=Este servicio utiliza OCRmyPDF y Tesseract para OCR +ocr.credit=Este servicio utiliza qpdf y Tesseract para OCR ocr.submit=Procesar PDF con OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Convertir a PDF #compress compress.title=Comprimir compress.header=Comprimir PDF -compress.credit=Este servicio utiliza Ghostscript para compresiÃŗn/optimizaciÃŗn de PDF +compress.credit=Este servicio utiliza qpdf para compresiÃŗn/optimizaciÃŗn de PDF compress.selectText.1=Modo manual - De 1 a 4 compress.selectText.2=Nivel de optimizaciÃŗn: compress.selectText.3=4 (Terrible para imÃĄgenes de texto) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Escala de grises pdfToImage.blackwhite=Blanco y Negro (ÂĄPuede perder datos!) pdfToImage.submit=Convertir pdfToImage.info=Python no estÃĄ instalado. Se requiere para la conversiÃŗn WebP. +pdfToImage.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Encriptar #watermark watermark.title=AÃąadir marca de agua watermark.header=AÃąadir marca de agua +watermark.customColor=Personalizar color de texto watermark.selectText.1=Seleccionar PDF para aÃąadir marca de agua: watermark.selectText.2=Texto de la marca de agua: watermark.selectText.3=TamaÃąo de la Fuente: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Cambiar #pdfToPDFA pdfToPDFA.title=PDF a PDF/A pdfToPDFA.header=PDF a PDF/A -pdfToPDFA.credit=Este servicio usa ghostscript para la conversiÃŗn a PDF/A +pdfToPDFA.credit=Este servicio usa qpdf para la conversiÃŗn a PDF/A pdfToPDFA.submit=Convertir pdfToPDFA.tip=Actualmente no funciona para mÃēltiples entrada a la vez pdfToPDFA.outputFormat=Formato de salida @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Nivel de Marcador: Elige el nivel de marcadores para divi splitByChapters.desc.3=Incluir Metadatos: Si estÃĄ seleccionado, los metadatos del PDF original se incluirÃĄn en cada PDF dividido. splitByChapters.desc.4=Permitir Duplicados: Si estÃĄ seleccionado, permite que mÃēltiples marcadores en la misma pÃĄgina creen archivos PDF separados. splitByChapters.submit=Dividir PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 449e1c1984..22f545c41c 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=Creation Date database.fileSize=File Size database.deleteBackupFile=Delete Backup File database.importBackupFile=Import Backup File +database.createBackupFile=Create Backup File database.downloadBackupFile=Download Backup File database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. database.submit=Import Backup database.importIntoDatabaseSuccessed=Import into database successed +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=Auto Idatzi home.autoRedact.desc=Auto Idatzi testua pdf fitxategian sarrerako testuan oinarritua autoRedact.tags=Redact,Hide,black out,black,marker,hidden +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF to CSV home.tableExtraxt.desc=Extracts Tables from a PDF converting it to CSV tableExtraxt.tags=CSV,Table Extraction,extract,convert @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response login.oauth2InvalidIdToken=Invalid Id Token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Custom Extra Padding autoRedact.convertPDFToImageLabel=Bihurtu PDF fitxategi bat PDF-Irudi-ra (kaxaren atzean testua ezabatzeko erabilia) autoRedact.submitButton=Bidali +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Javascript erakutsi @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Konpondu repair.header=Konpondu PDF fitxategiak @@ -863,7 +889,7 @@ ocr.selectText.10=OCR modua ocr.selectText.11=Irudiak ezabatu OCR-ren ondoren (Irudi GUZTIAK ezabatzen ditu, bakarrik da erabilgarri bihurketa urratsaren parte baldin bada) ocr.selectText.12=Prozesaketa-mota (aurreratua) ocr.help=Irakurri honen erabilerari buruzko dokumentazioa beste hizkuntza batzuetarako eta/edo ez erabili Docker-en -ocr.credit=Zerbitzu honek OCRmyPDF eta OCR-rako Tesseract erabiltzen ditu +ocr.credit=Zerbitzu honek qpdf eta OCR-rako Tesseract erabiltzen ditu ocr.submit=PDF prozesatu OCR-rekin @@ -887,7 +913,7 @@ fileToPDF.submit=PDF bihurtu #compress compress.title=Konprimatu compress.header=PDFa konprimatu -compress.credit=Zerbitzu honek Ghostscript erabiltzen du PDFak komprimatzeko/optimizatzeko +compress.credit=Zerbitzu honek qpdf erabiltzen du PDFak komprimatzeko/optimizatzeko compress.selectText.1=Eskuz 1etik 4ra compress.selectText.2=Optimizazio maila: compress.selectText.3=4 (Izugarria testu-irudietarako) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Gris-eskala pdfToImage.blackwhite=Zuria eta Beltza (Datuak galdu ditzake!) pdfToImage.submit=Bihurtu pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Enkriptatu #watermark watermark.title=Gehitu ur-marka watermark.header=Gehitu ur-marka +watermark.customColor=Custom Text Color watermark.selectText.1=Hautatu PDFa ur-marka gehitzeko: watermark.selectText.2=Ur-markaren testua: watermark.selectText.3=Letra-tipoaren tamaina: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Aldatu #pdfToPDFA pdfToPDFA.title=PDFa PDF/A bihurtu pdfToPDFA.header=PDFa PDF/A bihurtu -pdfToPDFA.credit=Zerbitzu honek ghostscript erabiltzen du PDFak PDF/A bihurtzeko +pdfToPDFA.credit=Zerbitzu honek qpdf erabiltzen du PDFak PDF/A bihurtzeko pdfToPDFA.submit=Bihurtu pdfToPDFA.tip=Currently does not work for multiple inputs at once pdfToPDFA.outputFormat=Output format @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_fa_IR.properties b/src/main/resources/messages_fa_IR.properties new file mode 100644 index 0000000000..f343c72376 --- /dev/null +++ b/src/main/resources/messages_fa_IR.properties @@ -0,0 +1,1347 @@ +########### +# Generic # +########### +# the direction that the language is written (ltr = left to right, rtl = right to left) +language.direction=rtl +addPageNumbers.fontSize=Ø§Ų†Ø¯Ø§Ø˛Ų‡ ŲŲˆŲ†ØĒ +addPageNumbers.fontName=Ų†Ø§Ų… ŲŲˆŲ†ØĒ +pdfPrompt=Ø§Ų†ØĒ؎اب ŲØ§ÛŒŲ„(Ų‡Ø§ÛŒ) PDF +multiPdfPrompt=Ø§Ų†ØĒ؎اب ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ PDF (Ø¯Ųˆ یا بیشØĒØą) +multiPdfDropPrompt=Ø§Ų†ØĒ؎اب (یا ÚŠØ´ÛŒØ¯Ų† ؈ ØąŲ‡Ø§ ÚŠØąØ¯Ų†) ØĒŲ…Ø§Ų… ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ PDF Ų…ŲˆØąØ¯ Ų†ÛŒØ§Ø˛ +imgPrompt=Ø§Ų†ØĒ؎اب ØĒØĩŲˆÛŒØą(Ų‡Ø§) +genericSubmit=Ø§ØąØŗØ§Ų„ +processTimeWarning=Ų‡Ø´Ø¯Ø§Øą: Ø§ÛŒŲ† ŲØąØĸÛŒŲ†Ø¯ Ų…Ų…ÚŠŲ† Ø§ØŗØĒ Ø¨ØŗØĒŲ‡ Ø¨Ų‡ Ø§Ų†Ø¯Ø§Ø˛Ų‡ ŲØ§ÛŒŲ„ ØĒا یڊ Ø¯Ų‚ÛŒŲ‚Ų‡ ØˇŲˆŲ„ بڊشد +pageOrderPrompt=ØĒØąØĒیب ØĩŲØ­Ø§ØĒ ØŗŲØ§ØąØ´ÛŒ (یڊ Ų„ÛŒØŗØĒ Ø§Ø˛ Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ø§ØĒ Ø¨Ų‡ ØĩŲˆØąØĒ ØŦدا Ø´Ø¯Ų‡ با ÚŠØ§Ų…Ø§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ یا Ø§Ø˛ ØĒŲˆØ§Ø¨ØšÛŒ Ų…Ø§Ų†Ų†Ø¯ 2n+1 Ø§ØŗØĒŲØ§Ø¯Ų‡ ÚŠŲ†ÛŒØ¯): +pageSelectionPrompt=Ø§Ų†ØĒ؎اب ØĩŲØ­Ø§ØĒ ØŗŲØ§ØąØ´ÛŒ (یڊ Ų„ÛŒØŗØĒ Ø§Ø˛ Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ø§ØĒ Ø¨Ų‡ ØĩŲˆØąØĒ ØŦدا Ø´Ø¯Ų‡ با ÚŠØ§Ų…Ø§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ Ų…Ø§Ų†Ų†Ø¯ 1,5,6 یا Ø§Ø˛ ØĒŲˆØ§Ø¨ØšÛŒ Ų…Ø§Ų†Ų†Ø¯ 2n+1 Ø§ØŗØĒŲØ§Ø¯Ų‡ ÚŠŲ†ÛŒØ¯): +goToPage=Ø¨ØąŲˆ +true=Ø¯ØąØŗØĒ +false=ØēŲ„Øˇ +unknown=Ų†Ø§Ų…ØšŲ„ŲˆŲ… +save=Ø°ØŽÛŒØąŲ‡ +saveToBrowser=Ø°ØŽÛŒØąŲ‡ Ø¯Øą Ų…ØąŲˆØąÚ¯Øą +close=Ø¨ØŗØĒŲ† +filesSelected=ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ Ø§Ų†ØĒ؎اب Ø´Ø¯Ų†Ø¯ +noFavourites=Ų‡ÛŒÚ† Ų…ŲˆØąØ¯ Ø¯Ų„ØŽŲˆØ§Ų‡ÛŒ اØļØ§ŲŲ‡ Ų†Ø´Ø¯Ų‡ Ø§ØŗØĒ +downloadComplete=Ø¯Ø§Ų†Ų„ŲˆØ¯ ÚŠØ§Ų…Ų„ شد +bored=Ų…Ų†ØĒØ¸Øą Ų…Ø§Ų†Ø¯Ų† ØŽØŗØĒŲ‡â€ŒÚŠŲ†Ų†Ø¯Ų‡ Ø§ØŗØĒ؟ +alphabet=Ø­ØąŲˆŲ Ø§Ų„ŲØ¨Ø§ +downloadPdf=Ø¯Ø§Ų†Ų„ŲˆØ¯ PDF +text=Ų…ØĒŲ† +font=ŲŲˆŲ†ØĒ +selectFillter=-- Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ -- +pageNum=Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ų‡ +sizes.small=ÚŠŲˆÚ†ÚŠ +sizes.medium=Ų…ØĒŲˆØŗØˇ +sizes.large=Ø¨Ø˛ØąÚ¯ +sizes.x-large=ØŽÛŒŲ„ÛŒ Ø¨Ø˛ØąÚ¯ +error.pdfPassword=ØŗŲ†Ø¯ PDF Ø¯Ø§ØąØ§ÛŒ ØąŲ…Ø˛ ØšØ¨ŲˆØą Ø§ØŗØĒ ؈ یا ØąŲ…Ø˛ ØšØ¨ŲˆØą ŲˆØ§ØąØ¯ Ų†Ø´Ø¯Ų‡ یا Ų†Ø§Ø¯ØąØŗØĒ Ø§ØŗØĒ +delete=Ø­Ø°Ų +username=Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ +password=ØąŲ…Ø˛ ØšØ¨ŲˆØą +welcome=ØŽŲˆØ´ ØĸŲ…Ø¯ÛŒØ¯ +property=ŲˆÛŒÚ˜Ú¯ÛŒ +black=ØŗÛŒØ§Ų‡ +white=ØŗŲÛŒØ¯ +red=Ų‚ØąŲ…Ø˛ +green=ØŗØ¨Ø˛ +blue=Øĸبی +custom=ØŗŲØ§ØąØ´ÛŒ... +WorkInProgess=ÚŠØ§Øą Ø¯Øą Ø­Ø§Ų„ ŲžÛŒØ´ØąŲØĒ Ø§ØŗØĒ، Ų…Ų…ÚŠŲ† Ø§ØŗØĒ ÚŠØ§Øą Ų†ÚŠŲ†Ø¯ یا Ø¯Ø§ØąØ§ÛŒ Ø§Ø´ÚŠØ§Ų„ باشد، Ų„ØˇŲØ§Ų‹ Ų‡Øą Ų…Ø´ÚŠŲ„ÛŒ ØąØ§ Ú¯Ø˛Ø§ØąØ´ Ø¯Ų‡ÛŒØ¯! +poweredBy=Ų‚Ø¯ØąØĒ Ú¯ØąŲØĒŲ‡ Ø§Ø˛ +yes=Ø¨Ų„Ų‡ +no=ØŽÛŒØą +changedCredsMessage=Ų…Ø´ØŽØĩاØĒ ØĒØēÛŒÛŒØą ÛŒØ§ŲØĒ! +notAuthenticatedMessage=ÚŠØ§ØąØ¨Øą ØĒØŖÛŒÛŒØ¯ Ų†Ø´Ø¯Ų‡ Ø§ØŗØĒ. +userNotFoundMessage=ÚŠØ§ØąØ¨Øą ÛŒØ§ŲØĒ Ų†Ø´Ø¯. +incorrectPasswordMessage=ØąŲ…Ø˛ ØšØ¨ŲˆØą ŲØšŲ„ÛŒ Ų†Ø§Ø¯ØąØŗØĒ Ø§ØŗØĒ. +usernameExistsMessage=Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ ØŦدید Ų‚Ø¨Ų„Ø§Ų‹ ؈ØŦŲˆØ¯ Ø¯Ø§ØąØ¯. +invalidUsernameMessage=Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ Ų†Ø§Ų…ØšØĒØ¨Øą Ø§ØŗØĒ، Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ ŲŲ‚Øˇ Ų…ÛŒâ€ŒØĒŲˆØ§Ų†Ø¯ Ø´Ø§Ų…Ų„ Ø­ØąŲˆŲØŒ اؚداد ؈ ÚŠØ§ØąØ§ÚŠØĒØąŲ‡Ø§ÛŒ ؎اØĩ @._+- باشد یا باید یڊ ØĸØ¯ØąØŗ Ø§ÛŒŲ…ÛŒŲ„ Ų…ØšØĒØ¨Øą باشد. +invalidPasswordMessage=ØąŲ…Ø˛ ØšØ¨ŲˆØą Ų†Ø¨Ø§ÛŒØ¯ ØŽØ§Ų„ÛŒ باشد ؈ Ų†Ø¨Ø§ÛŒØ¯ Ø¯Øą ابØĒدا یا Ø§Ų†ØĒŲ‡Ø§ ŲØ§ØĩŲ„Ų‡ داشØĒŲ‡ باشد. +confirmPasswordErrorMessage=ØąŲ…Ø˛ ØšØ¨ŲˆØą ØŦدید ؈ ØĒØŖÛŒÛŒØ¯ ØąŲ…Ø˛ ØšØ¨ŲˆØą ØŦدید باید ÛŒÚŠØŗØ§Ų† Ø¨Ø§Ø´Ų†Ø¯. +deleteCurrentUserMessage=Ų†Ų…ÛŒâ€ŒØĒŲˆØ§Ų† ÚŠØ§ØąØ¨Øą ŲØšŲ„ÛŒ ØąØ§ Ø­Ø°Ų ÚŠØąØ¯. +deleteUsernameExistsMessage=Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ ؈ØŦŲˆØ¯ Ų†Ø¯Ø§ØąØ¯ ؈ Ų†Ų…ÛŒâ€ŒØĒŲˆØ§Ų† ØĸŲ† ØąØ§ Ø­Ø°Ų ÚŠØąØ¯. +downgradeCurrentUserMessage=Ų†Ų…ÛŒâ€ŒØĒŲˆØ§Ų† Ų†Ų‚Ø´ ÚŠØ§ØąØ¨Øą ŲØšŲ„ÛŒ ØąØ§ ÚŠØ§Ų‡Ø´ داد +disabledCurrentUserMessage=ÚŠØ§ØąØ¨Øą ŲØšŲ„ÛŒ Ų†Ų…ÛŒâ€ŒØĒŲˆØ§Ų†Ø¯ ØēÛŒØąŲØšØ§Ų„ Ø´ŲˆØ¯ +downgradeCurrentUserLongMessage=Ų†Ų…ÛŒâ€ŒØĒŲˆØ§Ų† Ų†Ų‚Ø´ ÚŠØ§ØąØ¨Øą ŲØšŲ„ÛŒ ØąØ§ ÚŠØ§Ų‡Ø´ داد. Ø¨Ų†Ø§Ø¨ØąØ§ÛŒŲ†ØŒ ÚŠØ§ØąØ¨Øą ŲØšŲ„ÛŒ Ų†Ø´Ø§Ų† Ø¯Ø§Ø¯Ų‡ Ų†ØŽŲˆØ§Ų‡Ø¯ شد. +userAlreadyExistsOAuthMessage=Ø§ÛŒŲ† ÚŠØ§ØąØ¨Øą Ų‚Ø¨Ų„Ø§Ų‹ Ø¨Ų‡ ØšŲ†ŲˆØ§Ų† یڊ ÚŠØ§ØąØ¨Øą OAuth2 ؈ØŦŲˆØ¯ Ø¯Ø§ØąØ¯. +userAlreadyExistsWebMessage=Ø§ÛŒŲ† ÚŠØ§ØąØ¨Øą Ų‚Ø¨Ų„Ø§Ų‹ Ø¨Ų‡ ØšŲ†ŲˆØ§Ų† یڊ ÚŠØ§ØąØ¨Øą ŲˆØ¨ ؈ØŦŲˆØ¯ Ø¯Ø§ØąØ¯. +error=ØŽØˇØ§ +oops=Ø§ŲˆŲžØŗ! +help=ØąØ§Ų‡Ų†Ų…Ø§ +goHomepage=ØąŲØĒŲ† Ø¨Ų‡ ØĩŲØ­Ų‡ اØĩŲ„ÛŒ +joinDiscord=Ø¨Ų‡ ØŗØąŲˆØą Ø¯ÛŒØŗÚŠŲˆØąØ¯ Ų…Ø§ Ø¨ŲžÛŒŲˆŲ†Ø¯ÛŒØ¯ +seeDockerHub=Ų…Ø´Ø§Ų‡Ø¯Ų‡ Docker Hub +visitGithub=Ų…Ø´Ø§Ų‡Ø¯Ų‡ Ų…ØŽØ˛Ų† گیØĒâ€ŒŲ‡Ø§Ø¨ +donate=Ø§Ų‡Ø¯Ø§ ÚŠŲ†ÛŒØ¯ +color=ØąŲ†Ú¯ +sponsor=Ø­Ų…Ø§ÛŒØĒ Ų…Ø§Ų„ÛŒ +info=Ø§ØˇŲ„Ø§ØšØ§ØĒ +pro=Ų†ØŗØŽŲ‡ Ø­ØąŲŲ‡â€ŒØ§ÛŒ +page=ØĩŲØ­Ų‡ +pages=ØĩŲØ­Ø§ØĒ +loading=Ø¯Øą Ø­Ø§Ų„ Ø¨Ø§ØąÚ¯Ø°Ø§ØąÛŒ... +addToDoc=اØļØ§ŲŲ‡ ÚŠØąØ¯Ų† Ø¨Ų‡ ØŗŲ†Ø¯ +reset=ØĒŲ†Ø¸ÛŒŲ… Ų…ØŦدد +apply=Apply + +legal.privacy=ØŗÛŒØ§ØŗØĒ Ø­ŲØ¸ Ø­ØąÛŒŲ… ØŽØĩ؈Øĩی +legal.terms=Ø´ØąØ§ÛŒØˇ ؈ ØļŲˆØ§Ø¨Øˇ +legal.accessibility=Ø¯ØŗØĒØąØŗÛŒ +legal.cookie=ØŗÛŒØ§ØŗØĒ ÚŠŲˆÚŠÛŒâ€ŒŲ‡Ø§ +legal.impressum=ØĒ؈ØļیحاØĒ Ų‚Ø§Ų†ŲˆŲ†ÛŒ + +############### +# Pipeline # +############### +pipeline.header=Ų…Ų†ŲˆÛŒ ŲžØ§ÛŒŲžŲ„Ø§ÛŒŲ† (Ų†ØŗØŽŲ‡ بØĒا) +pipeline.uploadButton=ØĸŲžŲ„ŲˆØ¯ ØŗŲØ§ØąØ´ÛŒ +pipeline.configureButton=ŲžÛŒÚŠØąØ¨Ų†Ø¯ÛŒ +pipeline.defaultOption=ØŗŲØ§ØąØ´ÛŒ +pipeline.submitButton=Ø§ØąØŗØ§Ų„ +pipeline.help=ØąØ§Ų‡Ų†Ų…Ø§ÛŒ ŲžØ§ÛŒŲžŲ„Ø§ÛŒŲ† +pipeline.scanHelp=ØąØ§Ų‡Ų†Ų…Ø§ÛŒ Ø§ØŗÚŠŲ† ŲžŲˆØ´Ų‡ +pipeline.deletePrompt=Øĸیا Ų…ØˇŲ…ØĻŲ† Ų‡ØŗØĒید ÚŠŲ‡ Ų…ÛŒâ€ŒØŽŲˆØ§Ų‡ÛŒØ¯ ŲžØ§ÛŒŲžŲ„Ø§ÛŒŲ† ØąØ§ Ø­Ø°Ų ÚŠŲ†ÛŒØ¯ØŸ + +###################### +# Pipeline Options # +###################### +pipelineOptions.header=ŲžÛŒÚŠØąØ¨Ų†Ø¯ÛŒ ŲžØ§ÛŒŲžŲ„Ø§ÛŒŲ† +pipelineOptions.pipelineNameLabel=Ų†Ø§Ų… ŲžØ§ÛŒŲžŲ„Ø§ÛŒŲ† +pipelineOptions.saveSettings=Ø°ØŽÛŒØąŲ‡ ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ ØšŲ…Ų„ÛŒØ§ØĒ +pipelineOptions.pipelineNamePrompt=Ų†Ø§Ų… ŲžØ§ÛŒŲžŲ„Ø§ÛŒŲ† ØąØ§ Ø§ÛŒŲ†ØŦا ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ +pipelineOptions.selectOperation=ØšŲ…Ų„ÛŒØ§ØĒ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ +pipelineOptions.addOperationButton=اØļØ§ŲŲ‡ ÚŠØąØ¯Ų† ØšŲ…Ų„ÛŒØ§ØĒ +pipelineOptions.pipelineHeader=ŲžØ§ÛŒŲžŲ„Ø§ÛŒŲ†: +pipelineOptions.saveButton=Ø¯Ø§Ų†Ų„ŲˆØ¯ +pipelineOptions.validateButton=اؚØĒØ¨Ø§ØąØŗŲ†ØŦی + +######################## +# ENTERPRISE EDITION # +######################## +enterpriseEdition.button=Ø§ØąØĒŲ‚Ø§ Ø¨Ų‡ Ų†ØŗØŽŲ‡ Ø­ØąŲŲ‡â€ŒØ§ÛŒ +enterpriseEdition.warning=Ø§ÛŒŲ† ŲˆÛŒÚ˜Ú¯ÛŒ ŲŲ‚Øˇ Ø¨ØąØ§ÛŒ ÚŠØ§ØąØ¨ØąØ§Ų† Ø­ØąŲŲ‡â€ŒØ§ÛŒ Ø¯Øą Ø¯ØŗØĒØąØŗ Ø§ØŗØĒ. +enterpriseEdition.yamlAdvert=Stirling PDF Pro Ø§Ø˛ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ ŲžÛŒÚŠØąØ¨Ų†Ø¯ÛŒ YAML ؈ Ø¯ÛŒÚ¯Øą ŲˆÛŒÚ˜Ú¯ÛŒâ€ŒŲ‡Ø§ÛŒ SSO ŲžØ´ØĒÛŒØ¨Ø§Ų†ÛŒ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +enterpriseEdition.ssoAdvert=Ø¨Ų‡ Ø¯Ų†Ø¨Ø§Ų„ ŲˆÛŒÚ˜Ú¯ÛŒâ€ŒŲ‡Ø§ÛŒ بیشØĒØą Ø¨ØąØ§ÛŒ Ų…Ø¯ÛŒØąÛŒØĒ ÚŠØ§ØąØ¨ØąØ§Ų† Ų‡ØŗØĒید؟ Stirling PDF Pro ØąØ§ Ø¨ØąØąØŗÛŒ ÚŠŲ†ÛŒØ¯ + + +################# +# Analytics # +################# +analytics.title=Øĸیا Ų…ÛŒâ€ŒØŽŲˆØ§Ų‡ÛŒØ¯ Stirling PDF ØąØ§ Ø¨Ų‡ØĒØą ÚŠŲ†ÛŒØ¯ØŸ +analytics.paragraph1=Stirling PDF Ø§Ø˛ ØĒØ­Ų„ÛŒŲ„â€ŒŲ‡Ø§ÛŒ ا؎ØĒÛŒØ§ØąÛŒ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯ ØĒا Ø¨Ų‡ Ų…Ø§ Ø¯Øą Ø¨Ų‡Ø¨ŲˆØ¯ Ų…Ø­ØĩŲˆŲ„ ÚŠŲ…ÚŠ ÚŠŲ†Ø¯. Ų…Ø§ Ų‡ÛŒÚ† Ø§ØˇŲ„Ø§ØšØ§ØĒ Ø´ØŽØĩی یا Ų…Ø­ØĒŲˆØ§ÛŒ ŲØ§ÛŒŲ„ ØąØ§ ØąØ¯ÛŒØ§Ø¨ÛŒ Ų†Ų…ÛŒâ€ŒÚŠŲ†ÛŒŲ…. +analytics.paragraph2=Ų„ØˇŲØ§Ų‹ Ø¯Øą Ų†Ø¸Øą Ø¨Ú¯ÛŒØąÛŒØ¯ ÚŠŲ‡ ØĒØ­Ų„ÛŒŲ„â€ŒŲ‡Ø§ ØąØ§ ŲØšØ§Ų„ ÚŠŲ†ÛŒØ¯ ØĒا Ø¨Ų‡ ØąØ´Ø¯ Stirling PDF ÚŠŲ…ÚŠ ÚŠØąØ¯Ų‡ ؈ Ų…Ø§ ØąØ§ Ø¯Øą Ø¯ØąÚŠ Ø¨Ų‡ØĒØą ÚŠØ§ØąØ¨ØąØ§Ų† ÛŒØ§ØąÛŒ ÚŠŲ†ÛŒØ¯. +analytics.enable=ŲØšØ§Ų„ ÚŠØąØ¯Ų† ØĒØ­Ų„ÛŒŲ„â€ŒŲ‡Ø§ +analytics.disable=ØēÛŒØąŲØšØ§Ų„ ÚŠØąØ¯Ų† ØĒØ­Ų„ÛŒŲ„â€ŒŲ‡Ø§ +analytics.settings=Ų…ÛŒâ€ŒØĒŲˆØ§Ų†ÛŒØ¯ ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ Ų…ØąØ¨ŲˆØˇ Ø¨Ų‡ ØĒØ­Ų„ÛŒŲ„â€ŒŲ‡Ø§ ØąØ§ Ø¯Øą ŲØ§ÛŒŲ„ config/settings.yml ØĒØēÛŒÛŒØą Ø¯Ų‡ÛŒØ¯ + +############# +# NAVBAR # +############# +navbar.favorite=ØšŲ„Ø§Ų‚Ų‡â€ŒŲ…Ų†Ø¯ÛŒâ€ŒŲ‡Ø§ +navbar.darkmode=Ø­Ø§Ų„ØĒ ØĒØ§ØąÛŒÚŠ +navbar.language=Ø˛Ø¨Ø§Ų†â€ŒŲ‡Ø§ +navbar.settings=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ +navbar.allTools=Ø§Ø¨Ø˛Ø§ØąŲ‡Ø§ +navbar.multiTool=Ú†Ų†Ø¯ Ø§Ø¨Ø˛Ø§Øą +navbar.search=ØŦØŗØĒØŦ؈ +navbar.sections.organize=ØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ +navbar.sections.convertTo=ØĒØ¨Ø¯ÛŒŲ„ Ø¨Ų‡ PDF +navbar.sections.convertFrom=ØĒØ¨Ø¯ÛŒŲ„ Ø§Ø˛ PDF +navbar.sections.security=Ø§Ų…Øļا ؈ Ø§Ų…Ų†ÛŒØĒ +navbar.sections.advance=ŲžÛŒØ´ØąŲØĒŲ‡ +navbar.sections.edit=Ų…Ø´Ø§Ų‡Ø¯Ų‡ ؈ ŲˆÛŒØąØ§ÛŒØ´ +navbar.sections.popular=Ų…Ø­Ø¨ŲˆØ¨ + +############# +# SETTINGS # +############# +settings.title=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ +settings.update=Ø¨Ų‡â€ŒØąŲˆØ˛ØąØŗØ§Ų†ÛŒ Ų…ŲˆØŦŲˆØ¯ Ø§ØŗØĒ +settings.updateAvailable={0} Ų†ØŗØŽŲ‡ Ų†Øĩب Ø´Ø¯Ų‡ ŲØšŲ„ÛŒ Ø§ØŗØĒ. یڊ Ų†ØŗØŽŲ‡ ØŦدید ({1}) Ų…ŲˆØŦŲˆØ¯ Ø§ØŗØĒ. +settings.appVersion=Ų†ØŗØŽŲ‡ Ø¨ØąŲ†Ø§Ų…Ų‡: +settings.downloadOption.title=Ú¯Ø˛ÛŒŲ†Ų‡ Ø¯Ø§Ų†Ų„ŲˆØ¯ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ (Ø¨ØąØ§ÛŒ Ø¯Ø§Ų†Ų„ŲˆØ¯ یڊ ŲØ§ÛŒŲ„ ØēÛŒØą ŲØ´ØąØ¯Ų‡): +settings.downloadOption.1=Ø¨Ø§Ø˛ ÚŠØąØ¯Ų† Ø¯Øą Ų‡Ų…Ø§Ų† ŲžŲ†ØŦØąŲ‡ +settings.downloadOption.2=Ø¨Ø§Ø˛ ÚŠØąØ¯Ų† Ø¯Øą ŲžŲ†ØŦØąŲ‡ ØŦدید +settings.downloadOption.3=Ø¯Ø§Ų†Ų„ŲˆØ¯ ŲØ§ÛŒŲ„ +settings.zipThreshold=ŲØ´ØąØ¯Ų‡ ÚŠØąØ¯Ų† ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ ŲˆŲ‚ØĒی ØĒؚداد ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ Ø¯Ø§Ų†Ų„ŲˆØ¯ Ø´Ø¯Ų‡ بیشØĒØą Ø´ŲˆØ¯ Ø§Ø˛ +settings.signOut=ØŽØąŲˆØŦ +settings.accountSettings=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ Ø­ØŗØ§Ø¨ ÚŠØ§ØąØ¨ØąÛŒ +settings.bored.help=ŲØšØ§Ų„ ÚŠØąØ¯Ų† Ø¨Ø§Ø˛ÛŒ Ų…ØŽŲÛŒ +settings.cacheInputs.name=Ø°ØŽÛŒØąŲ‡ ŲˆØąŲˆØ¯ÛŒâ€ŒŲ‡Ø§ÛŒ ŲØąŲ… +settings.cacheInputs.help=ŲØšØ§Ų„ ÚŠØąØ¯Ų† Ø¨ØąØ§ÛŒ Ø°ØŽÛŒØąŲ‡ ŲˆØąŲˆØ¯ÛŒâ€ŒŲ‡Ø§ÛŒ Ų‚Ø¨Ų„ÛŒ Ø¨ØąØ§ÛŒ اØŦØąØ§ÛŒ بؚدی + +changeCreds.title=ØĒØēÛŒÛŒØą Ų…Ø´ØŽØĩاØĒ +changeCreds.header=Ø¨Ų‡â€ŒØąŲˆØ˛ØąØŗØ§Ų†ÛŒ ØŦØ˛ØĻیاØĒ Ø­ØŗØ§Ø¨ ÚŠØ§ØąØ¨ØąÛŒ +changeCreds.changePassword=Ø´Ų…Ø§ Ø§Ø˛ Ų…Ø´ØŽØĩاØĒ ŲžÛŒØ´â€ŒŲØąØļ ŲˆØąŲˆØ¯ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†ÛŒØ¯. Ų„ØˇŲØ§Ų‹ یڊ ØąŲ…Ø˛ ØšØ¨ŲˆØą ØŦدید ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ +changeCreds.newUsername=Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ ØŦدید +changeCreds.oldPassword=ØąŲ…Ø˛ ØšØ¨ŲˆØą ŲØšŲ„ÛŒ +changeCreds.newPassword=ØąŲ…Ø˛ ØšØ¨ŲˆØą ØŦدید +changeCreds.confirmNewPassword=ØĒØŖÛŒÛŒØ¯ ØąŲ…Ø˛ ØšØ¨ŲˆØą ØŦدید +changeCreds.submit=ØĢبØĒ ØĒØēÛŒÛŒØąØ§ØĒ + + + +account.title=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ Ø­ØŗØ§Ø¨ +account.accountSettings=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ Ø­ØŗØ§Ø¨ +account.adminSettings=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ Ø§Ø¯Ų…ÛŒŲ† - Ų…Ø´Ø§Ų‡Ø¯Ų‡ ؈ اØļØ§ŲŲ‡ ÚŠØąØ¯Ų† ÚŠØ§ØąØ¨ØąØ§Ų† +account.userControlSettings=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ ÚŠŲ†ØĒØąŲ„ ÚŠØ§ØąØ¨ØąØ§Ų† +account.changeUsername=ØĒØēÛŒÛŒØą Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ +account.newUsername=Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ ØŦدید +account.password=ØąŲ…Ø˛ ØšØ¨ŲˆØą ØĒØŖÛŒÛŒØ¯ÛŒŲ‡ +account.oldPassword=ØąŲ…Ø˛ ØšØ¨ŲˆØą Ų‚Ø¯ÛŒŲ…ÛŒ +account.newPassword=ØąŲ…Ø˛ ØšØ¨ŲˆØą ØŦدید +account.changePassword=ØĒØēÛŒÛŒØą ØąŲ…Ø˛ ØšØ¨ŲˆØą +account.confirmNewPassword=ØĒØŖÛŒÛŒØ¯ ØąŲ…Ø˛ ØšØ¨ŲˆØą ØŦدید +account.signOut=ØŽØąŲˆØŦ +account.yourApiKey=ÚŠŲ„ÛŒØ¯ API Ø´Ų…Ø§ +account.syncTitle=Ų‡Ų…Ú¯Ø§Ų…â€ŒØŗØ§Ø˛ÛŒ ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ Ų…ØąŲˆØąÚ¯Øą با Ø­ØŗØ§Ø¨ +account.settingsCompare=Ų…Ų‚Ø§ÛŒØŗŲ‡ ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ: +account.property=ŲˆÛŒÚ˜Ú¯ÛŒ +account.webBrowserSettings=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ Ų…ØąŲˆØąÚ¯Øą ŲˆØ¨ +account.syncToBrowser=Ų‡Ų…Ú¯Ø§Ų…â€ŒØŗØ§Ø˛ÛŒ Ø­ØŗØ§Ø¨ -> Ų…ØąŲˆØąÚ¯Øą +account.syncToAccount=Ų‡Ų…Ú¯Ø§Ų…â€ŒØŗØ§Ø˛ÛŒ Ø­ØŗØ§Ø¨ <- Ų…ØąŲˆØąÚ¯Øą + + +adminUserSettings.title=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ ÚŠŲ†ØĒØąŲ„ ÚŠØ§ØąØ¨ØąØ§Ų† +adminUserSettings.header=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ ÚŠŲ†ØĒØąŲ„ ÚŠØ§ØąØ¨ØąØ§Ų† ØĒŲˆØŗØˇ Ø§Ø¯Ų…ÛŒŲ† +adminUserSettings.admin=Ø§Ø¯Ų…ÛŒŲ† +adminUserSettings.user=ÚŠØ§ØąØ¨Øą +adminUserSettings.addUser=اØļØ§ŲŲ‡ ÚŠØąØ¯Ų† ÚŠØ§ØąØ¨Øą ØŦدید +adminUserSettings.deleteUser=Ø­Ø°Ų ÚŠØ§ØąØ¨Øą +adminUserSettings.confirmDeleteUser=Øĸیا باید ÚŠØ§ØąØ¨Øą Ø­Ø°Ų Ø´ŲˆØ¯ØŸ +adminUserSettings.confirmChangeUserStatus=Øĸیا باید ؈ØļØšÛŒØĒ ÚŠØ§ØąØ¨Øą ØēÛŒØąŲØšØ§Ų„/ŲØšØ§Ų„ Ø´ŲˆØ¯ØŸ +adminUserSettings.usernameInfo=Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ ŲŲ‚Øˇ Ų…ÛŒâ€ŒØĒŲˆØ§Ų†Ø¯ Ø´Ø§Ų…Ų„ Ø­ØąŲˆŲØŒ اؚداد ؈ ÚŠØ§ØąØ§ÚŠØĒØąŲ‡Ø§ÛŒ ؎اØĩ @._+- باشد یا باید یڊ ØĸØ¯ØąØŗ Ø§ÛŒŲ…ÛŒŲ„ Ų…ØšØĒØ¨Øą باشد. +adminUserSettings.roles=Ų†Ų‚Ø´â€ŒŲ‡Ø§ +adminUserSettings.role=Ų†Ų‚Ø´ +adminUserSettings.actions=Ø§Ų‚Ø¯Ø§Ų…Ø§ØĒ +adminUserSettings.apiUser=ÚŠØ§ØąØ¨Øą Ų…Ø­Ø¯ŲˆØ¯ API +adminUserSettings.extraApiUser=ÚŠØ§ØąØ¨Øą Ų…Ø­Ø¯ŲˆØ¯ اØļØ§ŲÛŒ API +adminUserSettings.webOnlyUser=ŲŲ‚Øˇ ÚŠØ§ØąØ¨Øą ŲˆØ¨ +adminUserSettings.demoUser=ÚŠØ§ØąØ¨Øą Ø¯Ų…Ųˆ (Ø¨Ø¯ŲˆŲ† ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ ØŗŲØ§ØąØ´ÛŒ) +adminUserSettings.internalApiUser=ÚŠØ§ØąØ¨Øą Ø¯Ø§ØŽŲ„ÛŒ API +adminUserSettings.forceChange=Ų…ØŦØ¨ŲˆØą ÚŠØąØ¯Ų† ÚŠØ§ØąØ¨Øą Ø¨Ų‡ ØĒØēÛŒÛŒØą ØąŲ…Ø˛ ØšØ¨ŲˆØą Ų‡Ų†Ú¯Ø§Ų… ŲˆØąŲˆØ¯ +adminUserSettings.submit=Ø°ØŽÛŒØąŲ‡ ÚŠØ§ØąØ¨Øą +adminUserSettings.changeUserRole=ØĒØēÛŒÛŒØą Ų†Ų‚Ø´ ÚŠØ§ØąØ¨Øą +adminUserSettings.authenticated=Ø§Ø­ØąØ§Ø˛ Ų‡ŲˆÛŒØĒ Ø´Ø¯Ų‡ +adminUserSettings.editOwnProfil=ŲˆÛŒØąØ§ÛŒØ´ Ų†Ų…Ø§ÛŒŲ‡ ØŽŲˆØ¯ +adminUserSettings.enabledUser=ÚŠØ§ØąØ¨Øą ŲØšØ§Ų„ +adminUserSettings.disabledUser=ÚŠØ§ØąØ¨Øą ØēÛŒØąŲØšØ§Ų„ +adminUserSettings.activeUsers=ÚŠØ§ØąØ¨ØąØ§Ų† ŲØšØ§Ų„: +adminUserSettings.disabledUsers=ÚŠØ§ØąØ¨ØąØ§Ų† ØēÛŒØąŲØšØ§Ų„: +adminUserSettings.totalUsers=ÚŠŲ„ ÚŠØ§ØąØ¨ØąØ§Ų†: +adminUserSettings.lastRequest=ØĸØŽØąÛŒŲ† Ø¯ØąØŽŲˆØ§ØŗØĒ + + +database.title=ŲˆØ§ØąØ¯ ÚŠØąØ¯Ų†/ØĩØ§Ø¯Øą ÚŠØąØ¯Ų† ŲžØ§ÛŒÚ¯Ø§Ų‡ Ø¯Ø§Ø¯Ų‡ +database.header=ŲˆØ§ØąØ¯ ÚŠØąØ¯Ų†/ØĩØ§Ø¯Øą ÚŠØąØ¯Ų† ŲžØ§ÛŒÚ¯Ø§Ų‡ Ø¯Ø§Ø¯Ų‡ +database.fileName=Ų†Ø§Ų… ŲØ§ÛŒŲ„ +database.creationDate=ØĒØ§ØąÛŒØŽ ایØŦاد +database.fileSize=Ø§Ų†Ø¯Ø§Ø˛Ų‡ ŲØ§ÛŒŲ„ +database.deleteBackupFile=Ø­Ø°Ų ŲØ§ÛŒŲ„ ŲžØ´ØĒÛŒØ¨Ø§Ų† +database.importBackupFile=ŲˆØ§ØąØ¯ ÚŠØąØ¯Ų† ŲØ§ÛŒŲ„ ŲžØ´ØĒÛŒØ¨Ø§Ų† +database.createBackupFile=Create Backup File +database.downloadBackupFile=Ø¯Ø§Ų†Ų„ŲˆØ¯ ŲØ§ÛŒŲ„ ŲžØ´ØĒÛŒØ¨Ø§Ų† +database.info_1=Ų‡Ų†Ú¯Ø§Ų… ŲˆØ§ØąØ¯ ÚŠØąØ¯Ų† Ø¯Ø§Ø¯Ų‡â€ŒŲ‡Ø§ØŒ Ø§ØˇŲ…ÛŒŲ†Ø§Ų† Ø§Ø˛ ØŗØ§ØŽØĒØ§Øą Øĩحیح ØļØąŲˆØąÛŒ Ø§ØŗØĒ. Ø§Ú¯Øą Ų…ØˇŲ…ØĻŲ† Ų†ÛŒØŗØĒید Ú†Ų‡ ÚŠØ§ØąÛŒ Ø§Ų†ØŦØ§Ų… Ų…ÛŒâ€ŒØ¯Ų‡ÛŒØ¯ØŒ Ø§Ø˛ یڊ Ų…ØĒØŽØĩØĩ Ų…Ø´Ø§ŲˆØąŲ‡ ؈ ŲžØ´ØĒÛŒØ¨Ø§Ų†ÛŒ Ø¯ØąÛŒØ§ŲØĒ ÚŠŲ†ÛŒØ¯. ØŽØˇØ§ Ø¯Øą ØŗØ§ØŽØĒØ§Øą Ų…ÛŒâ€ŒØĒŲˆØ§Ų†Ø¯ باؚØĢ ا؎ØĒŲ„Ø§Ų„Ø§ØĒ Ø¨ØąŲ†Ø§Ų…Ų‡ Ø´ŲˆØ¯ØŒ Ø­ØĒی ØĒا حدی ÚŠŲ‡ Ø¨ØąŲ†Ø§Ų…Ų‡ Ø¨Ų‡ ØˇŲˆØą ÚŠØ§Ų…Ų„ Ų‚Ø§Ø¯Øą Ø¨Ų‡ اØŦØąØ§ Ų†Ø¨Ø§Ø´Ø¯. +database.info_2=Ų†Ø§Ų… ŲØ§ÛŒŲ„ Ų‡Ų†Ú¯Ø§Ų… ØĸŲžŲ„ŲˆØ¯ Ų…Ų‡Ų… Ų†ÛŒØŗØĒ. ŲžØŗ Ø§Ø˛ ØĸŲ† Ø¨ØąØ§ÛŒ ŲžÛŒØąŲˆÛŒ Ø§Ø˛ Ų‚Ø§Ų„Ø¨ backup_user_yyyyMMddHHmm.sql ØĒØēÛŒÛŒØą Ų†Ø§Ų… Ø¯Ø§Ø¯Ų‡ Ų…ÛŒâ€ŒØ´ŲˆØ¯ ØĒا یڊ Ų‚ØąØ§ØąØ¯Ø§Ø¯ Ų†Ø§Ų…â€ŒÚ¯Ø°Ø§ØąÛŒ ØĢابØĒ ØąØ§ ØĒØļŲ…ÛŒŲ† ÚŠŲ†Ø¯. +database.submit=ŲˆØ§ØąØ¯ ÚŠØąØ¯Ų† ŲžØ´ØĒÛŒØ¨Ø§Ų† +database.importIntoDatabaseSuccessed=ŲˆØ§ØąØ¯ ÚŠØąØ¯Ų† Ø¯Øą ŲžØ§ÛŒÚ¯Ø§Ų‡ Ø¯Ø§Ø¯Ų‡ Ų…ŲˆŲŲ‚ÛŒØĒ‌ØĸŲ…ÛŒØ˛ Ø¨ŲˆØ¯ +database.backupCreated=Database backup successful +database.fileNotFound=ŲØ§ÛŒŲ„ ŲžÛŒØ¯Ø§ Ų†Ø´Ø¯ +database.fileNullOrEmpty=ŲØ§ÛŒŲ„ Ų†Ø¨Ø§ÛŒØ¯ ØŽØ§Ų„ÛŒ یا ØĒŲ‡ÛŒ باشد +database.failedImportFile=ŲˆØ§ØąØ¯ ÚŠØąØ¯Ų† ŲØ§ÛŒŲ„ Ų†Ø§Ų…ŲˆŲŲ‚ Ø¨ŲˆØ¯ + +session.expired=Ų†Ø´ØŗØĒ Ø´Ų…Ø§ Ø¨Ų‡ ŲžØ§ÛŒØ§Ų† ØąØŗÛŒØ¯Ų‡ Ø§ØŗØĒ. Ų„ØˇŲØ§Ų‹ ØĩŲØ­Ų‡ ØąØ§ ØĒØ§Ø˛Ų‡â€ŒØŗØ§Ø˛ÛŒ ÚŠØąØ¯Ų‡ ؈ Ø¯ŲˆØ¨Ø§ØąŲ‡ ØĒŲ„Ø§Ø´ ÚŠŲ†ÛŒØ¯. +session.refreshPage=ØĒØ§Ø˛Ų‡â€ŒØŗØ§Ø˛ÛŒ ØĩŲØ­Ų‡ + +############# +# HOME-PAGE # +############# +home.desc=Ų…ØēØ§Ø˛Ų‡â€Œ Ų‡Ų…Ų‡â€ŒÚŠØ§ØąŲ‡ Ų…ÛŒØ˛Ø¨Ø§Ų†ÛŒâ€ŒØ´Ø¯Ų‡ Ø¨Ų‡ ØĩŲˆØąØĒ Ų…Ø­Ų„ÛŒ Ø¨ØąØ§ÛŒ ØĒŲ…Ø§Ų… Ų†ÛŒØ§Ø˛Ų‡Ø§ÛŒ PDF Ø´Ų…Ø§. +home.searchBar=ØŦØŗØĒØŦ؈ Ø¨ØąØ§ÛŒ ŲˆÛŒÚ˜Ú¯ÛŒâ€ŒŲ‡Ø§... + + +home.viewPdf.title=Ų…Ø´Ø§Ų‡Ø¯Ų‡ PDF +home.viewPdf.desc=Ų…Ø´Ø§Ų‡Ø¯Ų‡ØŒ Ø­Ø§Ø´ÛŒŲ‡â€ŒŲ†ŲˆÛŒØŗÛŒØŒ Ø§ŲØ˛ŲˆØ¯Ų† Ų…ØĒŲ† یا ØĒØĩØ§ŲˆÛŒØą +viewPdf.tags=Ų…Ø´Ø§Ų‡Ø¯Ų‡ØŒØŽŲˆØ§Ų†Ø¯Ų†ØŒØ­Ø§Ø´ÛŒŲ‡â€ŒŲ†ŲˆÛŒØŗÛŒØŒŲ…ØĒŲ†ØŒØĒØĩŲˆÛŒØą + +home.multiTool.title=Ø§Ø¨Ø˛Ø§Øą Ú†Ų†Ø¯Ú¯Ø§Ų†Ų‡ PDF +home.multiTool.desc=ØĒØąÚŠÛŒØ¨ØŒ Ú†ØąØŽØ´ØŒ Ø¨Ø§Ø˛ØĸØąØ§ÛŒÛŒØŒ ØĒŲ‚ØŗÛŒŲ… ؈ Ø­Ø°Ų ØĩŲØ­Ø§ØĒ +multiTool.tags=Ø§Ø¨Ø˛Ø§Øą Ú†Ų†Ø¯Ú¯Ø§Ų†Ų‡ØŒØšŲ…Ų„ÛŒØ§ØĒ Ú†Ų†Ø¯Ú¯Ø§Ų†Ų‡ØŒŲˆØ§ØŗØˇ ÚŠØ§ØąØ¨ØąÛŒØŒÚŠŲ„ÛŒÚŠ ؈ ÚŠØ´ÛŒØ¯Ų†ØŒŲØąØ§Ų†ØĒâ€ŒØ§Ų†Ø¯ØŒÚŠØ§ØąØ¨ØąØ¯ÛŒØŒŲ‚Ø§Ø¨Ų„ ØĒØšØ§Ų…Ų„ØŒØŦابØŦØ§ÛŒÛŒØŒØ­Ø°ŲØŒØĒŲ‚ØŗÛŒŲ… + +home.merge.title=ØĒØąÚŠÛŒØ¨ +home.merge.desc=ØĒØąÚŠÛŒØ¨ ØĸØŗØ§Ų† Ú†Ų†Ø¯ÛŒŲ† ŲØ§ÛŒŲ„ PDF Ø¯Øą یڊ ŲØ§ÛŒŲ„. +merge.tags=ØĒØąÚŠÛŒØ¨ØŒØšŲ…Ų„ÛŒØ§ØĒ ØĩŲØ­Ø§ØĒØŒØ¨ÚŠâ€ŒØ§Ų†Ø¯ØŒØŗŲ…ØĒ ØŗØąŲˆØą + +home.split.title=ØĒŲ‚ØŗÛŒŲ… +home.split.desc=ØĒŲ‚ØŗÛŒŲ… ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ PDF Ø¨Ų‡ Ø§ØŗŲ†Ø§Ø¯ Ú†Ų†Ø¯Ú¯Ø§Ų†Ų‡ +split.tags=ØšŲ…Ų„ÛŒØ§ØĒ ØĩŲØ­Ø§ØĒ،ØĒŲ‚ØŗÛŒŲ…ØŒÚ†Ų†Ø¯ ØĩŲØ­Ų‡ØŒØ¨ØąØ´ØŒØŗŲ…ØĒ ØŗØąŲˆØą + +home.rotate.title=Ú†ØąØŽØ´ +home.rotate.desc=Ú†ØąØŽØ´ ØĸØŗØ§Ų† ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ PDF. +rotate.tags=ØŗŲ…ØĒ ØŗØąŲˆØą + + +home.imageToPdf.title=ØĒØĩŲˆÛŒØą Ø¨Ų‡ PDF +home.imageToPdf.desc=ØĒØ¨Ø¯ÛŒŲ„ یڊ ØĒØĩŲˆÛŒØą (PNG، JPEG، GIF) Ø¨Ų‡ PDF. +imageToPdf.tags=ØĒØ¨Ø¯ÛŒŲ„ØŒØšÚŠØŗØŒjpg،ØĒØĩŲˆÛŒØąØŒØšÚŠØŗ + +home.pdfToImage.title=PDF Ø¨Ų‡ ØĒØĩŲˆÛŒØą +home.pdfToImage.desc=ØĒØ¨Ø¯ÛŒŲ„ یڊ ŲØ§ÛŒŲ„ PDF Ø¨Ų‡ یڊ ØĒØĩŲˆÛŒØą. (PNG، JPEG، GIF) +pdfToImage.tags=ØĒØ¨Ø¯ÛŒŲ„ØŒØšÚŠØŗØŒjpg،ØĒØĩŲˆÛŒØąØŒØšÚŠØŗ + +home.pdfOrganiser.title=ØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ +home.pdfOrganiser.desc=Ø­Ø°Ų/Ø¨Ø§Ø˛ØĸØąØ§ÛŒÛŒ ØĩŲØ­Ø§ØĒ Ø¨Ų‡ ØĒØąØĒیب Ø¯Ų„ØŽŲˆØ§Ų‡ +pdfOrganiser.tags=Ø¯ŲˆØˇØąŲŲ‡ØŒØ˛ŲˆØŦØŒŲØąØ¯ØŒŲ…ØąØĒØ¨â€ŒØŗØ§Ø˛ÛŒØŒØŦابØŦایی + + +home.addImage.title=Ø§ŲØ˛ŲˆØ¯Ų† ØĒØĩŲˆÛŒØą +home.addImage.desc=Ø§ŲØ˛ŲˆØ¯Ų† یڊ ØĒØĩŲˆÛŒØą Ø¨Ų‡ یڊ Ų…ÚŠØ§Ų† Ų…Ø´ØŽØĩ Ø¯Øą PDF +addImage.tags=ØĒØĩŲˆÛŒØąØŒjpgØŒØšÚŠØŗ + +home.watermark.title=Ø§ŲØ˛ŲˆØ¯Ų† ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ +home.watermark.desc=Ø§ŲØ˛ŲˆØ¯Ų† یڊ ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ ØŗŲØ§ØąØ´ÛŒ Ø¨Ų‡ ØŗŲ†Ø¯ PDF. +watermark.tags=Ų…ØĒŲ†ØŒØĒÚŠØąØ§ØąÛŒØŒØ¨ØąÚ†ØŗØ¨ØŒØŽŲˆØ¯ØŒÚŠŲžÛŒâ€ŒØąØ§ÛŒØĒØŒØšŲ„Ø§Ų…ØĒ ØĒØŦØ§ØąÛŒØŒØĒØĩŲˆÛŒØąØŒjpgØŒØšÚŠØŗ + +home.permissions.title=ØĒØēÛŒÛŒØą Ų…ØŦŲˆØ˛Ų‡Ø§ +home.permissions.desc=ØĒØēÛŒÛŒØą Ų…ØŦŲˆØ˛Ų‡Ø§ÛŒ ØŗŲ†Ø¯ PDF Ø´Ų…Ø§ +permissions.tags=ØŽŲˆØ§Ų†Ø¯Ų†ØŒŲ†ŲˆØ´ØĒŲ†ØŒŲˆÛŒØąØ§ÛŒØ´ØŒÚ†Ø§Ųž + + +home.removePages.title=Ø­Ø°Ų +home.removePages.desc=Ø­Ø°Ų ØĩŲØ­Ø§ØĒ Ų†Ø§ØŽŲˆØ§ØŗØĒŲ‡ Ø§Ø˛ ØŗŲ†Ø¯ PDF Ø´Ų…Ø§. +removePages.tags=Ø­Ø°Ų ØĩŲØ­Ø§ØĒØŒŲžØ§ÚŠ ÚŠØąØ¯Ų† ØĩŲØ­Ø§ØĒ + +home.addPassword.title=Ø§ŲØ˛ŲˆØ¯Ų† ØąŲ…Ø˛ ØšØ¨ŲˆØą +home.addPassword.desc=ØąŲ…Ø˛Ú¯Ø°Ø§ØąÛŒ ØŗŲ†Ø¯ PDF Ø´Ų…Ø§ با ØąŲ…Ø˛ ØšØ¨ŲˆØą. +addPassword.tags=Ø§Ų…Ų†ØŒØ§Ų…Ų†ÛŒØĒ + +home.removePassword.title=Ø­Ø°Ų ØąŲ…Ø˛ ØšØ¨ŲˆØą +home.removePassword.desc=Ø­Ø°Ų Ø­ŲØ§Ø¸ØĒ ØąŲ…Ø˛ ØšØ¨ŲˆØą Ø§Ø˛ ØŗŲ†Ø¯ PDF Ø´Ų…Ø§. +removePassword.tags=Ø§Ų…Ų†ØŒØąŲ…Ø˛Ú¯Ø´Ø§ÛŒÛŒØŒØ§Ų…Ų†ÛŒØĒØŒØ­Ø°Ų ØąŲ…Ø˛ ØšØ¨ŲˆØą + +home.compressPdfs.title=ŲØ´ØąØ¯Ų‡â€ŒØŗØ§Ø˛ÛŒ +home.compressPdfs.desc=ŲØ´ØąØ¯Ų‡â€ŒØŗØ§Ø˛ÛŒ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ PDF Ø¨ØąØ§ÛŒ ÚŠØ§Ų‡Ø´ Ø§Ų†Ø¯Ø§Ø˛Ų‡ ØĸŲ†â€ŒŲ‡Ø§. +compressPdfs.tags=ŲØ´ØąØ¯Ų‡ØŒÚŠŲˆÚ†ÚŠØŒØąÛŒØ˛ + + +home.changeMetadata.title=ØĒØēÛŒÛŒØą Ų…ØĒØ§Ø¯Ø§Ø¯Ų‡ +home.changeMetadata.desc=ØĒØēÛŒÛŒØą/Ø­Ø°Ų/Ø§ŲØ˛ŲˆØ¯Ų† Ų…ØĒØ§Ø¯Ø§Ø¯Ų‡ Ø¨Ų‡ یڊ ØŗŲ†Ø¯ PDF +changeMetadata.tags=ØšŲ†ŲˆØ§Ų†ØŒŲ†ŲˆÛŒØŗŲ†Ø¯Ų‡ØŒØĒØ§ØąÛŒØŽØŒØ§ÛŒØŦØ§Ø¯ØŒØ˛Ų…Ø§Ų†ØŒŲ†Ø§Ø´ØąØŒØĒŲˆŲ„ÛŒØ¯ÚŠŲ†Ų†Ø¯Ų‡ØŒØĸŲ…Ø§Øą + +home.fileToPDF.title=ØĒØ¨Ø¯ÛŒŲ„ ŲØ§ÛŒŲ„ Ø¨Ų‡ PDF +home.fileToPDF.desc=ØĒØ¨Ø¯ÛŒŲ„ ØĒŲ‚ØąÛŒØ¨Ø§Ų‹ Ų‡Øą ŲØ§ÛŒŲ„ Ø¨Ų‡ PDF (DOCX، PNG، XLS، PPT، TXT ؈ بیشØĒØą) +fileToPDF.tags=ØĒØ¨Ø¯ÛŒŲ„ØŒŲØąŲ…ØĒØŒØŗŲ†Ø¯ØŒØĒØĩŲˆÛŒØąØŒØ§ØŗŲ„Ø§ÛŒØ¯ØŒŲ…ØĒŲ†ØŒØĒØ¨Ø¯ÛŒŲ„ØŒØ¯ŲØĒØąØŒØ§ØŗŲ†Ø§Ø¯ØŒŲˆØąØ¯ØŒØ§ÚŠØŗŲ„ØŒŲžØ§ŲˆØąŲžŲˆÛŒŲ†ØĒ + +home.ocr.title=OCR / ŲžØ§ÚŠØŗØ§Ø˛ÛŒ Ø§ØŗÚŠŲ†â€ŒŲ‡Ø§ +home.ocr.desc=ŲžØ§ÚŠØŗØ§Ø˛ÛŒ Ø§ØŗÚŠŲ†â€ŒŲ‡Ø§ ؈ ØĒØ´ØŽÛŒØĩ Ų…ØĒŲ† Ø§Ø˛ ØĒØĩØ§ŲˆÛŒØą Ø¯ØąŲˆŲ† یڊ ŲØ§ÛŒŲ„ PDF ؈ Ø¨Ø§Ø˛Ø§ŲØ˛ŲˆØ¯Ų† ØĸŲ† Ø¨Ų‡ ØšŲ†ŲˆØ§Ų† Ų…ØĒŲ†. +ocr.tags=ØĒØ´ØŽÛŒØĩØŒŲ…ØĒŲ†ØŒØĒØĩŲˆÛŒØąØŒØ§ØŗÚŠŲ†ØŒØŽŲˆØ§Ų†Ø¯Ų†ØŒØ´Ų†Ø§ØŗØ§ÛŒÛŒØŒØĸØ´ÚŠØ§ØąØŗØ§Ø˛ÛŒØŒŲ‚Ø§Ø¨Ų„ ŲˆÛŒØąØ§ÛŒØ´ + + +home.extractImages.title=Ø§ØŗØĒØŽØąØ§ØŦ ØĒØĩØ§ŲˆÛŒØą +home.extractImages.desc=Ø§ØŗØĒØŽØąØ§ØŦ ØĒŲ…Ø§Ų… ØĒØĩØ§ŲˆÛŒØą Ø§Ø˛ یڊ PDF ؈ Ø°ØŽÛŒØąŲ‡ ØĸŲ†â€ŒŲ‡Ø§ Ø¨Ų‡ ØĩŲˆØąØĒ ŲØ§ÛŒŲ„ Ø˛ÛŒŲž +extractImages.tags=ØšÚŠØŗØŒØšÚŠØŗØŒØ°ØŽÛŒØąŲ‡ØŒØĸØąØ´ÛŒŲˆØŒØ˛ÛŒŲžØŒÚ¯ØąŲØĒŲ†ØŒØ¨ØąØ¯Ø§Ø´ØĒŲ† + +home.pdfToPDFA.title=PDF Ø¨Ų‡ PDF/A +home.pdfToPDFA.desc=ØĒØ¨Ø¯ÛŒŲ„ PDF Ø¨Ų‡ PDF/A Ø¨ØąØ§ÛŒ Ø°ØŽÛŒØąŲ‡â€ŒØŗØ§Ø˛ÛŒ Ø¨Ų„Ų†Ø¯Ų…Ø¯ØĒ +pdfToPDFA.tags=ØĸØąØ´ÛŒŲˆØŒØ°ØŽÛŒØąŲ‡â€ŒØŗØ§Ø˛ÛŒ Ø¨Ų„Ų†Ø¯Ų…Ø¯ØĒØŒØ§ØŗØĒØ§Ų†Ø¯Ø§ØąØ¯ØŒØĒØ¨Ø¯ÛŒŲ„ØŒØ°ØŽÛŒØąŲ‡â€ŒØŗØ§Ø˛ÛŒØŒØ­ŲØ¸ + +home.PDFToWord.title=PDF Ø¨Ų‡ ŲˆØąØ¯ +home.PDFToWord.desc=ØĒØ¨Ø¯ÛŒŲ„ PDF Ø¨Ų‡ ŲØąŲ…ØĒâ€ŒŲ‡Ø§ÛŒ ŲˆØąØ¯ (DOC، DOCX ؈ ODT) +PDFToWord.tags=doc،docx،odtØŒŲˆØąØ¯ØŒØĒØ¨Ø¯ÛŒŲ„ØŒŲØąŲ…ØĒ،ØĒØ¨Ø¯ÛŒŲ„ØŒØ¯ŲØĒØąØŒŲ…Ø§ÛŒÚŠØąŲˆØŗØ§ŲØĒØŒŲØ§ÛŒŲ„ ŲˆØąØ¯ + +home.PDFToPresentation.title=PDF Ø¨Ų‡ Ø§ØąØ§ØĻŲ‡ +home.PDFToPresentation.desc=ØĒØ¨Ø¯ÛŒŲ„ PDF Ø¨Ų‡ ŲØąŲ…ØĒâ€ŒŲ‡Ø§ÛŒ Ø§ØąØ§ØĻŲ‡ (PPT، PPTX ؈ ODP) +PDFToPresentation.tags=Ø§ØŗŲ„Ø§ÛŒØ¯Ų‡Ø§ØŒØ§ØąØ§ØĻŲ‡ØŒØ¯ŲØĒØąØŒŲ…Ø§ÛŒÚŠØąŲˆØŗØ§ŲØĒ + +home.PDFToText.title=PDF Ø¨Ų‡ RTF (Ų…ØĒŲ†) +home.PDFToText.desc=ØĒØ¨Ø¯ÛŒŲ„ PDF Ø¨Ų‡ ŲØąŲ…ØĒ Ų…ØĒŲ† یا RTF +PDFToText.tags=ŲØąŲ…ØĒ ØēŲ†ÛŒØŒŲØąŲ…ØĒ Ų…ØĒŲ† ØēŲ†ÛŒ + +home.PDFToHTML.title=PDF Ø¨Ų‡ HTML +home.PDFToHTML.desc=ØĒØ¨Ø¯ÛŒŲ„ PDF Ø¨Ų‡ ŲØąŲ…ØĒ HTML +PDFToHTML.tags=Ų…Ø­ØĒŲˆØ§ÛŒ ŲˆØ¨ØŒØŗØ§Ø˛Ú¯Ø§Øą با Ų…ØąŲˆØąÚ¯Øą + + +home.PDFToXML.title=PDF Ø¨Ų‡ XML +home.PDFToXML.desc=ØĒØ¨Ø¯ÛŒŲ„ PDF Ø¨Ų‡ ŲØąŲ…ØĒ XML +PDFToXML.tags=Ø§ØŗØĒØŽØąØ§ØŦ Ø¯Ø§Ø¯Ų‡ØŒŲ…Ø­ØĒŲˆØ§ÛŒ ØŗØ§ØŽØĒØ§ØąÛŒØ§ŲØĒŲ‡ØŒØĒØ¯Ø§ØŽŲ„ØŒØĒØ¨Ø¯ÛŒŲ„ + +home.ScannerImageSplit.title=ØĒØ´ØŽÛŒØĩ/ØĒŲ‚ØŗÛŒŲ… ØĒØĩØ§ŲˆÛŒØą Ø§ØŗÚŠŲ†â€ŒØ´Ø¯Ų‡ +home.ScannerImageSplit.desc=ØĒŲ‚ØŗÛŒŲ… Ú†Ų†Ø¯ÛŒŲ† ØĒØĩŲˆÛŒØą Ø§Ø˛ Ø¯ØąŲˆŲ† یڊ ØĒØĩŲˆÛŒØą/PDF +ScannerImageSplit.tags=ØĒŲÚŠÛŒÚŠØŒØĒØ´ØŽÛŒØĩ ØŽŲˆØ¯ÚŠØ§ØąØŒØ§ØŗÚŠŲ†â€ŒŲ‡Ø§ØŒÚ†Ų†Ø¯ ØĒØĩŲˆÛŒØąØŒØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ + +home.sign.title=Ø§Ų…Øļا +home.sign.desc=Ø§ŲØ˛ŲˆØ¯Ų† Ø§Ų…Øļا Ø¨Ų‡ PDF با ÚŠØ´ÛŒØ¯Ų†ØŒ Ų…ØĒŲ† یا ØĒØĩŲˆÛŒØą +sign.tags=ØĒØ§ÛŒÛŒØ¯ØŒØ­ØąŲˆŲ ابØĒØ¯Ø§ÛŒÛŒØŒØ§Ų…Øļای ÚŠØ´ÛŒØ¯Ų‡ØŒØ§Ų…Øļای Ų…ØĒŲ†ÛŒØŒØ§Ų…Øļای ØĒØĩŲˆÛŒØąÛŒ + +home.flatten.title=ØĒØŗØˇÛŒØ­ +home.flatten.desc=Ø­Ø°Ų ØĒŲ…Ø§Ų… ØšŲ†Ø§ØĩØą ØĒØšØ§Ų…Ų„ÛŒ ؈ ŲØąŲ…â€ŒŲ‡Ø§ Ø§Ø˛ یڊ PDF +flatten.tags=Ø§ÛŒØŗØĒا،ØēÛŒØąŲØšØ§Ų„ØŒØēÛŒØąØĒØšØ§Ų…Ų„ÛŒØŒØ¨Ų‡ÛŒŲ†Ų‡â€ŒØŗØ§Ø˛ÛŒ + +home.repair.title=ØĒØąŲ…ÛŒŲ… +home.repair.desc=ØĒŲ„Ø§Ø´ Ø¨ØąØ§ÛŒ ØĒØąŲ…ÛŒŲ… یڊ PDF ØŽØąØ§Ø¨/Ø´ÚŠØŗØĒŲ‡ +repair.tags=ØĒØąŲ…ÛŒŲ…ØŒØ¨Ø§Ø˛ÛŒØ§Ø¨ÛŒØŒØ§ØĩŲ„Ø§Ø­ØŒØ¨Ø§Ø˛ÛŒØ§Ø¨ÛŒ + +home.removeBlanks.title=Ø­Ø°Ų ØĩŲØ­Ø§ØĒ ØŽØ§Ų„ÛŒ +home.removeBlanks.desc=ØĒØ´ØŽÛŒØĩ ؈ Ø­Ø°Ų ØĩŲØ­Ø§ØĒ ØŽØ§Ų„ÛŒ Ø§Ø˛ یڊ ØŗŲ†Ø¯ +removeBlanks.tags=ŲžØ§ÚŠØŗØ§Ø˛ÛŒØŒØ¨Ų‡ÛŒŲ†Ų‡â€ŒØŗØ§Ø˛ÛŒØŒØ¨Ø¯ŲˆŲ† Ų…Ø­ØĒŲˆØ§ØŒØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ + +home.removeAnnotations.title=Ø­Ø°Ų Ø­Ø§Ø´ÛŒŲ‡â€ŒŲ†ŲˆÛŒØŗÛŒâ€ŒŲ‡Ø§ +home.removeAnnotations.desc=Ø­Ø°Ų ØĒŲ…Ø§Ų… Ų†Ø¸ØąØ§ØĒ/Ø­Ø§Ø´ÛŒŲ‡â€ŒŲ†ŲˆÛŒØŗÛŒâ€ŒŲ‡Ø§ Ø§Ø˛ یڊ PDF +removeAnnotations.tags=Ų†Ø¸ØąØ§ØĒØŒŲ‡Ø§ÛŒŲ„Ø§ÛŒØĒ،یادداشØĒâ€ŒŲ‡Ø§ØŒŲ†Ø´Ø§Ų†Ų‡â€ŒÚ¯Ø°Ø§ØąÛŒØŒØ­Ø°Ų + +home.compare.title=Ų…Ų‚Ø§ÛŒØŗŲ‡ +home.compare.desc=Ų…Ų‚Ø§ÛŒØŗŲ‡ ؈ Ų†Ų…Ø§ÛŒØ´ ØĒŲØ§ŲˆØĒâ€ŒŲ‡Ø§ Ø¨ÛŒŲ† 2 ØŗŲ†Ø¯ PDF +compare.tags=ØĒŲØ§ŲˆØĒâ€ŒÚ¯Ø°Ø§ØąÛŒØŒÚŠŲ†ØĒØąØ§ØŗØĒ،ØĒØēÛŒÛŒØąØ§ØĒ،ØĒØ­Ų„ÛŒŲ„ + +home.certSign.title=Ø§Ų…Øļا با Ú¯ŲˆØ§Ų‡ÛŒŲ†Ø§Ų…Ų‡ +home.certSign.desc=Ø§Ų…Øļای یڊ PDF با Ú¯ŲˆØ§Ų‡ÛŒŲ†Ø§Ų…Ų‡/ÚŠŲ„ÛŒØ¯ (PEM/P12) +certSign.tags=ØĒایید،PEM،P12ØŒØąØŗŲ…ÛŒØŒØąŲ…Ø˛Ú¯Ø°Ø§ØąÛŒ + +home.removeCertSign.title=Ø­Ø°Ų Ø§Ų…Øļای Ú¯ŲˆØ§Ų‡ÛŒŲ†Ø§Ų…Ų‡ +home.removeCertSign.desc=Ø­Ø°Ų Ø§Ų…Øļای Ú¯ŲˆØ§Ų‡ÛŒŲ†Ø§Ų…Ų‡ Ø§Ø˛ PDF +removeCertSign.tags=ØĒایید،PEM،P12ØŒØąØŗŲ…ÛŒØŒØąŲ…Ø˛Ú¯Ø´Ø§ÛŒÛŒ + +home.pageLayout.title=ØˇØąØ­â€ŒØ¨Ų†Ø¯ÛŒ Ú†Ų†Ø¯ ØĩŲØ­Ų‡â€ŒØ§ÛŒ +home.pageLayout.desc=ادØēØ§Ų… Ú†Ų†Ø¯ÛŒŲ† ØĩŲØ­Ų‡ یڊ ØŗŲ†Ø¯ PDF Ø¯Øą یڊ ØĩŲØ­Ų‡ ŲˆØ§Ø­Ø¯ +pageLayout.tags=ادØēØ§Ų…ØŒØĒØąÚŠÛŒØ¨ØŒŲ†Ų…Ø§ÛŒ ŲˆØ§Ø­Ø¯ØŒØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ + +home.scalePages.title=ØĒŲ†Ø¸ÛŒŲ… Ø§Ų†Ø¯Ø§Ø˛Ų‡/Ų…Ų‚ÛŒØ§Øŗ ØĩŲØ­Ų‡ +home.scalePages.desc=ØĒØēÛŒÛŒØą Ø§Ų†Ø¯Ø§Ø˛Ų‡/Ų…Ų‚ÛŒØ§Øŗ یڊ ØĩŲØ­Ų‡ ؈/یا Ų…Ø­ØĒŲˆØ§ÛŒ ØĸŲ†. +scalePages.tags=ØĒØēÛŒÛŒØą Ø§Ų†Ø¯Ø§Ø˛Ų‡ØŒŲˆÛŒØąØ§ÛŒØ´ØŒØ§Ø¨ØšØ§Ø¯ØŒØŗØ§Ø˛Ú¯Ø§ØąÛŒ + +home.pipeline.title=ØŽØˇ Ų„ŲˆŲ„Ų‡ +home.pipeline.desc=اØŦØąØ§ÛŒ Ú†Ų†Ø¯ÛŒŲ† ØšŲ…Ų„ÛŒØ§ØĒ Ø¨Øą ØąŲˆÛŒ PDFŲ‡Ø§ با ØĒØšØąÛŒŲ Ø§ØŗÚŠØąÛŒŲžØĒâ€ŒŲ‡Ø§ÛŒ ØŽØˇ Ų„ŲˆŲ„Ų‡ +pipeline.tags=اØĒŲˆŲ…Ø§ØŗÛŒŲˆŲ†ØŒØĒØąØĒÛŒØ¨ØŒØ§ØŗÚŠØąÛŒŲžØĒâ€ŒØ´Ø¯Ų‡ØŒŲžØąØ¯Ø§Ø˛Ø´ Ø¯ØŗØĒŲ‡â€ŒØ§ÛŒ + +home.add-page-numbers.title=Ø§ŲØ˛ŲˆØ¯Ų† Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ø§ØĒ +home.add-page-numbers.desc=Ø§ŲØ˛ŲˆØ¯Ų† Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ø§ØĒ Ø¨Ų‡ ØĒŲ…Ø§Ų… ØŗŲ†Ø¯ Ø¯Øą یڊ Ų…ÚŠØ§Ų† Ų…Ø´ØŽØĩ +add-page-numbers.tags=Ø´Ų…Ø§ØąŲ‡â€ŒÚ¯Ø°Ø§ØąÛŒØŒØ¨ØąÚ†ØŗØ¨â€ŒÚ¯Ø°Ø§ØąÛŒØŒØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒØŒŲŲ‡ØąØŗØĒ + +home.auto-rename.title=ØĒØēÛŒÛŒØą Ų†Ø§Ų… ØŽŲˆØ¯ÚŠØ§Øą ŲØ§ÛŒŲ„ PDF +home.auto-rename.desc=ØĒØēÛŒÛŒØą Ų†Ø§Ų… ØŽŲˆØ¯ÚŠØ§Øą یڊ ŲØ§ÛŒŲ„ PDF Ø¨Øą Ø§ØŗØ§Øŗ ØŗØąØ¨ØąÚ¯ ØĒØ´ØŽÛŒØĩ Ø¯Ø§Ø¯Ų‡â€ŒØ´Ø¯Ų‡ ØĸŲ† +auto-rename.tags=ØĒØ´ØŽÛŒØĩ ØŽŲˆØ¯ÚŠØ§ØąØŒØ¨Øą Ø§ØŗØ§Øŗ ØŗØąØ¨ØąÚ¯ØŒØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒØŒØĒØēÛŒÛŒØą Ų†Ø§Ų… + +home.adjust-contrast.title=ØĒŲ†Ø¸ÛŒŲ… ØąŲ†Ú¯â€ŒŲ‡Ø§/ÚŠŲ†ØĒØąØ§ØŗØĒ +home.adjust-contrast.desc=ØĒŲ†Ø¸ÛŒŲ… ÚŠŲ†ØĒØąØ§ØŗØĒ، اشباؚ ؈ ØąŲˆØ´Ų†Ø§ÛŒÛŒ یڊ PDF +adjust-contrast.tags=ØĒØĩحیح ØąŲ†Ú¯ØŒØĒŲ†Ø¸ÛŒŲ…ØŒŲˆÛŒØąØ§ÛŒØ´ØŒØ¨Ų‡Ø¨ŲˆØ¯ + +home.crop.title=Ø¨ØąØ´ PDF +home.crop.desc=Ø¨ØąØ´ یڊ PDF Ø¨ØąØ§ÛŒ ÚŠØ§Ų‡Ø´ Ø§Ų†Ø¯Ø§Ø˛Ų‡ ØĸŲ† (Ų…ØĒŲ† ØąØ§ Ø­ŲØ¸ Ų…ÛŒâ€ŒÚŠŲ†Ø¯!) +crop.tags=Ø¨ØąØ´ØŒÚŠØ§Ų‡Ø´ Ø§Ų†Ø¯Ø§Ø˛Ų‡ØŒŲˆÛŒØąØ§ÛŒØ´ØŒØ´ÚŠŲ„â€ŒØ¯Ų‡ÛŒ + +home.autoSplitPDF.title=ØĒŲ‚ØŗÛŒŲ… ØŽŲˆØ¯ÚŠØ§Øą ØĩŲØ­Ø§ØĒ +home.autoSplitPDF.desc=ØĒŲ‚ØŗÛŒŲ… ØŽŲˆØ¯ÚŠØ§Øą ŲØ§ÛŒŲ„ Ø§ØŗÚŠŲ†â€ŒØ´Ø¯Ų‡ PDF با Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ ڊد QR ØĒŲ‚ØŗÛŒŲ…â€ŒÚŠŲ†Ų†Ø¯Ų‡ ŲÛŒØ˛ÛŒÚŠÛŒ +autoSplitPDF.tags=Ø¨Øą Ø§ØŗØ§Øŗ QR،ØŦØ¯Ø§ØŗØ§Ø˛ÛŒØŒØĒŲ‚ØŗÛŒŲ… Ø§ØŗÚŠŲ†â€ŒØ´Ø¯Ų‡ØŒØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ + +home.sanitizePdf.title=ŲžØ§ÚŠØŗØ§Ø˛ÛŒ +home.sanitizePdf.desc=Ø­Ø°Ų Ø§ØŗÚŠØąÛŒŲžØĒâ€ŒŲ‡Ø§ ؈ ØŗØ§ÛŒØą ØšŲ†Ø§ØĩØą Ø§Ø˛ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ PDF +sanitizePdf.tags=ŲžØ§ÚŠØŗØ§Ø˛ÛŒØŒØ§Ų…Ų†ØŒØ§ÛŒŲ…Ų†ØŒØ­Ø°Ų ØĒŲ‡Ø¯ÛŒØ¯Ų‡Ø§ + +home.URLToPDF.title=URL/ŲˆØ¨â€ŒØŗØ§ÛŒØĒ Ø¨Ų‡ PDF +home.URLToPDF.desc=ØĒØ¨Ø¯ÛŒŲ„ Ų‡Øą http(s)URL Ø¨Ų‡ PDF +URLToPDF.tags=Ø°ØŽÛŒØąŲ‡ ØĩŲØ­Ų‡ ŲˆØ¨ØŒØĒØ¨Ø¯ÛŒŲ„ ŲˆØ¨ Ø¨Ų‡ ØŗŲ†Ø¯ØŒØĸØąØ´ÛŒŲˆ + +home.HTMLToPDF.title=HTML Ø¨Ų‡ PDF +home.HTMLToPDF.desc=ØĒØ¨Ø¯ÛŒŲ„ Ų‡Øą ŲØ§ÛŒŲ„ HTML یا Ø˛ÛŒŲž Ø¨Ų‡ PDF +HTMLToPDF.tags=Ų…Ø§ØąÚŠâ€ŒØĸŲžØŒŲ…Ø­ØĒŲˆØ§ÛŒ ŲˆØ¨ØŒØĒØ¨Ø¯ÛŒŲ„ØŒØĒØēÛŒÛŒØą + + +home.MarkdownToPDF.title=Ų…Ø§ØąÚŠâ€ŒØ¯Ø§ŲˆŲ† Ø¨Ų‡ PDF +home.MarkdownToPDF.desc=ØĒØ¨Ø¯ÛŒŲ„ Ų‡Øą ŲØ§ÛŒŲ„ Ų…Ø§ØąÚŠâ€ŒØ¯Ø§ŲˆŲ† Ø¨Ų‡ PDF +MarkdownToPDF.tags=Ų…Ø§ØąÚŠâ€ŒØĸŲžØŒŲ…Ø­ØĒŲˆØ§ÛŒ ŲˆØ¨ØŒØĒØ¨Ø¯ÛŒŲ„ØŒØĒØēÛŒÛŒØą + + +home.getPdfInfo.title=Ø¯ØąÛŒØ§ŲØĒ ØĒŲ…Ø§Ų… Ø§ØˇŲ„Ø§ØšØ§ØĒ Ø¯Øą Ų…ŲˆØąØ¯ PDF +home.getPdfInfo.desc=Ú¯ØąŲØĒŲ† Ų‡Øą Ø§ØˇŲ„Ø§ØšØ§ØĒ Ų…Ų…ÚŠŲ† Ø¯Øą Ų…ŲˆØąØ¯ PDF +getPdfInfo.tags=Ø§ØˇŲ„Ø§ØšØ§ØĒØŒØ¯Ø§Ø¯Ų‡ØŒØĸŲ…Ø§ØąØŒØĸŲ…Ø§ØąŲ‡Ø§ + + +home.extractPage.title=Ø§ØŗØĒØŽØąØ§ØŦ ØĩŲØ­Ų‡(Ų‡Ø§) +home.extractPage.desc=Ø§ØŗØĒØŽØąØ§ØŦ ØĩŲØ­Ø§ØĒ Ø§Ų†ØĒ؎ابی Ø§Ø˛ PDF +extractPage.tags=Ø§ØŗØĒØŽØąØ§ØŦ + + +home.PdfToSinglePage.title=ØĩŲØ­Ų‡ Ø¨Ø˛ØąÚ¯ ŲˆØ§Ø­Ø¯ +home.PdfToSinglePage.desc=ادØēØ§Ų… ØĒŲ…Ø§Ų… ØĩŲØ­Ø§ØĒ PDF Ø¯Øą یڊ ØĩŲØ­Ų‡ Ø¨Ø˛ØąÚ¯ ŲˆØ§Ø­Ø¯ +PdfToSinglePage.tags=ØĩŲØ­Ų‡ ŲˆØ§Ø­Ø¯ + + +home.showJS.title=Ų†Ų…Ø§ÛŒØ´ ØŦØ§ŲˆØ§Ø§ØŗÚŠØąÛŒŲžØĒ +home.showJS.desc=ØŦØŗØĒØŦ؈ ؈ Ų†Ų…Ø§ÛŒØ´ Ų‡Øą ØŦØ§ŲˆØ§Ø§ØŗÚŠØąÛŒŲžØĒ ØĒØ˛ØąÛŒŲ‚ Ø´Ø¯Ų‡ Ø¨Ų‡ PDF +showJS.tags=ØŦØ§ŲˆØ§Ø§ØŗÚŠØąÛŒŲžØĒ + +home.autoRedact.title=ØŗØ§Ų†ØŗŲˆØą ØŽŲˆØ¯ÚŠØ§Øą +home.autoRedact.desc=Ų…ØĒŲ†â€ŒŲ‡Ø§ÛŒ Ų…Ø´ØŽØĩ Ø´Ø¯Ų‡ Ø¯Øą PDF ØąØ§ Ø¨Ų‡â€ŒØˇŲˆØą ØŽŲˆØ¯ÚŠØ§Øą ØŗØ§Ų†ØŗŲˆØą (ØŗÛŒØ§Ų‡) Ų…ÛŒâ€ŒÚŠŲ†Ø¯ +autoRedact.tags=ØŗØ§Ų†ØŗŲˆØąØŒ Ų…ØŽŲÛŒ ÚŠØąØ¯Ų†ØŒ ØŗÛŒØ§Ų‡ ÚŠØąØ¯Ų†ØŒ ŲžŲ†Ų‡Ø§Ų† + +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + +home.tableExtraxt.title=PDF Ø¨Ų‡ CSV +home.tableExtraxt.desc=ØŦØ¯Ø§ŲˆŲ„ ØąØ§ Ø§Ø˛ PDF Ø§ØŗØĒØŽØąØ§ØŦ ÚŠØąØ¯Ų‡ ؈ Ø¨Ų‡ CSV ØĒØ¨Ø¯ÛŒŲ„ Ų…ÛŒâ€ŒÚŠŲ†Ø¯ +tableExtraxt.tags=CSV، Ø§ØŗØĒØŽØąØ§ØŦ ØŦØ¯ŲˆŲ„ØŒ Ø§ØŗØĒØŽØąØ§ØŦ، ØĒØ¨Ø¯ÛŒŲ„ + + +home.autoSizeSplitPDF.title=ØĒŲ‚ØŗÛŒŲ… ØŽŲˆØ¯ÚŠØ§Øą Ø¨Øą Ø§ØŗØ§Øŗ Ø§Ų†Ø¯Ø§Ø˛Ų‡/ØĒؚداد +home.autoSizeSplitPDF.desc=ØĒŲ‚ØŗÛŒŲ… یڊ PDF Ø¨Ų‡ Ú†Ų†Ø¯ ØŗŲ†Ø¯ Ø¨Øą Ø§ØŗØ§Øŗ Ø§Ų†Ø¯Ø§Ø˛Ų‡ØŒ ØĒؚداد ØĩŲØ­Ø§ØĒ، یا ØĒؚداد Ø§ØŗŲ†Ø§Ø¯ +autoSizeSplitPDF.tags=PDF، ØĒŲ‚ØŗÛŒŲ…ØŒ ØŗŲ†Ø¯ØŒ ØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ + + +home.overlay-pdfs.title=Ų‡Ų…â€ŒŲžŲˆØ´Ø§Ų†ÛŒ PDFâ€ŒŲ‡Ø§ +home.overlay-pdfs.desc=PDFâ€ŒŲ‡Ø§ ØąØ§ Ø¨Øą ØąŲˆÛŒ PDF Ø¯ÛŒÚ¯ØąÛŒ Ų‡Ų…â€ŒŲžŲˆØ´Ø§Ų†ÛŒ Ų…ÛŒâ€ŒÚŠŲ†Ø¯ +overlay-pdfs.tags=Ų‡Ų…â€ŒŲžŲˆØ´Ø§Ų†ÛŒ + +home.split-by-sections.title=ØĒŲ‚ØŗÛŒŲ… PDF Ø¨Øą Ø§ØŗØ§Øŗ Ø¨ØŽØ´â€ŒŲ‡Ø§ +home.split-by-sections.desc=Ų‡Øą ØĩŲØ­Ų‡ Ø§Ø˛ PDF ØąØ§ Ø¨Ų‡ Ø¨ØŽØ´â€ŒŲ‡Ø§ÛŒ Ø§ŲŲ‚ÛŒ ؈ ØšŲ…ŲˆØ¯ÛŒ ÚŠŲˆÚ†ÚŠâ€ŒØĒØą ØĒŲ‚ØŗÛŒŲ… Ų…ÛŒâ€ŒÚŠŲ†Ø¯ +split-by-sections.tags=ØĒŲ‚ØŗÛŒŲ… ب؎ش، ØŗŲØ§ØąØ´ÛŒâ€ŒØŗØ§Ø˛ÛŒ + +home.AddStampRequest.title=Ø§ŲØ˛ŲˆØ¯Ų† Ų…Ų‡Øą Ø¨Ų‡ PDF +home.AddStampRequest.desc=Ø§ŲØ˛ŲˆØ¯Ų† Ų…Ų‡Øą Ų…ØĒŲ†ÛŒ یا ØĒØĩŲˆÛŒØąÛŒ Ø¯Øą Ų…ÚŠØ§Ų†â€ŒŲ‡Ø§ÛŒ Ų…Ø´ØŽØĩ +AddStampRequest.tags=Ų…Ų‡ØąØŒ Ø§ŲØ˛ŲˆØ¯Ų† ØĒØĩŲˆÛŒØąØŒ ŲˆØ§ØĒØąŲ…Ø§ØąÚŠØŒ PDF، ØŗŲØ§ØąØ´ÛŒâ€ŒØŗØ§Ø˛ÛŒ + + +home.PDFToBook.title=PDF Ø¨Ų‡ ÚŠØĒاب +home.PDFToBook.desc=ØĒØ¨Ø¯ÛŒŲ„ PDF Ø¨Ų‡ ŲØąŲ…ØĒâ€ŒŲ‡Ø§ÛŒ ÚŠØĒاب/ÚŠŲ…ÛŒÚŠ با Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ Calibre +PDFToBook.tags=ÚŠØĒاب، ÚŠŲ…ÛŒÚŠØŒ Calibre، ØĒØ¨Ø¯ÛŒŲ„ØŒ Ų…Ø§Ų†Ú¯Ø§ØŒ ØĸŲ…Ø§Ø˛ŲˆŲ†ØŒ ÚŠÛŒŲ†Ø¯Ų„ + +home.BookToPDF.title=ÚŠØĒاب Ø¨Ų‡ PDF +home.BookToPDF.desc=ØĒØ¨Ø¯ÛŒŲ„ ŲØąŲ…ØĒâ€ŒŲ‡Ø§ÛŒ ÚŠØĒاب/ÚŠŲ…ÛŒÚŠ Ø¨Ų‡ PDF با Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ Calibre +BookToPDF.tags=ÚŠØĒاب، ÚŠŲ…ÛŒÚŠØŒ Calibre، ØĒØ¨Ø¯ÛŒŲ„ØŒ Ų…Ø§Ų†Ú¯Ø§ØŒ ØĸŲ…Ø§Ø˛ŲˆŲ†ØŒ ÚŠÛŒŲ†Ø¯Ų„ + +home.removeImagePdf.title=Ø­Ø°Ų ØĒØĩŲˆÛŒØą +home.removeImagePdf.desc=Ø­Ø°Ų ØĒØĩØ§ŲˆÛŒØą Ø§Ø˛ PDF Ø¨ØąØ§ÛŒ ÚŠØ§Ų‡Ø´ Ø­ØŦŲ… ŲØ§ÛŒŲ„ +removeImagePdf.tags=Ø­Ø°Ų ØĒØĩŲˆÛŒØąØŒ ØšŲ…Ų„ÛŒØ§ØĒ ØĩŲØ­Ų‡ØŒ ØŗØąŲˆØą + + +home.splitPdfByChapters.title=ØĒŲ‚ØŗÛŒŲ… PDF Ø¨Øą Ø§ØŗØ§Øŗ ؁ØĩŲ„â€ŒŲ‡Ø§ +home.splitPdfByChapters.desc=ØĒŲ‚ØŗÛŒŲ… PDF Ø¨Ų‡ Ú†Ų†Ø¯ ŲØ§ÛŒŲ„ Ø¨Øą Ø§ØŗØ§Øŗ ØŗØ§ØŽØĒØ§Øą ؁ØĩŲ„â€ŒŲ‡Ø§ +splitPdfByChapters.tags=ØĒŲ‚ØŗÛŒŲ…ØŒ ؁ØĩŲ„â€ŒŲ‡Ø§ØŒ Ų†Ø´Ø§Ų†Ų‡â€ŒÚ¯Ø°Ø§ØąÛŒØŒ ØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ + +home.validateSignature.title=اؚØĒØ¨Ø§ØąØŗŲ†ØŦی Ø§Ų…Øļای PDF +home.validateSignature.desc=ØĒØŖÛŒÛŒØ¯ Ø§Ų…ØļØ§Ų‡Ø§ ؈ Ú¯ŲˆØ§Ų‡ÛŒâ€ŒŲ‡Ø§ÛŒ دیØŦیØĒØ§Ų„ Ø¯Øą Ø§ØŗŲ†Ø§Ø¯ PDF +validateSignature.tags=Ø§Ų…Øļا، ØĒØŖÛŒÛŒØ¯ØŒ اؚØĒØ¨Ø§ØąØŗŲ†ØŦی، PDF، Ú¯ŲˆØ§Ų‡ÛŒâ€ŒŲ†Ø§Ų…Ų‡ØŒ Ø§Ų…Øļای دیØŦیØĒØ§Ų„ + +#replace-invert-color +replace-color.title=ØŦØ§ÛŒÚ¯Ø˛ÛŒŲ†ÛŒ/Ų…ØšÚŠŲˆØŗ ÚŠØąØ¯Ų† ØąŲ†Ú¯ +replace-color.header=ØŦØ§ÛŒÚ¯Ø˛ÛŒŲ†ÛŒ/Ų…ØšÚŠŲˆØŗ ÚŠØąØ¯Ų† ØąŲ†Ú¯ PDF +home.replaceColorPdf.title=ØŦØ§ÛŒÚ¯Ø˛ÛŒŲ†ÛŒ ؈ Ų…ØšÚŠŲˆØŗ ÚŠØąØ¯Ų† ØąŲ†Ú¯ +home.replaceColorPdf.desc=ØŦØ§ÛŒÚ¯Ø˛ÛŒŲ†ÛŒ ØąŲ†Ú¯ Ų…ØĒŲ† ؈ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ Ø¯Øą PDF ؈ Ų…ØšÚŠŲˆØŗ ÚŠØąØ¯Ų† ÚŠŲ„ ØąŲ†Ú¯â€ŒŲ‡Ø§ Ø¨ØąØ§ÛŒ ÚŠØ§Ų‡Ø´ Ø­ØŦŲ… ŲØ§ÛŒŲ„ +replaceColorPdf.tags=ØŦØ§ÛŒÚ¯Ø˛ÛŒŲ†ÛŒ ØąŲ†Ú¯ØŒ ØšŲ…Ų„ÛŒØ§ØĒ ØĩŲØ­Ų‡ØŒ ØŗØąŲˆØą +replace-color.selectText.1=Ú¯Ø˛ÛŒŲ†Ų‡â€ŒŲ‡Ø§ÛŒ ØŦØ§ÛŒÚ¯Ø˛ÛŒŲ†ÛŒ یا Ų…ØšÚŠŲˆØŗ ÚŠØąØ¯Ų† ØąŲ†Ú¯ +replace-color.selectText.2=ŲžÛŒØ´â€ŒŲØąØļ (ØąŲ†Ú¯â€ŒŲ‡Ø§ÛŒ ŲžÛŒØ´â€ŒŲØąØļ با ÚŠŲ†ØĒØąØ§ØŗØĒ Ø¨Ø§Ų„Ø§) +replace-color.selectText.3=ØŗŲØ§ØąØ´ÛŒ (ØąŲ†Ú¯â€ŒŲ‡Ø§ÛŒ ØŗŲØ§ØąØ´ÛŒâ€ŒØŗØ§Ø˛ÛŒ Ø´Ø¯Ų‡) +replace-color.selectText.4=Ų…ØšÚŠŲˆØŗ ÚŠØ§Ų…Ų„ (Ų…ØšÚŠŲˆØŗ ÚŠØąØ¯Ų† ØĒŲ…Ø§Ų… ØąŲ†Ú¯â€ŒŲ‡Ø§) +replace-color.selectText.5=Ú¯Ø˛ÛŒŲ†Ų‡â€ŒŲ‡Ø§ÛŒ ØąŲ†Ú¯ با ÚŠŲ†ØĒØąØ§ØŗØĒ Ø¨Ø§Ų„Ø§ +replace-color.selectText.6=Ų…ØĒŲ† ØŗŲÛŒØ¯ ØąŲˆÛŒ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ ØŗÛŒØ§Ų‡ +replace-color.selectText.7=Ų…ØĒŲ† ØŗÛŒØ§Ų‡ ØąŲˆÛŒ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ ØŗŲÛŒØ¯ +replace-color.selectText.8=Ų…ØĒŲ† Ø˛ØąØ¯ ØąŲˆÛŒ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ ØŗÛŒØ§Ų‡ +replace-color.selectText.9=Ų…ØĒŲ† ØŗØ¨Ø˛ ØąŲˆÛŒ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ ØŗÛŒØ§Ų‡ +replace-color.selectText.10=Ø§Ų†ØĒ؎اب ØąŲ†Ú¯ Ų…ØĒŲ† +replace-color.selectText.11=Ø§Ų†ØĒ؎اب ØąŲ†Ú¯ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ +replace-color.submit=ØŦØ§ÛŒÚ¯Ø˛ÛŒŲ†ÛŒ + + + +########################### +# # +# WEB PAGES # +# # +########################### +#login +login.title=ŲˆØąŲˆØ¯ +login.header=ŲˆØąŲˆØ¯ +login.signin=ŲˆØąŲˆØ¯ +login.rememberme=Ų…ØąØ§ Ø¨Ų‡ ØŽØ§ØˇØą Ø¨ØŗŲžØ§Øą +login.invalid=Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ یا ØąŲ…Ø˛ ØšØ¨ŲˆØą اشØĒØ¨Ø§Ų‡ Ø§ØŗØĒ. +login.locked=Ø­ØŗØ§Ø¨ Ø´Ų…Ø§ ؂؁؄ Ø´Ø¯Ų‡ Ø§ØŗØĒ. +login.signinTitle=Ų„ØˇŲØ§Ų‹ ŲˆØ§ØąØ¯ Ø´ŲˆÛŒØ¯ +login.ssoSignIn=ŲˆØąŲˆØ¯ Ø§Ø˛ ØˇØąÛŒŲ‚ Single Sign-on +login.oauth2AutoCreateDisabled=ایØŦاد ØŽŲˆØ¯ÚŠØ§Øą ÚŠØ§ØąØ¨Øą با OAUTH2 ØēÛŒØąŲØšØ§Ų„ Ø§ØŗØĒ +login.oauth2AdminBlockedUser=ØĢبØĒâ€ŒŲ†Ø§Ų… یا ŲˆØąŲˆØ¯ ÚŠØ§ØąØ¨ØąØ§Ų† ØĢبØĒâ€ŒŲ†Ø´Ø¯Ų‡ Ø¯Øą Ø­Ø§Ų„ حاØļØą Ų…ØŗØ¯ŲˆØ¯ Ø§ØŗØĒ. Ų„ØˇŲØ§Ų‹ با Ų…Ø¯ÛŒØą ØĒŲ…Ø§Øŗ Ø¨Ú¯ÛŒØąÛŒØ¯. +login.oauth2RequestNotFound=Ø¯ØąØŽŲˆØ§ØŗØĒ Ø§Ø­ØąØ§Ø˛ Ų‡ŲˆÛŒØĒ ŲžÛŒØ¯Ø§ Ų†Ø´Ø¯ +login.oauth2InvalidUserInfoResponse=ŲžØ§ØŗØŽ Ø§ØˇŲ„Ø§ØšØ§ØĒ ÚŠØ§ØąØ¨ØąÛŒ Ų†Ø§Ų…ØšØĒØ¨Øą Ø§ØŗØĒ +login.oauth2invalidRequest=Ø¯ØąØŽŲˆØ§ØŗØĒ Ų†Ø§Ų…ØšØĒØ¨Øą +login.oauth2AccessDenied=Ø¯ØŗØĒØąØŗÛŒ Ų…Ų…Ų†ŲˆØš +login.oauth2InvalidTokenResponse=ŲžØ§ØŗØŽ ØĒŲˆÚŠŲ† Ų†Ø§Ų…ØšØĒØ¨Øą Ø§ØŗØĒ +login.oauth2InvalidIdToken=ØĒŲˆÚŠŲ† Ø´Ų†Ø§ØŗŲ‡ Ų†Ø§Ų…ØšØĒØ¨Øą Ø§ØŗØĒ +login.relyingPartyRegistrationNotFound=No relying party registration found +login.userIsDisabled=ÚŠØ§ØąØ¨Øą ØēÛŒØąŲØšØ§Ų„ Ø´Ø¯Ų‡ Ø§ØŗØĒ، ŲˆØąŲˆØ¯ با Ø§ÛŒŲ† Ų†Ø§Ų… ÚŠØ§ØąØ¨ØąÛŒ Ø¯Øą Ø­Ø§Ų„ حاØļØą Ų…ØŗØ¯ŲˆØ¯ Ø§ØŗØĒ. Ų„ØˇŲØ§Ų‹ با Ų…Ø¯ÛŒØą ØĒŲ…Ø§Øŗ Ø¨Ú¯ÛŒØąÛŒØ¯. +login.alreadyLoggedIn=Ø´Ų…Ø§ Ų‚Ø¨Ų„Ø§Ų‹ ŲˆØ§ØąØ¯ Ø´Ø¯Ų‡â€ŒØ§ÛŒØ¯ Ø¯Øą +login.alreadyLoggedIn2=Ø¯ØŗØĒÚ¯Ø§Ų‡â€ŒŲ‡Ø§. Ų„ØˇŲØ§Ų‹ Ø§Ø˛ Ø¯ØŗØĒÚ¯Ø§Ų‡â€ŒŲ‡Ø§ ØŽØ§ØąØŦ Ø´Ø¯Ų‡ ؈ Ø¯ŲˆØ¨Ø§ØąŲ‡ ØĒŲ„Ø§Ø´ ÚŠŲ†ÛŒØ¯. +login.toManySessions=Ø´Ų…Ø§ ØĒؚداد Ø˛ÛŒØ§Ø¯ÛŒ Ų†Ø´ØŗØĒ ŲØšØ§Ų„ Ø¯Ø§ØąÛŒØ¯. + +#auto-redact +autoRedact.title=ØŗØ§Ų†ØŗŲˆØą ØŽŲˆØ¯ÚŠØ§Øą +autoRedact.header=ØŗØ§Ų†ØŗŲˆØą ØŽŲˆØ¯ÚŠØ§Øą +autoRedact.colorLabel=ØąŲ†Ú¯ +autoRedact.textsToRedactLabel=Ų…ØĒŲ† Ø¨ØąØ§ÛŒ ØŗØ§Ų†ØŗŲˆØą (Ų‡Øą ØŽØˇ ØŦØ¯Ø§Ú¯Ø§Ų†Ų‡) +autoRedact.textsToRedactPlaceholder=Ų…ØĢØ§Ų„: \nŲ…Ø­ØąŲ…Ø§Ų†Ų‡ \nŲŲˆŲ‚â€ŒØŗØąÛŒ +autoRedact.useRegexLabel=Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ Regex +autoRedact.wholeWordSearchLabel=ØŦØŗØĒØŦŲˆÛŒ ÚŠŲ„Ų…Ų‡ ÚŠØ§Ų…Ų„ +autoRedact.customPaddingLabel=Ø§ŲØ˛ŲˆØ¯Ų† ŲØ§ØĩŲ„Ų‡ اØļØ§ŲÛŒ +autoRedact.convertPDFToImageLabel=ØĒØ¨Ø¯ÛŒŲ„ PDF Ø¨Ų‡ PDF-ØĒØĩŲˆÛŒØą (Ø¨ØąØ§ÛŒ Ø­Ø°Ų Ų…ØĒŲ† ŲžØ´ØĒ ØŦØšØ¨Ų‡ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒØ´ŲˆØ¯) +autoRedact.submitButton=Ø§ØąØŗØ§Ų„ + +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color + +#showJS +showJS.title=Ų†Ų…Ø§ÛŒØ´ ØŦØ§ŲˆØ§Ø§ØŗÚŠØąÛŒŲžØĒ +showJS.header=Ų†Ų…Ø§ÛŒØ´ ØŦØ§ŲˆØ§Ø§ØŗÚŠØąÛŒŲžØĒ +showJS.downloadJS=Ø¯Ø§Ų†Ų„ŲˆØ¯ ØŦØ§ŲˆØ§Ø§ØŗÚŠØąÛŒŲžØĒ +showJS.submit=Ų†Ų…Ø§ÛŒØ´ + + +#pdfToSinglePage +pdfToSinglePage.title=PDF Ø¨Ų‡ یڊ ØĩŲØ­Ų‡ +pdfToSinglePage.header=PDF Ø¨Ų‡ یڊ ØĩŲØ­Ų‡ +pdfToSinglePage.submit=ØĒØ¨Ø¯ÛŒŲ„ Ø¨Ų‡ یڊ ØĩŲØ­Ų‡ + + +#pageExtracter +pageExtracter.title=Ø§ØŗØĒØŽØąØ§ØŦ ØĩŲØ­Ø§ØĒ +pageExtracter.header=Ø§ØŗØĒØŽØąØ§ØŦ ØĩŲØ­Ø§ØĒ +pageExtracter.submit=Ø§ØŗØĒØŽØąØ§ØŦ +pageExtracter.placeholder=(Ų…ØĢØ§Ų„: 1,2,8 یا 4,7,12-16 یا 2n-1) + + +#getPdfInfo +getPdfInfo.title=Ø§ØˇŲ„Ø§ØšØ§ØĒ PDF ØąØ§ Ø¯ØąÛŒØ§ŲØĒ ÚŠŲ†ÛŒØ¯ +getPdfInfo.header=Ø§ØˇŲ„Ø§ØšØ§ØĒ PDF ØąØ§ Ø¯ØąÛŒØ§ŲØĒ ÚŠŲ†ÛŒØ¯ +getPdfInfo.submit=Ø¯ØąÛŒØ§ŲØĒ Ø§ØˇŲ„Ø§ØšØ§ØĒ +getPdfInfo.downloadJson=Ø¯Ø§Ų†Ų„ŲˆØ¯ JSON + + +#markdown-to-pdf +MarkdownToPDF.title=Markdown Ø¨Ų‡ PDF +MarkdownToPDF.header=Markdown Ø¨Ų‡ PDF +MarkdownToPDF.submit=ØĒØ¨Ø¯ÛŒŲ„ +MarkdownToPDF.help=Ø¯Øą Ø­Ø§Ų„ ŲžÛŒØ´ØąŲØĒ +MarkdownToPDF.credit=Ø§Ø˛ WeasyPrint Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯ + + + +#url-to-pdf +URLToPDF.title=URL Ø¨Ų‡ PDF +URLToPDF.header=URL Ø¨Ų‡ PDF +URLToPDF.submit=ØĒØ¨Ø¯ÛŒŲ„ +URLToPDF.credit=Ø§Ø˛ WeasyPrint Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯ + + +#html-to-pdf +HTMLToPDF.title=HTML Ø¨Ų‡ PDF +HTMLToPDF.header=HTML Ø¨Ų‡ PDF +HTMLToPDF.help=ŲžØ°ÛŒØąØ´ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ HTML ؈ ZIP Ø´Ø§Ų…Ų„ html/css/ØĒØĩØ§ŲˆÛŒØą ؈ ØēÛŒØąŲ‡ +HTMLToPDF.submit=ØĒØ¨Ø¯ÛŒŲ„ +HTMLToPDF.credit=Ø§Ø˛ WeasyPrint Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯ +HTMLToPDF.zoom=ØŗØˇØ­ Ø¨Ø˛ØąÚ¯Ų†Ų…Ø§ÛŒÛŒ Ø¨ØąØ§ÛŒ Ų†Ų…Ø§ÛŒØ´ ŲˆØ¨â€ŒØŗØ§ÛŒØĒ. +HTMLToPDF.pageWidth=ØšØąØļ ØĩŲØ­Ų‡ Ø¨Ų‡ ØŗØ§Ų†ØĒÛŒâ€ŒŲ…ØĒØą. (ØŽØ§Ų„ÛŒ Ø¨ØąØ§ÛŒ ŲžÛŒØ´â€ŒŲØąØļ) +HTMLToPDF.pageHeight=Ø§ØąØĒŲØ§Øš ØĩŲØ­Ų‡ Ø¨Ų‡ ØŗØ§Ų†ØĒÛŒâ€ŒŲ…ØĒØą. (ØŽØ§Ų„ÛŒ Ø¨ØąØ§ÛŒ ŲžÛŒØ´â€ŒŲØąØļ) +HTMLToPDF.marginTop=Ø­Ø§Ø´ÛŒŲ‡ Ø¨Ø§Ų„Ø§ Ø¨Ų‡ Ų…ÛŒŲ„ÛŒâ€ŒŲ…ØĒØą. (ØŽØ§Ų„ÛŒ Ø¨ØąØ§ÛŒ ŲžÛŒØ´â€ŒŲØąØļ) +HTMLToPDF.marginBottom=Ø­Ø§Ø´ÛŒŲ‡ ŲžØ§ÛŒÛŒŲ† Ø¨Ų‡ Ų…ÛŒŲ„ÛŒâ€ŒŲ…ØĒØą. (ØŽØ§Ų„ÛŒ Ø¨ØąØ§ÛŒ ŲžÛŒØ´â€ŒŲØąØļ) +HTMLToPDF.marginLeft=Ø­Ø§Ø´ÛŒŲ‡ Ú†Ųž Ø¨Ų‡ Ų…ÛŒŲ„ÛŒâ€ŒŲ…ØĒØą. (ØŽØ§Ų„ÛŒ Ø¨ØąØ§ÛŒ ŲžÛŒØ´â€ŒŲØąØļ) +HTMLToPDF.marginRight=Ø­Ø§Ø´ÛŒŲ‡ ØąØ§ØŗØĒ Ø¨Ų‡ Ų…ÛŒŲ„ÛŒâ€ŒŲ…ØĒØą. (ØŽØ§Ų„ÛŒ Ø¨ØąØ§ÛŒ ŲžÛŒØ´â€ŒŲØąØļ) +HTMLToPDF.printBackground=Ų†Ų…Ø§ÛŒØ´ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ ŲˆØ¨â€ŒØŗØ§ÛŒØĒâ€ŒŲ‡Ø§. +HTMLToPDF.defaultHeader=ŲØšØ§Ų„ ÚŠØąØ¯Ų† Ų‡Ø¯Øą ŲžÛŒØ´â€ŒŲØąØļ (Ų†Ø§Ų… ؈ Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ų‡) +HTMLToPDF.cssMediaType=ØĒØēÛŒÛŒØą Ų†ŲˆØš ØąØŗØ§Ų†Ų‡ CSS ØĩŲØ­Ų‡. +HTMLToPDF.none=Ų‡ÛŒÚ†â€ŒÚŠØ¯Ø§Ų… +HTMLToPDF.print=Ú†Ø§Ųž +HTMLToPDF.screen=Ų†Ų…Ø§ÛŒØ´Ú¯Øą + + +#AddStampRequest +AddStampRequest.header=Ų…Ų‡Øą Ø˛Ø¯Ų† Ø¨Ų‡ PDF +AddStampRequest.title=Ų…Ų‡Øą Ø˛Ø¯Ų† Ø¨Ų‡ PDF +AddStampRequest.stampType=Ų†ŲˆØš Ų…Ų‡Øą +AddStampRequest.stampText=Ų…ØĒŲ† Ų…Ų‡Øą +AddStampRequest.stampImage=ØĒØĩŲˆÛŒØą Ų…Ų‡Øą +AddStampRequest.alphabet=Ø§Ų„ŲØ¨Ø§ +AddStampRequest.fontSize=Ø§Ų†Ø¯Ø§Ø˛Ų‡ ŲŲˆŲ†ØĒ/ØĒØĩŲˆÛŒØą +AddStampRequest.rotation=Ú†ØąØŽØ´ +AddStampRequest.opacity=Ø´ŲØ§ŲÛŒØĒ +AddStampRequest.position=Ų…ŲˆŲ‚ØšÛŒØĒ +AddStampRequest.overrideX=ØĒØēÛŒÛŒØą Ų…ØŽØĒØĩاØĒ X +AddStampRequest.overrideY=ØĒØēÛŒÛŒØą Ų…ØŽØĒØĩاØĒ Y +AddStampRequest.customMargin=Ø­Ø§Ø´ÛŒŲ‡ ØŗŲØ§ØąØ´ÛŒ +AddStampRequest.customColor=ØąŲ†Ú¯ Ų…ØĒŲ† ØŗŲØ§ØąØ´ÛŒ +AddStampRequest.submit=Ø§ØąØŗØ§Ų„ + + +#sanitizePDF +sanitizePDF.title=ŲžØ§ÚŠØŗØ§Ø˛ÛŒ PDF +sanitizePDF.header=ŲžØ§ÚŠØŗØ§Ø˛ÛŒ یڊ ŲØ§ÛŒŲ„ PDF +sanitizePDF.selectText.1=Ø­Ø°Ų ØšŲ…Ų„ÛŒØ§ØĒ ØŦØ§ŲˆØ§Ø§ØŗÚŠØąÛŒŲžØĒ +sanitizePDF.selectText.2=Ø­Ø°Ų ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ ØŦØ§ØŗØ§Ø˛ÛŒ Ø´Ø¯Ų‡ +sanitizePDF.selectText.3=Ø­Ø°Ų Ų…ØĒØ§Ø¯Ø§Ø¯Ų‡â€ŒŲ‡Ø§ +sanitizePDF.selectText.4=Ø­Ø°Ų Ų„ÛŒŲ†ÚŠâ€ŒŲ‡Ø§ +sanitizePDF.selectText.5=Ø­Ø°Ų ŲŲˆŲ†ØĒâ€ŒŲ‡Ø§ +sanitizePDF.submit=ŲžØ§ÚŠØŗØ§Ø˛ÛŒ PDF + + +#addPageNumbers +addPageNumbers.title=Ø§ŲØ˛ŲˆØ¯Ų† Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ø§ØĒ +addPageNumbers.header=Ø§ŲØ˛ŲˆØ¯Ų† Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ø§ØĒ +addPageNumbers.selectText.1=Ø§Ų†ØĒ؎اب ŲØ§ÛŒŲ„ PDF: +addPageNumbers.selectText.2=Ø§Ų†Ø¯Ø§Ø˛Ų‡ Ø­Ø§Ø´ÛŒŲ‡ +addPageNumbers.selectText.3=Ų…ŲˆŲ‚ØšÛŒØĒ +addPageNumbers.selectText.4=Ø´Ų…Ø§ØąŲ‡ Ø´ØąŲˆØš +addPageNumbers.selectText.5=ØĩŲØ­Ø§ØĒ Ø¨ØąØ§ÛŒ Ø´Ų…Ø§ØąŲ‡â€ŒÚ¯Ø°Ø§ØąÛŒ +addPageNumbers.selectText.6=Ų…ØĒŲ† ØŗŲØ§ØąØ´ÛŒ +addPageNumbers.customTextDesc=Ų…ØĒŲ† ØŗŲØ§ØąØ´ÛŒ +addPageNumbers.numberPagesDesc=ÚŠØ¯Ø§Ų… ØĩŲØ­Ø§ØĒ Ø´Ų…Ø§ØąŲ‡â€ŒÚ¯Ø°Ø§ØąÛŒ Ø´ŲˆŲ†Ø¯ØŒ ŲžÛŒØ´â€ŒŲØąØļ 'Ų‡Ų…Ų‡'، Ų‡Ų…Ú†Ų†ÛŒŲ† Ų…ÛŒâ€ŒØĒŲˆØ§Ų†ÛŒØ¯ 1-5 یا 2,5,9 ØąØ§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯. +addPageNumbers.customNumberDesc=Ø¨Ų‡â€ŒØˇŲˆØą ŲžÛŒØ´â€ŒŲØąØļ {n}، Ų‡Ų…Ú†Ų†ÛŒŲ† Ų…ÛŒâ€ŒØĒŲˆØ§Ų†ÛŒØ¯ 'ØĩŲØ­Ų‡ {n} Ø§Ø˛ {total}'، 'Ų…ØĒŲ†-{n}'، '{filename}-{n}' ØąØ§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯. +addPageNumbers.submit=اØļØ§ŲŲ‡ ÚŠØąØ¯Ų† Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ø§ØĒ + + +#auto-rename +auto-rename.title=ØĒØēÛŒÛŒØą Ų†Ø§Ų… ØŽŲˆØ¯ÚŠØ§Øą +auto-rename.header=ØĒØēÛŒÛŒØą Ų†Ø§Ų… ØŽŲˆØ¯ÚŠØ§Øą PDF +auto-rename.submit=ØĒØēÛŒÛŒØą Ų†Ø§Ų… ØŽŲˆØ¯ÚŠØ§Øą + + +#adjustContrast +adjustContrast.title=ØĒŲ†Ø¸ÛŒŲ… ÚŠŲ†ØĒØąØ§ØŗØĒ +adjustContrast.header=ØĒŲ†Ø¸ÛŒŲ… ÚŠŲ†ØĒØąØ§ØŗØĒ +adjustContrast.contrast=ÚŠŲ†ØĒØąØ§ØŗØĒ: +adjustContrast.brightness=ØąŲˆØ´Ų†Ø§ÛŒÛŒ: +adjustContrast.saturation=اشباؚ: +adjustContrast.download=Ø¯Ø§Ų†Ų„ŲˆØ¯ + + +#crop +crop.title=Ø¨ØąØ´ Ø¯Ø§Ø¯Ų† +crop.header=Ø¨ØąØ´ PDF +crop.submit=Ø§ØąØŗØ§Ų„ + + +#autoSplitPDF +autoSplitPDF.title=ØŦدا ØŗØ§Ø˛ÛŒ ØŽŲˆØ¯ÚŠØ§Øą PDF +autoSplitPDF.header=ØŦدا ØŗØ§Ø˛ÛŒ ØŽŲˆØ¯ÚŠØ§Øą PDF +autoSplitPDF.description=Ú†Ø§ŲžØŒ Ø¯ØąØŦ، Ø§ØŗÚŠŲ†ØŒ Ø¨Ø§ØąÚ¯Ø°Ø§ØąÛŒ ؈ Ø¨Ú¯Ø°Ø§ØąÛŒØ¯ Ø§ØŗŲ†Ø§Ø¯ Ø´Ų…Ø§ Ø¨Ų‡ ØĩŲˆØąØĒ ØŽŲˆØ¯ÚŠØ§Øą ØŦدا Ø´ŲˆŲ†Ø¯. Ų†ÛŒØ§Ø˛ÛŒ Ø¨Ų‡ Ų…ØąØĒØ¨â€ŒØŗØ§Ø˛ÛŒ Ø¯ØŗØĒی Ų†ÛŒØŗØĒ. +autoSplitPDF.selectText.1=Ø§Ø˛ Ø˛ÛŒØą Ø¨ØąÚ¯Ų‡â€ŒŲ‡Ø§ÛŒ Ų…ŲˆŲ‚ØĒ ŲžØąÛŒŲ†ØĒ ÚŠŲ†ÛŒØ¯ (ØŗÛŒØ§Ų‡ ؈ ØŗŲÛŒØ¯ ÚŠØ§ŲÛŒ Ø§ØŗØĒ). +autoSplitPDF.selectText.2=Ų‡Ų…Ų‡ Ų…Ø¯Ø§ØąÚŠ ØŽŲˆØ¯ ØąØ§ با Ų‚ØąØ§Øą Ø¯Ø§Ø¯Ų† Ø¨ØąÚ¯Ų‡â€ŒŲ‡Ø§ÛŒ Ų…ŲˆŲ‚ØĒ Ø¨ÛŒŲ† ØĸŲ†Ų‡Ø§ یڊØŦا Ø§ØŗÚŠŲ† ÚŠŲ†ÛŒØ¯. +autoSplitPDF.selectText.3=ŲØ§ÛŒŲ„ PDF Ø¨Ø˛ØąÚ¯ Ø§ØŗÚŠŲ† Ø´Ø¯Ų‡ ØąØ§ Ø¨Ø§ØąÚ¯Ø°Ø§ØąÛŒ ÚŠŲ†ÛŒØ¯ ؈ Ø¨Ú¯Ø°Ø§ØąÛŒØ¯ Stirling PDF Ø¨Ų‚ÛŒŲ‡ ÚŠØ§Øą ØąØ§ Ø§Ų†ØŦØ§Ų… Ø¯Ų‡Ø¯. +autoSplitPDF.selectText.4=ØĩŲØ­Ø§ØĒ ØŦØ¯Ø§ÚŠŲ†Ų†Ø¯Ų‡ Ø¨Ų‡ ØˇŲˆØą ØŽŲˆØ¯ÚŠØ§Øą ØĒØ´ØŽÛŒØĩ Ø¯Ø§Ø¯Ų‡ ؈ Ø­Ø°Ų Ų…ÛŒâ€ŒØ´ŲˆŲ†Ø¯ØŒ ØĒØļŲ…ÛŒŲ†â€ŒÚŠŲ†Ų†Ø¯Ų‡ یڊ ØŗŲ†Ø¯ Ų†Ų‡Ø§ÛŒÛŒ Ų…Ų†Ø¸Ų…. +autoSplitPDF.formPrompt=PDF Ø­Ø§ŲˆÛŒ ØŦØ¯Ø§ÚŠŲ†Ų†Ø¯Ų‡â€ŒŲ‡Ø§ÛŒ Stirling-PDF ØąØ§ Ø§ØąØŗØ§Ų„ ÚŠŲ†ÛŒØ¯: +autoSplitPDF.duplexMode=Ø­Ø§Ų„ØĒ Ø¯ŲˆØ¨Ų„ÚŠØŗ (Ø§ØŗÚŠŲ† ØŦŲ„Ųˆ ؈ ØšŲ‚Ø¨) +autoSplitPDF.dividerDownload1=Ø¯Ø§Ų†Ų„ŲˆØ¯ 'Auto Splitter Divider (minimal).pdf' +autoSplitPDF.dividerDownload2=Ø¯Ø§Ų†Ų„ŲˆØ¯ 'Auto Splitter Divider (with instructions).pdf' +autoSplitPDF.submit=Ø§ØąØŗØ§Ų„ + + +#pipeline +pipeline.title=ØŽØˇ Ų„ŲˆŲ„Ų‡ + + +#pageLayout +pageLayout.title=ØˇØąØ­â€ŒØ¨Ų†Ø¯ÛŒ Ú†Ų†Ø¯ ØĩŲØ­Ų‡â€ŒØ§ÛŒ +pageLayout.header=ØˇØąØ­â€ŒØ¨Ų†Ø¯ÛŒ Ú†Ų†Ø¯ ØĩŲØ­Ų‡â€ŒØ§ÛŒ +pageLayout.pagesPerSheet=ØĩŲØ­Ø§ØĒ Ø¯Øą Ų‡Øą شیØĒ: +pageLayout.addBorder=اØļØ§ŲŲ‡ ÚŠØąØ¯Ų† Ų…ØąØ˛Ų‡Ø§ +pageLayout.submit=Ø§ØąØŗØ§Ų„ + + +#scalePages +scalePages.title=ØĒŲ†Ø¸ÛŒŲ… Ų…Ų‚ÛŒØ§Øŗ ØĩŲØ­Ų‡ +scalePages.header=ØĒŲ†Ø¸ÛŒŲ… Ų…Ų‚ÛŒØ§Øŗ ØĩŲØ­Ų‡ +scalePages.pageSize=Ø§Ų†Ø¯Ø§Ø˛Ų‡ ØĩŲØ­Ų‡ ØŗŲ†Ø¯. +scalePages.keepPageSize=Ø§Ų†Ø¯Ø§Ø˛Ų‡ اØĩŲ„ÛŒ +scalePages.scaleFactor=ØŗØˇØ­ Ø˛ŲˆŲ… (Ø¨ØąØ´) یڊ ØĩŲØ­Ų‡. +scalePages.submit=Ø§ØąØŗØ§Ų„ + + +#certSign +certSign.title=Ø§Ų…Øļای Ú¯ŲˆØ§Ų‡ÛŒ +certSign.header=Ø§Ų…Øļا ÚŠØąØ¯Ų† PDF با Ú¯ŲˆØ§Ų‡ÛŒ ØŽŲˆØ¯ (Ø¯Øą Ø­Ø§Ų„ ŲžÛŒØ´ØąŲØĒ) +certSign.selectPDF=Ø§Ų†ØĒ؎اب ŲØ§ÛŒŲ„ PDF Ø¨ØąØ§ÛŒ Ø§Ų…Øļا: +certSign.jksNote=یادداشØĒ: Ø§Ú¯Øą Ų†ŲˆØš Ú¯ŲˆØ§Ų‡ÛŒ Ø´Ų…Ø§ Ø¯Øą Ø˛ÛŒØą Ø°ÚŠØą Ų†Ø´Ø¯Ų‡ Ø§ØŗØĒ، Ų„ØˇŲØ§Ų‹ ØĸŲ† ØąØ§ Ø¨Ų‡ یڊ ŲØ§ÛŒŲ„ Java Keystore (.jks) با Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ Ø§Ø¨Ø˛Ø§Øą ØŽØˇ ŲØąŲ…Ø§Ų† keytool ØĒØ¨Ø¯ÛŒŲ„ ÚŠŲ†ÛŒØ¯. ØŗŲžØŗØŒ Ú¯Ø˛ÛŒŲ†Ų‡ ŲØ§ÛŒŲ„ .jks ØąØ§ Ø¯Øą Ø˛ÛŒØą Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯. +certSign.selectKey=ŲØ§ÛŒŲ„ ÚŠŲ„ÛŒØ¯ ØŽØĩ؈Øĩی ØŽŲˆØ¯ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ (ŲØąŲ…ØĒ PKCS#8، Ų…ÛŒâ€ŒØĒŲˆØ§Ų†Ø¯ .pem یا .der باشد): +certSign.selectCert=ŲØ§ÛŒŲ„ Ú¯ŲˆØ§Ų‡ÛŒ ØŽŲˆØ¯ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ (ŲØąŲ…ØĒ X.509، Ų…ÛŒâ€ŒØĒŲˆØ§Ų†Ø¯ .pem یا .der باشد): +certSign.selectP12=ŲØ§ÛŒŲ„ Keystore PKCS#12 ØŽŲˆØ¯ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ (.p12 یا .pfx) (ا؎ØĒÛŒØ§ØąÛŒØŒ Ø¯Øą ØĩŲˆØąØĒ Ø§ØąØ§ØĻŲ‡ØŒ باید Ø´Ø§Ų…Ų„ ÚŠŲ„ÛŒØ¯ ØŽØĩ؈Øĩی ؈ Ú¯ŲˆØ§Ų‡ÛŒ Ø´Ų…Ø§ باشد): +certSign.selectJKS=ŲØ§ÛŒŲ„ Java Keystore ØŽŲˆØ¯ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ (.jks یا .keystore): +certSign.certType=Ų†ŲˆØš Ú¯ŲˆØ§Ų‡ÛŒ +certSign.password=ØąŲ…Ø˛ ØšØ¨ŲˆØą Keystore یا ÚŠŲ„ÛŒØ¯ ØŽØĩ؈Øĩی ØŽŲˆØ¯ ØąØ§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ (Ø¯Øą ØĩŲˆØąØĒ ؈ØŦŲˆØ¯): +certSign.showSig=Ų†Ų…Ø§ÛŒØ´ Ø§Ų…Øļا +certSign.reason=Ø¯Ų„ÛŒŲ„ +certSign.location=Ų…ŲˆŲ‚ØšÛŒØĒ +certSign.name=Ų†Ø§Ų… +certSign.showLogo=Ų†Ų…Ø§ÛŒØ´ Ų„ŲˆÚ¯Ųˆ +certSign.submit=Ø§Ų…Øļا ÚŠØąØ¯Ų† PDF + + +#removeCertSign +removeCertSign.title=Ø­Ø°Ų Ø§Ų…Øļای Ú¯ŲˆØ§Ų‡ÛŒ +removeCertSign.header=Ø­Ø°Ų Ú¯ŲˆØ§Ų‡ÛŒ دیØŦیØĒØ§Ų„ Ø§Ø˛ PDF +removeCertSign.selectPDF=یڊ ŲØ§ÛŒŲ„ PDF ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯: +removeCertSign.submit=Ø­Ø°Ų Ø§Ų…Øļا + + +#removeBlanks +removeBlanks.title=Ø­Ø°Ų ØĩŲØ­Ø§ØĒ ØŽØ§Ų„ÛŒ +removeBlanks.header=Ø­Ø°Ų ØĩŲØ­Ø§ØĒ ØŽØ§Ų„ÛŒ +removeBlanks.threshold=ØĸØŗØĒØ§Ų†Ų‡ ØŗŲÛŒØ¯ÛŒ ŲžÛŒÚŠØŗŲ„: +removeBlanks.thresholdDesc=ØĸØŗØĒØ§Ų†Ų‡â€ŒØ§ÛŒ ÚŠŲ‡ ØĒØšÛŒÛŒŲ† Ų…ÛŒâ€ŒÚŠŲ†Ø¯ ŲžÛŒÚŠØŗŲ„ Ú†Ų‚Ø¯Øą باید ØŗŲÛŒØ¯ باشد ØĒا Ø¨Ų‡ ØšŲ†ŲˆØ§Ų† 'ØŗŲÛŒØ¯' Ø´Ų†Ø§ØŽØĒŲ‡ Ø´ŲˆØ¯. 0 = ØŗÛŒØ§Ų‡ØŒ 255 ÚŠØ§Ų…Ų„Ø§Ų‹ ØŗŲÛŒØ¯. +removeBlanks.whitePercent=Ø¯ØąØĩد ØŗŲÛŒØ¯ÛŒ (%): +removeBlanks.whitePercentDesc=Ø¯ØąØĩد ØĩŲØ­Ų‡â€ŒØ§ÛŒ ÚŠŲ‡ باید ŲžÛŒÚŠØŗŲ„â€ŒŲ‡Ø§ÛŒ 'ØŗŲÛŒØ¯' باشد Ø¨ØąØ§ÛŒ Ø­Ø°Ų +removeBlanks.submit=Ø­Ø°Ų ØĩŲØ­Ø§ØĒ ØŽØ§Ų„ÛŒ + + +#removeAnnotations +removeAnnotations.title=Ø­Ø°Ų ØĒ؈ØļیحاØĒ +removeAnnotations.header=Ø­Ø°Ų ØĒ؈ØļیحاØĒ +removeAnnotations.submit=Ø­Ø°Ų + + +#compare +compare.title=Ų…Ų‚Ø§ÛŒØŗŲ‡ +compare.header=Ų…Ų‚Ø§ÛŒØŗŲ‡ PDFŲ‡Ø§ +compare.highlightColor.1=ØąŲ†Ú¯ Ø¨ØąØŦØŗØĒŲ‡ Ûą: +compare.highlightColor.2=ØąŲ†Ú¯ Ø¨ØąØŦØŗØĒŲ‡ Û˛: +compare.document.1=ØŗŲ†Ø¯ Ûą +compare.document.2=ØŗŲ†Ø¯ Û˛ +compare.submit=Ų…Ų‚Ø§ÛŒØŗŲ‡ +compare.complex.message=یڊی یا Ų‡Øą Ø¯Ųˆ Ø§Ø˛ Ø§ØŗŲ†Ø§Ø¯ Ø§ØąØ§ØĻŲ‡ Ø´Ø¯Ų‡ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ Ø¨Ø˛ØąÚ¯ÛŒ Ų‡ØŗØĒŲ†Ø¯ØŒ Ø¯Ų‚ØĒ Ų…Ų‚Ø§ÛŒØŗŲ‡ Ų…Ų…ÚŠŲ† Ø§ØŗØĒ ÚŠØ§Ų‡Ø´ یابد +compare.large.file.message=یڊی یا Ų‡Øą Ø¯Ųˆ Ø§Ø˛ Ø§ØŗŲ†Ø§Ø¯ Ø§ØąØ§ØĻŲ‡ Ø´Ø¯Ų‡ Ø¨ØąØ§ÛŒ ŲžØąØ¯Ø§Ø˛Ø´ Ø¨ØŗÛŒØ§Øą Ø¨Ø˛ØąÚ¯ Ų‡ØŗØĒŲ†Ø¯ +compare.no.text.message=یڊی یا Ų‡Øą Ø¯Ųˆ Ø§Ø˛ PDFŲ‡Ø§ÛŒ Ø§Ų†ØĒ؎اب Ø´Ø¯Ų‡ Ų…Ø­ØĒŲˆØ§ÛŒ Ų…ØĒŲ†ÛŒ Ų†Ø¯Ø§ØąŲ†Ø¯. Ų„ØˇŲØ§Ų‹ PDFŲ‡Ø§ÛŒÛŒ با Ų…ØĒŲ† Ø¨ØąØ§ÛŒ Ų…Ų‚Ø§ÛŒØŗŲ‡ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯. + +#BookToPDF +BookToPDF.title=ÚŠØĒØ§Ø¨â€ŒŲ‡Ø§ ؈ ÚŠŲ…ÛŒÚŠâ€ŒŲ‡Ø§ Ø¨Ų‡ PDF +BookToPDF.header=ÚŠØĒاب Ø¨Ų‡ PDF +BookToPDF.credit=Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ ÚŠØ§Ų„Ø¨Øą +BookToPDF.submit=ØĒØ¨Ø¯ÛŒŲ„ + +#PDFToBook +PDFToBook.title=PDF Ø¨Ų‡ ÚŠØĒاب +PDFToBook.header=PDF Ø¨Ų‡ ÚŠØĒاب +PDFToBook.selectText.1=ŲØąŲ…ØĒ +PDFToBook.credit=Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ ÚŠØ§Ų„Ø¨Øą +PDFToBook.submit=ØĒØ¨Ø¯ÛŒŲ„ + +#sign +sign.title=Ø§Ų…Øļا +sign.header=Ø§Ų…Øļای PDFŲ‡Ø§ +sign.upload=Ø¨Ø§ØąÚ¯Ø°Ø§ØąÛŒ ØĒØĩŲˆÛŒØą +sign.draw=ÚŠØ´ÛŒØ¯Ų† Ø§Ų…Øļا +sign.text=ŲˆØąŲˆØ¯ÛŒ Ų…ØĒŲ† +sign.clear=ŲžØ§ÚŠ ÚŠØąØ¯Ų† +sign.add=اØļØ§ŲŲ‡ ÚŠØąØ¯Ų† +sign.saved=Ø§Ų…ØļØ§Ų‡Ø§ÛŒ Ø°ØŽÛŒØąŲ‡â€ŒØ´Ø¯Ų‡ +sign.save=Ø°ØŽÛŒØąŲ‡ Ø§Ų…Øļا +sign.personalSigs=Ø§Ų…ØļØ§Ų‡Ø§ÛŒ Ø´ØŽØĩی +sign.sharedSigs=Ø§Ų…ØļØ§Ų‡Ø§ÛŒ Ø¨Ų‡ اشØĒØąØ§ÚŠ گذاشØĒŲ‡â€ŒØ´Ø¯Ų‡ +sign.noSavedSigs=Ų‡ÛŒÚ† Ø§Ų…Øļای Ø°ØŽÛŒØąŲ‡â€ŒØ´Ø¯Ų‡â€ŒØ§ÛŒ ÛŒØ§ŲØĒ Ų†Ø´Ø¯ +sign.addToAll=اØļØ§ŲŲ‡ ÚŠØąØ¯Ų† Ø¨Ų‡ Ų‡Ų…Ų‡ ØĩŲØ­Ø§ØĒ +sign.delete=Ø­Ø°Ų +sign.first=ØĩŲØ­Ų‡ Ø§ŲˆŲ„ +sign.last=ØĩŲØ­Ų‡ ØĸØŽØą +sign.next=ØĩŲØ­Ų‡ بؚدی +sign.previous=ØĩŲØ­Ų‡ Ų‚Ø¨Ų„ÛŒ +sign.maintainRatio=Toggle maintain aspect ratio +#repair +repair.title=ØĒØšŲ…ÛŒØą +repair.header=ØĒØšŲ…ÛŒØą PDFŲ‡Ø§ +repair.submit=ØĒØšŲ…ÛŒØą + + +#flatten +flatten.title=ÛŒÚŠŲžØ§ØąÚ†Ų‡â€ŒØŗØ§Ø˛ÛŒ +flatten.header=ÛŒÚŠŲžØ§ØąÚ†Ų‡â€ŒØŗØ§Ø˛ÛŒ PDFŲ‡Ø§ +flatten.flattenOnlyForms=ŲŲ‚Øˇ ŲØąŲ…â€ŒŲ‡Ø§ ØąØ§ ÛŒÚŠŲžØ§ØąÚ†Ų‡ ÚŠŲ† +flatten.submit=ÛŒÚŠŲžØ§ØąÚ†Ų‡â€ŒØŗØ§Ø˛ÛŒ + + +#ScannerImageSplit +ScannerImageSplit.selectText.1=ØĸØŗØĒØ§Ų†Ų‡ Ø˛Ø§ŲˆÛŒŲ‡: +ScannerImageSplit.selectText.2=Ø­Ø¯Ø§Ų‚Ų„ Ø˛Ø§ŲˆÛŒŲ‡ Ų…ØˇŲ„Ų‚ Ų…ŲˆØąØ¯ Ų†ÛŒØ§Ø˛ Ø¨ØąØ§ÛŒ Ú†ØąØŽØ§Ų†Ø¯Ų† ØĒØĩŲˆÛŒØą ØąØ§ ØĒŲ†Ø¸ÛŒŲ… Ų…ÛŒâ€ŒÚŠŲ†Ø¯ (ŲžÛŒØ´â€ŒŲØąØļ: ÛąÛ°). +ScannerImageSplit.selectText.3=ØĒØ­Ų…Ų„â€ŒŲžØ°ÛŒØąÛŒ: +ScannerImageSplit.selectText.4=Ø¯Ø§Ų…Ų†Ų‡ ØĒØēÛŒÛŒØą ØąŲ†Ú¯ Ø¯Øą Ø§ØˇØąØ§Ų ØąŲ†Ú¯ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ ØĒØŽŲ…ÛŒŲ†â€ŒØ˛Ø¯Ų‡â€ŒØ´Ø¯Ų‡ ØąØ§ ØĒØšÛŒÛŒŲ† Ų…ÛŒâ€ŒÚŠŲ†Ø¯ (ŲžÛŒØ´â€ŒŲØąØļ: ÛŗÛ°). +ScannerImageSplit.selectText.5=Ø­Ø¯Ø§Ų‚Ų„ Ų†Ø§Ø­ÛŒŲ‡: +ScannerImageSplit.selectText.6=ØĸØŗØĒØ§Ų†Ų‡ Ø­Ø¯Ø§Ų‚Ų„ Ų†Ø§Ø­ÛŒŲ‡ Ø¨ØąØ§ÛŒ یڊ ØšÚŠØŗ ØąØ§ ØĒŲ†Ø¸ÛŒŲ… Ų…ÛŒâ€ŒÚŠŲ†Ø¯ (ŲžÛŒØ´â€ŒŲØąØļ: ÛąÛ°Û°Û°Û°). +ScannerImageSplit.selectText.7=Ø­Ø¯Ø§Ų‚Ų„ Ų†Ø§Ø­ÛŒŲ‡ ÚŠØ§Ų†ØĒŲˆØą: +ScannerImageSplit.selectText.8=ØĸØŗØĒØ§Ų†Ų‡ Ø­Ø¯Ø§Ų‚Ų„ Ų†Ø§Ø­ÛŒŲ‡ ÚŠØ§Ų†ØĒŲˆØą Ø¨ØąØ§ÛŒ یڊ ØšÚŠØŗ ØąØ§ ØĒŲ†Ø¸ÛŒŲ… Ų…ÛŒâ€ŒÚŠŲ†Ø¯ +ScannerImageSplit.selectText.9=Ø§Ų†Ø¯Ø§Ø˛Ų‡ Ø­Ø§Ø´ÛŒŲ‡: +ScannerImageSplit.selectText.10=Ø§Ų†Ø¯Ø§Ø˛Ų‡ Ø­Ø§Ø´ÛŒŲ‡ اØļØ§ŲŲ‡â€ŒØ´Ø¯Ų‡ ؈ Ø­Ø°Ųâ€ŒØ´Ø¯Ų‡ Ø¨ØąØ§ÛŒ ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ø­Ø§Ø´ÛŒŲ‡â€ŒŲ‡Ø§ÛŒ ØŗŲÛŒØ¯ Ø¯Øą ØŽØąŲˆØŦی ØąØ§ ØĒŲ†Ø¸ÛŒŲ… Ų…ÛŒâ€ŒÚŠŲ†Ø¯ (ŲžÛŒØ´â€ŒŲØąØļ: Ûą). +ScannerImageSplit.info=ŲžØ§ÛŒØĒŲˆŲ† Ų†Øĩب Ų†Ø´Ø¯Ų‡ Ø§ØŗØĒ. Ø¨ØąØ§ÛŒ اØŦØąØ§ Ų†ÛŒØ§Ø˛ Ø§ØŗØĒ. + + +#OCR +ocr.title=OCR / Ų…ØąØĒØ¨â€ŒØŗØ§Ø˛ÛŒ Ø§ØŗÚŠŲ†â€ŒŲ‡Ø§ +ocr.header=Ų…ØąØĒØ¨â€ŒØŗØ§Ø˛ÛŒ Ø§ØŗÚŠŲ†â€ŒŲ‡Ø§ / OCR (Ø¨Ø§Ø˛Ø´Ų†Ø§ØŗÛŒ Ų†ŲˆÛŒØŗŲ‡ Ų†ŲˆØąÛŒ) +ocr.selectText.1=Ø˛Ø¨Ø§Ų†â€ŒŲ‡Ø§ÛŒÛŒ ØąØ§ ÚŠŲ‡ باید Ø¯Øą PDF Ø´Ų†Ø§ØŗØ§ÛŒÛŒ Ø´ŲˆŲ†Ø¯ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ (Ų…ŲˆØ§ØąØ¯ ŲŲ‡ØąØŗØĒ Ø´Ø¯Ų‡ Ø˛Ø¨Ø§Ų†â€ŒŲ‡Ø§ÛŒÛŒ Ų‡ØŗØĒŲ†Ø¯ ÚŠŲ‡ Ø¯Øą Ø­Ø§Ų„ حاØļØą Ø´Ų†Ø§ØŗØ§ÛŒÛŒ Ø´Ø¯Ų‡â€ŒØ§Ų†Ø¯): +ocr.selectText.2=ØĒŲˆŲ„ÛŒØ¯ ŲØ§ÛŒŲ„ Ų…ØĒŲ†ÛŒ Ø´Ø§Ų…Ų„ OCR Ų‡Ų…ØąØ§Ų‡ با PDF OCR Ø´Ø¯Ų‡ +ocr.selectText.3=ØĩŲØ­Ø§ØĒ Ø§ØŗÚŠŲ† Ø´Ø¯Ų‡ با Ø˛Ø§ŲˆÛŒŲ‡ ÚŠØŦ ØąØ§ با Ú†ØąØŽØ§Ų†Ø¯Ų† Ø¨Ų‡ Ų…ÚŠØ§Ų† Ø¯ØąØŗØĒ اØĩŲ„Ø§Ø­ ÚŠŲ†ÛŒØ¯ +ocr.selectText.4=ØĩŲØ­Ų‡ ØąØ§ ØĒŲ…ÛŒØ˛ ÚŠŲ†ÛŒØ¯ ØĒا ÚŠŲ…ØĒØą احØĒŲ…Ø§Ų„ ŲžÛŒØ¯Ø§ ÚŠØąØ¯Ų† Ų…ØĒŲ† ØĒŲˆØŗØˇ OCR Ø¯Øą Ų†ŲˆÛŒØ˛ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ باشد. (Ø¨Ø¯ŲˆŲ† ØĒØēÛŒÛŒØą Ø¯Øą ØŽØąŲˆØŦی) +ocr.selectText.5=ØĩŲØ­Ų‡ ØąØ§ ØĒŲ…ÛŒØ˛ ÚŠŲ†ÛŒØ¯ ØĒا ÚŠŲ…ØĒØą احØĒŲ…Ø§Ų„ ŲžÛŒØ¯Ø§ ÚŠØąØ¯Ų† Ų…ØĒŲ† ØĒŲˆØŗØˇ OCR Ø¯Øą Ų†ŲˆÛŒØ˛ ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ باشد، ØĒŲ…ÛŒØ˛ ÚŠØąØ¯Ų† Ø¯Øą ØŽØąŲˆØŦی Ø­ŲØ¸ Ų…ÛŒâ€ŒØ´ŲˆØ¯. +ocr.selectText.6=ØĩŲØ­Ø§ØĒی ÚŠŲ‡ Ø¯Ø§ØąØ§ÛŒ Ų…ØĒŲ† ØĒØšØ§Ų…Ų„ÛŒ Ų‡ØŗØĒŲ†Ø¯ ØąØ§ Ų†Ø§Ø¯ÛŒØ¯Ų‡ Ú¯ØąŲØĒŲ‡ ؈ ŲŲ‚Øˇ ØĩŲØ­Ø§ØĒی ØąØ§ ÚŠŲ‡ ØĒØĩØ§ŲˆÛŒØą Ų‡ØŗØĒŲ†Ø¯ OCR ÚŠŲ†Ø¯ +ocr.selectText.7=اØŦØ¨Ø§Øą OCR، ØĒŲ…Ø§Ų…ÛŒ ØĩŲØ­Ø§ØĒ ØąØ§ OCR ÚŠØąØ¯Ų‡ ؈ ØĒŲ…Ø§Ų… ØšŲ†Ø§ØĩØą Ų…ØĒŲ† اØĩŲ„ÛŒ ØąØ§ Ø­Ø°Ų Ų…ÛŒâ€ŒÚŠŲ†Ø¯ +ocr.selectText.8=ؚادی (Ø¯Øą ØĩŲˆØąØĒی ÚŠŲ‡ PDF Ø­Ø§ŲˆÛŒ Ų…ØĒŲ† باشد ØŽØˇØ§ ØŽŲˆØ§Ų‡Ø¯ داد) +ocr.selectText.9=ØĒŲ†Ø¸ÛŒŲ…Ø§ØĒ اØļØ§ŲÛŒ +ocr.selectText.10=Ø­Ø§Ų„ØĒ OCR +ocr.selectText.11=Ø­Ø°Ų ØĒØĩØ§ŲˆÛŒØą بؚد Ø§Ø˛ OCR (ØĒŲ…Ø§Ų…ÛŒ ØĒØĩØ§ŲˆÛŒØą ØąØ§ Ø­Ø°Ų Ų…ÛŒâ€ŒÚŠŲ†Ø¯ØŒ ŲŲ‚Øˇ Ø¯Øą ØĩŲˆØąØĒ Ų…ŲÛŒØ¯ Ø¨ŲˆØ¯Ų† ب؎شی Ø§Ø˛ Ú¯Ø§Ų… ØĒØ¨Ø¯ÛŒŲ„) +ocr.selectText.12=Ų†ŲˆØš ØąŲ†Ø¯Øą (ŲžÛŒØ´ØąŲØĒŲ‡) +ocr.help=Ų„ØˇŲØ§Ų‹ Ø§ÛŒŲ† Ų…ØŗØĒŲ†Ø¯Ø§ØĒ ØąØ§ Ø¨ØŽŲˆØ§Ų†ÛŒØ¯ ØĒا Ų†Ø­ŲˆŲ‡ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø¨ØąØ§ÛŒ Ø˛Ø¨Ø§Ų†â€ŒŲ‡Ø§ÛŒ Ø¯ÛŒÚ¯Øą ؈/یا Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø§Ø˛ ØĸŲ† ÚŠŲ‡ Ø¯Øą Ø¯Ø§ØŽŲ„ Ø¯Ø§ÚŠØą Ų†ÛŒØŗØĒ ØąØ§ Ø¨Ø¯Ø§Ų†ÛŒØ¯ +ocr.credit=Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø§Ø˛ qpdf ؈ Tesseract Ø¨ØąØ§ÛŒ OCR Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +ocr.submit=ŲžØąØ¯Ø§Ø˛Ø´ PDF با OCR + + +#extractImages +extractImages.title=Ø§ØŗØĒØŽØąØ§ØŦ ØĒØĩØ§ŲˆÛŒØą +extractImages.header=Ø§ØŗØĒØŽØąØ§ØŦ ØĒØĩØ§ŲˆÛŒØą +extractImages.selectText=ŲØąŲ…ØĒ ØĒØĩŲˆÛŒØąÛŒ ØąØ§ ÚŠŲ‡ ØĒØĩØ§ŲˆÛŒØą Ø§ØŗØĒØŽØąØ§ØŦ Ø´Ø¯Ų‡ Ø¨Ų‡ ØĸŲ† ØĒØ¨Ø¯ÛŒŲ„ Ø´ŲˆŲ†Ø¯ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ +extractImages.allowDuplicates=Ø°ØŽÛŒØąŲ‡ ØĒØĩØ§ŲˆÛŒØą ØĒÚŠØąØ§ØąÛŒ +extractImages.submit=Ø§ØŗØĒØŽØąØ§ØŦ + + +#File to PDF +fileToPDF.title=ŲØ§ÛŒŲ„ Ø¨Ų‡ PDF +fileToPDF.header=ØĒØ¨Ø¯ÛŒŲ„ Ų‡Øą ŲØ§ÛŒŲ„ Ø¨Ų‡ PDF +fileToPDF.credit=Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø§Ø˛ LibreOffice ؈ Unoconv Ø¨ØąØ§ÛŒ ØĒØ¨Ø¯ÛŒŲ„ ŲØ§ÛŒŲ„ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +fileToPDF.supportedFileTypesInfo=ŲØąŲ…ØĒâ€ŒŲ‡Ø§ÛŒ ŲØ§ÛŒŲ„ ŲžØ´ØĒÛŒØ¨Ø§Ų†ÛŒ Ø´Ø¯Ų‡ +fileToPDF.supportedFileTypes=ŲØąŲ…ØĒâ€ŒŲ‡Ø§ÛŒ ŲØ§ÛŒŲ„ ŲžØ´ØĒÛŒØ¨Ø§Ų†ÛŒ Ø´Ø¯Ų‡ باید Ø´Ø§Ų…Ų„ Ų…ŲˆØ§ØąØ¯ Ø˛ÛŒØą Ø¨Ø§Ø´Ų†Ø¯ Ø§Ų…Ø§ Ø¨ØąØ§ÛŒ ŲŲ‡ØąØŗØĒ ÚŠØ§Ų…Ų„ ؈ Ø¨ØąŲˆØ˛ØąØŗØ§Ų†ÛŒ Ø´Ø¯Ų‡ ŲØąŲ…ØĒâ€ŒŲ‡Ø§ÛŒ ŲžØ´ØĒÛŒØ¨Ø§Ų†ÛŒ Ø´Ø¯Ų‡ØŒ Ų„ØˇŲØ§Ų‹ Ø¨Ų‡ Ų…ØŗØĒŲ†Ø¯Ø§ØĒ LibreOffice Ų…ØąØ§ØŦØšŲ‡ ÚŠŲ†ÛŒØ¯ +fileToPDF.submit=ØĒØ¨Ø¯ÛŒŲ„ Ø¨Ų‡ PDF + + +#compress +compress.title=ŲØ´ØąØ¯Ų‡â€ŒØŗØ§Ø˛ÛŒ +compress.header=ŲØ´ØąØ¯Ų‡â€ŒØŗØ§Ø˛ÛŒ PDF +compress.credit=Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø§Ø˛ qpdf Ø¨ØąØ§ÛŒ ŲØ´ØąØ¯Ų‡â€ŒØŗØ§Ø˛ÛŒ / Ø¨Ų‡ÛŒŲ†Ų‡â€ŒØŗØ§Ø˛ÛŒ PDF Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +compress.selectText.1=Ø­Ø§Ų„ØĒ Ø¯ØŗØĒی - Ø§Ø˛ Ûą ØĒا Û´ +compress.selectText.2=ØŗØˇØ­ Ø¨Ų‡ÛŒŲ†Ų‡â€ŒØŗØ§Ø˛ÛŒ: +compress.selectText.3=Û´ (ØŽÛŒŲ„ÛŒ بد Ø¨ØąØ§ÛŒ ØĒØĩØ§ŲˆÛŒØą Ų…ØĒŲ†ÛŒ) +compress.selectText.4=Ø­Ø§Ų„ØĒ ØŽŲˆØ¯ÚŠØ§Øą - ÚŠÛŒŲÛŒØĒ ØąØ§ Ø¨Ų‡ ØˇŲˆØą ØŽŲˆØ¯ÚŠØ§Øą ØĒŲ†Ø¸ÛŒŲ… Ų…ÛŒâ€ŒÚŠŲ†Ø¯ ØĒا PDF Ø¨Ų‡ Ø§Ų†Ø¯Ø§Ø˛Ų‡ Ø¯Ų‚ÛŒŲ‚ Ø¨ØąØŗØ¯ +compress.selectText.5=Ø§Ų†Ø¯Ø§Ø˛Ų‡ PDF Ų…ŲˆØąØ¯ Ø§Ų†ØĒØ¸Ø§Øą (Ų…ØĢŲ„Ø§Ų‹ Û˛ÛĩMB، ÛąÛ°.Û¸MB، Û˛ÛĩKB) +compress.submit=ŲØ´ØąØ¯Ų‡â€ŒØŗØ§Ø˛ÛŒ + + +#Add image +addImage.title=Ø§ŲØ˛ŲˆØ¯Ų† ØĒØĩŲˆÛŒØą +addImage.header=Ø§ŲØ˛ŲˆØ¯Ų† ØĒØĩŲˆÛŒØą Ø¨Ų‡ PDF +addImage.everyPage=Ų‡Øą ØĩŲØ­Ų‡ØŸ +addImage.upload=Ø§ŲØ˛ŲˆØ¯Ų† ØĒØĩŲˆÛŒØą +addImage.submit=Ø§ŲØ˛ŲˆØ¯Ų† ØĒØĩŲˆÛŒØą + + +#merge +merge.title=ادØēØ§Ų… +merge.header=ادØēØ§Ų… Ú†Ų†Ø¯ÛŒŲ† PDF (Û˛+) +merge.sortByName=Ų…ØąØĒØ¨â€ŒØŗØ§Ø˛ÛŒ Ø¨Øą Ø§ØŗØ§Øŗ Ų†Ø§Ų… +merge.sortByDate=Ų…ØąØĒØ¨â€ŒØŗØ§Ø˛ÛŒ Ø¨Øą Ø§ØŗØ§Øŗ ØĒØ§ØąÛŒØŽ +merge.removeCertSign=Ø­Ø°Ų Ø§Ų…Øļای دیØŦیØĒØ§Ų„ Ø¯Øą ŲØ§ÛŒŲ„ ادØēØ§Ų…â€ŒØ´Ø¯Ų‡ØŸ +merge.submit=ادØēØ§Ų… + + +#pdfOrganiser +pdfOrganiser.title=ØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ ØĩŲØ­Ø§ØĒ +pdfOrganiser.header=ØŗØ§Ø˛Ų…Ø§Ų†Ø¯Ų‡ÛŒ ØĩŲØ­Ø§ØĒ PDF +pdfOrganiser.submit=Ø¨Ø§Ø˛ØĸØąØ§ÛŒÛŒ ØĩŲØ­Ø§ØĒ +pdfOrganiser.mode=Ø­Ø§Ų„ØĒ +pdfOrganiser.mode.1=ØĒØąØĒیب ØŗŲØ§ØąØ´ÛŒ ØĩŲØ­Ø§ØĒ +pdfOrganiser.mode.2=ØĒØąØĒیب Ų…ØšÚŠŲˆØŗ +pdfOrganiser.mode.3=Ų…ØąØĒØ¨â€ŒØŗØ§Ø˛ÛŒ Ø¯ŲˆØˇØąŲŲ‡ +pdfOrganiser.mode.4=Ų…ØąØĒØ¨â€ŒØŗØ§Ø˛ÛŒ ÚŠØĒØ§Ø¨Ú†Ų‡â€ŒØ§ÛŒ +pdfOrganiser.mode.5=Ų…ØąØĒØ¨â€ŒØŗØ§Ø˛ÛŒ ÚŠØĒØ§Ø¨Ú†Ų‡â€ŒØ§ÛŒ ØŗÛŒØ¯ÛŒ Ø§ØŗØĒیچ +pdfOrganiser.mode.6=ØŦØ¯Ø§ØŗØ§Ø˛ÛŒ ŲØąØ¯ ؈ Ø˛ŲˆØŦ +pdfOrganiser.mode.7=Ø­Ø°Ų Ø§ŲˆŲ„ÛŒŲ† +pdfOrganiser.mode.8=Ø­Ø°Ų ØĸØŽØąÛŒŲ† +pdfOrganiser.mode.9=Ø­Ø°Ų Ø§ŲˆŲ„ ؈ ØĸØŽØą +pdfOrganiser.mode.10=ادØēØ§Ų… ŲØąØ¯-Ø˛ŲˆØŦ +pdfOrganiser.placeholder=(Ų…ØĢØ§Ų„: Ûą,Ûŗ,Û˛ یا Û´-Û¸,Û˛,ÛąÛ°-ÛąÛ˛ یا 2n-1) + + +#multiTool +multiTool.title=Ø§Ø¨Ø˛Ø§Øą Ú†Ų†Ø¯Ú¯Ø§Ų†Ų‡ PDF +multiTool.header=Ø§Ø¨Ø˛Ø§Øą Ú†Ų†Ø¯Ú¯Ø§Ų†Ų‡ PDF +multiTool.uploadPrompts=Ų†Ø§Ų… ŲØ§ÛŒŲ„ +multiTool.selectAll=Ø§Ų†ØĒ؎اب Ų‡Ų…Ų‡ +multiTool.deselectAll=Ų„Øē؈ Ø§Ų†ØĒ؎اب Ų‡Ų…Ų‡ +multiTool.selectPages=Ø§Ų†ØĒ؎اب ØĩŲØ­Ų‡ +multiTool.selectedPages=ØĩŲØ­Ø§ØĒ Ø§Ų†ØĒ؎اب Ø´Ø¯Ų‡ +multiTool.page=ØĩŲØ­Ų‡ +multiTool.deleteSelected=Ø­Ø°Ų Ø§Ų†ØĒ؎اب Ø´Ø¯Ų‡â€ŒŲ‡Ø§ +multiTool.downloadAll=ØĩØ§Ø¯Øą ÚŠØąØ¯Ų† +multiTool.downloadSelected=ØĩØ§Ø¯Øą ÚŠØąØ¯Ų† Ø§Ų†ØĒ؎اب Ø´Ø¯Ų‡â€ŒŲ‡Ø§ + +multiTool.insertPageBreak=Ø¯ØąØŦ Ø´ÚŠØŗØĒ ØĩŲØ­Ų‡ +multiTool.addFile=Ø§ŲØ˛ŲˆØ¯Ų† ŲØ§ÛŒŲ„ +multiTool.rotateLeft=Ú†ØąØŽØ§Ų†Ø¯Ų† Ø¨Ų‡ Ú†Ųž +multiTool.rotateRight=Ú†ØąØŽØ§Ų†Ø¯Ų† Ø¨Ų‡ ØąØ§ØŗØĒ +multiTool.split=ØĒŲ‚ØŗÛŒŲ… +multiTool.moveLeft=ØŦابØŦایی Ø¨Ų‡ Ú†Ųž +multiTool.moveRight=ØŦابØŦایی Ø¨Ų‡ ØąØ§ØŗØĒ +multiTool.delete=Ø­Ø°Ų +multiTool.dragDropMessage=ØĩŲØ­Ų‡(Ų‡Ø§) Ø§Ų†ØĒ؎اب Ø´Ø¯Ų‡â€ŒØ§Ų†Ø¯ +multiTool.undo=ŲˆØ§Ú¯ØąØ¯ +multiTool.redo=Ø¨Ø§Ø˛Ú¯ØąØ¯Ø§Ų†Ø¯Ų† + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + +#multiTool-advert +multiTool-advert.message=Ø§ÛŒŲ† ŲˆÛŒÚ˜Ú¯ÛŒ Ų‡Ų…Ú†Ų†ÛŒŲ† Ø¯Øą ØĩŲØ­Ų‡ Ø§Ø¨Ø˛Ø§Øą Ú†Ų†Ø¯Ú¯Ø§Ų†Ų‡ Ų…Ø§ Ų…ŲˆØŦŲˆØ¯ Ø§ØŗØĒ. Ø¨ØąØ§ÛŒ ØąØ§Ø¨Øˇ ÚŠØ§ØąØ¨ØąÛŒ ØĩŲØ­Ų‡ Ø¨Ų‡ ØĩŲØ­Ų‡ ŲžÛŒØ´ØąŲØĒŲ‡ ؈ ŲˆÛŒÚ˜Ú¯ÛŒâ€ŒŲ‡Ø§ÛŒ اØļØ§ŲÛŒ Ø¨ØąØąØŗÛŒ ÚŠŲ†ÛŒØ¯! + +#view pdf +viewPdf.title=Ų…Ø´Ø§Ų‡Ø¯Ų‡ PDF +viewPdf.header=Ų…Ø´Ø§Ų‡Ø¯Ų‡ PDF + +#pageRemover +pageRemover.title=Ø­Ø°Ų ØĩŲØ­Ø§ØĒ +pageRemover.header=Ø­Ø°Ų ØĩŲØ­Ø§ØĒ PDF +pageRemover.pagesToDelete=ØĩŲØ­Ø§ØĒ Ø¨ØąØ§ÛŒ Ø­Ø°Ų (یڊ Ų„ÛŒØŗØĒ Ø§Ø˛ اؚداد ØĩŲØ­Ų‡ ØŦدا Ø´Ø¯Ų‡ با ÚŠØ§Ų…Ø§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯): +pageRemover.submit=Ø­Ø°Ų ØĩŲØ­Ø§ØĒ +pageRemover.placeholder=(Ų…ØĢØ§Ų„: Ûą,Û˛,Ûļ یا Ûą-ÛąÛ°,ÛąÛĩ-ÛŗÛ°) + + +#rotate +rotate.title=Ú†ØąØŽØ´ PDF +rotate.header=Ú†ØąØŽØ´ PDF +rotate.selectAngle=Ø˛Ø§ŲˆÛŒŲ‡ Ú†ØąØŽØ´ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ (Ø¨Ų‡ Ų…ØļØąØ¨â€ŒŲ‡Ø§ÛŒ ÛšÛ° Ø¯ØąØŦŲ‡): +rotate.submit=Ú†ØąØŽØ´ + + +#split-pdfs +split.title=ØĒŲ‚ØŗÛŒŲ… PDF +split.header=ØĒŲ‚ØŗÛŒŲ… PDF +split.desc.1=اؚدادی ÚŠŲ‡ Ø§Ų†ØĒ؎اب Ų…ÛŒâ€ŒÚŠŲ†ÛŒØ¯ Ø´Ų…Ø§ØąŲ‡ ØĩŲØ­Ų‡â€ŒŲ‡Ø§ÛŒÛŒ Ų‡ØŗØĒŲ†Ø¯ ÚŠŲ‡ Ų…ÛŒâ€ŒØŽŲˆØ§Ų‡ÛŒØ¯ Ø¨Øą ØąŲˆÛŒ ØĸŲ†Ų‡Ø§ ØĒŲ‚ØŗÛŒŲ… Ø§Ų†ØŦØ§Ų… Ø¯Ų‡ÛŒØ¯ +split.desc.2=Ø¨Ų†Ø§Ø¨ØąØ§ÛŒŲ† Ø§Ų†ØĒ؎اب Ûą,Ûŗ,Ûˇ-Ûš یڊ ØŗŲ†Ø¯ ÛąÛ° ØĩŲØ­Ų‡â€ŒØ§ÛŒ ØąØ§ Ø¨Ų‡ Ûļ PDF ØŦØ¯Ø§Ú¯Ø§Ų†Ų‡ ØĒŲ‚ØŗÛŒŲ… Ų…ÛŒâ€ŒÚŠŲ†Ø¯ با: +split.desc.3=ØŗŲ†Ø¯ #1: ØĩŲØ­Ų‡ Ûą +split.desc.4=ØŗŲ†Ø¯ #2: ØĩŲØ­Ų‡ Û˛ ؈ Ûŗ +split.desc.5=ØŗŲ†Ø¯ #3: ØĩŲØ­Ų‡ ۴، Ûĩ، Û兀 Ûˇ +split.desc.6=ØŗŲ†Ø¯ #4: ØĩŲØ­Ų‡ Û¸ +split.desc.7=ØŗŲ†Ø¯ #5: ØĩŲØ­Ų‡ Ûš +split.desc.8=ØŗŲ†Ø¯ #6: ØĩŲØ­Ų‡ ÛąÛ° +split.splitPages=ØĩŲØ­Ø§ØĒ Ø¨ØąØ§ÛŒ ØĒŲ‚ØŗÛŒŲ… ØąØ§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯: +split.submit=ØĒŲ‚ØŗÛŒŲ… + + +#merge +imageToPDF.title=ØĒØ¨Ø¯ÛŒŲ„ ØĒØĩŲˆÛŒØą Ø¨Ų‡ PDF +imageToPDF.header=ØĒØ¨Ø¯ÛŒŲ„ ØĒØĩŲˆÛŒØą Ø¨Ų‡ PDF +imageToPDF.submit=ØĒØ¨Ø¯ÛŒŲ„ +imageToPDF.selectLabel=Ú¯Ø˛ÛŒŲ†Ų‡â€ŒŲ‡Ø§ÛŒ ØĒŲ†Ø§ØŗØ¨ ØĒØĩŲˆÛŒØą +imageToPDF.fillPage=ŲžØą ÚŠØąØ¯Ų† ØĩŲØ­Ų‡ +imageToPDF.fitDocumentToImage=ØĒŲ†Ø§ØŗØ¨ ØĩŲØ­Ų‡ با ØĒØĩŲˆÛŒØą +imageToPDF.maintainAspectRatio=Ø­ŲØ¸ Ų†ØŗØ¨ØĒâ€ŒŲ‡Ø§ÛŒ ابؚاد +imageToPDF.selectText.2=Ú†ØąØŽØ´ ØŽŲˆØ¯ÚŠØ§Øą PDF +imageToPDF.selectText.3=Ų…Ų†ØˇŲ‚ Ú†Ų†Ø¯ ŲØ§ÛŒŲ„ (ŲŲ‚Øˇ Ø¯Øą ØĩŲˆØąØĒ ÚŠØ§Øą با Ú†Ų†Ø¯ÛŒŲ† ØĒØĩŲˆÛŒØą ŲØšØ§Ų„ Ø§ØŗØĒ) +imageToPDF.selectText.4=ادØēØ§Ų… Ø¯Øą یڊ PDF ŲˆØ§Ø­Ø¯ +imageToPDF.selectText.5=ØĒØ¨Ø¯ÛŒŲ„ Ø¨Ų‡ PDF Ų‡Ø§ÛŒ ØŦØ¯Ø§Ú¯Ø§Ų†Ų‡ + + +#pdfToImage +pdfToImage.title=PDF Ø¨Ų‡ ØĒØĩŲˆÛŒØą +pdfToImage.header=PDF Ø¨Ų‡ ØĒØĩŲˆÛŒØą +pdfToImage.selectText=ŲØąŲ…ØĒ ØĒØĩŲˆÛŒØą +pdfToImage.singleOrMultiple=Ų†ŲˆØš Ų†ØĒیØŦŲ‡ ØĒØĩŲˆÛŒØą +pdfToImage.single=یڊ ØĒØĩŲˆÛŒØą Ø¨Ø˛ØąÚ¯ +pdfToImage.multi=Ú†Ų†Ø¯ÛŒŲ† ØĒØĩŲˆÛŒØą +pdfToImage.colorType=Ų†ŲˆØš ØąŲ†Ú¯ +pdfToImage.color=ØąŲ†Ú¯ +pdfToImage.grey=ØŽØ§ÚŠØŗØĒØąÛŒ +pdfToImage.blackwhite=ØŗÛŒØ§Ų‡ ؈ ØŗŲÛŒØ¯ (Ų…Ų…ÚŠŲ† Ø§ØŗØĒ Ø§ØˇŲ„Ø§ØšØ§ØĒ Ø§Ø˛ Ø¯ØŗØĒ Ø¨ØąŲˆØ¯!) +pdfToImage.submit=ØĒØ¨Ø¯ÛŒŲ„ +pdfToImage.info=ŲžØ§ÛŒØĒŲˆŲ† Ų†Øĩب Ų†Ø´Ø¯Ų‡ Ø§ØŗØĒ. Ø¨ØąØ§ÛŒ ØĒØ¨Ø¯ÛŒŲ„ WebP Ų„Ø§Ø˛Ų… Ø§ØŗØĒ. +pdfToImage.placeholder=(Ų…ØĢØ§Ų„: 1,2,8 یا 4,7,12-16 یا 2n-1) + + +#addPassword +addPassword.title=Ø§ŲØ˛ŲˆØ¯Ų† Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ +addPassword.header=Ø§ŲØ˛ŲˆØ¯Ų† Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ (ØąŲ…Ø˛Ų†Ú¯Ø§ØąÛŒ) +addPassword.selectText.1=Ø§Ų†ØĒ؎اب PDF Ø¨ØąØ§ÛŒ ØąŲ…Ø˛Ų†Ú¯Ø§ØąÛŒ +addPassword.selectText.2=Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ ÚŠØ§ØąØ¨Øą +addPassword.selectText.3=ØˇŲˆŲ„ ÚŠŲ„ÛŒØ¯ ØąŲ…Ø˛Ų†Ú¯Ø§ØąÛŒ +addPassword.selectText.4=Ų…Ų‚Ø§Ø¯ÛŒØą Ø¨Ø§Ų„Ø§ØĒØą Ų‚ŲˆÛŒâ€ŒØĒØąŲ†Ø¯ØŒ Ø§Ų…Ø§ Ų…Ų‚Ø§Ø¯ÛŒØą ŲžØ§ÛŒÛŒŲ†â€ŒØĒØą Ø¨Ų‡ØĒØą ØŗØ§Ø˛Ú¯Ø§ØąŲ†Ø¯. +addPassword.selectText.5=Ų…ØŦŲˆØ˛Ų‡Ø§ÛŒÛŒ ÚŠŲ‡ باید ØĒŲ†Ø¸ÛŒŲ… Ø´ŲˆŲ†Ø¯ (ØĒ؈ØĩÛŒŲ‡ Ų…ÛŒâ€ŒØ´ŲˆØ¯ Ų‡Ų…ØąØ§Ų‡ با Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ Ų…Ø§Ų„ÚŠ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø´ŲˆØ¯) +addPassword.selectText.6=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ų…ŲˆŲ†ØĒاژ ØŗŲ†Ø¯ +addPassword.selectText.7=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ø§ØŗØĒØŽØąØ§ØŦ Ų…Ø­ØĒŲˆØ§ +addPassword.selectText.8=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ø§ØŗØĒØŽØąØ§ØŦ Ø¨ØąØ§ÛŒ Ø¯ØŗØĒØąØŗÛŒâ€ŒŲžØ°ÛŒØąÛŒ +addPassword.selectText.9=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ ŲžØąÚŠØąØ¯Ų† ŲØąŲ… +addPassword.selectText.10=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ اØĩŲ„Ø§Ø­ +addPassword.selectText.11=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ اØĩŲ„Ø§Ø­ Ø­Ø§Ø´ÛŒŲ‡â€ŒŲ†ŲˆÛŒØŗÛŒ +addPassword.selectText.12=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ú†Ø§Ųž +addPassword.selectText.13=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ú†Ø§Ųž ŲØąŲ…ØĒâ€ŒŲ‡Ø§ÛŒ Ų…ØŽØĒ؄؁ +addPassword.selectText.14=Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ Ų…Ø§Ų„ÚŠ +addPassword.selectText.15=Ų…Ø­Ø¯ŲˆØ¯ÛŒØĒâ€ŒŲ‡Ø§ÛŒÛŒ ÚŠŲ‡ Ų…ÛŒâ€ŒØĒŲˆØ§Ų† Ø¨Øą ØąŲˆÛŒ ØŗŲ†Ø¯ Ø§ØšŲ…Ø§Ų„ ÚŠØąØ¯ Ų‡Ų†Ú¯Ø§Ų…ÛŒ ÚŠŲ‡ Ø¨Ø§Ø˛ Ø§ØŗØĒ (ŲžØ´ØĒÛŒØ¨Ø§Ų†ÛŒâ€ŒØ´Ø¯Ų‡ ØĒŲˆØŗØˇ Ų‡Ų…Ų‡ ØŽŲˆØ§Ų†Ų†Ø¯Ú¯Ø§Ų† Ų†ÛŒØŗØĒ) +addPassword.selectText.16=Ų…Ø­Ø¯ŲˆØ¯ÛŒØĒâ€ŒŲ‡Ø§ÛŒ Ø¨Ø§Ø˛ Ø´Ø¯Ų† ØŽŲˆØ¯ ØŗŲ†Ø¯ +addPassword.submit=ØąŲ…Ø˛Ų†Ú¯Ø§ØąÛŒ + + +#watermark +watermark.title=Ø§ŲØ˛ŲˆØ¯Ų† ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ +watermark.header=Ø§ŲØ˛ŲˆØ¯Ų† ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ +watermark.customColor=ØąŲ†Ú¯ Ų…ØĒŲ† ØŗŲØ§ØąØ´ÛŒ +watermark.selectText.1=PDFی ÚŠŲ‡ Ų…ÛŒâ€ŒØŽŲˆØ§Ų‡ÛŒØ¯ Ø¨Ų‡ ØĸŲ† ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ اØļØ§ŲŲ‡ ÚŠŲ†ÛŒØ¯ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯: +watermark.selectText.2=Ų…ØĒŲ† ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ: +watermark.selectText.3=Ø§Ų†Ø¯Ø§Ø˛Ų‡ ŲŲˆŲ†ØĒ: +watermark.selectText.4=Ú†ØąØŽØ´ (Û°-ÛŗÛļÛ°): +watermark.selectText.5=ŲØ§ØĩŲ„Ų‡ ØšØąØļی (ŲØ§ØĩŲ„Ų‡ Ø¨ÛŒŲ† Ų‡Øą ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ Ø¨Ų‡ ØĩŲˆØąØĒ Ø§ŲŲ‚ÛŒ): +watermark.selectText.6=ŲØ§ØĩŲ„Ų‡ Ø§ØąØĒŲØ§ØšÛŒ (ŲØ§ØĩŲ„Ų‡ Ø¨ÛŒŲ† Ų‡Øą ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ Ø¨Ų‡ ØĩŲˆØąØĒ ØšŲ…ŲˆØ¯ÛŒ): +watermark.selectText.7=Ø´ŲØ§ŲÛŒØĒ (Û°ŲĒ - ÛąÛ°Û°ŲĒ): +watermark.selectText.8=Ų†ŲˆØš ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ: +watermark.selectText.9=ØĒØĩŲˆÛŒØą ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ: +watermark.selectText.10=ØĒØ¨Ø¯ÛŒŲ„ PDF Ø¨Ų‡ PDF-Image +watermark.submit=Ø§ŲØ˛ŲˆØ¯Ų† ŲˆØ§ØĒØąŲ…Ø§ØąÚŠ +watermark.type.1=Ų…ØĒŲ† +watermark.type.2=ØĒØĩŲˆÛŒØą + + +#Change permissions +permissions.title=ØĒØēÛŒÛŒØą Ų…ØŦŲˆØ˛Ų‡Ø§ +permissions.header=ØĒØēÛŒÛŒØą Ų…ØŦŲˆØ˛Ų‡Ø§ +permissions.warning=Ø¨ØąØ§ÛŒ Ø§ÛŒŲ†ÚŠŲ‡ Ø§ÛŒŲ† Ų…ØŦŲˆØ˛Ų‡Ø§ ØēÛŒØąŲ‚Ø§Ø¨Ų„ ØĒØēÛŒÛŒØą Ø¨Ø§Ø´Ų†Ø¯ØŒ ØĒ؈ØĩÛŒŲ‡ Ų…ÛŒâ€ŒØ´ŲˆØ¯ ØĸŲ†Ų‡Ø§ ØąØ§ با Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ Ø§Ø˛ ØˇØąÛŒŲ‚ ØĩŲØ­Ų‡ Ø§ŲØ˛ŲˆØ¯Ų† Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ ØĒŲ†Ø¸ÛŒŲ… ÚŠŲ†ÛŒØ¯ +permissions.selectText.1=PDFی ØąØ§ Ø¨ØąØ§ÛŒ ØĒØēÛŒÛŒØą Ų…ØŦŲˆØ˛Ų‡Ø§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ +permissions.selectText.2=Ų…ØŦŲˆØ˛Ų‡Ø§ÛŒÛŒ ÚŠŲ‡ باید ØĒŲ†Ø¸ÛŒŲ… Ø´ŲˆŲ†Ø¯ +permissions.selectText.3=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ų…ŲˆŲ†ØĒاژ ØŗŲ†Ø¯ +permissions.selectText.4=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ø§ØŗØĒØŽØąØ§ØŦ Ų…Ø­ØĒŲˆØ§ +permissions.selectText.5=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ø§ØŗØĒØŽØąØ§ØŦ Ø¨ØąØ§ÛŒ Ø¯ØŗØĒØąØŗÛŒâ€ŒŲžØ°ÛŒØąÛŒ +permissions.selectText.6=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ ŲžØąÚŠØąØ¯Ų† ŲØąŲ… +permissions.selectText.7=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ اØĩŲ„Ø§Ø­ +permissions.selectText.8=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ اØĩŲ„Ø§Ø­ Ø­Ø§Ø´ÛŒŲ‡â€ŒŲ†ŲˆÛŒØŗÛŒ +permissions.selectText.9=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ú†Ø§Ųž +permissions.selectText.10=ØŦŲ„ŲˆÚ¯ÛŒØąÛŒ Ø§Ø˛ Ú†Ø§Ųž ŲØąŲ…ØĒâ€ŒŲ‡Ø§ÛŒ Ų…ØŽØĒ؄؁ +permissions.submit=ØĒØēÛŒÛŒØą + + +#remove password +removePassword.title=Ø­Ø°Ų Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ +removePassword.header=Ø­Ø°Ų Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ (ØąŲ…Ø˛Ú¯Ø´Ø§ÛŒÛŒ) +removePassword.selectText.1=PDFی ØąØ§ Ø¨ØąØ§ÛŒ ØąŲ…Ø˛Ú¯Ø´Ø§ÛŒÛŒ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ +removePassword.selectText.2=Ú¯Ø°ØąŲˆØ§Ú˜Ų‡ +removePassword.submit=Ø­Ø°Ų + + +#changeMetadata +changeMetadata.title=ØšŲ†ŲˆØ§Ų†: +changeMetadata.header=ØĒØēÛŒÛŒØą Ų…ØĒØ§Ø¯Ø§Ø¯Ų‡â€ŒŲ‡Ø§ +changeMetadata.selectText.1=Ų„ØˇŲØ§Ų‹ Ų…ØĒØēÛŒØąŲ‡Ø§ÛŒÛŒ ÚŠŲ‡ Ų…Ø§ÛŒŲ„ Ø¨Ų‡ ØĒØēÛŒÛŒØą ØĸŲ†Ų‡Ø§ Ų‡ØŗØĒید ØąØ§ ŲˆÛŒØąØ§ÛŒØ´ ÚŠŲ†ÛŒØ¯ +changeMetadata.selectText.2=Ø­Ø°Ų Ų‡Ų…Ų‡ Ų…ØĒØ§Ø¯Ø§Ø¯Ų‡â€ŒŲ‡Ø§ +changeMetadata.selectText.3=Ų†Ų…Ø§ÛŒØ´ Ų…ØĒØ§Ø¯Ø§Ø¯Ų‡ ØŗŲØ§ØąØ´ÛŒ: +changeMetadata.author=Ų†ŲˆÛŒØŗŲ†Ø¯Ų‡: +changeMetadata.creationDate=ØĒØ§ØąÛŒØŽ ایØŦاد (yyyy/MM/dd HH:mm:ss): +changeMetadata.creator=ØŽØ§Ų„Ų‚: +changeMetadata.keywords=ÚŠŲ„Ų…Ø§ØĒ ÚŠŲ„ÛŒØ¯ÛŒ: +changeMetadata.modDate=ØĒØ§ØąÛŒØŽ اØĩŲ„Ø§Ø­ (yyyy/MM/dd HH:mm:ss): +changeMetadata.producer=ØĒŲˆŲ„ÛŒØ¯ ÚŠŲ†Ų†Ø¯Ų‡: +changeMetadata.subject=Ų…ŲˆØļŲˆØš: +changeMetadata.trapped=Ú¯ÛŒØą Ø§ŲØĒØ§Ø¯Ų‡: +changeMetadata.selectText.4=ØŗØ§ÛŒØą Ų…ØĒØ§Ø¯Ø§Ø¯Ų‡â€ŒŲ‡Ø§: +changeMetadata.selectText.5=Ø§ŲØ˛ŲˆØ¯Ų† ŲˆØąŲˆØ¯ÛŒ Ų…ØĒØ§Ø¯Ø§Ø¯Ų‡ ØŗŲØ§ØąØ´ÛŒ +changeMetadata.submit=ØĒØēÛŒÛŒØą + + +#pdfToPDFA +pdfToPDFA.title=PDF Ø¨Ų‡ PDF/A +pdfToPDFA.header=PDF Ø¨Ų‡ PDF/A +pdfToPDFA.credit=Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø§Ø˛ qpdf Ø¨ØąØ§ÛŒ ØĒØ¨Ø¯ÛŒŲ„ PDF/A Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯ +pdfToPDFA.submit=ØĒØ¨Ø¯ÛŒŲ„ +pdfToPDFA.tip=Ø¯Øą Ø­Ø§Ų„ حاØļØą Ø¨ØąØ§ÛŒ Ú†Ų†Ø¯ÛŒŲ† ŲˆØąŲˆØ¯ÛŒ Ø¨Ų‡ ØˇŲˆØą Ų‡Ų…Ø˛Ų…Ø§Ų† ÚŠØ§Øą Ų†Ų…ÛŒâ€ŒÚŠŲ†Ø¯ +pdfToPDFA.outputFormat=ŲØąŲ…ØĒ ØŽØąŲˆØŦی +pdfToPDFA.pdfWithDigitalSignature=PDF Ø­Ø§ŲˆÛŒ یڊ Ø§Ų…Øļای دیØŦیØĒØ§Ų„ Ø§ØŗØĒ. Ø§ÛŒŲ† Ø¯Øą Ų…ØąØ­Ų„Ų‡ بؚد Ø­Ø°Ų ØŽŲˆØ§Ų‡Ø¯ شد. + + +#PDFToWord +PDFToWord.title=PDF Ø¨Ų‡ ŲˆØąØ¯ +PDFToWord.header=PDF Ø¨Ų‡ ŲˆØąØ¯ +PDFToWord.selectText.1=ŲØąŲ…ØĒ ŲØ§ÛŒŲ„ ØŽØąŲˆØŦی +PDFToWord.credit=Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø§Ø˛ LibreOffice Ø¨ØąØ§ÛŒ ØĒØ¨Ø¯ÛŒŲ„ ŲØ§ÛŒŲ„ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +PDFToWord.submit=ØĒØ¨Ø¯ÛŒŲ„ + + +#PDFToPresentation +PDFToPresentation.title=PDF Ø¨Ų‡ Ø§ØąØ§ØĻŲ‡ +PDFToPresentation.header=PDF Ø¨Ų‡ Ø§ØąØ§ØĻŲ‡ +PDFToPresentation.selectText.1=ŲØąŲ…ØĒ ŲØ§ÛŒŲ„ ØŽØąŲˆØŦی +PDFToPresentation.credit=Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø§Ø˛ LibreOffice Ø¨ØąØ§ÛŒ ØĒØ¨Ø¯ÛŒŲ„ ŲØ§ÛŒŲ„ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +PDFToPresentation.submit=ØĒØ¨Ø¯ÛŒŲ„ + + +#PDFToText +PDFToText.title=PDF Ø¨Ų‡ RTF (Ų…ØĒŲ†) +PDFToText.header=PDF Ø¨Ų‡ RTF (Ų…ØĒŲ†) +PDFToText.selectText.1=ŲØąŲ…ØĒ ŲØ§ÛŒŲ„ ØŽØąŲˆØŦی +PDFToText.credit=Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø§Ø˛ LibreOffice Ø¨ØąØ§ÛŒ ØĒØ¨Ø¯ÛŒŲ„ ŲØ§ÛŒŲ„ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +PDFToText.submit=ØĒØ¨Ø¯ÛŒŲ„ + + +#PDFToHTML +PDFToHTML.title=PDF Ø¨Ų‡ HTML +PDFToHTML.header=PDF Ø¨Ų‡ HTML +PDFToHTML.credit=Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø§Ø˛ pdftohtml Ø¨ØąØ§ÛŒ ØĒØ¨Ø¯ÛŒŲ„ ŲØ§ÛŒŲ„ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +PDFToHTML.submit=ØĒØ¨Ø¯ÛŒŲ„ + + +#PDFToXML +PDFToXML.title=PDF Ø¨Ų‡ XML +PDFToXML.header=PDF Ø¨Ų‡ XML +PDFToXML.credit=Ø§ÛŒŲ† ØŗØąŲˆÛŒØŗ Ø§Ø˛ LibreOffice Ø¨ØąØ§ÛŒ ØĒØ¨Ø¯ÛŒŲ„ ŲØ§ÛŒŲ„ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +PDFToXML.submit=ØĒØ¨Ø¯ÛŒŲ„ + +#PDFToCSV +PDFToCSV.title=PDF Ø¨Ų‡ CSV +PDFToCSV.header=PDF Ø¨Ų‡ CSV +PDFToCSV.prompt=ØĩŲØ­Ų‡â€ŒØ§ÛŒ ÚŠŲ‡ Ų…ÛŒâ€ŒØŽŲˆØ§Ų‡ÛŒØ¯ ØŦØ¯ŲˆŲ„ Ø§ØŗØĒØŽØąØ§ØŦ Ø´ŲˆØ¯ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ +PDFToCSV.submit=Ø§ØŗØĒØŽØąØ§ØŦ + +#split-by-size-or-count +split-by-size-or-count.title=ØĒŲ‚ØŗÛŒŲ… PDF Ø¨Øą Ø§ØŗØ§Øŗ Ø§Ų†Ø¯Ø§Ø˛Ų‡ یا ØĒؚداد +split-by-size-or-count.header=ØĒŲ‚ØŗÛŒŲ… PDF Ø¨Øą Ø§ØŗØ§Øŗ Ø§Ų†Ø¯Ø§Ø˛Ų‡ یا ØĒؚداد +split-by-size-or-count.type.label=Ø§Ų†ØĒ؎اب Ų†ŲˆØš ØĒŲ‚ØŗÛŒŲ… +split-by-size-or-count.type.size=Ø¨Øą Ø§ØŗØ§Øŗ Ø§Ų†Ø¯Ø§Ø˛Ų‡ +split-by-size-or-count.type.pageCount=Ø¨Øą Ø§ØŗØ§Øŗ ØĒؚداد ØĩŲØ­Ø§ØĒ +split-by-size-or-count.type.docCount=Ø¨Øą Ø§ØŗØ§Øŗ ØĒؚداد Ø§ØŗŲ†Ø§Ø¯ +split-by-size-or-count.value.label=ŲˆØ§ØąØ¯ ÚŠØąØ¯Ų† Ų…Ų‚Ø¯Ø§Øą +split-by-size-or-count.value.placeholder=Ø§Ų†Ø¯Ø§Ø˛Ų‡ ØąØ§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ (Ų…ØĢŲ„Ø§Ų‹ Û˛MB یا ÛŗKB) یا ØĒؚداد (Ų…ØĢŲ„Ø§Ų‹ Ûĩ) +split-by-size-or-count.submit=Ø§ØąØŗØ§Ų„ + + +#overlay-pdfs +overlay-pdfs.header=ØĒØąÚŠÛŒØ¨ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ PDF +overlay-pdfs.baseFile.label=Ø§Ų†ØĒ؎اب ŲØ§ÛŒŲ„ ŲžØ§ÛŒŲ‡ PDF +overlay-pdfs.overlayFiles.label=Ø§Ų†ØĒ؎اب ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ ØĒØąÚŠÛŒØ¨ÛŒ PDF +overlay-pdfs.mode.label=Ø§Ų†ØĒ؎اب Ø­Ø§Ų„ØĒ ØĒØąÚŠÛŒØ¨ +overlay-pdfs.mode.sequential=ØĒØąÚŠÛŒØ¨ ØĒØąØĒیبی +overlay-pdfs.mode.interleaved=ØĒØąÚŠÛŒØ¨ Ø¯ØąŲ‡Ų… +overlay-pdfs.mode.fixedRepeat=ØĒØąÚŠÛŒØ¨ با ØĒÚŠØąØ§Øą ØĢابØĒ +overlay-pdfs.counts.label=ØĒؚداد ØĒÚŠØąØ§ØąŲ‡Ø§ÛŒ ØĒØąÚŠÛŒØ¨ (Ø¨ØąØ§ÛŒ Ø­Ø§Ų„ØĒ ØĒÚŠØąØ§Øą ØĢابØĒ) +overlay-pdfs.counts.placeholder=Ų…Ų‚Ø§Ø¯ÛŒØą ØĒؚداد ØąØ§ با ÚŠØ§Ų…Ø§ ØŦدا ÚŠŲ†ÛŒØ¯ (Ų…ØĢŲ„Ø§Ų‹ Û˛,Ûŗ,Ûą) +overlay-pdfs.position.label=Ø§Ų†ØĒ؎اب Ų…ŲˆŲ‚ØšÛŒØĒ ØĒØąÚŠÛŒØ¨ +overlay-pdfs.position.foreground=ŲžÛŒØ´â€ŒØ˛Ų…ÛŒŲ†Ų‡ +overlay-pdfs.position.background=ŲžØŗâ€ŒØ˛Ų…ÛŒŲ†Ų‡ +overlay-pdfs.submit=Ø§ØąØŗØ§Ų„ + + +#split-by-sections +split-by-sections.title=ØĒŲ‚ØŗÛŒŲ… PDF Ø¨Ų‡ Ø¨ØŽØ´â€ŒŲ‡Ø§ +split-by-sections.header=ØĒŲ‚ØŗÛŒŲ… PDF Ø¨Ų‡ Ø¨ØŽØ´â€ŒŲ‡Ø§ +split-by-sections.horizontal.label=ØĒŲ‚ØŗÛŒŲ…Ø§ØĒ Ø§ŲŲ‚ÛŒ +split-by-sections.vertical.label=ØĒŲ‚ØŗÛŒŲ…Ø§ØĒ ØšŲ…ŲˆØ¯ÛŒ +split-by-sections.horizontal.placeholder=ØĒؚداد ØĒŲ‚ØŗÛŒŲ…Ø§ØĒ Ø§ŲŲ‚ÛŒ ØąØ§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ +split-by-sections.vertical.placeholder=ØĒؚداد ØĒŲ‚ØŗÛŒŲ…Ø§ØĒ ØšŲ…ŲˆØ¯ÛŒ ØąØ§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ +split-by-sections.submit=ØĒŲ‚ØŗÛŒŲ… PDF +split-by-sections.merge=ادØēØ§Ų… Ø¨Ų‡ یڊ PDF + + +#printFile +printFile.title=Ú†Ø§Ųž ŲØ§ÛŒŲ„ +printFile.header=Ú†Ø§Ųž ŲØ§ÛŒŲ„ Ø¨Ų‡ Ú†Ø§ŲžÚ¯Øą +printFile.selectText.1=Ø§Ų†ØĒ؎اب ŲØ§ÛŒŲ„ Ø¨ØąØ§ÛŒ Ú†Ø§Ųž +printFile.selectText.2=Ų†Ø§Ų… Ú†Ø§ŲžÚ¯Øą ØąØ§ ŲˆØ§ØąØ¯ ÚŠŲ†ÛŒØ¯ +printFile.submit=Ú†Ø§Ųž + + +#licenses +licenses.nav=Ų…ØŦŲˆØ˛Ų‡Ø§ +licenses.title=Ų…ØŦŲˆØ˛Ų‡Ø§ÛŒ Ø´ØŽØĩ ØĢØ§Ų„ØĢ +licenses.header=Ų…ØŦŲˆØ˛Ų‡Ø§ÛŒ Ø´ØŽØĩ ØĢØ§Ų„ØĢ +licenses.module=Ų…Ø§Ú˜ŲˆŲ„ +licenses.version=Ų†ØŗØŽŲ‡ +licenses.license=Ų…ØŦŲˆØ˛ + +#survey +survey.nav=Ų†Ø¸ØąØŗŲ†ØŦی +survey.title=Ų†Ø¸ØąØŗŲ†ØŦی Stirling-PDF +survey.description=Stirling-PDF Ų‡ÛŒÚ† ØąØ¯ÛŒØ§Ø¨ÛŒ Ų†Ø¯Ø§ØąØ¯ØŒ Ø¨Ų†Ø§Ø¨ØąØ§ÛŒŲ† Ų…Ø§ Ų…ÛŒâ€ŒØŽŲˆØ§Ų‡ÛŒŲ… Ø§Ø˛ ÚŠØ§ØąØ¨ØąØ§Ų† ØŽŲˆØ¯ Ø¨Ø´Ų†ŲˆÛŒŲ… ØĒا Stirling-PDF ØąØ§ Ø¨Ų‡Ø¨ŲˆØ¯ Ø¯Ų‡ÛŒŲ…! +survey.changes=Stirling-PDF Ø§Ø˛ Ø˛Ų…Ø§Ų† ØĸØŽØąÛŒŲ† Ų†Ø¸ØąØŗŲ†ØŦی ØĒØēÛŒÛŒØą ÚŠØąØ¯Ų‡ Ø§ØŗØĒ! Ø¨ØąØ§ÛŒ ÚŠØŗØ¨ Ø§ØˇŲ„Ø§ØšØ§ØĒ بیشØĒØą Ų„ØˇŲØ§Ų‹ ŲžØŗØĒ ŲˆØ¨Ų„Ø§Ú¯ Ų…Ø§ ØąØ§ Ø§ÛŒŲ†ØŦا Ø¨ØąØąØŗÛŒ ÚŠŲ†ÛŒØ¯: +survey.changes2=با Ø§ÛŒŲ† ØĒØēÛŒÛŒØąØ§ØĒ، Ų…Ø§ Ø­Ų…Ø§ÛŒØĒ ؈ ØĒØŖŲ…ÛŒŲ† Ų…Ø§Ų„ÛŒ ØĒØŦØ§ØąÛŒ Ø¯ØąÛŒØ§ŲØĒ Ų…ÛŒâ€ŒÚŠŲ†ÛŒŲ… +survey.please=Ų„ØˇŲØ§Ų‹ Ø¯Øą Ų†Ø¸Øą Ø¨Ú¯ÛŒØąÛŒØ¯ ÚŠŲ‡ Ø¯Øą Ų†Ø¸ØąØŗŲ†ØŦی Ų…Ø§ Ø´ØąÚŠØĒ ÚŠŲ†ÛŒØ¯! +survey.disabled=(ŲžŲ†ØŦØąŲ‡ Ų†Ø¸ØąØŗŲ†ØŦی Ø¯Øą Ø¨ØąŲˆØ˛ØąØŗØ§Ų†ÛŒâ€ŒŲ‡Ø§ÛŒ ØĸÛŒŲ†Ø¯Ų‡ ØēÛŒØąŲØšØ§Ų„ ØŽŲˆØ§Ų‡Ø¯ شد Ø§Ų…Ø§ Ø¯Øą ŲžØ§ÛŒÛŒŲ† ØĩŲØ­Ų‡ Ø¯Øą Ø¯ØŗØĒØąØŗ ØŽŲˆØ§Ų‡Ø¯ Ø¨ŲˆØ¯) +survey.button=Ø´ØąÚŠØĒ Ø¯Øą Ų†Ø¸ØąØŗŲ†ØŦی +survey.dontShowAgain=Ø¯ÛŒÚ¯Øą Ų†Ø´Ø§Ų† Ų†Ø¯Ų‡ + + +#error +error.sorry=Ų…ØĒØŖØŗŲÛŒŲ… Ø¨ØąØ§ÛŒ Ų…Ø´ÚŠŲ„ Ų…ŲˆØŦŲˆØ¯! +error.needHelp=Ų†ÛŒØ§Ø˛ Ø¨Ų‡ ÚŠŲ…ÚŠ / ÛŒØ§ŲØĒŲ† Ų…Ø´ÚŠŲ„ÛŒØŸ +error.contactTip=Ø§Ú¯Øą Ų‡Ų†ŲˆØ˛ Ų…Ø´ÚŠŲ„ÛŒ Ø¯Ø§ØąÛŒØ¯ØŒ Ø¯ØąÛŒØē Ų†ÚŠŲ†ÛŒØ¯ ÚŠŲ‡ با Ų…Ø§ ØĒŲ…Ø§Øŗ Ø¨Ú¯ÛŒØąÛŒØ¯. Ų…ÛŒâ€ŒØĒŲˆØ§Ų†ÛŒØ¯ یڊ ØĒیڊØĒ Ø¯Øą ØĩŲØ­Ų‡ GitHub Ų…Ø§ Ø§ØąØŗØ§Ų„ ÚŠŲ†ÛŒØ¯ یا Ø§Ø˛ ØˇØąÛŒŲ‚ Discord با Ų…Ø§ ØĒŲ…Ø§Øŗ Ø¨Ú¯ÛŒØąÛŒØ¯: +error.404.head=Û´Û°Û´ - ØĩŲØ­Ų‡ ŲžÛŒØ¯Ø§ Ų†Ø´Ø¯ | Ø§ŲˆŲ‡ØŒ Ø¯Øą ڊد Ų„ØēØ˛ÛŒØ¯ÛŒŲ…! +error.404.1=Ø¨Ų‡ Ų†Ø¸Øą Ų†Ų…ÛŒâ€ŒØąØŗØ¯ بØĒŲˆØ§Ų†ÛŒŲ… ØĩŲØ­Ų‡â€ŒØ§ÛŒ ØąØ§ ÚŠŲ‡ Ø¯Ų†Ø¨Ø§Ų„Ø´ Ų‡ØŗØĒید ŲžÛŒØ¯Ø§ ÚŠŲ†ÛŒŲ…. +error.404.2=Ų…Ø´ÚŠŲ„ÛŒ ŲžÛŒØ´ ØĸŲ…Ø¯Ų‡ Ø§ØŗØĒ +error.github=Ø§ØąØŗØ§Ų„ ØĒیڊØĒ Ø¯Øą GitHub +error.showStack=Ų†Ų…Ø§ÛŒØ´ Trace Stack +error.copyStack=ÚŠŲžÛŒ Trace Stack +error.githubSubmit=GitHub - Ø§ØąØŗØ§Ų„ ØĒیڊØĒ +error.discordSubmit=Discord - Ø§ØąØŗØ§Ų„ ŲžØŗØĒ ŲžØ´ØĒÛŒØ¨Ø§Ų†ÛŒ + + +#remove-image +removeImage.title=Ø­Ø°Ų ØĒØĩŲˆÛŒØą +removeImage.header=Ø­Ø°Ų ØĒØĩŲˆÛŒØą +removeImage.removeImage=Ø­Ø°Ų ØĒØĩŲˆÛŒØą +removeImage.submit=Ø­Ø°Ų ØĒØĩŲˆÛŒØą + + +splitByChapters.title=ØĒŲ‚ØŗÛŒŲ… PDF Ø¨Øą Ø§ØŗØ§Øŗ ؁ØĩŲ„â€ŒŲ‡Ø§ +splitByChapters.header=ØĒŲ‚ØŗÛŒŲ… PDF Ø¨Øą Ø§ØŗØ§Øŗ ؁ØĩŲ„â€ŒŲ‡Ø§ +splitByChapters.bookmarkLevel=ØŗØˇØ­ Ų†Ø´Ø§Ų†ÚŠ +splitByChapters.includeMetadata=Ø´Ø§Ų…Ų„ Ų…ØĒادیØĒا +splitByChapters.allowDuplicates=اØŦØ§Ø˛Ų‡â€ŒÛŒ ØĒÚŠØąØ§Øą +splitByChapters.desc.1=Ø§ÛŒŲ† Ø§Ø¨Ø˛Ø§Øą یڊ ŲØ§ÛŒŲ„ PDF ØąØ§ Ø¨Øą Ø§ØŗØ§Øŗ ØŗØ§ØŽØĒØ§Øą ؁ØĩŲ„â€ŒØ§Ø´ Ø¨Ų‡ Ú†Ų†Ø¯ÛŒŲ† ŲØ§ÛŒŲ„ PDF ØĒŲ‚ØŗÛŒŲ… Ų…ÛŒâ€ŒÚŠŲ†Ø¯. +splitByChapters.desc.2=ØŗØˇØ­ Ų†Ø´Ø§Ų†ÚŠ: ØŗØˇØ­ Ų†Ø´Ø§Ų†ÚŠâ€ŒŲ‡Ø§ ØąØ§ Ø¨ØąØ§ÛŒ Ø§ØŗØĒŲØ§Ø¯Ų‡ Ø¯Øą ØĒŲ‚ØŗÛŒŲ… Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ (0 Ø¨ØąØ§ÛŒ ØŗØˇØ­ Ø¨Ø§Ų„Ø§ØŒ 1 Ø¨ØąØ§ÛŒ ØŗØˇØ­ Ø¯ŲˆŲ… ؈ ØēÛŒØąŲ‡). +splitByChapters.desc.3=Ø´Ø§Ų…Ų„ Ų…ØĒادیØĒا: Ø§Ú¯Øą Ø§Ų†ØĒ؎اب Ø´Ø¯Ų‡ØŒ Ų…ØĒادیØĒای ŲØ§ÛŒŲ„ PDF اØĩŲ„ÛŒ Ø¯Øą Ų‡Øą ŲØ§ÛŒŲ„ ØĒŲ‚ØŗÛŒŲ…â€ŒØ´Ø¯Ų‡ Ú¯Ų†ØŦØ§Ų†Ø¯Ų‡ ØŽŲˆØ§Ų‡Ø¯ شد. +splitByChapters.desc.4=اØŦØ§Ø˛Ų‡â€ŒÛŒ ØĒÚŠØąØ§Øą: Ø§Ú¯Øą Ø§Ų†ØĒ؎اب Ø´Ø¯Ų‡ باشد، اØŦØ§Ø˛Ų‡ Ų…ÛŒâ€ŒØ¯Ų‡Ø¯ Ų†Ø´Ø§Ų†ÚŠâ€ŒŲ‡Ø§ÛŒ Ų…ØĒؚدد Ø¯Øą یڊ ØĩŲØ­Ų‡ØŒ ŲØ§ÛŒŲ„â€ŒŲ‡Ø§ÛŒ PDF ØŦØ¯Ø§Ú¯Ø§Ų†Ų‡ ایØŦاد ÚŠŲ†Ų†Ø¯. +splitByChapters.submit=ØĒŲ‚ØŗÛŒŲ… PDF + +#File Chooser +fileChooser.click=ÚŠŲ„ÛŒÚŠ ÚŠŲ†ÛŒØ¯ +fileChooser.or=یا +fileChooser.dragAndDrop=بڊشید ؈ ØąŲ‡Ø§ ÚŠŲ†ÛŒØ¯ +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=ŲØ§ÛŒŲ„(Ų‡Ø§ÛŒ) ØŽŲˆØ¯ ØąØ§ Ø§ÛŒŲ†ØŦا بڊشید ؈ ØąŲ‡Ø§ ÚŠŲ†ÛŒØ¯ + +#release notes +releases.footer=Ų†ØŗØŽŲ‡â€ŒŲ‡Ø§ +releases.title=یادداشØĒâ€ŒŲ‡Ø§ÛŒ Ų†ØŗØŽŲ‡ +releases.header=یادداشØĒâ€ŒŲ‡Ø§ÛŒ Ų†ØŗØŽŲ‡ +releases.current.version=Ų†ØŗØŽŲ‡ ŲØšŲ„ÛŒ +releases.note=یادداشØĒâ€ŒŲ‡Ø§ÛŒ Ų†ØŗØŽŲ‡ ŲŲ‚Øˇ Ø¨Ų‡ Ø˛Ø¨Ø§Ų† Ø§Ų†Ú¯Ų„ÛŒØŗÛŒ Ų…ŲˆØŦŲˆØ¯ Ø§ØŗØĒ + +#Validate Signature +validateSignature.title=اؚØĒØ¨Ø§ØąØŗŲ†ØŦی Ø§Ų…ØļØ§Ų‡Ø§ÛŒ PDF +validateSignature.header=اؚØĒØ¨Ø§ØąØŗŲ†ØŦی Ø§Ų…Øļای دیØŦیØĒØ§Ų„ +validateSignature.selectPDF=ŲØ§ÛŒŲ„ PDF Ø§Ų…ØļØ§Ø´Ø¯Ų‡ ØąØ§ Ø§Ų†ØĒ؎اب ÚŠŲ†ÛŒØ¯ +validateSignature.submit=اؚØĒØ¨Ø§ØąØŗŲ†ØŦی Ø§Ų…ØļØ§Ų‡Ø§ +validateSignature.results=Ų†ØĒایØŦ اؚØĒØ¨Ø§ØąØŗŲ†ØŦی +validateSignature.status=؈ØļØšÛŒØĒ +validateSignature.signer=Ø§Ų…ØļØ§ÚŠŲ†Ų†Ø¯Ų‡ +validateSignature.date=ØĒØ§ØąÛŒØŽ +validateSignature.reason=Ø¯Ų„ÛŒŲ„ +validateSignature.location=Ų…ÚŠØ§Ų† +validateSignature.noSignatures=Ų‡ÛŒÚ† Ø§Ų…Øļای دیØŦیØĒØ§Ų„ÛŒ Ø¯Øą Ø§ÛŒŲ† ØŗŲ†Ø¯ ÛŒØ§ŲØĒ Ų†Ø´Ø¯ +validateSignature.status.valid=Ų…ØšØĒØ¨Øą +validateSignature.status.invalid=Ų†Ø§Ų…ØšØĒØ¨Øą +validateSignature.chain.invalid=اؚØĒØ¨Ø§ØąØŗŲ†ØŦی Ø˛Ų†ØŦÛŒØąŲ‡ Ú¯ŲˆØ§Ų‡ÛŒ Ų†Ø§Ų…ŲˆŲŲ‚ Ø¨ŲˆØ¯ - Ų‡ŲˆÛŒØĒ Ø§Ų…ØļØ§ÚŠŲ†Ų†Ø¯Ų‡ Ų‚Ø§Ø¨Ų„ ØĒØŖÛŒÛŒØ¯ Ų†ÛŒØŗØĒ +validateSignature.trust.invalid=Ú¯ŲˆØ§Ų‡ÛŒ Ø¯Øą Ų…ØŽØ˛Ų† اؚØĒŲ…Ø§Ø¯ Ų†ÛŒØŗØĒ - Ų…Ų†Ø¨Øš Ų‚Ø§Ø¨Ų„ ØĒØŖÛŒÛŒØ¯ Ų†ÛŒØŗØĒ +validateSignature.cert.expired=Ú¯ŲˆØ§Ų‡ÛŒ Ų…Ų†Ų‚Øļی Ø´Ø¯Ų‡ Ø§ØŗØĒ +validateSignature.cert.revoked=Ú¯ŲˆØ§Ų‡ÛŒ Ų„Øē؈ Ø´Ø¯Ų‡ Ø§ØŗØĒ +validateSignature.signature.info=Ø§ØˇŲ„Ø§ØšØ§ØĒ Ø§Ų…Øļا +validateSignature.signature=Ø§Ų…Øļا +validateSignature.signature.mathValid=Ø§Ų…Øļا Ø§Ø˛ Ų„Ø­Ø§Ø¸ ØąÛŒØ§Øļی Ų…ØšØĒØ¨Øą Ø§ØŗØĒ Ø§Ų…Ø§: +validateSignature.selectCustomCert=ŲØ§ÛŒŲ„ Ú¯ŲˆØ§Ų‡ÛŒ ØŗŲØ§ØąØ´ÛŒ X.509 (ا؎ØĒÛŒØ§ØąÛŒ) +validateSignature.cert.info=ØŦØ˛ØĻیاØĒ Ú¯ŲˆØ§Ų‡ÛŒ +validateSignature.cert.issuer=ØĩØ§Ø¯ØąÚŠŲ†Ų†Ø¯Ų‡ +validateSignature.cert.subject=Ų…ŲˆØļŲˆØš +validateSignature.cert.serialNumber=Ø´Ų…Ø§ØąŲ‡ ØŗØąÛŒØ§Ų„ +validateSignature.cert.validFrom=Ų…ØšØĒØ¨Øą Ø§Ø˛ +validateSignature.cert.validUntil=Ų…ØšØĒØ¨Øą ØĒا +validateSignature.cert.algorithm=Ø§Ų„Ú¯ŲˆØąÛŒØĒŲ… +validateSignature.cert.keySize=Ø§Ų†Ø¯Ø§Ø˛Ų‡ ÚŠŲ„ÛŒØ¯ +validateSignature.cert.version=Ų†ØŗØŽŲ‡ +validateSignature.cert.keyUsage=ÚŠØ§ØąØ¨ØąØ¯ ÚŠŲ„ÛŒØ¯ +validateSignature.cert.selfSigned=با Ø§Ų…Øļای ØŽŲˆØ¯ +validateSignature.cert.bits=بیØĒâ€ŒŲ‡Ø§ diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index b2cf82bed7..7831a28331 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -56,8 +56,8 @@ userNotFoundMessage=Utilisateur non trouvÊ. incorrectPasswordMessage=Le mot de passe actuel est incorrect. usernameExistsMessage=Le nouveau nom d'utilisateur existe dÊjà. invalidUsernameMessage=Nom d'utilisateur invalide, le nom d'utilisateur ne peut contenir que des lettres, des chiffres et les caractères spÊciaux suivants @._+- ou doit ÃĒtre une adresse e-mail valide. -invalidPasswordMessage=Le mot de passe ne peut pas ÃĒtre vide et ne doit pas contenir d'espaces au dÊbut ou en fin. -confirmPasswordErrorMessage=Nouveau Mot de passe et Confirmer le Nouveau Mot de passe doivent correspondre. +invalidPasswordMessage=Le mot de passe ne peut pas ÃĒtre vide et ne doit pas contenir d'espaces au dÊbut ou à la fin. +confirmPasswordErrorMessage=Le nouveau mot de passe et sa confirmation doivent ÃĒtre identiques. deleteCurrentUserMessage=Impossible de supprimer l'utilisateur actuellement connectÊ. deleteUsernameExistsMessage=Le nom d'utilisateur n'existe pas et ne peut pas ÃĒtre supprimÊ. downgradeCurrentUserMessage=Impossible de rÊtrograder le rôle de l'utilisateur actuel. @@ -81,7 +81,8 @@ page=Page pages=Pages loading=Chargement... addToDoc=Ajouter au Document -reset=Reset +reset=RÊinitialiser +apply=Apply legal.privacy=Politique de ConfidentialitÊ legal.terms=Conditions GÊnÊrales @@ -142,7 +143,7 @@ navbar.language=Langues navbar.settings=Paramètres navbar.allTools=Outils navbar.multiTool=Outils Multiples -navbar.search=Search +navbar.search=Rechercher navbar.sections.organize=Organisation navbar.sections.convertTo=Convertir en PDF navbar.sections.convertFrom=Convertir depuis PDF @@ -238,11 +239,13 @@ database.creationDate=Date de CrÊation database.fileSize=Taille du Fichier database.deleteBackupFile=Supprimer le fichier de sauvegarde database.importBackupFile=Importer le fichier de sauvegarde +database.createBackupFile=Create Backup File database.downloadBackupFile=TÊlÊcharger le fichier de sauvegarde database.info_1=Lors de l'importation des donnÊes, il est crucial de garantir la structure correcte. Si vous n'ÃĒtes pas sÃģr de ce que vous faites, sollicitez un avis et un soutien d'un professionnel. Une erreur dans la structure peut entraÃŽner des dysfonctionnements de l'application, allant jusqu'à l'incapacitÊ totale d'exÊcuter l'application. database.info_2=Le nom du fichier ne fait pas de diffÊrence lors de l'upload. Il sera renommÊ ultÊrieurement selon le format backup_user_yyyyMMddHHmm.sql, assurant ainsi une convention de nommage cohÊrente. database.submit=Importer la sauvegarde database.importIntoDatabaseSuccessed=Importation dans la base de donnÊes rÊussie +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=Fichier ne peut pas ÃĒtre null ou vide database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=Caviarder automatiquement home.autoRedact.desc=Caviardez automatiquement les informations sensibles d'un PDF. autoRedact.tags=caviarder,redact,auto +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF en CSV home.tableExtraxt.desc=Extrait les tableaux d'un PDF et les transforme en CSV. tableExtraxt.tags=CSV, Extraction de table, extraction, conversion @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=SÊparer un PDF par chapitres home.splitPdfByChapters.desc=SÊparez un PDF en fichiers multiples en fonction de sa structure par chapitres. splitPdfByChapters.tags=sÊparer,chapitres,split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Remplacer-Inverser-Couleur replace-color.header=Remplacer-Inverser Couleur PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=RequÃĒte invalide login.oauth2AccessDenied=Accès refusÊ login.oauth2InvalidTokenResponse=RÊponse contenant le jeton est invalide login.oauth2InvalidIdToken=Jeton d'identification invalide +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=L'utilisateur est dÊsactivÊ, la connexion est actuellement bloquÊe avec ce nom d'utilisateur. Veuillez contacter l'administrateur. login.alreadyLoggedIn=Vous ÃĒtes dÊjà connectÊ sur login.alreadyLoggedIn2=appareils. Veuillez vous dÊconnecter des appareils et rÊessayer. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Marge intÊrieure supplÊmentaire autoRedact.convertPDFToImageLabel=Convertir un PDF en PDF-Image (utilisÊ pour supprimer le texte en arrière-plan) autoRedact.submitButton=Caviarder +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Afficher le JavaScript @@ -813,13 +834,18 @@ sign.draw=Dessiner une signature sign.text=Saisir de texte sign.clear=Effacer sign.add=Ajouter -sign.saved=Saved Signatures +sign.saved=Sceaux enregistrÊes sign.save=Enregistrer le sceau sign.personalSigs=Sceaux personnels sign.sharedSigs=Sceaux partagÊs sign.noSavedSigs=Aucun sceau enregistrÊ trouvÊ - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=RÊparer repair.header=RÊparer @@ -863,7 +889,7 @@ ocr.selectText.10=Mode OCR ocr.selectText.11=Supprimer les images après l'OCR (Supprime TOUTES les images, utile uniquement si elles font partie de l'Êtape de conversion) ocr.selectText.12=Type de rendu (avancÊ) ocr.help=Veuillez lire cette documentation pour savoir comment utiliser l'OCR pour d'autres langues ou une utilisation hors Docker : -ocr.credit=Ce service utilise OCRmyPDF et Tesseract pour l'OCR. +ocr.credit=Ce service utilise qpdf et Tesseract pour l'OCR. ocr.submit=Traiter @@ -887,7 +913,7 @@ fileToPDF.submit=Convertir #compress compress.title=Compresser un PDF compress.header=Compresser un PDF (lorsque c'est possible!) -compress.credit=Ce service utilise Ghostscript pour la compression et l'optimisation des PDF. +compress.credit=Ce service utilise qpdf pour la compression et l'optimisation des PDF. compress.selectText.1=Mode manuel – de 1 à 4 compress.selectText.2=Niveau d'optimisation compress.selectText.3=4 (terrible pour les images textuelles) @@ -935,17 +961,39 @@ pdfOrganiser.placeholder=(par exemple 1,3,2 ou 4-8,2,10-12 ou 2n-1) multiTool.title=Outil multifonction PDF multiTool.header=Outil multifonction PDF multiTool.uploadPrompts=Nom du fichier -multiTool.selectAll=Select All -multiTool.deselectAll=Deselect All -multiTool.selectPages=Page Select -multiTool.selectedPages=Selected Pages +multiTool.selectAll=Tout sÊlectionner +multiTool.deselectAll=Tout dÊselectionner +multiTool.selectPages=SÊlection des pages +multiTool.selectedPages=Pages sÊlectionnÊes multiTool.page=Page -multiTool.deleteSelected=Delete Selected -multiTool.downloadAll=Export -multiTool.downloadSelected=Export Selected +multiTool.deleteSelected=Supprimer la sÊlection +multiTool.downloadAll=Exporter +multiTool.downloadSelected=Exporter la sÊlection + +multiTool.insertPageBreak=InsÊrer un saut de page +multiTool.addFile=Ajouter un fichier +multiTool.rotateLeft=Rotation vers la gauche +multiTool.rotateRight=Rotation vers la droite +multiTool.split=Diviser +multiTool.moveLeft=DÊplacer vers la gauche +multiTool.moveRight=DÊplacer vers la droite +multiTool.delete=Supprimer +multiTool.dragDropMessage=Page(s) sÊlectionnÊes +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. #multiTool-advert -multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! +multiTool-advert.message=Cette fonctionnalitÊ est aussi disponible dans la page de l'outil multifonction. Allez-y pour une interface page par page amÊliorÊe et des fonctionnalitÊs additionnelles ! #view pdf viewPdf.title=Visualiser un PDF @@ -1008,6 +1056,7 @@ pdfToImage.grey=Niveaux de gris pdfToImage.blackwhite=Noir et blanc (peut engendrer une perte de donnÊes !) pdfToImage.submit=Convertir pdfToImage.info=Python n’est pas installÊ. NÊcessaire pour la conversion WebP. +pdfToImage.placeholder=(par exemple : 1,2,8 ou 4,7,12-16 ou 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=Chiffrer #watermark watermark.title=Ajouter un filigrane watermark.header=Ajouter un filigrane +watermark.customColor=Couleur de texte personnalisÊe watermark.selectText.1=PDF auquel ajouter un filigrane watermark.selectText.2=Texte du filigrane watermark.selectText.3=Taille de police watermark.selectText.4=Rotation (de 0 à 360 degrÊs) -watermark.selectText.5=widthSpacer (espace entre chaque filigrane horizontalement) -watermark.selectText.6=heightSpacer (espace entre chaque filigrane verticalement) +watermark.selectText.5=Width Spacer (espace entre chaque filigrane horizontalement) +watermark.selectText.6=Height Spacer (espace entre chaque filigrane verticalement) watermark.selectText.7=OpacitÊ (de 0% à 100%) watermark.selectText.8=Type de filigrane watermark.selectText.9=Image du filigrane @@ -1097,7 +1147,7 @@ changeMetadata.submit=Modifier #pdfToPDFA pdfToPDFA.title=PDF en PDF/A pdfToPDFA.header=PDF en PDF/A -pdfToPDFA.credit=Ce service utilise ghostscript pour la conversion en PDF/A. +pdfToPDFA.credit=Ce service utilise qpdf pour la conversion en PDF/A. pdfToPDFA.submit=Convertir pdfToPDFA.tip=Ne fonctionne actuellement pas pour plusieurs entrÊes à la fois pdfToPDFA.outputFormat=Format de sortie @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Niveau de Signet : Choisissez le niveau de signets à uti splitByChapters.desc.3=Inclure les MÊtadonnÊes : Si cochÊ, les mÊtadonnÊes du PDF original seront incluses dans chaque PDF divisÊ. splitByChapters.desc.4=Autoriser les Doublons : Si cochÊ, permet à plusieurs signets sur la mÃĒme page de crÊer des PDF sÊparÊs. splitByChapters.submit=Diviser le PDF + +#File Chooser +fileChooser.click=Cliquez +fileChooser.or=ou +fileChooser.dragAndDrop=Glisser & DÊposer +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Glisser & DÊposer le(s) fichier(s) ici + +#release notes +releases.footer=Versions +releases.title=Notes de version +releases.header=Notes de version +releases.current.version=Version actuelle +releases.note=Les notes de version sont uniquement disponibles en anglais + +#Validate Signature +validateSignature.title=Valider les signatures PDF +validateSignature.header=Valider les signatures numÊriques +validateSignature.selectPDF=SÊlectionnez un fichier PDF signÊ +validateSignature.submit=Valider les signatures +validateSignature.results=RÊsultats de la validation +validateSignature.status=Statut +validateSignature.signer=Signataire +validateSignature.date=Date +validateSignature.reason=Raison +validateSignature.location=Localisation +validateSignature.noSignatures=Aucune signature numÊrique trouvÊe dans ce document +validateSignature.status.valid=Valide +validateSignature.status.invalid=Invalide +validateSignature.chain.invalid=La validation de la chaÃŽne de certificats a ÊchouÊ - impossible de vÊrifier l'identitÊ du signataire +validateSignature.trust.invalid=Le certificat n'est pas dans le magasin de confiance - la source ne peut pas ÃĒtre vÊrifiÊe +validateSignature.cert.expired=Le certificat a expirÊ +validateSignature.cert.revoked=Le certificat a ÊtÊ rÊvoquÊ +validateSignature.signature.info=Informations sur la signature +validateSignature.signature=Signature +validateSignature.signature.mathValid=La signature est mathÊmatiquement valide MAIS : +validateSignature.selectCustomCert=Fichier de certificat personnalisÊ X.509 (Optionnel) +validateSignature.cert.info=DÊtails du certificat +validateSignature.cert.issuer=Émetteur +validateSignature.cert.subject=Sujet +validateSignature.cert.serialNumber=NumÊro de sÊrie +validateSignature.cert.validFrom=Valide à partir du +validateSignature.cert.validUntil=Valide jusqu'au +validateSignature.cert.algorithm=Algorithme +validateSignature.cert.keySize=Taille de la clÊ +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Usage de la clÊ +validateSignature.cert.selfSigned=Auto-signÊ +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_ga_IE.properties b/src/main/resources/messages_ga_IE.properties index f95ace0150..402b255370 100644 --- a/src/main/resources/messages_ga_IE.properties +++ b/src/main/resources/messages_ga_IE.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=DÃĄta Cruthaithe database.fileSize=MÊid an Chomhaid database.deleteBackupFile=Scrios Comhad CÃēltaca database.importBackupFile=IompÃŗrtÃĄil Comhad CÃēltaca +database.createBackupFile=Create Backup File database.downloadBackupFile=ÍoslÃŗdÃĄil an comhad cÃēltaca database.info_1=Agus sonraí ÃĄ n-allmhairiÃē, tÃĄ sÊ ríthÃĄbhachtach an struchtÃēr ceart a chinntiÃē. Mura bhfuil tÃē cinnte faoina bhfuil ar siÃēl agat, iarr comhairle agus tacaíocht Ãŗ ghairmí. FÊadfaidh earrÃĄid sa struchtÃēr a bheith ina chÃēis le mífheidhmeanna iarratais, suas go dtí agus lena n-ÃĄirítear an neamhÃĄbaltacht iomlÃĄn an t-iarratas a rith. database.info_2=Ní hionann ainm an chomhaid agus Ê ÃĄ uaslÃŗdÃĄil. DÊanfar Ê a athainmniÃē ina dhiaidh sin chun an fhormÃĄid backup_user_yyyyMMddHHmm.sql a leanÃēint, ag cinntiÃē go bhfuil coinbhinsiÃēn ainmniÃēchÃĄin comhsheasmhach ann. database.submit=IompÃŗrtÃĄil CÃēltaca database.importIntoDatabaseSuccessed=D'Êirigh leis an allmhairiÃē isteach sa bhunachar sonraí +database.backupCreated=Database backup successful database.fileNotFound=Comhad gan aimsiÃē database.fileNullOrEmpty=Níor cheart go mbeadh an comhad ar neamhní nÃŗ folamh database.failedImportFile=Theip ar iompÃŗrtÃĄil an chomhaid @@ -472,6 +475,10 @@ home.autoRedact.title=Auto Redact home.autoRedact.desc=Auto Redacts (Blacks out) tÊacs i PDF bunaithe ar an tÊacs ionchuir autoRedact.tags=Dearg, Folaigh, dubh amach, dubh, marcÃŗir, i bhfolach +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=Ó CSV go PDF home.tableExtraxt.desc=Sleachta TÃĄblaí Ãŗ PDF agus Ê a thiontÃē go CSV tableExtraxt.tags=CSV, EastÃŗscadh TÃĄbla, sliocht, tiontÃē @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Iarratas Neamhbhailí login.oauth2AccessDenied=Rochtain DiÃēltaithe login.oauth2InvalidTokenResponse=Freagra Comhartha Neamhbhailí login.oauth2InvalidIdToken=Comhartha Aitheantais Neamhbhailí +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=StuÃĄil Breise Saincheaptha autoRedact.convertPDFToImageLabel=Tiontaigh PDF go PDF-Image (ÚsÃĄidte chun tÊacs a bhaint taobh thiar den bhosca) autoRedact.submitButton=Cuir isteach +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=TaispeÃĄin Javascript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=DeisiÃēchÃĄn repair.header=PDF a dheisiÃē @@ -863,7 +889,7 @@ ocr.selectText.10=MÃŗd OCR ocr.selectText.11=Bain íomhÃĄnna tar Êis OCR (Bain GACH íomhÃĄ, ní ÃēsÃĄideach ach amhÃĄin mÃĄ tÃĄ siad mar chuid den chÊim tiontaithe) ocr.selectText.12=CineÃĄl RindreÃĄla (ArdleibhÊal) ocr.help=LÊigh le do thoil an doicimÊadÃē seo ar conas Ê seo a ÃēsÃĄid do theangacha eile agus/nÃŗ ÃēsÃĄid nach bhfuil i ndugairí -ocr.credit=ÚsÃĄideann an tseirbhís seo OCRmyPDF agus Tesseract le haghaidh OCR. +ocr.credit=ÚsÃĄideann an tseirbhís seo qpdf agus Tesseract le haghaidh OCR. ocr.submit=PrÃŗiseÃĄil PDF le OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Tiontaigh go PDF #compress compress.title=ComhbhrÃēigh compress.header=ComhbhrÃēigh PDF -compress.credit=ÚsÃĄideann an tseirbhís seo Ghostscript le haghaidh ComhbhrÃē/Optimization PDF. +compress.credit=ÚsÃĄideann an tseirbhís seo qpdf le haghaidh ComhbhrÃē/Optimization PDF. compress.selectText.1=MÃŗd LÃĄimhe - Ó 1 go 4 compress.selectText.2=LeibhÊal optamaithe: compress.selectText.3=4 (UafÃĄsach le haghaidh íomhÃĄnna tÊacs) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=ScÃĄla Liath pdfToImage.blackwhite=Dubh agus BÃĄn (D’fhÊadfadh sonraí a chailleadh!) pdfToImage.submit=Tiontaigh pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.placeholder=(m.sh. 1,2,8 nÃŗ 4,7,12-16 nÃŗ 2n-1) #addPassword @@ -1035,11 +1084,12 @@ addPassword.submit=Criptigh #watermark watermark.title=Cuir Uisce leis watermark.header=Cuir Uisce leis +watermark.customColor=Dath TÊacs Saincheaptha watermark.selectText.1=Roghnaigh PDF chun comhartha uisce a chur leis: watermark.selectText.2=TÊacs Comhartha Uisce: watermark.selectText.3=MÊid clÃŗ: watermark.selectText.4=RothlÃē (0-360): -watermark.selectText.5=widthSpacer (SpÃĄs idir gach comhartha uisce go cothromÃĄnach): +watermark.selectText.5=Width Spacer (SpÃĄs idir gach comhartha uisce go cothromÃĄnach): watermark.selectText.6=spÃĄsaire airde (SpÃĄs idir gach comhartha uisce go hingearach): watermark.selectText.7=Teimhneacht (0% - 100%): watermark.selectText.8=CineÃĄl Comhartha Uisce: @@ -1097,7 +1147,7 @@ changeMetadata.submit=AthrÃē #pdfToPDFA pdfToPDFA.title=PDF Go PDF/A pdfToPDFA.header=PDF Go PDF/A -pdfToPDFA.credit=ÚsÃĄideann an tseirbhís seo ghostscript chun PDF/A a thiontÃē +pdfToPDFA.credit=ÚsÃĄideann an tseirbhís seo qpdf chun PDF/A a thiontÃē pdfToPDFA.submit=Tiontaigh pdfToPDFA.tip=Faoi lÃĄthair ní oibríonn sÊ le haghaidh ionchuir iolracha ag an am cÊanna pdfToPDFA.outputFormat=FormÃĄid aschuir @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 88f5de17a9..ebf4d0e716 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -82,6 +82,7 @@ pages=ā¤ĒāĨƒā¤ˇāĨā¤ āĨ‹ā¤‚ loading=ā¤Ąā¤žā¤˛ā¤ŋ⤂⤗... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=⤗āĨā¤ĒāĨā¤¤ā¤¤ā¤ž ⤏āĨ‚ā¤šā¤¨ā¤ž legal.terms=ā¤ļ⤰āĨā¤¤āĨ‡ā¤‚ ⤔⤰ ā¤ĒāĨā¤°ā¤ĩā¤žā¤š @@ -238,11 +239,13 @@ database.creationDate=Creation Date database.fileSize=File Size database.deleteBackupFile=Delete Backup File database.importBackupFile=Import Backup File +database.createBackupFile=Create Backup File database.downloadBackupFile=Download Backup File database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. database.submit=Import Backup database.importIntoDatabaseSuccessed=Import into database successed +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=⤏āĨā¤ĩ⤤⤃ ⤗āĨ‹ā¤Ē⤍āĨ€ā¤¯ā¤•⤰⤪ home.autoRedact.desc=ā¤ĒāĨā¤°ā¤ĩā¤ŋ⤎āĨā¤Ÿ ā¤Ēā¤žā¤  ⤕āĨ‡ ā¤†ā¤§ā¤žā¤° ā¤Ē⤰ ā¤ĒāĨ€ā¤ĄāĨ€ā¤ā¤Ģā¤ŧ ā¤ŽāĨ‡ā¤‚ ā¤Ēā¤žā¤  ⤕āĨ‹ ⤏āĨā¤ĩ⤤⤃ ⤗āĨ‹ā¤Ē⤍āĨ€ā¤¯ā¤•⤰ā¤ŋ⤤(ā¤•ā¤žā¤˛ā¤ž ⤕⤰āĨ‡ā¤‚) autoRedact.tags=⤗āĨ‹ā¤Ē⤍āĨ€ā¤¯ā¤•⤰⤪, ⤛ā¤ŋā¤Ēā¤žā¤¨ā¤ž, ā¤•ā¤žā¤˛ā¤ž ā¤•ā¤°ā¤¨ā¤ž, ā¤•ā¤žā¤˛ā¤ž, ā¤Žā¤žā¤°āĨā¤•⤰, ⤛ā¤ŋā¤Ēā¤ž ā¤šāĨā¤† +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF ⤏āĨ‡ CSV ā¤ŽāĨ‡ā¤‚ home.tableExtraxt.desc=CSV ā¤ŽāĨ‡ā¤‚ ā¤Ŧā¤Ļ⤞⤤āĨ‡ ā¤šāĨā¤ ā¤ĒāĨ€ā¤ĄāĨ€ā¤ā¤Ģā¤ŧ ⤏āĨ‡ ā¤¤ā¤žā¤˛ā¤ŋā¤•ā¤žā¤ā¤ ⤍ā¤ŋā¤•ā¤žā¤˛ā¤¤ā¤ž ā¤šāĨˆ tableExtraxt.tags=CSV, ā¤¤ā¤žā¤˛ā¤ŋā¤•ā¤ž ⤍ā¤ŋā¤•ā¤žā¤˛ā¤¨ā¤ž, ⤍ā¤ŋā¤•ā¤žā¤˛ā¤¨ā¤ž, ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤ŋ⤤ ā¤•ā¤°ā¤¨ā¤ž @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=⤅⤧āĨā¤¯ā¤žā¤¯āĨ‹ā¤‚ ā¤Ē⤰ ⤅⤞⤗-⤕⤰ home.splitPdfByChapters.desc=ā¤ĒāĨā¤¸āĨā¤¤ā¤• ⤕āĨ‡ ⤅⤧āĨā¤¯ā¤žā¤¯ ⤕āĨ€ ā¤¸ā¤‚ā¤°ā¤šā¤¨ā¤ž ā¤Ē⤰ ā¤†ā¤§ā¤žā¤°ā¤ŋ⤤ ā¤ā¤• PDF ⤕āĨ‹ ā¤Ŧā¤šā¤ŋ⤍-ā¤­ā¤žā¤—āĨ‹ā¤‚ ā¤ŽāĨ‡ā¤‚ ā¤ĩā¤ŋā¤­ā¤žā¤œā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚ splitPdfByChapters.tags=ā¤ĩā¤ŋā¤­ā¤žā¤œā¤¨,⤅⤧āĨā¤¯ā¤žā¤¯,ā¤Ē⤏⤂ā¤ĻāĨ€ā¤Ļā¤ž,⤰⤜āĨˆā¤¤ +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=⤚ā¤ŋ⤤āĨā¤° ⤰⤂⤗ ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤¨/ā¤‰ā¤˛ā¤Ÿā¤•ā¤° ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤¨ PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=⤗⤞⤤ ā¤¯ā¤žā¤šā¤¨ā¤ž login.oauth2AccessDenied=⤇⤍ā¤ĒāĨā¤Ÿ ā¤‰ā¤ŽāĨā¤ŽāĨ€ā¤Ļā¤ĩā¤žā¤° ā¤Ąā¤ŋā¤¸ā¤•ā¤žā¤° login.oauth2InvalidTokenResponse=ā¤…ā¤Žā¤žā¤¨āĨā¤¤ā¤°ā¤ŋ⤤ ⤏ā¤ŋ⤕āĨā¤ĩāĨ‡ā¤‚⤏ ⤜ā¤ĩā¤žā¤Ŧ ⤕āĨˆā¤¸āĨ‡ ā¤šāĨˆ login.oauth2InvalidIdToken=⤗⤞⤤ ā¤‡ā¤Ą ⤟āĨ‹ā¤•⤍ +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=⤉ā¤Ē⤝āĨ‹ā¤—⤕⤰āĨā¤¤ā¤ž ā¤Ąā¤ŋ⤏ā¤Ŧā¤žā¤˛, ā¤¯ā¤š ā¤ĩ⤰āĨā¤ˇā¤ž ⤏⤭āĨ€ ⤉ā¤Ē⤝āĨ‹ā¤—⤕⤰āĨā¤¤ā¤ž ⤜āĨ‚ā¤āĨ‡ ā¤ĩ⤰āĨā¤ˇā¤žā¤•⤰⤪ ā¤Ŧā¤žā¤°ā¤ž ā¤Žā¤ŋ⤞ ā¤—ā¤ˆ ā¤šāĨˆāĨ¤ ⤕āĨƒā¤Ēā¤¯ā¤ž ⤏⤂ā¤Ŧā¤ĩā¤žā¤Ļ⤕ ⤏āĨ‡ ⤏⤂ā¤Ē⤰āĨā¤• ⤕⤰āĨ‡ā¤‚. login.alreadyLoggedIn=⤆ā¤Ē ā¤Ēā¤šā¤˛āĨ‡ ⤏āĨ‡ ā¤šāĨ€ login.alreadyLoggedIn2=⤏āĨā¤¨ā¤ŋā¤ļāĨā¤šā¤ŋ⤤ ⤕⤰⤍āĨ‡ ā¤ĩā¤žā¤˛āĨ‡ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸āĨā¤¸ ā¤Ē⤰ ⤞āĨ‰ā¤—-⤇⤍ ā¤šāĨˆā¤‚āĨ¤ ⤕āĨƒā¤Ēā¤¯ā¤ž ⤇⤍ ā¤Ąā¤ŋā¤ĩā¤žā¤‡ā¤¸ ⤏āĨ‡ ⤞āĨ‰ā¤—ā¤†ā¤‰ā¤Ÿ ⤕⤰āĨ‡ā¤‚ ⤔⤰ ā¤ĒāĨā¤¨ā¤ƒ ā¤ĒāĨā¤°ā¤¯ā¤žā¤¸ ⤕⤰āĨ‡ā¤‚ @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=⤕⤏āĨā¤Ÿā¤Ž ⤅⤤ā¤ŋ⤰ā¤ŋ⤕āĨā¤¤ ā¤ĒāĨˆā¤Ą autoRedact.convertPDFToImageLabel=PDF ⤕āĨ‹ ⤛ā¤ĩā¤ŋ ā¤ŽāĨ‡ā¤‚ ā¤Ŧā¤Ļ⤞āĨ‡ā¤‚ (ā¤ŦāĨ‰ā¤•āĨā¤¸ ⤕āĨ‡ ā¤ĒāĨ€ā¤›āĨ‡ ā¤Ēā¤žā¤  ⤕āĨ‹ ā¤šā¤Ÿā¤žā¤¨āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ĒāĨā¤°ā¤¯āĨ‹ā¤— ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ) autoRedact.submitButton=ā¤ĒāĨā¤°ā¤¸āĨā¤¤āĨā¤¤ ⤕⤰āĨ‡ā¤‚ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=ā¤œā¤žā¤ĩā¤žā¤¸āĨā¤•āĨā¤°ā¤ŋā¤ĒāĨā¤Ÿ ā¤Ļā¤ŋā¤–ā¤žā¤ā¤‚ @@ -818,8 +839,13 @@ sign.save=ā¤ĒāĨā¤°ā¤Ļ⤰āĨā¤ļ⤍ ā¤Ŧā¤šā¤žā¤ā¤‚ sign.personalSigs=ā¤ŽāĨŒā¤œāĨ‚ā¤Ļā¤ž ā¤ĒāĨā¤°ā¤Ļ⤰āĨā¤ļ⤍ sign.sharedSigs=ā¤¸ā¤žā¤āĨ‡ā¤Ļā¤žā¤° ā¤ĒāĨā¤°ā¤Ļ⤰āĨā¤ļ⤍ sign.noSavedSigs=⤕āĨ‹ā¤ˆ ⤭āĨ€ ⤏⤂ā¤ĩ⤰āĨā¤¤ā¤ŋ⤤ ā¤ĒāĨā¤°ā¤Ļ⤰āĨā¤ļ⤍ ā¤¨ā¤šāĨ€ā¤‚ ā¤ŽāĨŒā¤œāĨ‚ā¤Ļ ā¤šāĨˆ - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=ā¤Žā¤°ā¤ŽāĨā¤Žā¤¤ repair.header=ā¤ĒāĨ€ā¤ĄāĨ€ā¤ā¤Ģā¤ŧ ā¤Žā¤°ā¤ŽāĨā¤Žā¤¤ ⤕⤰āĨ‡ā¤‚ @@ -863,7 +889,7 @@ ocr.selectText.10=OCR ā¤ŽāĨ‹ā¤Ą ocr.selectText.11=OCR ⤕āĨ‡ ā¤Ŧā¤žā¤Ļ ⤛ā¤ĩā¤ŋā¤¯ā¤žā¤‚ ā¤šā¤Ÿā¤žā¤ā¤ (⤏⤭āĨ€ ⤛ā¤ĩā¤ŋā¤¯ā¤žā¤‚ ā¤šā¤Ÿā¤žā¤ā¤, ⤕āĨ‡ā¤ĩ⤞ ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤¨ ⤚⤰⤪ ā¤•ā¤ž ā¤šā¤ŋ⤏āĨā¤¸ā¤ž ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆ) ocr.selectText.12=⤰āĨ‡ā¤‚ā¤Ąā¤° ā¤Ÿā¤žā¤‡ā¤Ē (⤉⤍āĨā¤¨ā¤¤) ocr.help=⤕āĨƒā¤Ēā¤¯ā¤ž ⤇⤏ ā¤ĄāĨ‰ā¤•āĨā¤¯āĨ‚ā¤ŽāĨ‡ā¤‚ā¤ŸāĨ‡ā¤ļ⤍ ⤕āĨ‹ ā¤Ēā¤ĸā¤ŧāĨ‡ā¤‚ ⤕ā¤ŋ ⤇⤏āĨ‡ ⤅⤍āĨā¤¯ ā¤­ā¤žā¤ˇā¤žā¤“ā¤‚ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤕āĨˆā¤¸āĨ‡ ⤉ā¤Ē⤝āĨ‹ā¤— ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ ⤔⤰/ā¤¯ā¤ž ā¤ĄāĨ‰ā¤•⤰ ā¤ŽāĨ‡ā¤‚ ā¤¨ā¤šāĨ€ā¤‚ ā¤šāĨˆā¤‚ -ocr.credit=⤇⤏ ⤏āĨ‡ā¤ĩā¤ž ā¤ŽāĨ‡ā¤‚ OCRmyPDF ⤔⤰ ⤟āĨ‡ā¤¸ā¤°āĨ‡ā¤•āĨā¤Ÿ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆāĨ¤ +ocr.credit=⤇⤏ ⤏āĨ‡ā¤ĩā¤ž ā¤ŽāĨ‡ā¤‚ qpdf ⤔⤰ ⤟āĨ‡ā¤¸ā¤°āĨ‡ā¤•āĨā¤Ÿ ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ā¤šāĨ‹ā¤¤ā¤ž ā¤šāĨˆāĨ¤ ocr.submit=OCR ⤕āĨ‡ ā¤¸ā¤žā¤Ĩ PDF ā¤ĒāĨā¤°āĨ‹ā¤¸āĨ‡ā¤¸ ⤕⤰āĨ‡ā¤‚ @@ -887,7 +913,7 @@ fileToPDF.submit=ā¤ĒāĨ€ā¤ĄāĨ€ā¤ā¤Ģā¤ŧ ā¤ŽāĨ‡ā¤‚ ā¤Ŧā¤Ļ⤞āĨ‡ā¤‚ #compress compress.title=⤏⤂⤕āĨā¤šā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚ compress.header=PDF ⤕āĨ‹ ⤏⤂⤕āĨā¤šā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚ -compress.credit=ā¤¯ā¤š ⤏āĨ‡ā¤ĩā¤ž PDF ⤏⤂⤕āĨā¤šā¤¨/⤅⤍āĨā¤•āĨ‚⤞⤍ ⤕āĨ‡ ⤞ā¤ŋā¤ Ghostscript ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤤āĨ€ ā¤šāĨˆāĨ¤ +compress.credit=ā¤¯ā¤š ⤏āĨ‡ā¤ĩā¤ž PDF ⤏⤂⤕āĨā¤šā¤¨/⤅⤍āĨā¤•āĨ‚⤞⤍ ⤕āĨ‡ ⤞ā¤ŋā¤ qpdf ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕⤰⤤āĨ€ ā¤šāĨˆāĨ¤ compress.selectText.1=ā¤ŽāĨˆā¤¨āĨā¤…⤞ ā¤ŽāĨ‹ā¤Ą - 1 ⤏āĨ‡ 4 ⤤⤕ compress.selectText.2=⤅⤍āĨā¤•āĨ‚⤞⤍ ⤏āĨā¤¤ā¤°: compress.selectText.3=4 (ā¤Ēā¤žā¤  ⤛ā¤ĩā¤ŋ⤝āĨ‹ā¤‚ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤅⤤āĨā¤¯ā¤§ā¤ŋ⤕) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=⤗āĨā¤°āĨ‡ ⤏āĨā¤•āĨ‡ā¤˛ pdfToImage.blackwhite=ā¤•ā¤žā¤˛ā¤ž ⤔⤰ ⤏ā¤ĢāĨ‡ā¤Ļ (ā¤ĄāĨ‡ā¤Ÿā¤ž ⤖āĨ‹ ā¤¸ā¤•ā¤¤ā¤ž ā¤šāĨˆ!) pdfToImage.submit=ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚ pdfToImage.info=ā¤Ēā¤žā¤¯ā¤Ĩ⤍ ā¤¨ā¤šāĨ€ā¤‚ ⤅⤍ā¤ŋ⤏āĨā¤¤ā¤žā¤°ā¤ŋ⤤ ā¤šāĨˆāĨ¤ ā¤ĩāĨ‡ā¤ŦP ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤¨ ⤕āĨ‡ ⤞ā¤ŋā¤ ⤆ā¤ĩā¤ļāĨā¤¯ā¤• ā¤šāĨˆāĨ¤ +pdfToImage.placeholder=(⤉ā¤Ļā¤žā¤šā¤°ā¤Ŗ ⤕āĨ‡ ⤞ā¤ŋā¤ 1,2,8 ā¤¯ā¤ž 4,7,12-16 ā¤¯ā¤ž 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=ā¤ā¤¨āĨā¤•āĨā¤°ā¤ŋā¤ĒāĨā¤Ÿ ⤕⤰āĨ‡ā¤‚ #watermark watermark.title=ā¤ĩāĨ‰ā¤Ÿā¤°ā¤Žā¤žā¤°āĨā¤• ⤜āĨ‹ā¤Ąā¤ŧāĨ‡ā¤‚ watermark.header=ā¤ĩāĨ‰ā¤Ÿā¤°ā¤Žā¤žā¤°āĨā¤• ⤜āĨ‹ā¤Ąā¤ŧāĨ‡ā¤‚ +watermark.customColor=⤏⤂ā¤ĩāĨˆā¤§ā¤ŋ⤤ ⤟āĨ‡ā¤•āĨā¤¸āĨā¤Ÿ ⤰⤂⤗ watermark.selectText.1=ā¤ĩāĨ‰ā¤Ÿā¤°ā¤Žā¤žā¤°āĨā¤• ⤜āĨ‹ā¤Ąā¤ŧ⤍āĨ‡ ⤕āĨ‡ ⤞ā¤ŋā¤ ā¤ĒāĨ€ā¤ĄāĨ€ā¤ā¤Ģ ⤚āĨā¤¨āĨ‡ā¤‚: watermark.selectText.2=ā¤ĩāĨ‰ā¤Ÿā¤°ā¤Žā¤žā¤°āĨā¤• ⤟āĨ‡ā¤•āĨā¤¸āĨā¤Ÿ: watermark.selectText.3=ā¤Ģā¤ŧāĨ‰ā¤¨āĨā¤Ÿ ā¤¸ā¤žā¤‡ā¤œā¤ŧ: @@ -1097,7 +1147,7 @@ changeMetadata.submit=ā¤Ŧā¤Ļ⤞āĨ‡ā¤‚ #pdfToPDFA pdfToPDFA.title=PDF ⤏āĨ‡ PDF/A ā¤ŽāĨ‡ā¤‚ pdfToPDFA.header=PDF ⤏āĨ‡ PDF/A ā¤ŽāĨ‡ā¤‚ -pdfToPDFA.credit=⤇⤏ ⤏āĨ‡ā¤ĩā¤ž ā¤ŽāĨ‡ā¤‚ PDF/A ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤¨ ⤕āĨ‡ ⤞ā¤ŋā¤ ghostscript ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ +pdfToPDFA.credit=⤇⤏ ⤏āĨ‡ā¤ĩā¤ž ā¤ŽāĨ‡ā¤‚ PDF/A ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤¨ ⤕āĨ‡ ⤞ā¤ŋā¤ qpdf ā¤•ā¤ž ⤉ā¤Ē⤝āĨ‹ā¤— ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆāĨ¤ pdfToPDFA.submit=ā¤Ē⤰ā¤ŋā¤ĩ⤰āĨā¤¤ā¤ŋ⤤ ⤕⤰āĨ‡ā¤‚ pdfToPDFA.tip=ā¤¯ā¤š ⤏āĨˆā¤•ā¤Ąā¤ŧāĨ‹ā¤‚ ā¤ĒāĨā¤°ā¤ĩā¤ŋ⤎āĨā¤Ÿā¤ŋā¤¯ā¤žā¤ ā¤ā¤• ā¤šāĨ€ ā¤¸ā¤Žā¤¯ ā¤ŽāĨ‡ā¤‚ ā¤•ā¤žā¤Ž ⤕⤰⤤āĨ‡ ā¤šāĨˆā¤‚ pdfToPDFA.outputFormat=ā¤†ā¤‰ā¤Ÿā¤ĒāĨā¤Ÿ ā¤ĢāĨ‰ā¤°āĨā¤ŽāĨ‡ā¤Ÿ @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=⤞āĨ‡ā¤ŽāĨˆā¤•āĨā¤¸ ⤏āĨā¤¤ā¤°: ā¤ĩā¤ŋā¤­ā¤žā¤œā¤¨ splitByChapters.desc.3=ā¤ŽāĨ‰ā¤ĄāĨ‡ā¤Ÿā¤°āĨ‡ā¤Ÿ ā¤•ā¤ž ā¤ļā¤žā¤Žā¤ŋ⤞ ⤕⤰āĨ‡ā¤‚: ⤝ā¤Ļā¤ŋ ⤏⤤āĨā¤¯ā¤žā¤Ēā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ, ā¤ĒāĨā¤°ā¤žā¤°ā¤‚⤭ā¤ŋ⤕ PDF ⤕āĨ€ ā¤ŽāĨ‰ā¤ĄāĨ‡ā¤Ÿā¤°āĨ‡ā¤Ÿ ⤕āĨ‹ ā¤ĒāĨā¤°ā¤¤āĨā¤¯āĨ‡ā¤• ā¤ĩā¤ŋā¤­ā¤žā¤— PDF ā¤ŽāĨ‡ā¤‚ ā¤ļā¤žā¤Žā¤ŋ⤞ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤ā¤—ā¤žāĨ¤ splitByChapters.desc.4=ā¤¯ā¤žā¤ĻāĨƒā¤šāĨā¤›ā¤ŋ⤕ ā¤ĒāĨā¤¨ā¤°ā¤žā¤ĩāĨƒā¤¤āĨā¤¤ā¤ŋ ⤅⤍āĨā¤ŽāĨ‹ā¤Ļā¤ŋ⤤: ⤝ā¤Ļā¤ŋ ⤏⤤āĨā¤¯ā¤žā¤Ēā¤ŋ⤤ ⤕ā¤ŋā¤¯ā¤ž ā¤œā¤žā¤¤ā¤ž ā¤šāĨˆ, ā¤ā¤• ā¤šāĨ€ ā¤ĒāĨ‡ā¤œ ā¤Ē⤰ ā¤ĻāĨ‹ā¤šā¤°āĨ‡ ā¤ŽāĨ‚⤞āĨā¤¯ā¤žā¤‚⤕⤍ ā¤Ēā¤ŦāĨā¤˛ā¤ŋ⤕ ā¤ĒāĨ€ā¤Ąā¤ŧā¤ā¤Ģ ā¤Ŧā¤¨ā¤žā¤¨āĨ‡ ⤕āĨ€ ā¤¸ā¤‚ā¤­ā¤žā¤ĩā¤¨ā¤ž ā¤ĻāĨ‡ā¤¤ā¤ž ā¤šāĨˆāĨ¤ splitByChapters.submit=PDF ā¤ĩā¤ŋā¤­ā¤žā¤œā¤ŋ⤤ + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties index 0aef59abe2..a548e72ac8 100644 --- a/src/main/resources/messages_hr_HR.properties +++ b/src/main/resources/messages_hr_HR.properties @@ -82,6 +82,7 @@ pages=Stranice loading=Učitavanje... addToDoc=Dodaj u dokument reset=Reset +apply=Apply legal.privacy=Politika privatnosti legal.terms=Uspe sodrÅžine @@ -238,11 +239,13 @@ database.creationDate=Datum stvaranja database.fileSize=Veličina datoteke database.deleteBackupFile=ObriÅĄi zadao saÅžeto datoteke database.importBackupFile=Uvezi saÅžeto datoteku +database.createBackupFile=Create Backup File database.downloadBackupFile=Preuzmi saÅžeto datoteku database.info_1=Kada uvaÅžavate podatke, je ključno sigurno imati ispravan struktur. Ako niste sigurni ÅĄta uradite, traÅžite savjet i podrÅĄku od professionala. GreÅĄka u strukturi moÅže uzrokovati greÅĄke u aplikaciji, do i uključujući potpunu nevjerojatnost funkcionalnosti aplikacije. database.info_2=Ime datoteke nije relevantno prijevezi. Buduće bit će ponovno oznaceno za određeni format backup_user_yyyyMMddHHmm.sql, čime se osigurava konzistentna nazivnica. database.submit=Uvezi saÅžeto database.importIntoDatabaseSuccessed=Uvez u bazu podataka uspio +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=Datoteka ne smije biti null ili prazna database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=Automatsko uređivanje home.autoRedact.desc=Automatski redigira (zacrni) tekst u PDF-u na temelju unosa teksta autoRedact.tags=Cenzura,Sakrij,prekrivanje,crna,marker,skriveno +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF u CSV home.tableExtraxt.desc=Izdvaja tablice iz PDF-a pretvarajući ga u CSV tableExtraxt.tags=CSV,Izdvajanje tabela,izdvajanje,pretvaranje @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Podijeli PDF prema glavama home.splitPdfByChapters.desc=Podijeli PDF na viÅĄe datoteka prema njegovom strukturnom obliku glava. splitPdfByChapters.tags=podjela, glave, markere, organizacija +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Zameni-inverziranje boja u PDF-u @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Neispravan zahtjev login.oauth2AccessDenied=Pristup odbijen login.oauth2InvalidTokenResponse=NevaÅžeći odgovor tokena login.oauth2InvalidIdToken=NevaÅžeći ID token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=Korisnik je deaktiviran, prijava sa ovim korisničkim imenom je trenutno zakazana. Molimo Vas da kontaktirate administratorske osobe. login.alreadyLoggedIn=Već ste se prijavili na login.alreadyLoggedIn2=ure. Odjavite se s ure i pokuÅĄajte ponovo. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Dodatni prazan prostor autoRedact.convertPDFToImageLabel=Pretvorite PDF u PDF-sliku (koristi se za uklanjanje teksta iza okvira) autoRedact.submitButton=Potvrdi +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=PrikaÅži Javascript @@ -818,8 +839,13 @@ sign.save=Sačuvaj potpisnu oznaku sign.personalSigs=Osobni potpisi sign.sharedSigs=Dijeljeni potpisi sign.noSavedSigs=Nema sacuvanih potpisa pronađenih - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Popravi repair.header=Popravi PDF datoteku @@ -863,7 +889,7 @@ ocr.selectText.10=OCR način ocr.selectText.11=Ukloni slike nakon OCR-a (Uklanja SVE slike, korisno samo ako je dio koraka konverzije) ocr.selectText.12=Vrsta iscrtavanja (napredno) ocr.help=Pročitajte ovu dokumentaciju o tome kako ovo koristiti za druge jezike i/ili koristiti ne u dockeru -ocr.credit=Ova usluga koristi OCRmyPDF i Tesseract za OCR. +ocr.credit=Ova usluga koristi qpdf i Tesseract za OCR. ocr.submit=Obradi PDF sa OCR-om @@ -887,7 +913,7 @@ fileToPDF.submit=Pretvori u PDF #compress compress.title=Komprimirajte compress.header=Komprimirajte PDF -compress.credit=Ova usluga koristi Ghostscript za komprimiranje / optimizaciju PDF-a. +compress.credit=Ova usluga koristi qpdf za komprimiranje / optimizaciju PDF-a. compress.selectText.1=Ručni reÅžim - Od 1 do 4 compress.selectText.2=Nivo optimizacije: compress.selectText.3=4 (UÅžasno za tekstualne slike) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Sivi tonovi pdfToImage.blackwhite=Crno-bijelo (mogu se izgubiti podaci!) pdfToImage.submit=Pretvori pdfToImage.info=Python nije instaliran. Treba je za konverziju na WebP. +pdfToImage.placeholder=(t.j. 1,2,8 ili 4,7,12-16 ili 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Å ifriraj #watermark watermark.title=Dodaj vodeni Åžig watermark.header=Dodaj vodeni Åžig +watermark.customColor=Prilagođena boja teksta watermark.selectText.1=Izaberite PDF za dodavanje vodenog Åžiga: watermark.selectText.2=Tekst vodenog Åžiga: watermark.selectText.3=Veličina fonta: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Promijeniti #pdfToPDFA pdfToPDFA.title=PDF u PDF/A pdfToPDFA.header=PDF u PDF/A -pdfToPDFA.credit=Ova usluga koristi ghostscript za PDF/A pretvorbu +pdfToPDFA.credit=Ova usluga koristi qpdf za PDF/A pretvorbu pdfToPDFA.submit=Pretvoriti pdfToPDFA.tip=Trenutno ne radi za viÅĄe unosa odjednom pdfToPDFA.outputFormat=Izlazni format @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Nivo oznaka: Odaberite nivo oznaka koji će se koristiti splitByChapters.desc.3=Uključi metapodatke: Ako je pokuÅĄano, metapodaci iz originalne PDF datoteke će biti uključeni u svaku podijeljenu PDF datoteku. splitByChapters.desc.4=DopuÅĄtaj duplikate: Ako je ova opcija zaÅĄtićena, dozvoljava se da se na istoj strani mogu stvoriti posebne PDF datoteke s viÅĄe oznaka. splitByChapters.submit=Podijeli PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index c40b156897..fe10344637 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -82,6 +82,7 @@ pages=Oldalak loading=BetÃļltÊs... addToDoc=HozzÃĄadÃĄs dokumentumba reset=Reset +apply=Apply legal.privacy=AdatvÊdelmi nyilatkozat legal.terms=FeltÊtelek Ês feltÊtelek @@ -238,11 +239,13 @@ database.creationDate=LÊtrehozÃĄs dÃĄtuma database.fileSize=FÃĄjlszÃĄmítÃĄs database.deleteBackupFile=VisszaulasztÃŗ fÃĄjl tÃļrlÊse database.importBackupFile=BemÊrsz visszaulastÃŗ fÃĄjl +database.createBackupFile=Create Backup File database.downloadBackupFile=BemÊrő fÃĄjlet letÃļltÊs database.info_1=A bemeneti adatok bemÊrÊsekor fontos, hogy az helyes struktÃērÃĄt biztosítsa. Ha nem tudja mit csinÃĄl, kÊrjen tÃĄmogatÃĄst egy szakembertől. Az erőforrÃĄs hibÃĄja okozhat alkalmazÃĄs-ismersÊleti gondokat, Ês viszontig, hogy az alkalmazÃĄs teljesen nem fut. database.info_2=A fÃĄjl neve nem jelent rÊszt a feltÃļltÊs sorÃĄn. KÊsőbb Ãējra nÊven lesz ÃĄtalakítva egy konzisztens nevÊsrendszert kÃļvetve, a formÃĄtum: visszaulasztÃŗ_user_yyyyMMddHHmm.sql. database.submit=BemÊrsz visszaulastÃŗ fÃĄjl database.importIntoDatabaseSuccessed=AdatbÃĄzisba importÃĄlva sikeresen +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=FÃĄjlnull vagy Ãŧres nÊlkÃŧl nem lehet folytatni database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=Automatikus ElrejtÊs home.autoRedact.desc=Automatikusan kitakar (elrejt) szÃļveget egy PDF-ben az input szÃļveg alapjÃĄn autoRedact.tags=Elrejt,ElrejtÊs,kitakarÃĄs,fekete,fekete,marker,elrejtett +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF-től CSV-be valÃŗ ÃĄtalakítÃĄs home.tableExtraxt.desc=TÃĄblÃĄzatok kinyerÊse a PDF-ből CSV formÃĄtumra konvertÃĄlva tableExtraxt.tags=CSV,TÃĄblÃĄzat kinyerÊse,kinyer,konvertÃĄl @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=PDF felosztÃĄsa fejezetek szerint home.splitPdfByChapters.desc=Fejezetei alapjÃĄn egy PDF fÃĄjl tÃļbb dokumentumba osztÃĄs. splitPdfByChapters.tags=OsztÃĄs, fejezetek, jelezes, organizÃĄlÃĄs +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=VisszaalakítÃĄs-ÃļsszevÊtel a színekkel PDF-ben @@ -555,6 +566,7 @@ login.oauth2invalidRequest=ÉrvÊnytelen kÊrelem login.oauth2AccessDenied=HozzÃĄfÊrÊs megtagadva login.oauth2InvalidTokenResponse=ÉrvÊnytelen token-vÃĄlasz login.oauth2InvalidIdToken=ÉrvÊnytelen azonosítÃŗ token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=A felhasznÃĄlÃŗ deaktivÃĄlt, a bejelentkezÊs jelenleg megszakítva ezzel a felhasznÃĄlÃŗnÊvvel. KÊrjen segítsÊget a rendszergazdÃĄtÃŗl. login.alreadyLoggedIn=MÃĄr be van jelentkezve az login.alreadyLoggedIn2=eszkÃļzÃļkre. Kijelentkezzen ezekből a eszkÃļzÃļkből, majd prÃŗbÃĄlja Ãējra bejelentkezni. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Egyedi extra kitÃļltÊs autoRedact.convertPDFToImageLabel=PDF ÃĄtalakítÃĄsa PDF-kÊpÊ (a doboz mÃļgÃļtti szÃļveg eltÃĄvolítÃĄsÃĄhoz) autoRedact.submitButton=ElkÃŧld +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=JavaScript megjelenítÊse @@ -818,8 +839,13 @@ sign.save=AlÃĄÃ­rÃĄshoz mentÊs sign.personalSigs=SzemÊlyi alÃĄÃ­rÃĄshoz sign.sharedSigs=Megosztott alÃĄÃ­rÃĄshoz sign.noSavedSigs=Nincsenek mentett alÃĄÃ­rÃĄsok talÃĄlat - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=JavítÃĄs repair.header=PDF-ek javítÃĄsa @@ -863,7 +889,7 @@ ocr.selectText.10=OCR mÃŗd ocr.selectText.11=KÊpek eltÃĄvolítÃĄsa OCR utÃĄn (Az ÖSSZES kÊp eltÃĄvolítÃĄsa, csak akkor hasznos, ha a konverziÃŗ rÊsze) ocr.selectText.12=Render típusa (SpeciÃĄlis) ocr.help=KÊrjÃŧk, olvassa el ezt a dokumentÃĄciÃŗt az egyÊb nyelvek hasznÃĄlatÃĄhoz Ês/vagy a nem Docker-es hasznÃĄlathoz. -ocr.credit=Ez a szolgÃĄltatÃĄs az OCRmyPDF Ês a Tesseract OCR hasznÃĄlatÃĄval mÅąkÃļdik. +ocr.credit=Ez a szolgÃĄltatÃĄs az qpdf Ês a Tesseract OCR hasznÃĄlatÃĄval mÅąkÃļdik. ocr.submit=PDF feldolgozÃĄsa OCR-rel @@ -887,7 +913,7 @@ fileToPDF.submit=KonvertÃĄlÃĄs PDF dokumentummÃĄ #compress compress.title=TÃļmÃļrítÊs compress.header=PDF tÃļmÃļrítÊse -compress.credit=Ez a szolgÃĄltatÃĄs a Ghostscript-et hasznÃĄlja a PDF tÃļmÃļrítÊsÊhez/optimalizÃĄlÃĄsÃĄhoz. +compress.credit=Ez a szolgÃĄltatÃĄs a qpdf-et hasznÃĄlja a PDF tÃļmÃļrítÊsÊhez/optimalizÃĄlÃĄsÃĄhoz. compress.selectText.1=KÊzi mÃŗd - 1-től 4-ig compress.selectText.2=OptimalizÃĄlÃĄsi szint: compress.selectText.3=4 (nem ajÃĄnlott a szÃļveges kÊpekhez) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=szÃŧrkeÃĄrnyalatos pdfToImage.blackwhite=fekete-fehÊr (adatvesztÊssel jÃĄrhat!) pdfToImage.submit=ÁtalakítÃĄs pdfToImage.info=Nincs telepítve a Python. SzÃŧksÊges a WebP konverziÃŗhoz. +pdfToImage.placeholder=(pl. 1,2,8 vagy 4,7,12-16 vagy 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=TitkosítÃĄs #watermark watermark.title=Vízjel hozzÃĄadÃĄsa watermark.header=Vízjel hozzÃĄadÃĄsa +watermark.customColor=EgyÊni szÃļvegszín watermark.selectText.1=VÃĄlassza ki a PDF-t, amelyhez vízjelet kívÃĄn hozzÃĄadni: watermark.selectText.2=Vízjel szÃļvege: watermark.selectText.3=BetÅąmÊret: watermark.selectText.4=ForgatÃĄs (0-360): -watermark.selectText.5=widthSpacer (Hely a vízjelek kÃļzÃļtt vízszintesen): -watermark.selectText.6=heightSpacer (Hely a vízjelek kÃļzÃļtt fÃŧggőlegesen): +watermark.selectText.5=Width Spacer (Hely a vízjelek kÃļzÃļtt vízszintesen): +watermark.selectText.6=Height Spacer (Hely a vízjelek kÃļzÃļtt fÃŧggőlegesen): watermark.selectText.7=ÁtlÃĄtszÃŗsÃĄg (0% - 100%): watermark.selectText.8=Vízjel típusa: watermark.selectText.9=Vízjel kÊpe: @@ -1097,7 +1147,7 @@ changeMetadata.submit=MÃŗdosítÃĄs #pdfToPDFA pdfToPDFA.title=PDF >> PDF/A pdfToPDFA.header=PDF >> PDF/A -pdfToPDFA.credit=Ez a szolgÃĄltatÃĄs az ghostscript-t hasznÃĄlja a PDF/A konverziÃŗhoz +pdfToPDFA.credit=Ez a szolgÃĄltatÃĄs az qpdf-t hasznÃĄlja a PDF/A konverziÃŗhoz pdfToPDFA.submit=KonvertÃĄlÃĄs pdfToPDFA.tip=Jelenleg egyszerre tÃļbb fÃĄjl nem mÅąkÃļdik ezzel a funkciÃŗval pdfToPDFA.outputFormat=Kimeneti formÃĄtum @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Metaadatok belefoglalÃĄsa: Ha bevanítva van, az eredeti PDF fÃĄjl metaadatai megtartÃŗdnak minden osztott fÃĄjlban. splitByChapters.desc.4=DuplikÃĄciÃŗk engedÊlyezÊse: Ha bevanítva van, lehetővÊ teszi a megadott oldalon lÊvő tÃļbb kijelzőszint alapjÃĄn Ãēj PDF-ek lÊtrehozÃĄsa. splitByChapters.submit=PDF osztÃĄs + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index 43573b8b4a..bc0370cacc 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -82,6 +82,7 @@ pages=Halaman-halaman loading=Mengambil data... addToDoc=Tambahkan ke Dokumen reset=Reset +apply=Apply legal.privacy=Kebijakan Privasi legal.terms=Syarat dan Ketentuan @@ -238,11 +239,13 @@ database.creationDate=Tanggal Pembuatan database.fileSize=Ukuran Berkas database.deleteBackupFile=Hapus Berkas Cadangan database.importBackupFile=Impor Berkas Cadangan +database.createBackupFile=Create Backup File database.downloadBackupFile=Unduh Berkas Cadangan database.info_1=Ketika mengimpor data, sangat penting untuk memastikan struktur yang benar. Jika Anda tidak yakin dengan apa yang Anda lakukan, cari nasihat dan dukungan dari seorang profesional. Kesalahan dalam struktur dapat menyebabkan malfungsi aplikasi, bahkan hingga tidak dapat menjalankan aplikasi sama sekali. database.info_2=Nama berkas tidak menjadi masalah saat mengunggah. Nama berkas akan diubah setelahnya mengikuti format backup_user_yyyyMMddHHmm.sql, memastikan konsistensi dalam penamaan. database.submit=Impor Cadangan database.importIntoDatabaseSuccessed=Impor ke database berhasil +database.backupCreated=Database backup successful database.fileNotFound=Berkas tidak Ditemukan database.fileNullOrEmpty=Berkas tidak boleh null atau kosong database.failedImportFile=Impor Berkas Gagal @@ -472,6 +475,10 @@ home.autoRedact.title=Redaksional Otomatis home.autoRedact.desc=Menyunting Otomatis (Menghitamkan) teks dalam PDF berdasarkan teks masukan autoRedact.tags=Hapus, Sembunyikan, padamkan, hitam, hitam, penanda, tersembunyi +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF ke CSV home.tableExtraxt.desc=Mengekstrak Tabel dari PDF yang mengonversinya menjadi CSV tableExtraxt.tags=CSV, Ekstraksi Tabel, ekstrak, konversi @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Pisahkan PDF berdasarkan Bab home.splitPdfByChapters.desc=Memisahkan PDF menjadi beberapa file berdasarkan struktur babnya. splitPdfByChapters.tags=pemisahan,bab,bookmark,atur +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Ganti-Inversi-Warna replace-color.header=Ganti-Inversi Warna PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Permintaan Tidak Valid login.oauth2AccessDenied=Akses Ditolak login.oauth2InvalidTokenResponse=Respons Token Tidak Valid login.oauth2InvalidIdToken=Token ID Tidak Valid +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=Pengguna dinonaktifkan, login saat ini diblokir dengan nama pengguna ini. Silakan hubungi administrator. login.alreadyLoggedIn=Anda sudah login ke login.alreadyLoggedIn2=perangkat. Silakan keluar dari perangkat dan coba lagi. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Padding Ekstra Kustom autoRedact.convertPDFToImageLabel=Konversi PDF ke PDF-Gambar (Digunakan untuk menghapus teks di belakang kotak) autoRedact.submitButton=Kirim +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Tampilkan Javascript @@ -818,8 +839,13 @@ sign.save=Simpan Tanda Tangan sign.personalSigs=Tanda Tangan Pribadi sign.sharedSigs=Tanda Tangan Berbagi sign.noSavedSigs=Tidak ditemukan tanda tangan yang disimpan - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Perbaiki repair.header=Perbaiki PDF @@ -863,7 +889,7 @@ ocr.selectText.10=Mode OCR ocr.selectText.11=Hapus gambar setelah OCR (Menghapus Semua gambar, hanya berguna jika merupakan bagian dari langkah konversi) ocr.selectText.12=Jenis Render (Lanjutan) ocr.help=Silakan baca dokumentasi ini tentang cara menggunakan ini untuk bahasa lain dan/atau penggunaan yang tidak ada di docker -ocr.credit=Layanan ini menggunakan OCRmyPDF dan Tesseract untuk OCR. +ocr.credit=Layanan ini menggunakan qpdf dan Tesseract untuk OCR. ocr.submit=Memproses PDF dengan OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Konversi ke PDF #compress compress.title=Kompres compress.header=Kompres PDF -compress.credit=Layanan ini menggunakan Ghostscript untuk Kompresi/Optimalisasi PDF. +compress.credit=Layanan ini menggunakan qpdf untuk Kompresi/Optimalisasi PDF. compress.selectText.1=Mode Manual - Dari 1 hingga 4 compress.selectText.2=Tingkat Optimalisasi: compress.selectText.3=4 (Buruk untuk gambar teks) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Skala abu-abu pdfToImage.blackwhite=Black and White (Bisa kehilangan data!) pdfToImage.submit=Konversi pdfToImage.info=Python tidak terinstal. Diperlukan untuk konversi WebP. +pdfToImage.placeholder=(misalnya 1,2,8 atau 4,7,12-16 atau 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=Enkripsi #watermark watermark.title=Tambahkan Watermark watermark.header=Tambahkan Watermark +watermark.customColor=Warna Teks Kustom watermark.selectText.1=Pilih PDF untuk menambahkan watermark: watermark.selectText.2=Text Watermark: watermark.selectText.3=Ukuran Huruf: watermark.selectText.4=Rotasi (0-360): -watermark.selectText.5=widthSpacer (Spasi diantara setiap watermark horisontal): -watermark.selectText.6=heightSpacer (Spasi diantara setiap watermark vertikal): +watermark.selectText.5=Width Spacer (Spasi diantara setiap watermark horisontal): +watermark.selectText.6=Height Spacer (Spasi diantara setiap watermark vertikal): watermark.selectText.7=Kejernihan (0% - 100%): watermark.selectText.8=Tipe Watermark: watermark.selectText.9=Gambar Watermark: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Ganti #pdfToPDFA pdfToPDFA.title=PDF Ke PDF/A pdfToPDFA.header=PDF ke PDF/A -pdfToPDFA.credit=Layanan ini menggunakan ghostscript untuk konversi PDF/A. +pdfToPDFA.credit=Layanan ini menggunakan qpdf untuk konversi PDF/A. pdfToPDFA.submit=Konversi pdfToPDFA.tip=Saat ini tidak dapat digunakan untuk beberapa input sekaligus pdfToPDFA.outputFormat=Format keluaran @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Tingkatan Markah: Pilih tingkatan markah yang digunakan u splitByChapters.desc.3=Termasuk Metadata: Jika dicentang, metadata asli PDF akan disertakan dalam setiap PDF yang dibagi. splitByChapters.desc.4=Izinkan Duplikat: Jika dicentang, mengizinkan beberapa markah pada halaman yang sama untuk membuat PDF terpisah. splitByChapters.submit=Pecah PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 6a2fac1296..e0246fe79f 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -82,6 +82,7 @@ pages=Pagine loading=Caricamento... addToDoc=Aggiungi al documento reset=Reset +apply=Apply legal.privacy=Informativa sulla privacy legal.terms=Termini e Condizioni @@ -238,11 +239,13 @@ database.creationDate=Data di creazione database.fileSize=Dimensione database.deleteBackupFile=Elimina file di backup database.importBackupFile=Importa file di backup +database.createBackupFile=Crea file di backup database.downloadBackupFile=Scarica il file di backup database.info_1=Quando si importano i dati, è fondamentale garantire la struttura corretta. Se non sei sicuro di quello che stai facendo, chiedi consiglio e supporto a un professionista. Un errore nella struttura puÃ˛ causare malfunzionamenti dell'applicazione, fino alla completa impossibilità di eseguire l'applicazione. database.info_2=Il nome del file non ha importanza durante il caricamento. Verrà rinominato in seguito per seguire il formato backup_user__yyyyMMddHHmm.sql,garantendo una convenzione di denominazione coerente. database.submit=Importa Backup database.importIntoDatabaseSuccessed=L'importazione nel database è avvenuta con successo +database.backupCreated=Backup del database riuscito database.fileNotFound=File non trovato database.fileNullOrEmpty=Il file non deve essere nullo o vuoto database.failedImportFile=Importazione file non riuscita @@ -472,6 +475,10 @@ home.autoRedact.title=Redazione automatica home.autoRedact.desc=Redige automaticamente (oscura) il testo in un PDF in base al testo immesso autoRedact.tags=Redigere,nascondere,oscurare,nero,pennarello,nascosto +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=Da PDF a CSV home.tableExtraxt.desc=Estrae tabelle da un PDF convertendolo in CSV tableExtraxt.tags=CSV,Estrazione tabella,estrai,converti @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Dividi PDF per capitoli home.splitPdfByChapters.desc=Dividi un PDF in piÚ file in base alla struttura dei capitoli. splitPdfByChapters.tags=dividi, capitoli, segnalibri, organizza +home.validateSignature.title=Convalida la firma PDF +home.validateSignature.desc=Verificare le firme digitali e i certificati nei documenti PDF +validateSignature.tags=firma,verifica,convalida,pdf,certificato,firma digitale,convalida firma,convalida certificato + #replace-invert-color replace-color.title=Sostituisci-Inverti-Colore replace-color.header=Sostituisci-Inverti colore PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Richiesta non valida login.oauth2AccessDenied=Accesso negato login.oauth2InvalidTokenResponse=Risposta token non valida login.oauth2InvalidIdToken=Id Token non valido +login.relyingPartyRegistrationNotFound=Nessuna registrazione di parte affidabile trovata login.userIsDisabled=L'utente è disattivato, l'accesso è attualmente bloccato con questo nome utente. Si prega di contattare l'amministratore. login.alreadyLoggedIn=Hai già effettuato l'accesso a login.alreadyLoggedIn2=dispositivi. Esci dai dispositivi e riprova. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Padding extra personalizzato autoRedact.convertPDFToImageLabel=Converti PDF in immagine PDF (utilizzato per rimuovere il testo dietro la casella) autoRedact.submitButton=Invia +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Mostra Javascript @@ -818,8 +839,13 @@ sign.save=Firma salvata sign.personalSigs=Firme personali sign.sharedSigs=Firme condivise sign.noSavedSigs=Nessuna firma salvata trovata - - +sign.addToAll=Aggiungi a tutte le pagine +sign.delete=Elimina +sign.first=Prima pagina +sign.last=Ultima pagina +sign.next=Prossima pagina +sign.previous=Pagina precedente +sign.maintainRatio=Attiva il mantenimento delle proporzioni #repair repair.title=Ripara repair.header=Ripara PDF @@ -863,7 +889,7 @@ ocr.selectText.10=Modalità OCR ocr.selectText.11=Rimuovi immagini dopo la scansione (Rimuove TUTTE le immagini, utile solo come parte del processo di conversione) ocr.selectText.12=Modalità di rendering (avanzato) ocr.help=Per favore leggi la documentazione su come usare il programma per altri linguaggi e/o uso non in Docker -ocr.credit=Questo servizio utilizza OCRmyPDF e Tesseract per l'OCR. +ocr.credit=Questo servizio utilizza qpdf e Tesseract per l'OCR. ocr.submit=Scansiona testo nel PDF con OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Converti in PDF #compress compress.title=Comprimi compress.header=Comprimi PDF -compress.credit=Questo servizio utilizza Ghostscript per la compressione/ottimizzazione dei PDF. +compress.credit=Questo servizio utilizza qpdf per la compressione/ottimizzazione dei PDF. compress.selectText.1=Modalità manuale - Da 1 a 4 compress.selectText.2=Livello di ottimizzazione: compress.selectText.3=4 (Terribile per le immagini di testo) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Elimina selezionata multiTool.downloadAll=Esporta multiTool.downloadSelected=Esporta selezionata +multiTool.insertPageBreak=Inserisci interruzione di pagina +multiTool.addFile=Aggiungi file +multiTool.rotateLeft=Ruota a sinistra +multiTool.rotateRight=Ruota a destra +multiTool.split=Dividi +multiTool.moveLeft=Sposta a sinistra +multiTool.moveRight=Sposta a destra +multiTool.delete=Elimina +multiTool.dragDropMessage=Pagina(e) selezionata(e) +multiTool.undo=Annulla +multiTool.redo=Rifai + +#decrypt +decrypt.passwordPrompt=Questo file è protetto da password. Inserisci la password: +decrypt.cancelled=Operazione annullata per il PDF: {0} +decrypt.noPassword=Nessuna password fornita per il PDF crittografato: {0} +decrypt.invalidPassword=Riprova con la password corretta. +decrypt.invalidPasswordHeader=Password errata o crittografia non supportata per il PDF: {0} +decrypt.unexpectedError=Si è verificato un errore durante l'elaborazione del file. Riprova.. +decrypt.serverError=Errore del server durante la decrittazione: {0} +decrypt.success=File decrittografato con successo. + #multiTool-advert multiTool-advert.message=Questa funzione è disponibile anche nella nostra pagina multi-strumento. Scoprila per un'interfaccia utente pagina per pagina migliorata e funzionalità aggiuntive! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Scala di grigi pdfToImage.blackwhite=Bianco e Nero (potresti perdere dettagli!) pdfToImage.submit=Converti pdfToImage.info=Python non è installato.È richiesto per la conversione WebP. +pdfToImage.placeholder=(es. 1,2,8 o 4,7,12-16 o 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Crittografa #watermark watermark.title=Aggiungi Filigrana watermark.header=Aggiungi filigrana +watermark.customColor=Colore testo personalizzato watermark.selectText.1=Seleziona PDF a cui aggiungere la filigrana: watermark.selectText.2=Testo: watermark.selectText.3=Dimensione carattere: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Cambia proprietà #pdfToPDFA pdfToPDFA.title=Da PDF a PDF/A pdfToPDFA.header=Da PDF a PDF/A -pdfToPDFA.credit=Questo servizio utilizza Ghostscript per la conversione in PDF/A. +pdfToPDFA.credit=Questo servizio utilizza qpdf per la conversione in PDF/A. pdfToPDFA.submit=Converti pdfToPDFA.tip=Attualmente non funziona per piÚ input contemporaneamente pdfToPDFA.outputFormat=Formato di output @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Livello segnalibro: seleziona il livello dei segnalibri d splitByChapters.desc.3=Includi metadati: se selezionato, i metadati del PDF originale verranno inclusi in ogni PDF diviso. splitByChapters.desc.4=Consenti duplicati: se selezionata, consente piÚ segnalibri sulla stessa pagina per creare PDF separati. splitByChapters.submit=Dividi PDF + +#File Chooser +fileChooser.click=Clicca +fileChooser.or=o +fileChooser.dragAndDrop=Trascina & Rilascia +fileChooser.dragAndDropPDF=Trascina & rilascia il file PDF +fileChooser.dragAndDropImage=Trascina & rilascia il file immagine +fileChooser.hoveredDragAndDrop=Trascina & rilascia i file qui + +#release notes +releases.footer=Rilasci +releases.title=Note di rilascio +releases.header=Note di rilascio +releases.current.version=Rilascio corrente +releases.note=Le note di rilascio sono disponibili solo in inglese + +#Validate Signature +validateSignature.title=Validare le firme PDF +validateSignature.header=Convalidare le firme digitali +validateSignature.selectPDF=Seleziona il file PDF firmato +validateSignature.submit=Convalida firme +validateSignature.results=Risultati di convalida +validateSignature.status=Stato +validateSignature.signer=Firmatario +validateSignature.date=Data +validateSignature.reason=Ragione +validateSignature.location=Posizione +validateSignature.noSignatures=Nessuna firma digitale trovata in questo documento +validateSignature.status.valid=Valida +validateSignature.status.invalid=Invalida +validateSignature.chain.invalid=Convalida della catena di certificati non riuscita: impossibile verificare l'identità del firmatario +validateSignature.trust.invalid=Certificato non presente nell'archivio attendibile: la fonte non puÃ˛ essere verificata +validateSignature.cert.expired=Il certificato è scaduto +validateSignature.cert.revoked=Il certificato è stato revocato +validateSignature.signature.info=Informazioni sulla firma +validateSignature.signature=Firma +validateSignature.signature.mathValid=La firma è matematicamente valida MA: +validateSignature.selectCustomCert=File di certificato personalizzato X.509 (opzionale) +validateSignature.cert.info=Dettagli del certificato +validateSignature.cert.issuer=Emittente +validateSignature.cert.subject=Soggetto +validateSignature.cert.serialNumber=Numero di serie +validateSignature.cert.validFrom=Valido da +validateSignature.cert.validUntil=Valido fino a +validateSignature.cert.algorithm=Algoritmo +validateSignature.cert.keySize=Dimensione chiave +validateSignature.cert.version=Versione +validateSignature.cert.keyUsage=Utilizzo della chiave +validateSignature.cert.selfSigned=Autofirmato +validateSignature.cert.bits=bit diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 0421025f6e..c6c4674964 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -56,12 +56,12 @@ userNotFoundMessage=ãƒĻãƒŧã‚ļãƒŧがčĻ‹ã¤ã‹ã‚Šãžã›ã‚“ã€‚ incorrectPasswordMessage=įžåœ¨ãŽãƒ‘ã‚šãƒ¯ãƒŧãƒ‰ãŒæ­Ŗã—ãã‚ã‚Šãžã›ã‚“ã€‚ usernameExistsMessage=新しいãƒĻãƒŧã‚ļãƒŧ名はすでãĢ存在しぞす。 invalidUsernameMessage=ãƒĻãƒŧã‚ļãƒŧåãŒį„ĄåŠšã§ã™ã€‚ãƒĻãƒŧã‚ļãƒŧ名ãĢã¯æ–‡å­—ã€æ•°å­—ã€ãŠã‚ˆãŗãã‚ŒãĢįļšãį‰šæŽŠæ–‡å­— @._+- ぎãŋをåĢめることができぞす。ぞたは、有劚ãĒé›ģå­ãƒĄãƒŧãƒĢ ã‚ĸドãƒŦ゚であるåŋ…čĻãŒã‚ã‚Šãžã™ã€‚ -invalidPasswordMessage=The password must not be empty and must not have spaces at the beginning or end. +invalidPasswordMessage=パ゚ワãƒŧドはįŠēãĢすることはできぞせん。ぞた、先頭ãƒģæœĢå°žãĢ゚ペãƒŧ゚をåĢめることもできぞせん。 confirmPasswordErrorMessage=新しいパ゚ワãƒŧドと新しいパ゚ワãƒŧドぎįĸēčĒã¯ä¸€č‡´ã™ã‚‹åŋ…čĻãŒã‚ã‚Šãžã™ã€‚ deleteCurrentUserMessage=įžåœ¨ãƒ­ã‚°ã‚¤ãƒŗã—ãĻいるãƒĻãƒŧã‚ļãƒŧは削除できぞせん。 deleteUsernameExistsMessage=そぎãƒĻãƒŧã‚ļãƒŧ名は存在しãĒいため削除できぞせん。 downgradeCurrentUserMessage=įžåœ¨ãŽãƒĻãƒŧã‚ļãƒŧぎåŊšå‰˛ã‚’ダã‚Ļãƒŗã‚°ãƒŦãƒŧドできぞせん -disabledCurrentUserMessage=The current user cannot be disabled +disabledCurrentUserMessage=įžåœ¨ãŽãƒĻãƒŧã‚ļãƒŧã‚’į„ĄåŠšãĢすることはできぞせん downgradeCurrentUserLongMessage=įžåœ¨ãŽãƒĻãƒŧã‚ļãƒŧぎåŊšå‰˛ã‚’ダã‚Ļãƒŗã‚°ãƒŦãƒŧãƒ‰ã§ããžã›ã‚“ã€‚ã—ãŸãŒãŖãĻã€įžåœ¨ãŽãƒĻãƒŧã‚ļãƒŧã¯čĄ¨į¤ēされぞせん。 userAlreadyExistsOAuthMessage=ãƒĻãƒŧã‚ļãƒŧはæ—ĸãĢOAuth2ãƒĻãƒŧã‚ļãƒŧとしãĻ存在しぞす。 userAlreadyExistsWebMessage=ãƒĻãƒŧã‚ļãƒŧはæ—ĸãĢWebãƒĻãƒŧã‚ļãƒŧとしãĻ存在しぞす。 @@ -76,12 +76,13 @@ donate=寄äģ˜ã™ã‚‹ color=色 sponsor=ã‚šãƒãƒŗã‚ĩãƒŧ info=Info -pro=Pro -page=Page -pages=Pages -loading=Loading... -addToDoc=Add to Document -reset=Reset +pro=pro +page=ペãƒŧジ +pages=ペãƒŧジ +loading=čĒ­čžŧ中... +addToDoc=ドキãƒĨãƒĄãƒŗãƒˆãĢčŋŊ加 +reset=ãƒĒã‚ģット +apply=Apply legal.privacy=ãƒ—ãƒŠã‚¤ãƒã‚ˇãƒŧポãƒĒã‚ˇãƒŧ legal.terms=åˆŠį”¨čĻį´„ @@ -92,7 +93,7 @@ legal.impressum=著äŊœæ¨ŠåˆŠč€…æƒ…å ą ############### # Pipeline # ############### -pipeline.header=ãƒ‘ã‚¤ãƒ—ãƒŠã‚¤ãƒŗãƒĄãƒ‹ãƒĨãƒŧ (Alpha) +pipeline.header=ãƒ‘ã‚¤ãƒ—ãƒŠã‚¤ãƒŗãƒĄãƒ‹ãƒĨãƒŧ (Beta) pipeline.uploadButton=ã‚Ģ゚ã‚ŋムぎã‚ĸップロãƒŧド pipeline.configureButton=č¨­åŽš pipeline.defaultOption=ã‚Ģ゚ã‚ŋム @@ -117,21 +118,21 @@ pipelineOptions.validateButton=検č¨ŧ ######################## # ENTERPRISE EDITION # ######################## -enterpriseEdition.button=Upgrade to Pro -enterpriseEdition.warning=This feature is only available to Pro users. -enterpriseEdition.yamlAdvert=Stirling PDF Pro supports YAML configuration files and other SSO features. -enterpriseEdition.ssoAdvert=Looking for more user management features? Check out Stirling PDF Pro +enterpriseEdition.button=ProãĢã‚ĸップグãƒŦãƒŧド +enterpriseEdition.warning=こぎ抟čƒŊはProãƒĻãƒŧã‚ļãƒŧぎãŋãŒåˆŠį”¨ã§ããžã™ã€‚ +enterpriseEdition.yamlAdvert=Stirling PDF Proは、YAMLæ§‹æˆãƒ•ã‚Ąã‚¤ãƒĢやそぎäģ–ぎSSO抟čƒŊをã‚ĩポãƒŧトしãĻいぞす。 +enterpriseEdition.ssoAdvert=より多くぎãƒĻãƒŧã‚ļãƒŧįŽĄį†æŠŸčƒŊをおæŽĸしですかīŧŸ Stirling PDF ProをごčĻ§ãã ã•ã„ ################# # Analytics # ################# -analytics.title=Do you want make Stirling PDF better? -analytics.paragraph1=Stirling PDF has opt in analytics to help us improve the product. We do not track any personal information or file contents. -analytics.paragraph2=Please consider enabling analytics to help Stirling-PDF grow and to allow us to understand our users better. -analytics.enable=Enable analytics -analytics.disable=Disable analytics -analytics.settings=You can change the settings for analytics in the config/settings.yml file +analytics.title=Stirling PDFã‚’ã‚‚ãŖã¨č‰¯ãã—ãŸã„ã§ã™ã‹īŧŸ +analytics.paragraph1=Stirling PDFでは、čŖŊ品ぎ攚善ãĢåŊšįĢ‹ã¤åˆ†æžæŠŸčƒŊをã‚Ēãƒ—ãƒˆã‚¤ãƒŗã—ãĻいぞす。個äē翃…å ąã‚„ãƒ•ã‚Ąã‚¤ãƒĢぎ内厚をčŋŊčˇĄã™ã‚‹ã“ã¨ã¯ã‚ã‚Šãžã›ã‚“ã€‚ +analytics.paragraph2=Stirling-PDFãŽæˆé•ˇã‚’æ”¯æ´ã—ãƒĻãƒŧã‚ļãƒŧã‚’ã‚ˆã‚Šæˇąãį†č§Ŗã§ãã‚‹ã‚ˆã†ãĢ分析を有劚ãĢã™ã‚‹ã“ã¨ã‚’æ¤œč¨Žã—ãĻください。 +analytics.enable=分析を有劚ãĢする +analytics.disable=åˆ†æžã‚’į„ĄåŠšãĢする +analytics.settings=config/settings.ymlãƒ•ã‚Ąã‚¤ãƒĢでã‚ĸナãƒĒãƒ†ã‚Ŗã‚¯ã‚šãŽč¨­åŽšã‚’å¤‰æ›´ã§ããžã™ã€‚ ############# # NAVBAR # @@ -142,14 +143,14 @@ navbar.language=言čĒž navbar.settings=č¨­åŽš navbar.allTools=ツãƒŧãƒĢ navbar.multiTool=マãƒĢチツãƒŧãƒĢ -navbar.search=Search +navbar.search=検į´ĸ navbar.sections.organize=æ•´į† navbar.sections.convertTo=PDFへ変換 navbar.sections.convertFrom=PDFから変換 navbar.sections.security=įŊ˛åã¨ã‚ģキãƒĨãƒĒãƒ†ã‚Ŗ navbar.sections.advance=ã‚ĸãƒ‰ãƒãƒŗã‚šãƒ‰ navbar.sections.edit=閲čĻ§ã¨įˇ¨é›† -navbar.sections.popular=Popular +navbar.sections.popular=äēēæ°— ############# # SETTINGS # @@ -208,7 +209,7 @@ adminUserSettings.user=ãƒĻãƒŧã‚ļãƒŧ adminUserSettings.addUser=新しいãƒĻãƒŧã‚ļをčŋŊ加 adminUserSettings.deleteUser=ãƒĻãƒŧã‚ļぎ削除 adminUserSettings.confirmDeleteUser=ãƒĻãƒŧã‚ļをæœŦåŊ“ãĢ削除しぞすかīŧŸ -adminUserSettings.confirmChangeUserStatus=Should the user be disabled/enabled? +adminUserSettings.confirmChangeUserStatus=ãƒĻãƒŧã‚ļãƒŧã‚’į„ĄåŠš/有劚ãĢするåŋ…čĻãŒã‚ã‚Šãžã™ã‹īŧŸ adminUserSettings.usernameInfo=ãƒĻãƒŧã‚ļãƒŧ名ãĢã¯ã€æ–‡å­—ã€æ•°å­—ã€ãŠã‚ˆãŗæŦĄãŽį‰šæŽŠæ–‡å­— @._+- ぎãŋをåĢめることができぞす。ぞたは、有劚ãĒé›ģå­ãƒĄãƒŧãƒĢ ã‚ĸドãƒŦ゚であるåŋ…čĻãŒã‚ã‚Šãžã™ã€‚ adminUserSettings.roles=åŊšå‰˛ adminUserSettings.role=åŊšå‰˛ @@ -238,17 +239,19 @@ database.creationDate=äŊœæˆæ—Ĩ database.fileSize=ãƒ•ã‚Ąã‚¤ãƒĢã‚ĩイã‚ē database.deleteBackupFile=バックã‚ĸãƒƒãƒ—ãƒ•ã‚Ąã‚¤ãƒĢぎ削除 database.importBackupFile=バックã‚ĸãƒƒãƒ—ãƒ•ã‚Ąã‚¤ãƒĢã‚’ã‚¤ãƒŗãƒãƒŧト +database.createBackupFile=Create Backup File database.downloadBackupFile=バックã‚ĸãƒƒãƒ—ãƒ•ã‚Ąã‚¤ãƒĢをダã‚Ļãƒŗãƒ­ãƒŧド database.info_1=デãƒŧã‚ŋã‚’ã‚¤ãƒŗãƒãƒŧトする際ãĢã¯ã€æ­Ŗã—ã„æ§‹é€ ã‚’įĸēäŋã™ã‚‹ã“とがæĨĩめãĻ重čĻã§ã™ã€‚ä¸æ˜ŽãĒį‚šãŒã‚ã‚‹å ´åˆã¯ã€å°‚é–€åŽļぎã‚ĸドバイ゚やã‚ĩポãƒŧトを受けãĻください。構造上ぎエナãƒŧは、ã‚ĸプãƒĒã‚ąãƒŧã‚ˇãƒ§ãƒŗãŽčǤ動äŊœã‚’åŧ•きčĩˇã“す可čƒŊ性がありぞす。 database.info_2=ãƒ•ã‚Ąã‚¤ãƒĢ名はã‚ĸップロãƒŧド時ãĢはé–ĸäŋ‚ありぞせん。ã‚ĸップロãƒŧド垌ãĢbackup_user_yyyyMMddHHmm.sqlというåŊĸåŧãĢãƒĒネãƒŧムされ、一č˛Ģしたå‘Ŋ名čĻå‰‡ãŒäŋč¨ŧされぞす。 database.submit=バックã‚ĸãƒƒãƒ—ã‚’ã‚¤ãƒŗãƒãƒŧト database.importIntoDatabaseSuccessed=デãƒŧã‚ŋベãƒŧã‚šã¸ãŽã‚¤ãƒŗãƒãƒŧトãĢ成功 +database.backupCreated=Database backup successful database.fileNotFound=ãƒ•ã‚Ąã‚¤ãƒĢがčĻ‹ã¤ã‹ã‚Šãžã›ã‚“ database.fileNullOrEmpty=ãƒ•ã‚Ąã‚¤ãƒĢは null ぞたはįŠēã§ã‚ãŖãĻはãĒりぞせん database.failedImportFile=ãƒ•ã‚Ąã‚¤ãƒĢãŽã‚¤ãƒŗãƒãƒŧトãĢå¤ąæ•— -session.expired=Your session has expired. Please refresh the page and try again. -session.refreshPage=Refresh Page +session.expired=ã‚ģãƒƒã‚ˇãƒ§ãƒŗãŒæœŸé™åˆ‡ã‚Œã§ã™ã€‚ãƒšãƒŧジを更新しãĻもう一åēĻおčŠĻしください。 +session.refreshPage=ペãƒŧジを更新 ############# # HOME-PAGE # @@ -472,6 +475,10 @@ home.autoRedact.title=č‡Ēå‹•åĄ—ã‚Šã¤ãļし home.autoRedact.desc=å…Ĩ力したテキ゚トãĢåŸēãĨいãĻPDF内ぎテキ゚トをč‡Ēå‹•ã§åĄ—ã‚Šã¤ãļし(éģ’åĄ—ã‚Š)しぞす。 autoRedact.tags=Redact,Hide,black out,black,marker,hidden +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDFをCSVãĢ変換 home.tableExtraxt.desc=PDFã‹ã‚‰čĄ¨ã‚’æŠŊå‡ēしCSVãĢ変換しぞす。 tableExtraxt.tags=CSV,Table Extraction,extract,convert @@ -488,48 +495,52 @@ overlay-pdfs.tags=Overlay home.split-by-sections.title=PDFをã‚ģã‚¯ã‚ˇãƒ§ãƒŗã§åˆ†å‰˛ home.split-by-sections.desc=PDFぎ各ペãƒŧジをį¸Ļæ¨ĒãĢåˆ†å‰˛ã—ãžã™ã€‚ -split-by-sections.tags=Section Split, Divide, Customize +split-by-sections.tags=Section Split, Divide, Customize,Customise home.AddStampRequest.title=PDFãĢ゚ã‚ŋãƒŗãƒ—ã‚’čŋŊ加 home.AddStampRequest.desc=č¨­åŽšã—ãŸäŊįŊŽãĢテキ゚トやį”ģ像ぎ゚ã‚ŋãƒŗãƒ—ã‚’čŋŊ加できぞす -AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize +AddStampRequest.tags=Stamp, Add image, center image, Watermark, PDF, Embed, Customize,Customise home.PDFToBook.title=PDFã‚’æ›¸įąãĢ変換 home.PDFToBook.desc=calibreをäŊŋį”¨ã—ãĻPDFã‚’æ›¸įą/ã‚ŗãƒŸãƒƒã‚¯åŊĸåŧãĢ変換しぞす -PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle +PDFToBook.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf home.BookToPDF.title=PDFã‚’æ›¸įąãĢ変換 home.BookToPDF.desc=calibreをäŊŋį”¨ã—ãĻPDFã‚’æ›¸įą/ã‚ŗãƒŸãƒƒã‚¯åŊĸåŧãĢ変換しぞす -BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle +BookToPDF.tags=Book,Comic,Calibre,Convert,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf home.removeImagePdf.title=į”ģ像ぎ削除 home.removeImagePdf.desc=PDFからį”ģ像を削除しãĻãƒ•ã‚Ąã‚¤ãƒĢã‚ĩイã‚ēを小さくしぞす removeImagePdf.tags=Remove Image,Page operations,Back end,server side -home.splitPdfByChapters.title=Split PDF by Chapters -home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. +home.splitPdfByChapters.title=PDFã‚’ãƒãƒŖãƒ—ã‚ŋãƒŧごとãĢåˆ†å‰˛ +home.splitPdfByChapters.desc=ãƒãƒŖãƒ—ã‚ŋãƒŧぎ構造ãĢåŸēãĨいãĻPDFã‚’č¤‡æ•°ãŽãƒ•ã‚Ąã‚¤ãƒĢãĢåˆ†å‰˛ã—ãžã™ splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=PDFįŊ˛åãŽæ¤œč¨ŧ +home.validateSignature.desc=PDF文書ぎデジã‚ŋãƒĢįŊ˛åã¨č¨ŧ明書を検č¨ŧしぞす +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color -replace-color.title=Replace-Invert-Color -replace-color.header=Replace-Invert Color PDF -home.replaceColorPdf.title=Replace and Invert Color -home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replace-color.title=č‰˛ãŽįŊŽæ›ãƒģ反čģĸ +replace-color.header=PDFãŽč‰˛ãŽįŊŽæ›ãƒģ反čģĸ +home.replaceColorPdf.title=č‰˛ãŽįŊŽæ›ã¨åčģĸ +home.replaceColorPdf.desc=PDFå†…ãŽãƒ†ã‚­ã‚šãƒˆã¨čƒŒæ™¯ãŽč‰˛ã‚’įŊŽãæ›ãˆã€PDFぎフãƒĢã‚Ģナãƒŧを反čģĸしãĻãƒ•ã‚Ąã‚¤ãƒĢã‚ĩイã‚ēã‚’į¸Žå°ã—ãžã™ã€‚ replaceColorPdf.tags=Replace Color,Page operations,Back end,server side -replace-color.selectText.1=Replace or Invert color Options -replace-color.selectText.2=Default(Default high contrast colors) -replace-color.selectText.3=Custom(Customized colors) -replace-color.selectText.4=Full-Invert(Invert all colors) -replace-color.selectText.5=High contrast color options -replace-color.selectText.6=white text on black background -replace-color.selectText.7=Black text on white background -replace-color.selectText.8=Yellow text on black background -replace-color.selectText.9=Green text on black background -replace-color.selectText.10=Choose text Color -replace-color.selectText.11=Choose background Color -replace-color.submit=Replace +replace-color.selectText.1=č‰˛ãŽįŊŽæ›ãžãŸã¯åčģĸã‚Ēãƒ—ã‚ˇãƒ§ãƒŗ +replace-color.selectText.2=デフりãƒĢト(デフりãƒĢトぎéĢ˜ã‚ŗãƒŗãƒˆãƒŠã‚šãƒˆč‰˛) +replace-color.selectText.3=ã‚Ģ゚ã‚ŋムīŧˆã‚Ģ゚ã‚ŋマイã‚ēã•ã‚ŒãŸč‰˛īŧ‰ +replace-color.selectText.4=フãƒĢ反čģĸ(すずãĻãŽč‰˛ã‚’åčģĸ) +replace-color.selectText.5=éĢ˜ã‚ŗãƒŗãƒˆãƒŠã‚šãƒˆã‚Ģナãƒŧã‚Ēãƒ—ã‚ˇãƒ§ãƒŗ +replace-color.selectText.6=éģ’čƒŒæ™¯ãĢį™Ŋ文字 +replace-color.selectText.7=į™ŊčƒŒæ™¯ãĢéģ’æ–‡å­— +replace-color.selectText.8=éģ’čƒŒæ™¯ãĢéģ„č‰˛æ–‡å­— +replace-color.selectText.9=éģ’čƒŒæ™¯ãĢįˇ‘æ–‡å­— +replace-color.selectText.10=ãƒ†ã‚­ã‚šãƒˆãŽč‰˛ã‚’é¸æŠž +replace-color.selectText.11=čƒŒæ™¯č‰˛ã‚’é¸æŠž +replace-color.submit=įŊŽæ› @@ -555,10 +566,11 @@ login.oauth2invalidRequest=į„ĄåŠšãĒãƒĒクエ゚ト login.oauth2AccessDenied=ã‚ĸクã‚ģ゚拒åĻ login.oauth2InvalidTokenResponse=į„ĄåŠšãĒトãƒŧã‚¯ãƒŗåŋœį­” login.oauth2InvalidIdToken=į„ĄåŠšãĒIDトãƒŧã‚¯ãƒŗ +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=ãƒĻãƒŧã‚ļãƒŧは非ã‚ĸã‚¯ãƒ†ã‚Ŗãƒ–åŒ–ã•ã‚ŒãĻãŠã‚Šã€įžåœ¨ã“ãŽãƒĻãƒŧã‚ļãƒŧåã§ãŽãƒ­ã‚°ã‚¤ãƒŗã¯ãƒ–ãƒ­ãƒƒã‚¯ã•ã‚ŒãĻã„ãžã™ã€‚įŽĄį†č€…ãĢ逪įĩĄã—ãĻください。 -login.alreadyLoggedIn=You are already logged in to -login.alreadyLoggedIn2=devices. Please log out of the devices and try again. -login.toManySessions=You have too many active sessions +login.alreadyLoggedIn=すでãĢãƒ­ã‚°ã‚¤ãƒŗã—ãĻいぞす +login.alreadyLoggedIn2=デバイ゚からログã‚ĸã‚ĻトしãĻもう一åēĻおčŠĻしください。 +login.toManySessions=ã‚ĸã‚¯ãƒ†ã‚Ŗãƒ–ãĒã‚ģãƒƒã‚ˇãƒ§ãƒŗãŒå¤šã™ãŽãžã™ #auto-redact autoRedact.title=č‡Ēå‹•åĄ—ã‚Šã¤ãļし @@ -572,10 +584,19 @@ autoRedact.customPaddingLabel=čŋŊ加ぎäŊ™į™Ŋ autoRedact.convertPDFToImageLabel=PDFをPDFį”ģ像ãĢ変換 (åĄ—ã‚Šã¤ãļしぎ垌ろぎテキ゚トを削除するためãĢäŊŋᔍ) autoRedact.submitButton=送äŋĄ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS -showJS.title=JavaScriptã‚’čĄ¨į¤ē -showJS.header=JavaScriptã‚’čĄ¨į¤ē +showJS.title=Javascriptã‚’čĄ¨į¤ē +showJS.header=Javascriptã‚’čĄ¨į¤ē showJS.downloadJS=Javascriptをダã‚Ļãƒŗãƒ­ãƒŧド showJS.submit=襨į¤ē @@ -753,7 +774,7 @@ certSign.showSig=įŊ˛åã‚’襨į¤ē certSign.reason=į†į”ą certSign.location=場所 certSign.name=名前 -certSign.showLogo=Show Logo +certSign.showLogo=ãƒ­ã‚´ã‚’čĄ¨į¤ē certSign.submit=PDFãĢįŊ˛å @@ -788,9 +809,9 @@ compare.highlightColor.2=ハイナイトã‚Ģナãƒŧ 2: compare.document.1=ドキãƒĨãƒĄãƒŗãƒˆ 1 compare.document.2=ドキãƒĨãƒĄãƒŗãƒˆ 2 compare.submit=比čŧƒ -compare.complex.message=One or both of the provided documents are large files, accuracy of comparison may be reduced -compare.large.file.message=One or Both of the provided documents are too large to process -compare.no.text.message=One or both of the selected PDFs have no text content. Please choose PDFs with text for comparison. +compare.complex.message=æäž›ã•ã‚ŒãŸæ–‡æ›¸ãŽä¸€æ–šãžãŸã¯ä¸Ąæ–šãŒå¤§ããĒãƒ•ã‚Ąã‚¤ãƒĢであるため、比čŧƒãŽį˛žåēĻがäŊŽä¸‹ã™ã‚‹å¯čƒŊ性がありぞす。 +compare.large.file.message=提䞛された文書ぎ1ã¤ãžãŸã¯ä¸Ąæ–šãŒå¤§ãã™ãŽãĻå‡Ļį†ã§ããžã›ã‚“ +compare.no.text.message=選択したPDFぎ1ã¤ãžãŸã¯ä¸Ąæ–šãĢãƒ†ã‚­ã‚šãƒˆã‚ŗãƒŗãƒ†ãƒŗãƒ„ãŒã‚ã‚Šãžã›ã‚“ã€‚æ¯”čŧƒã™ã‚‹ãĢは、テキ゚トをåĢむPDFを選択しãĻください。 #BookToPDF BookToPDF.title=æ›¸įąã‚„ã‚ŗãƒŸãƒƒã‚¯ã‚’PDFãĢ変換 @@ -799,8 +820,8 @@ BookToPDF.credit=calibreをäŊŋᔍ BookToPDF.submit=変換 #PDFToBook -PDFToBook.title=æ›¸įąã‚’PDFãĢ変換 -PDFToBook.header=æ›¸įąã‚’PDFãĢ変換 +PDFToBook.title=PDFã‚’æ›¸įąãĢ変換 +PDFToBook.header=PDFã‚’æ›¸įąãĢ変換 PDFToBook.selectText.1=フりãƒŧマット PDFToBook.credit=calibreをäŊŋᔍ PDFToBook.submit=変換 @@ -813,13 +834,18 @@ sign.draw=įŊ˛åã‚’書く sign.text=テキ゚トå…Ĩ力 sign.clear=クãƒĒã‚ĸ sign.add=čŋŊ加 -sign.saved=Saved Signatures -sign.save=Save Signature -sign.personalSigs=Personal Signatures -sign.sharedSigs=Shared Signatures -sign.noSavedSigs=No saved signatures found - - +sign.saved=äŋå­˜ã•れたįŊ˛å +sign.save=įŊ˛åã‚’äŋå­˜ +sign.personalSigs=個äēēįŊ˛å +sign.sharedSigs=å…ąæœ‰įŊ˛å +sign.noSavedSigs=äŋå­˜ã•れたįŊ˛åãŒčĻ‹ã¤ã‹ã‚Šãžã›ã‚“ +sign.addToAll=すずãĻぎペãƒŧジãĢčŋŊ加 +sign.delete=削除 +sign.first=最初ぎペãƒŧジ +sign.last=最垌ぎペãƒŧジ +sign.next=æŦĄãŽãƒšãƒŧジ +sign.previous=前ぎペãƒŧジ +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=äŋŽåžŠ repair.header=PDFをäŋŽåžŠ @@ -863,7 +889,7 @@ ocr.selectText.10=OCRãƒĸãƒŧド ocr.selectText.11=OCR垌ãĢį”ģ像を削除する (すずãĻぎį”ģ像を削除しぞす。変換゚テップぎ一部である場合ãĢぎãŋ有劚です)。 ocr.selectText.12=ãƒŦãƒŗãƒ€ãƒĒãƒŗã‚°ã‚ŋイプ (é̘åēĻ) ocr.help=äģ–ãŽč¨€čĒžã§ã“ã‚Œã‚’äŊŋį”¨ã™ã‚‹æ–šæŗ•ã‚„DockeräģĨ外でäŊŋį”¨ã™ã‚‹æ–šæŗ•ãĢついãĻはこぎドキãƒĨãƒĄãƒŗãƒˆã‚’ãŠčĒ­ãŋください。 -ocr.credit=æœŦã‚ĩãƒŧビ゚ãĢはOCRãĢOCRmyPDFとTesseractをäŊŋį”¨ã—ãĻいぞす。 +ocr.credit=æœŦã‚ĩãƒŧビ゚ãĢはOCRãĢqpdfとTesseractをäŊŋį”¨ã—ãĻいぞす。 ocr.submit=OCRでPDFをå‡Ļį†ã™ã‚‹ @@ -887,7 +913,7 @@ fileToPDF.submit=PDFを変換 #compress compress.title=åœ§į¸Ž compress.header=PDFã‚’åœ§į¸Ž -compress.credit=æœŦã‚ĩãƒŧビ゚はPDFãŽåœ§į¸Ž/最遊化ãĢGhostscriptをäŊŋį”¨ã—ãĻいぞす。 +compress.credit=æœŦã‚ĩãƒŧビ゚はPDFãŽåœ§į¸Ž/最遊化ãĢqpdfをäŊŋį”¨ã—ãĻいぞす。 compress.selectText.1=手動ãƒĸãƒŧド - 1 から 4 compress.selectText.2=品čŗĒãƒŦベãƒĢ: compress.selectText.3=4 (テキ゚トį”ģ像は最æ‚Ē) @@ -935,17 +961,39 @@ pdfOrganiser.placeholder=(例:1,3,2ぞたは4-8,2,10-12ぞたは2n-1) multiTool.title=PDFマãƒĢチツãƒŧãƒĢ multiTool.header=PDFマãƒĢチツãƒŧãƒĢ multiTool.uploadPrompts=ãƒ•ã‚Ąã‚¤ãƒĢ名 -multiTool.selectAll=Select All -multiTool.deselectAll=Deselect All -multiTool.selectPages=Page Select -multiTool.selectedPages=Selected Pages -multiTool.page=Page -multiTool.deleteSelected=Delete Selected -multiTool.downloadAll=Export -multiTool.downloadSelected=Export Selected +multiTool.selectAll=すずãĻ選択 +multiTool.deselectAll=é¸æŠžã‚’č§Ŗé™¤ +multiTool.selectPages=ペãƒŧジ選択 +multiTool.selectedPages=選択したペãƒŧジ +multiTool.page=ペãƒŧジ +multiTool.deleteSelected=é¸æŠžé …į›Žã‚’å‰Šé™¤ +multiTool.downloadAll=エク゚ポãƒŧト +multiTool.downloadSelected=é¸æŠžé …į›Žã‚’ã‚¨ã‚¯ã‚šãƒãƒŧト + +multiTool.insertPageBreak=攚ペãƒŧジをæŒŋå…Ĩ +multiTool.addFile=ãƒ•ã‚Ąã‚¤ãƒĢをčŋŊ加 +multiTool.rotateLeft=åˇĻ回čģĸ +multiTool.rotateRight=åŗå›žčģĸ +multiTool.split=åˆ†å‰˛ +multiTool.moveLeft=åˇĻãĢį§ģ動 +multiTool.moveRight=åŗãĢį§ģ動 +multiTool.delete=削除 +multiTool.dragDropMessage=選択されたペãƒŧジ +multiTool.undo=元ãĢæˆģす +multiTool.redo=ã‚„ã‚Šį›´ã™ + +#decrypt +decrypt.passwordPrompt=ã“ãŽãƒ•ã‚Ąã‚¤ãƒĢはパ゚ワãƒŧドでäŋč­ˇã•れãĻいぞす。パ゚ワãƒŧドをå…Ĩ力しãĻください: +decrypt.cancelled=PDFぎ操äŊœãŒã‚­ãƒŖãƒŗã‚ģãƒĢされぞした: {0} +decrypt.noPassword=æš—åˇåŒ–ã•ã‚ŒãŸPDFãĢパ゚ワãƒŧドが指厚されãĻいぞせん: {0} +decrypt.invalidPassword=æ­Ŗã—ã„ãƒ‘ã‚šãƒ¯ãƒŧドでもう一åēĻおčŠĻしください。 +decrypt.invalidPasswordHeader=PDFぎパ゚ワãƒŧãƒ‰ãŒæ­Ŗã—ããĒã„ã‹ã€æš—åˇåŒ–ãŒã‚ĩポãƒŧトされãĻいぞせん: {0} +decrypt.unexpectedError=ãƒ•ã‚Ąã‚¤ãƒĢぎå‡Ļᐆ䏭ãĢエナãƒŧがį™ēį”Ÿã—ãžã—ãŸã€‚ã‚‚ã†ä¸€åēĻおčŠĻしください。 +decrypt.serverError=åžŠåˇåŒ–ä¸­ãĢã‚ĩãƒŧバãƒŧエナãƒŧがį™ēį”Ÿã—ãžã—ãŸ: {0} +decrypt.success=ãƒ•ã‚Ąã‚¤ãƒĢãŽæš—åˇåŒ–ãŒæ­Ŗå¸¸ãĢ厌äē†ã—ぞした。 #multiTool-advert -multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! +multiTool-advert.message=こぎ抟čƒŊは、マãƒĢチツãƒŧãƒĢã§ã‚‚ã”åˆŠį”¨ã„ãŸã ã‘ãžã™ã€‚åŧˇåŒ–されたペãƒŧジごとぎUIとčŋŊ加抟čƒŊãĢついãĻã¯ã“ãĄã‚‰ã‚’ã”čĻ§ãã ã•ã„ã€‚ #view pdf viewPdf.title=PDFã‚’čĄ¨į¤ē @@ -1008,6 +1056,7 @@ pdfToImage.grey=グãƒŦãƒŧã‚šã‚ąãƒŧãƒĢ pdfToImage.blackwhite=į™Ŋéģ’ (デãƒŧã‚ŋãŒå¤ąã‚ã‚Œã‚‹å¯čƒŊ性がありぞすīŧ) pdfToImage.submit=変換 pdfToImage.info=PythonãŒã‚¤ãƒŗã‚šãƒˆãƒŧãƒĢされãĻいぞせん。WebPぎ変換ãĢåŋ…čĻã§ã™ã€‚ +pdfToImage.placeholder=(例:1,2,8、4,7,12-16、2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=æš—åˇåŒ– #watermark watermark.title=透かしぎčŋŊ加 watermark.header=透かしぎčŋŊ加 +watermark.customColor=æ–‡å­—č‰˛ãŽã‚Ģ゚ã‚ŋム watermark.selectText.1=透かしをčŋŊ加するPDFを選択: watermark.selectText.2=透かしぎテキ゚ト: watermark.selectText.3=文字ã‚ĩイã‚ē: @@ -1097,11 +1147,11 @@ changeMetadata.submit=変更 #pdfToPDFA pdfToPDFA.title=PDFをPDF/AãĢ変換 pdfToPDFA.header=PDFをPDF/AãĢ変換 -pdfToPDFA.credit=æœŦã‚ĩãƒŧビ゚はPDF/Aぎ変換ãĢghostscriptをäŊŋį”¨ã—ãĻいぞす。 +pdfToPDFA.credit=æœŦã‚ĩãƒŧビ゚はPDF/Aぎ変換ãĢqpdfをäŊŋį”¨ã—ãĻいぞす。 pdfToPDFA.submit=変換 pdfToPDFA.tip=įžåœ¨ã€ä¸€åēĻãĢč¤‡æ•°ãŽå…Ĩ力ãĢ寞しãĻ抟čƒŊしぞせん -pdfToPDFA.outputFormat=Output format -pdfToPDFA.pdfWithDigitalSignature=PDF ãĢはデジã‚ŋãƒĢįŊ˛åãŒåĢぞれãĻいぞす。これはæŦĄãŽæ‰‹é †ã§å‰Šé™¤ã•れぞす。 +pdfToPDFA.outputFormat=å‡ē力åŊĸåŧ +pdfToPDFA.pdfWithDigitalSignature=PDFãĢはデジã‚ŋãƒĢįŊ˛åãŒåĢぞれãĻいぞす。これはæŦĄãŽæ‰‹é †ã§å‰Šé™¤ã•れぞす。 #PDFToWord @@ -1206,8 +1256,8 @@ licenses.license=ナイã‚ģãƒŗã‚š survey.nav=ã‚ĸãƒŗã‚ąãƒŧト survey.title=Stirling-PDFぎã‚ĸãƒŗã‚ąãƒŧト survey.description=Stirling-PDFãĢはčŋŊčˇĄæŠŸčƒŊがãĒいため、Stirling-PDFã‚’ã‚ˆã‚Šč‰¯ãã™ã‚‹ãŸã‚ãĢįš†æ§˜ãŽæ„čĻ‹ã‚’čžã‹ã›ãĻくださいīŧ -survey.changes=Stirling-PDF has changed since the last survey! To find out more please check our blog post here: -survey.changes2=With these changes we are getting paid business support and funding +survey.changes=Stirling-PDFは前回ぎčĒŋæŸģã‹ã‚‰å¤‰æ›´ã•ã‚Œãžã—ãŸã€‚čŠŗį´°ãĢついãĻã¯ã“ãĄã‚‰ãŽãƒ–ãƒ­ã‚°æŠ•į¨ŋをごčĻ§ãã ã•ã„ã€‚ +survey.changes2=これらぎ変更ãĢã‚ˆã‚Šį§ãŸãĄã¯æœ‰å„ŸãŽãƒ“ã‚¸ãƒã‚šã‚ĩポãƒŧãƒˆã¨čŗ‡é‡‘æ´åŠŠã‚’å—ã‘ãĻいぞす survey.please=ã‚ĸãƒŗã‚ąãƒŧトãĢご協力くださいīŧ survey.disabled=īŧˆã‚ĸãƒŗã‚ąãƒŧトぎポップã‚ĸップは、æŦĄãŽæ›´æ–°ã§ã¯į„ĄåŠšãĢãĒりぞすが、ペãƒŧジぎ下部ãĢ襨į¤ēされぞす。īŧ‰ survey.button=ã‚ĸãƒŗã‚ąãƒŧトãĢį­”ãˆã‚‹ @@ -1235,13 +1285,63 @@ removeImage.removeImage=į”ģ像ぎ削除 removeImage.submit=į”ģ像を削除 -splitByChapters.title=Split PDF by Chapters -splitByChapters.header=Split PDF by Chapters -splitByChapters.bookmarkLevel=Bookmark Level -splitByChapters.includeMetadata=Include Metadata -splitByChapters.allowDuplicates=Allow Duplicates -splitByChapters.desc.1=This tool splits a PDF file into multiple PDFs based on its chapter structure. -splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitting (0 for top-level, 1 for second-level, etc.). -splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. -splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. -splitByChapters.submit=Split PDF +splitByChapters.title=PDFã‚’ãƒãƒŖãƒ—ã‚ŋãƒŧごとãĢåˆ†å‰˛ +splitByChapters.header=PDFã‚’ãƒãƒŖãƒ—ã‚ŋãƒŧごとãĢåˆ†å‰˛ +splitByChapters.bookmarkLevel=ブックマãƒŧクãƒŦベãƒĢ +splitByChapters.includeMetadata=ãƒĄã‚ŋデãƒŧã‚ŋをåĢめる +splitByChapters.allowDuplicates=é‡č¤‡ã‚’č¨ąå¯ã™ã‚‹ +splitByChapters.desc.1=こぎツãƒŧãƒĢã¯ã€ãƒãƒŖãƒ—ã‚ŋãƒŧ構造ãĢåŸēãĨいãĻPDFãƒ•ã‚Ąã‚¤ãƒĢã‚’č¤‡æ•°ãŽPDFãĢåˆ†å‰˛ã—ãžã™ã€‚ +splitByChapters.desc.2=ブックマãƒŧクãƒŦベãƒĢ:åˆ†å‰˛ãĢäŊŋį”¨ã™ã‚‹ãƒ–ãƒƒã‚¯ãƒžãƒŧクぎãƒŦベãƒĢを選択しぞすīŧˆæœ€ä¸ŠäŊãƒŦベãƒĢぎ場合は0、įŦŦ2ãƒŦベãƒĢぎ場合は1ãĒおīŧ‰ã€‚ +splitByChapters.desc.3=ãƒĄã‚ŋデãƒŧã‚ŋをåĢめる:チェックすると、元ぎPDFãŽãƒĄã‚ŋデãƒŧã‚ŋãŒå„åˆ†å‰˛PDFãĢåĢぞれぞす。 +splitByChapters.desc.4=é‡č¤‡ã‚’č¨ąå¯:チェックすると同じペãƒŧã‚¸ä¸ŠãŽč¤‡æ•°ãŽãƒ–ãƒƒã‚¯ãƒžãƒŧクから個åˆĨぎPDFをäŊœæˆã§ããžã™ã€‚ +splitByChapters.submit=PDFã‚’åˆ†å‰˛ + +#File Chooser +fileChooser.click=クãƒĒック +fileChooser.or=ぞたは +fileChooser.dragAndDrop=ドナッグīŧ†ãƒ‰ãƒ­ãƒƒãƒ— +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=ãƒ•ã‚Ąã‚¤ãƒĢをここãĢドナッグīŧ†ãƒ‰ãƒ­ãƒƒãƒ— + +#release notes +releases.footer=ãƒĒãƒĒãƒŧ゚ +releases.title=ãƒĒãƒĒãƒŧ゚ノãƒŧト +releases.header=ãƒĒãƒĒãƒŧ゚ノãƒŧト +releases.current.version=įžåœ¨ãŽãƒĒãƒĒãƒŧ゚ +releases.note=ãƒĒãƒĒãƒŧ゚ノãƒŧãƒˆã¯č‹ąčĒžã§ãŽãŋで提䞛されãĻいぞす + +#Validate Signature +validateSignature.title=PDFįŊ˛åãŽæ¤œč¨ŧ +validateSignature.header=デジã‚ŋãƒĢįŊ˛åãŽæ¤œč¨ŧ +validateSignature.selectPDF=įŊ˛åæ¸ˆãŋPDFãƒ•ã‚Ąã‚¤ãƒĢを選択 +validateSignature.submit=įŊ˛åãŽæ¤œč¨ŧ +validateSignature.results=検č¨ŧįĩæžœ +validateSignature.status=įŠļ態 +validateSignature.signer=įŊ˛åč€… +validateSignature.date=æ—Ĩäģ˜ +validateSignature.reason=į†į”ą +validateSignature.location=場所 +validateSignature.noSignatures=こぎ文書ãĢはデジã‚ŋãƒĢįŊ˛åãŒčĻ‹ã¤ã‹ã‚Šãžã›ã‚“ +validateSignature.status.valid=有劚 +validateSignature.status.invalid=į„ĄåŠš +validateSignature.chain.invalid=č¨ŧ明書チェãƒŧãƒŗãŽæ¤œč¨ŧãĢå¤ąæ•—ã—ãžã—ãŸ - įŊ˛åč€…ぎčēĢ元をįĸēčĒã§ããžã›ã‚“ +validateSignature.trust.invalid=č¨ŧ明書がäŋĄé ŧ゚トã‚ĸãĢありぞせん - ã‚Ŋãƒŧ゚を検č¨ŧできぞせん +validateSignature.cert.expired=č¨ŧ明書ぎ有劚期限が切れãĻいぞす +validateSignature.cert.revoked=č¨ŧ明書は取りæļˆã•れぞした +validateSignature.signature.info=įŊ˛åæƒ…å ą +validateSignature.signature=įŊ˛å +validateSignature.signature.mathValid=įŊ˛åã¯æ•°å­Ļįš„ãĢは有劚ですが: +validateSignature.selectCustomCert=ã‚Ģ゚ã‚ŋムč¨ŧæ˜Žæ›¸ãƒ•ã‚Ąã‚¤ãƒĢ X.509 (ã‚Ēãƒ—ã‚ˇãƒ§ãƒŗ) +validateSignature.cert.info=č¨ŧæ˜Žæ›¸ãŽčŠŗį´° +validateSignature.cert.issuer=į™ē行者 +validateSignature.cert.subject=ä¸ģ題 +validateSignature.cert.serialNumber=ã‚ˇãƒĒã‚ĸãƒĢãƒŠãƒŗãƒãƒŧ +validateSignature.cert.validFrom=有劚開始æ—Ĩ +validateSignature.cert.validUntil=有劚期限 +validateSignature.cert.algorithm=ã‚ĸãƒĢゴãƒĒã‚ēム +validateSignature.cert.keySize=キãƒŧã‚ĩイã‚ē +validateSignature.cert.version=バãƒŧã‚¸ãƒ§ãƒŗ +validateSignature.cert.keyUsage=キãƒŧぎäŊŋį”¨æŗ• +validateSignature.cert.selfSigned=č‡ĒåˇąįŊ˛å +validateSignature.cert.bits=ビット diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index 621b10bf54..040d5d0491 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -82,6 +82,7 @@ pages=íŽ˜ė´ė§€ loading=로딩 뤑... addToDoc=ëŦ¸ė„œė— ėļ”ę°€ reset=Reset +apply=Apply legal.privacy=ę°œė¸ ė •ëŗ´ ė •ėą… legal.terms=ė´ėšŠ ė•Ŋ관 @@ -238,11 +239,13 @@ database.creationDate=ėƒė„ą ë‚ ė§œ database.fileSize=파ėŧ íŦ기 database.deleteBackupFile=ë°ąė—… 파ėŧ ė‚­ė œ database.importBackupFile=ë°ąė—… 파ėŧ ę°€ė ¸ė˜¤ę¸° +database.createBackupFile=Create Backup File database.downloadBackupFile=ë°ąė—… 파ėŧ ë‹¤ėš´ëĄœë“œ database.info_1=ë°ė´í„°ëĨŧ 氀렏ė˜Ŧ 때 ė ė ˆí•œ ęĩŦėĄ°ę°€ ė¤‘ėš”í•Šë‹ˆë‹¤. ėžė‹ ė´ ëŦ´ė—‡ė„ í•˜ëŠ”ė§€ í™•ė‹¤í•˜ė§€ ė•Šë‹¤ëŠ´ ė „ëŦ¸ę°€ė˜ ėĄ°ė–¸ęŗŧ ė§€ė›ė„ ė˛­í•˜ëŠ” ę˛ƒė´ ėĸ‹ėŠĩ니다. ęĩŦėĄ°ė— 똤ëĨ˜ę°€ ėžˆėœŧ늴 ė• í”ŒëĻŦėŧ€ė´ė…˜ 기ëŠĨ ė‹¤íŒ¨ë‚˜ ė• í”ŒëĻŦėŧ€ė´ė…˜ė´ ė™„ė „ížˆ ėž‘ë™í•˜ė§€ ëĒģ하게 되는 ë“ąė˜ ëŦ¸ė œëĨŧ ė´ˆëž˜í•  눘 ėžˆėŠĩ니다. database.info_2=ė—…ëĄœë“œ ė‹œ 파ėŧ ė´ëĻ„ė€ ė¤‘ėš”í•˜ė§€ ė•ŠėŠĩ니다. í›„ė— backup_user_yyyyMMddHHmm.sql í˜•ė‹ėœŧ로 ë‹¤ė‹œ ė§€ė •ë˜ė–´ ėŧ관된 ė´ëĻ„ ęˇœėš™ė„ ėœ ė§€í•Šë‹ˆë‹¤. database.submit=ë°ąė—… ę°€ė ¸ė˜¤ę¸° database.importIntoDatabaseSuccessed=ë°ė´í„°ë˛ ė´ėŠ¤ė— ė„ąęŗĩ렁ėœŧ로 氀렏뙔ėŠĩ니다 +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=파ėŧė€ nullė´ë‚˜ 뚈 ėƒíƒœëĄœ 될 눘 ė—†ėŠĩ니다 database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=ėžë™ 枀뗴 home.autoRedact.desc=PDF ëŦ¸ė„œė—ė„œ ėž…ë Ĩ된 í…ėŠ¤íŠ¸ë“¤ė„ ėžë™ėœŧ로 枀뗴(ëĒ¨ėžė´íŦ)합니다. autoRedact.tags=노ėļœ ë°Šė§€, 눍揰揰, ę˛€ė€ėƒ‰ 래ëĻŦ, 마ėģ¤, ėˆ¨ęš€ +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDFė—ė„œ CSV로 home.tableExtraxt.desc=PDFė—ė„œ 표ëĨŧ ėļ”ėļœí•˜ė—Ŧ CSV로 ëŗ€í™˜ tableExtraxt.tags=CSV, í…Œė´ë¸” ėļ”ėļœ, ėļ”ėļœ, ëŗ€í™˜ @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=ėą•í„°ëŗ„ëĄœ PDF ëļ„í•  home.splitPdfByChapters.desc=PDFëĨŧ ė—ŦëŸŦ 파ėŧ로 나눕니다. 각 ėžĨė˜ ęĩŦėĄ°ė— 따ëŧ. splitPdfByChapters.tags=ëļ„í• , ėą•í„°, ëļë§ˆíŦ, ėĄ°ė§í™” +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=ėƒ‰ėƒ ęĩė˛´/ë°˜ė „ PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response login.oauth2InvalidIdToken=Invalid Id Token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=ėļ”ę°€ 뜤ęŗŊ(패딩) autoRedact.convertPDFToImageLabel=PDF ëŦ¸ė„œė˜ ë‚´ėšŠė„ ė´ë¯¸ė§€ëĄœ ëŗ€í™˜ (枀뗴 ë°•ėŠ¤ ë’¤ė˜ í…ėŠ¤íŠ¸ëĨŧ ė œęą°í•˜ëŠ” 데 ė‚ŦėšŠëŠë‹ˆë‹¤.) autoRedact.submitButton=ė ėšŠ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=JavaScript ëŗ´ę¸° @@ -818,8 +839,13 @@ sign.save=ė„œëĒ… ė €ėžĨ sign.personalSigs=ę°œė¸ėšŠ ė„œëĒ… sign.sharedSigs=ęŗĩėœ ėšŠ ė„œëĒ… sign.noSavedSigs=ė €ėžĨ된 ė„œëĒ…ė´ ė—†ėŠĩ니다 - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=ëŗĩęĩŦ repair.header=PDF ëŗĩęĩŦ @@ -863,7 +889,7 @@ ocr.selectText.10=OCR ëĒ¨ë“œ ocr.selectText.11=OCR 후 ė´ë¯¸ė§€ ė œęą°(ëĒ¨ë“  ė´ë¯¸ė§€ ė œęą°, ëŗ€í™˜ ë‹¨ęŗ„ė˜ ėŧëļ€ė¸ ę˛Ŋėš°ė—ë§Œ ėœ ėšŠ) ocr.selectText.12=렌더 ėœ í˜•(溠揉) ocr.help=다ëĨ¸ 떏떴 또는 Docker뗐 íŦí•¨ë˜ė§€ ė•Šė€ 떏떴뗐 대해 ė‚ŦėšŠí•˜ëŠ” ë°Šë˛•ė— ëŒ€í•´ė„œëŠ” ė´ ëŦ¸ė„œëĨŧ ė°¸ėĄ°í•Šë‹ˆë‹¤. -ocr.credit=ė´ ė„œëš„ėŠ¤ëŠ” OCR뗐 OCRmyPDF뙀 TesseractëĨŧ ė‚ŦėšŠí•Šë‹ˆë‹¤. +ocr.credit=ė´ ė„œëš„ėŠ¤ëŠ” OCR뗐 qpdf뙀 TesseractëĨŧ ė‚ŦėšŠí•Šë‹ˆë‹¤. ocr.submit=ė¸ė‹ @@ -887,7 +913,7 @@ fileToPDF.submit=PDF로 ëŗ€í™˜ #compress compress.title=ė••ėļ• compress.header=PDF ė••ėļ• -compress.credit=ė´ ė„œëš„ėŠ¤ëŠ” PDF ė••ėļ• ë° ėĩœė í™”ëĨŧ ėœ„í•´ GhostscriptëĨŧ ė‚ŦėšŠí•Šë‹ˆë‹¤. +compress.credit=ė´ ė„œëš„ėŠ¤ëŠ” PDF ė••ėļ• ë° ėĩœė í™”ëĨŧ ėœ„í•´ qpdfëĨŧ ė‚ŦėšŠí•Šë‹ˆë‹¤. compress.selectText.1=ėˆ˜ë™ ëĒ¨ë“œ - 1ė—ė„œ 4 compress.selectText.2=ėĩœė í™” ėˆ˜ė¤€: compress.selectText.3=4 (í…ėŠ¤íŠ¸ ė´ë¯¸ė§€ė— ė í•Ší•˜ė§€ ė•ŠėŒ) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=ęˇ¸ë ˆė´ėŠ¤ėŧ€ėŧ pdfToImage.blackwhite=흑백 (ë°ė´í„° 놐다 가ëŠĨė„ą ėžˆėŒ!) pdfToImage.submit=ëŗ€í™˜ pdfToImage.info=Pythonė´ ė„¤ėš˜ë˜ė–´ ėžˆė§€ ė•ŠėŠĩ니다. WebP ëŗ€í™˜ė— í•„ėš”í•Šë‹ˆë‹¤. +pdfToImage.placeholder=(똈: 1,2,8 또는 4,7,12-16 또는 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=ė•”í˜¸í™” #watermark watermark.title=ė›Œí„°ë§ˆíŦ ėļ”ę°€ watermark.header=ė›Œí„°ë§ˆíŦ ėļ”ę°€ +watermark.customColor=ė‚ŦėšŠėž ė •ė˜ í…ėŠ¤íŠ¸ ėƒ‰ėƒ watermark.selectText.1=ė›Œí„°ë§ˆíŦëĨŧ ėļ”가할 PDF ė„ íƒ: watermark.selectText.2=ė›Œí„°ë§ˆíŦ í…ėŠ¤íŠ¸: watermark.selectText.3=폰트 íŦ기: @@ -1097,7 +1147,7 @@ changeMetadata.submit=ëŗ€ę˛Ŋ #pdfToPDFA pdfToPDFA.title=PDFëĨŧ PDF/A로 pdfToPDFA.header=PDF ëŦ¸ė„œëĨŧ PDF/A로 ëŗ€í™˜ -pdfToPDFA.credit=ė´ ė„œëš„ėŠ¤ëŠ” PDF/A ëŗ€í™˜ė„ ėœ„í•´ ghostscript ëŦ¸ė„œëĨŧ ė‚ŦėšŠí•Šë‹ˆë‹¤. +pdfToPDFA.credit=ė´ ė„œëš„ėŠ¤ëŠ” PDF/A ëŗ€í™˜ė„ ėœ„í•´ qpdf ëŦ¸ė„œëĨŧ ė‚ŦėšŠí•Šë‹ˆë‹¤. pdfToPDFA.submit=ëŗ€í™˜ pdfToPDFA.tip=현ėžŦ 한 ë˛ˆė— ė—ŦëŸŦ ėž…ë Ĩ뗐 대해 ėž‘ë™í•˜ė§€ ė•ŠėŠĩ니다. pdfToPDFA.outputFormat=ėļœë Ĩ í˜•ė‹ @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=ëļë§ˆíŦ 레벨: ëļ„í• ė— ė‚ŦėšŠí•  ëļë§ˆíŦ ë ˆë˛¨ė„ splitByChapters.desc.3=ëŠ”íƒ€ë°ė´í„° íŦ함: 랴íŦ하면 각 ëļ„할된 PDFė—ëŠ” ė›ëŗ¸ PDFė˜ ëŠ”íƒ€ë°ė´í„°ę°€ íŦ함됩니다. splitByChapters.desc.4=뤑ëŗĩ í—ˆėšŠ: 뤑ëŗĩ ëļë§ˆíŦ가 ėžˆëŠ” ę°™ė€ íŽ˜ė´ė§€ė— ė—ŦëŸŦ 번 ëļ„í•  PDFëĨŧ ėƒė„ąí•Šë‹ˆë‹¤. splitByChapters.submit=PDF ëļ„í•  + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index 62b69a42f6..da90e39d34 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -82,6 +82,7 @@ pages=Pagen loading=Laden... addToDoc=Toevoegen aan document reset=Reset +apply=Apply legal.privacy=Privacybeleid legal.terms=Voorwaarden van gebruik @@ -238,11 +239,13 @@ database.creationDate=Creatiedatum database.fileSize=Bestandsgrootte database.deleteBackupFile=Backupbestand verwijderen database.importBackupFile=Backupbestand importeren +database.createBackupFile=Create Backup File database.downloadBackupFile=Backupbestand downloaden database.info_1=Bij het importeren van gegevens is het cruciaal om de juiste structuur te zorgen voor. Als je niet zeker bent van wat je doet, raadpleeg dan advies en ondersteuning bij een professionele. Een fout in de structuur kan leiden tot toepassingsfouten, waarmee wellicht zelfs de volledige uitvoerbaarheid van de toepassing belemmerd wordt. database.info_2=De bestandsnaam maakt geen verschil bij het uploaden. Hij zal later worden herbewoond om de indeling backup_user_yyyyMMddHHmm.sql te volgen, waardoor een consistente bestandsnaamconventie waarborgd wordt. database.submit=Backup importeren database.importIntoDatabaseSuccessed=Importeer naar database succesvol +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=Bestand mag niet null of leeg zijn database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=Automatisch censureren home.autoRedact.desc=Automatisch censureren (onherkenbaar maken) van tekst in een PDF op basis van ingevoerde tekst autoRedact.tags=Verzwakken, Verbergen, Uitroepen, Gekleurd, Verborgen +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF naar CSV home.tableExtraxt.desc=Haalt tabellen uit een PDF en converteert ze naar CSV tableExtraxt.tags=CSV,tabel extractie,extractie,converteren @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=PDF op hoofdstukken splitsen home.splitPdfByChapters.desc=Splits een PDF op basis van zijn hoofdstukstructuur in meerdere bestanden. splitPdfByChapters.tags=splitsen, hoofdstukken, bookmarks, organiseren +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Kleur-instellingen voor PDF's @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Ongeldig verzoek login.oauth2AccessDenied=Toegang geweigerd login.oauth2InvalidTokenResponse=Ongeldige tokenreactie login.oauth2InvalidIdToken=Ongeldige ID token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=De gebruiker is gedesactiveerd, inloggen is momenteel geblokkeerd voor deze gebruikersnaam. Neem contact op met de beheerder. login.alreadyLoggedIn=U zit reeds ingelogd bij login.alreadyLoggedIn2=apparaten. U moet u a.u.b. uitloggen van de apparaten en opnieuw proberen. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Aangepaste extra ruimtevulling autoRedact.convertPDFToImageLabel=Converteer PDF naar PDF-afbeelding (wordt gebruikt om tekst achter het vak te verwijderen) autoRedact.submitButton=Indienen +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Toon Javascript @@ -818,8 +839,13 @@ sign.save=Opslaan Signatuur sign.personalSigs=Persoonlijke Signatuuren sign.sharedSigs=Gedeelde Signatuuren sign.noSavedSigs=Geen opgeslagen signatuuren gevonden - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Repareren repair.header=PDF's repareren @@ -863,7 +889,7 @@ ocr.selectText.10=OCR-modus ocr.selectText.11=Verwijder afbeeldingen na OCR (Verwijdert ALLE afbeeldingen, alleen nuttig als onderdeel van conversiestap) ocr.selectText.12=Weergave Type (Geavanceerd) ocr.help=Lees deze documentatie over hoe dit te gebruiken voor andere talen en/of gebruik buiten docker -ocr.credit=Deze dienst maakt gebruik van OCRmyPDF en Tesseract voor OCR. +ocr.credit=Deze dienst maakt gebruik van qpdf en Tesseract voor OCR. ocr.submit=Verwerk PDF met OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Omzetten naar PDF #compress compress.title=Comprimeren compress.header=PDF comprimeren -compress.credit=Deze functie gebruikt Ghostscript voor PDF Compressie/Optimalisatie. +compress.credit=Deze functie gebruikt qpdf voor PDF Compressie/Optimalisatie. compress.selectText.1=Handmatige modus - Van 1 tot 4 compress.selectText.2=Optimalisatieniveau: compress.selectText.3=4 (Verschrikkelijk voor tekstafbeeldingen) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Grijstinten pdfToImage.blackwhite=Zwart en wit (kan data verliezen!) pdfToImage.submit=Omzetten pdfToImage.info=Python is niet geïnstalleerd. Vereist voor WebP-conversie. +pdfToImage.placeholder=(bijv. 1,2,8 of 4,7,12-16 of 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Versleutelen #watermark watermark.title=Watermerk toevoegen watermark.header=Watermerk toevoegen +watermark.customColor=Aangepaste tekstkleur watermark.selectText.1=Selecteer PDF om watermerk toe te voegen: watermark.selectText.2=Watermerk tekst: watermark.selectText.3=Tekengrootte: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Wijzigen #pdfToPDFA pdfToPDFA.title=PDF naar PDF/A pdfToPDFA.header=PDF naar PDF/A -pdfToPDFA.credit=Deze service gebruikt ghostscript voor PDF/A-conversie +pdfToPDFA.credit=Deze service gebruikt qpdf voor PDF/A-conversie pdfToPDFA.submit=Converteren pdfToPDFA.tip=Werkt momenteel niet voor meerdere inputs tegelijkertijd. pdfToPDFA.outputFormat=Uitvoerindeling @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Boekmarkeer niveau: Kies het boekmarkeer niveau om te geb splitByChapters.desc.3=Metadata inclusief: Als gecijfeld, de originele PDF's metadata wordt ingevoegd in elk gesplitst PDF-bestand. splitByChapters.desc.4=Dubbele items toestaan: Als gecijfeld, zorgen multiple boekmarkeersymboolen op dezelfde pagina voor het maken van aparte PDF-bestanden. splitByChapters.submit=PDF splitsen + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties index bc8ce23625..1ae9075d7b 100644 --- a/src/main/resources/messages_no_NB.properties +++ b/src/main/resources/messages_no_NB.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=Opprettelsesdato database.fileSize=Filstørrelse database.deleteBackupFile=Slett sikkerhetskopifil database.importBackupFile=Importer sikkerhetskopifil +database.createBackupFile=Create Backup File database.downloadBackupFile=Last ned sikkerhetskopifil database.info_1=NÃĨr du importerer data, er det avgjørende ÃĨ sikre riktig struktur. Hvis du er usikker pÃĨ hva du gjør, bør du søke rÃĨd og støtte fra en profesjonell. En feil i strukturen kan føre til applikasjonsfeil, inkludert fullstendig manglende evne til ÃĨ kjøre applikasjonen. database.info_2=Filnavnet spiller ingen rolle ved opplasting. Det vil bli omdøpt etterpÃĨ for ÃĨ følge formatet backup_user_yyyyMMddHHmm.sql, for ÃĨ sikre en konsekvent navnekonvensjon. database.submit=Importer sikkerhetskopi database.importIntoDatabaseSuccessed=Import til database vellykket +database.backupCreated=Database backup successful database.fileNotFound=Fil ikke funnet database.fileNullOrEmpty=Fil mÃĨ ikke vÃĻre tom eller null database.failedImportFile=Import av fil mislyktes @@ -472,6 +475,10 @@ home.autoRedact.title=Automatisk Sensurering home.autoRedact.desc=Automatisk sensurering (sverter ut) tekst i en PDF basert pÃĨ inntastet tekst autoRedact.tags=Sensurere,Skjule,sverte ut,svart,markør,skjult +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF til CSV home.tableExtraxt.desc=Ekstraherer tabeller fra en PDF og konverterer dem til CSV tableExtraxt.tags=CSV,tabelluttrekk,ekstrahere,konvertere @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Ugyldig forespørsel login.oauth2AccessDenied=Tilgang nektet login.oauth2InvalidTokenResponse=Ugyldig tokenrespons login.oauth2InvalidIdToken=Ugyldig Id Token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Tilpasset ekstra polstring autoRedact.convertPDFToImageLabel=Konverter PDF til PDF-bilde (Brukes for ÃĨ fjerne tekst bak boksen) autoRedact.submitButton=Send inn +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Vis Javascript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Reparer repair.header=Reparer PDF-er @@ -863,7 +889,7 @@ ocr.selectText.10=OCR-modus ocr.selectText.11=Fjern bilder etter OCR (Fjerner ALLE bilder, kun nyttig hvis det er en del av konverteringsprosessen) ocr.selectText.12=Renderingstype (Avansert) ocr.help=Vennligst les denne dokumentasjonen for hvordan du bruker dette for andre sprÃĨk og/eller bruk utenfor Docker. -ocr.credit=Denne tjenesten bruker OCRmyPDF og Tesseract for OCR. +ocr.credit=Denne tjenesten bruker qpdf og Tesseract for OCR. ocr.submit=Behandle PDF med OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Konverter til PDF #compress compress.title=Komprimer compress.header=Komprimer PDF -compress.credit=Denne tjenesten bruker Ghostscript for PDF-komprimering/optimisering. +compress.credit=Denne tjenesten bruker qpdf for PDF-komprimering/optimisering. compress.selectText.1=Manuell modus - Fra 1 til 4 compress.selectText.2=OptimeringsnivÃĨ: compress.selectText.3=4 (DÃĨrlig for tekstbilder) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=GrÃĨtone pdfToImage.blackwhite=Svart-hvitt (kan miste data!) pdfToImage.submit=Konverter pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.placeholder=(f.eks. 1,2,8 eller 4,7,12-16 eller 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Krypter #watermark watermark.title=Legg til vannmerke watermark.header=Legg til vannmerke +watermark.customColor=Tilpasset Tekstfarge watermark.selectText.1=Velg PDF-fil ÃĨ legge til vannmerke pÃĨ: watermark.selectText.2=Vannmerketekst: watermark.selectText.3=Skriftstørrelse: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Endre #pdfToPDFA pdfToPDFA.title=PDF til PDF/A pdfToPDFA.header=PDF til PDF/A -pdfToPDFA.credit=Denne tjenesten bruker ghostscript for PDF/A-konvertering +pdfToPDFA.credit=Denne tjenesten bruker qpdf for PDF/A-konvertering pdfToPDFA.submit=Konverter pdfToPDFA.tip=Fungere for øyeblikket ikke for flere innganger samtidig pdfToPDFA.outputFormat=Utdataformat @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties old mode 100755 new mode 100644 index dd99b4b2ea..4636a0e0a7 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -82,6 +82,7 @@ pages=Strony loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Polityka Prywatności legal.terms=Zasady i Postanowienia @@ -238,11 +239,13 @@ database.creationDate=Data utworzenia database.fileSize=Rozmiar pliku database.deleteBackupFile=Usuń plik kopii zapasowej database.importBackupFile=Importuj plik kopii zapasowej +database.createBackupFile=Create Backup File database.downloadBackupFile=Pobierz plik kopii zapasowej database.info_1=Podczas importowania danych, waÅŧne jest, aby upewnić się, Åŧe struktura jest poprawna. Jeśli nie jesteś pewien, co robisz, skontaktuj się z profesjonalistą. Błąd w strukturze moÅŧe spowodować awarie aplikacji, aÅŧ do całkowitej niemoÅŧności jej uruchomienia. database.info_2=Nazwa pliku nie ma znaczenia podczas przesyłania. Zostanie on pÃŗÅēniej przemianowany, aby przestrzegać formatu backup_user_yyyyMMddHHmm.sql, zapewniając spÃŗjną konwencję nazewnictwa. database.submit=Importuj kopię zapasową database.importIntoDatabaseSuccessed=Import do bazy danych zakończony sukcesem +database.backupCreated=Database backup successful database.fileNotFound=Plik nie znaleziony database.fileNullOrEmpty=Plik nie moÅŧe być pusty database.failedImportFile=Nie udało się zaimportować pliku @@ -472,6 +475,10 @@ home.autoRedact.title=Zaciemnij home.autoRedact.desc=Zaciemnia dokument PDF bazując na podanej wartości autoRedact.tags=Redagowanie, ukrywanie, zaciemnianie, zaczernianie, zaznaczanie, ukrywanie +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF do CSV home.tableExtraxt.desc=Konwertuje tabele z PDF do pliku CSV tableExtraxt.tags=CSV, ekstrakcja tabeli, ekstrakcja, konwersja, wydobywanie @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Podziel PDF według rozdziaÅ‚Ãŗw home.splitPdfByChapters.desc=Podział pliku PDF na wiele plikÃŗw na podstawie struktury rozdziaÅ‚Ãŗw. splitPdfByChapters.tags=podział, rozdziały, zakładki, porządkowanie, organizacja +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Zamień-OdwrÃŗÄ‡-Kolor replace-color.header=Zamień-OdwrÃŗÄ‡ kolor PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Nieprawidłowe Åŧądanie login.oauth2AccessDenied=Brak dostępu login.oauth2InvalidTokenResponse=Nieprawidłowa odpowiedÅē na token login.oauth2InvalidIdToken=Nieprawidłowa wartość tokenu +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=UÅŧytkownik jest nieaktywny, logowanie przy uÅŧyciu tej nazwy uÅŧytkownika jest obecnie zablokowane. Prosimy o kontakt z administratorem. login.alreadyLoggedIn=Jesteś juÅŧ zalogowany na login.alreadyLoggedIn2=urządzeniach. Wyloguj się z tych urządzeń i sprÃŗbuj ponownie. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Dodatkowe wypełnienie autoRedact.convertPDFToImageLabel=PrzerÃŗb PDF na PDF-obrazowy (usuwa tekst w tle) autoRedact.submitButton=Wyślij +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=PokaÅŧ Javascript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Napraw repair.header=Napraw dokument(y) PDF @@ -863,7 +889,7 @@ ocr.selectText.10=Tryb OCR ocr.selectText.11=Usuń obrazy po OCR (usuwa wszystkie obrazy, przydatne tylko, jeśli jest częścią etapu konwersji) ocr.selectText.12=Typ renderowania (zaawansowany) ocr.help=Przeczytaj tę dokumentację, aby dowiedzieć się, jak uÅŧywać tego w innych językach i/lub nie uÅŧywać docker -ocr.credit=Ta usługa uÅŧywa OCRmyPDF i Tesseract do OCR. +ocr.credit=Ta usługa uÅŧywa qpdf i Tesseract do OCR. ocr.submit=Przetwarzaj PDF za pomocą OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Konwertuj na PDF #compress compress.title=Kompresuj compress.header=Kompresuj PDF -compress.credit=Ta usługa uÅŧywa Ghostscript do kompresji/optymalizacji PDF. +compress.credit=Ta usługa uÅŧywa qpdf do kompresji/optymalizacji PDF. compress.selectText.1=Tryb ręczny - Od 1 do 4 compress.selectText.2=Poziom optymalizacji: compress.selectText.3=4 (DuÅŧe dla obrazÃŗw tekstowych) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Odcień szarości pdfToImage.blackwhite=Czarno-biały (moÅŧe spowodować utratę danych!) pdfToImage.submit=Konwertuj pdfToImage.info=Python nie został zainstalowany. Jest wymagany do konwersji WebP. +pdfToImage.placeholder=(przykład 1,2,8 lub 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Zablokuj #watermark watermark.title=Dodaj znak wodny watermark.header=Dodaj znak wodny +watermark.customColor=Własny kolor tekstu watermark.selectText.1=Wybierz dokument PDF, do ktÃŗrego chcesz dodać znak wodny: watermark.selectText.2=Treść znaku wodnego: watermark.selectText.3=Rozmiar czcionki: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Zmień #pdfToPDFA pdfToPDFA.title=PDF na PDF/A pdfToPDFA.header=PDF na PDF/A -pdfToPDFA.credit=Ta usługa uÅŧywa ghostscript do konwersji PDF/A +pdfToPDFA.credit=Ta usługa uÅŧywa qpdf do konwersji PDF/A pdfToPDFA.submit=Konwertuj pdfToPDFA.tip=Tylko jeden plik na raz pdfToPDFA.outputFormat=Format wyjściowy: @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Poziom Zakładek: Wybierz poziom zakładek, ktÃŗry ma zos splitByChapters.desc.3=Dołącz Metadane: Jeśli opcja ta jest zaznaczona, metadane oryginalnego pliku PDF zostaną uwzględnione w kaÅŧdym rozdzielonych plikÃŗw PDF. splitByChapters.desc.4=ZezwÃŗl na Duplikaty: Jeśli ta opcja jest zaznaczona, pozwala na tworzenie oddzielnych plikÃŗw PDF przez wiele zakładek na tej samej stronie. splitByChapters.submit=Podziel PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index 86f6641e1f..fdbaaeaf8c 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -5,14 +5,14 @@ language.direction=ltr addPageNumbers.fontSize=Tamanho da Fonte addPageNumbers.fontName=Nome da Fonte -pdfPrompt=Selecione PDF(s) -multiPdfPrompt=Selecione PDFs (2+) -multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs desejados +pdfPrompt=Selecione o(s) PDF(s) +multiPdfPrompt=Selecione os PDFs (2+) +multiPdfDropPrompt=Selecione (ou arraste e solte) todos os PDFs desejados: imgPrompt=Selecione a(s) Imagem(ns) genericSubmit=Enviar -processTimeWarning=Aviso: esse processo pode levar atÊ um minuto, dependendo do tamanho do arquivo -pageOrderPrompt=Ordem de PÃĄgina Personalizada (Digite uma lista de nÃēmeros de pÃĄginas, separadas por vírgula ou FunçÃĩes como 2n+1): -pageSelectionPrompt=SeleÃ§ÃŖo de PÃĄgina Personalizada (Digite uma lista de nÃēmeros de pÃĄginas, separadas por vírgula 1,5,6 ou FunçÃĩes como 2n+1) : +processTimeWarning=Aviso: Este processo pode levar atÊ um minuto, dependendo do tamanho do arquivo +pageOrderPrompt=Ordem de PÃĄgina Personalizada (Digite uma lista de nÃēmeros de pÃĄginas, separadas por vírgula ou funçÃĩes como 2n+1): +pageSelectionPrompt=SeleÃ§ÃŖo de PÃĄgina Personalizada (Digite uma lista de nÃēmeros de pÃĄginas, separadas por vírgula como 1,5,6 ou funçÃĩes como 2n+1): goToPage=Ir true=Verdadeiro false=Falso @@ -23,7 +23,7 @@ close=Fechar filesSelected=Arquivos Selecionados noFavourites=Nenhum Favorito Adicionado downloadComplete=Download Completo -bored=Entediado Esperando? +bored=Entediado? Clique aqui! alphabet=Alfabeto downloadPdf=Baixar PDF text=Texto @@ -34,7 +34,7 @@ sizes.small=Pequeno sizes.medium=MÊdio sizes.large=Grande sizes.x-large=Extra grande -error.pdfPassword=O documento PDF estÃĄ protegido por senha e a senha nÃŖo foi fornecida ou estÃĄ incorreta +error.pdfPassword=O PDF estÃĄ protegido por senha e a senha nÃŖo foi fornecida ou estÃĄ incorreta delete=Apagar username=UsuÃĄrio password=Senha @@ -46,7 +46,7 @@ red=Vermelho green=Verde blue=Azul custom=Personalizado... -WorkInProgess=Trabalho em progresso, Talvez nÃŖo funcione ou apresente erros, Por favor, reporte qualquer problema! +WorkInProgess=Trabalho em progresso, talvez nÃŖo funcione ou apresente erros, Por favor, reporte qualquer problema! poweredBy=Distribuído por yes=Sim no=NÃŖo @@ -55,11 +55,11 @@ notAuthenticatedMessage=UsuÃĄrio nÃŖo autenticado. userNotFoundMessage=UsuÃĄrio nÃŖo encontrado. incorrectPasswordMessage=A senha atual estÃĄ incorreta. usernameExistsMessage=Novo UsuÃĄrio jÃĄ existe. -invalidUsernameMessage=UsuÃĄrio invÃĄlido, nome de usuÃĄrio sÃŗ pode incluir letras, nÃēmeros e os seguintes caracteres especiais @._+- ou deve ser um e-mail vÃĄlido. +invalidUsernameMessage=UsuÃĄrio invÃĄlido, nome de usuÃĄrio sÃŗ pode conter letras, nÃēmeros e os seguintes caracteres especiais @._+- ou deve ser um e-mail vÃĄlido. invalidPasswordMessage=A senha nÃŖo deve estar vazia e nÃŖo deve conter espaços no início ou no final. confirmPasswordErrorMessage=Nova Senha e Confirmar Nova Senha devem ser iguais. deleteCurrentUserMessage=NÃŖo Ê possível apagar usuÃĄrio conectado no momento. -deleteUsernameExistsMessage=O usuÃĄrio nÃŖo existe e nÃŖo pode ser apagado. +deleteUsernameExistsMessage=O usuÃĄrio nÃŖo existe e desta forma nÃŖo pode ser apagado. downgradeCurrentUserMessage=NÃŖo Ê possível fazer downgrade da funÃ§ÃŖo do usuÃĄrio conectado no momento. disabledCurrentUserMessage=O usuÃĄrio atual nÃŖo pode ser desativado. downgradeCurrentUserLongMessage=NÃŖo Ê possível fazer downgrade da funÃ§ÃŖo do usuÃĄrio atual. Portanto, o usuÃĄrio atual nÃŖo serÃĄ mostrado. @@ -70,8 +70,8 @@ oops=Ops! help=Ajuda goHomepage=Ir para a PÃĄgina Inicial joinDiscord=Junte-se ao nosso servidor Discord -seeDockerHub=Visite o Docker Hub -visitGithub=Visite o repositÃŗrio no GitHub +seeDockerHub=Visite nosso Docker Hub +visitGithub=Visite nosso repositÃŗrio no GitHub donate=Doar color=Cor sponsor=Patrocinador @@ -81,7 +81,8 @@ page=PÃĄgina pages=PÃĄginas loading=Carregando... addToDoc=Adicionar ao Documento -reset=Reset +reset=Reiniciar +apply=Apply legal.privacy=Política de Privacidade legal.terms=Termos e CondiçÃĩes @@ -93,42 +94,42 @@ legal.impressum=InformaçÃĩes legais # Pipeline # ############### pipeline.header=Menu do Pipeline (Beta) -pipeline.uploadButton=Upload Personalizado +pipeline.uploadButton=Upload de Arquivo Personalizado pipeline.configureButton=Configurar -pipeline.defaultOption=Personalizado +pipeline.defaultOption=Arquivo Personalizado pipeline.submitButton=Enviar -pipeline.help=Ajuda do Pipeline -pipeline.scanHelp=Ajuda para scanner de pastas -pipeline.deletePrompt=Tem certeza de que deseja excluir o pipeline +pipeline.help=Ajuda relacionada ao Pipeline +pipeline.scanHelp=Ajuda para leitura e processamento de pastas +pipeline.deletePrompt=Tem certeza de que deseja excluir o pipeline -> ###################### # Pipeline Options # ###################### pipelineOptions.header=ConfiguraÃ§ÃŖo do Pipeline -pipelineOptions.pipelineNameLabel=Nome do Pipeline +pipelineOptions.pipelineNameLabel=Nome do Pipeline: pipelineOptions.saveSettings=Salvar ConfiguraçÃĩes da OperaÃ§ÃŖo -pipelineOptions.pipelineNamePrompt=Insira o nome do pipeline aqui -pipelineOptions.selectOperation=Selecione uma OperaÃ§ÃŖo -pipelineOptions.addOperationButton=Adicione uma OperaÃ§ÃŖo +pipelineOptions.pipelineNamePrompt=Insira o nome do pipeline neste campo +pipelineOptions.selectOperation=Selecione uma OperaÃ§ÃŖo: +pipelineOptions.addOperationButton=Adicione a OperaÃ§ÃŖo pipelineOptions.pipelineHeader=Pipeline: -pipelineOptions.saveButton=Baixar +pipelineOptions.saveButton=Baixar (JSON) pipelineOptions.validateButton=Validar ######################## # ENTERPRISE EDITION # ######################## -enterpriseEdition.button=Atualize para versÃŖo Pro -enterpriseEdition.warning=Esse recurso sÃŗ estÃĄ disponivel para usuÃĄrios da versÃŖo Pro. +enterpriseEdition.button=Atualize para a versÃŖo Pro +enterpriseEdition.warning=Este recurso sÃŗ estÃĄ disponivel para usuÃĄrios da versÃŖo Pro. enterpriseEdition.yamlAdvert=Stirling PDF Pro suporta arquivos de configuraÃ§ÃŖo YAML e outros recursos SSO. -enterpriseEdition.ssoAdvert=Procurando por mais recursos de controle de usuÃĄrios? Veja Stirling PDF Pro +enterpriseEdition.ssoAdvert=Procurando por mais recursos de controle de usuÃĄrios? Veja a versÃŖo Pro do Stirling PDF ################# # Analytics # ################# -analytics.title=VocÃĒ quer melhorar Stirling PDF? +analytics.title=VocÃĒ quer melhorar o Stirling PDF? analytics.paragraph1=Stirling PDF possui coleta de dados opcional para ajudar a melhorar o produto. NÃŗs nÃŖo rastreamos nenhuma informaÃ§ÃŖo pessoal ou conteÃēdo dos arquivos. -analytics.paragraph2=Por favor considere habilitar coleta de dados para ajudar Stirling-PDF a crescer e nos ajudar a entender nossos usuÃĄrios melhor. +analytics.paragraph2=Por favor considere habilitar a coleta de dados para ajudar Stirling PDF a crescer e nos ajudar a entender melhor nossos usuÃĄrios. analytics.enable=Habilitar coleta de dados analytics.disable=Desabilitar coleta de dados analytics.settings=VocÃĒ pode alterar as configuraçÃĩes de coleta de dados no arquivo config/settings.yml @@ -142,13 +143,13 @@ navbar.language=Idiomas navbar.settings=ConfiguraçÃĩes navbar.allTools=Ferramentas navbar.multiTool=Multiferramentas -navbar.search=Search +navbar.search=Pesquisar navbar.sections.organize=Organizar navbar.sections.convertTo=Converter para PDF navbar.sections.convertFrom=Converter de PDF navbar.sections.security=Assinatura & Segurança navbar.sections.advance=Avançado -navbar.sections.edit=Visualizar & editar +navbar.sections.edit=Visualizar & Editar navbar.sections.popular=Populares ############# @@ -157,16 +158,16 @@ navbar.sections.popular=Populares settings.title=ConfiguraçÃĩes settings.update=AtualizaÃ§ÃŖo disponível settings.updateAvailable={0} Ê a versÃŖo atualmente instalada. Uma nova versÃŖo ({1}) estÃĄ disponível. -settings.appVersion=VersÃŖo do aplicativo: -settings.downloadOption.title=Escolha a opÃ§ÃŖo de download (para downloads nÃŖo compactados de arquivo Ãēnico): +settings.appVersion=VersÃŖo do Aplicativo: +settings.downloadOption.title=Escolha a opÃ§ÃŖo de download (para download de arquivo Ãēnico, nÃŖo compactados): settings.downloadOption.1=Abrir na mesma janela settings.downloadOption.2=Abrir em nova janela -settings.downloadOption.3=Baixar arquivo -settings.zipThreshold=Compactar arquivos quando o nÃēmero de arquivos baixados exceder +settings.downloadOption.3=Baixar o arquivo +settings.zipThreshold=Compactar os arquivos quando o nÃēmero baixado exceder: settings.signOut=Sair -settings.accountSettings=ConfiguraçÃĩes de conta +settings.accountSettings=ConfiguraçÃĩes da Conta settings.bored.help=Habilitar jogos secretos -settings.cacheInputs.name=Salvar entradas do formulÃĄrio +settings.cacheInputs.name=Salvar entradas do formulÃĄrio. settings.cacheInputs.help=Habilitar para armazenar entradas usadas anteriormente para execuçÃĩes futuras changeCreds.title=Alterar Credenciais @@ -180,8 +181,8 @@ changeCreds.submit=Enviar AlteraçÃĩes -account.title=ConfiguraçÃĩes de Conta -account.accountSettings=ConfiguraçÃĩes de Conta +account.title=ConfiguraçÃĩes da Conta +account.accountSettings=ConfiguraçÃĩes da Conta account.adminSettings=ConfiguraçÃĩes de Administrador – Visualizar e Adicionar UsuÃĄrios account.userControlSettings=ConfiguraçÃĩes de Controle de UsuÃĄrio account.changeUsername=Alterar UsuÃĄrio @@ -193,8 +194,8 @@ account.changePassword=Alterar a Senha account.confirmNewPassword=Confirme a Nova Senha account.signOut=Sair account.yourApiKey=Sua chave de API -account.syncTitle=Sincronize as configuraçÃĩes do navegador com a conta -account.settingsCompare=ComparaÃ§ÃŖo de ConfiguraçÃĩes: +account.syncTitle=Sincronize as configuraçÃĩes do navegador com sua conta: +account.settingsCompare=ComparaÃ§ÃŖo das ConfiguraçÃĩes: account.property=Propriedade account.webBrowserSettings=ConfiguraÃ§ÃŖo do navegador Web account.syncToBrowser=Sincronizar Conta -> Navegador @@ -217,7 +218,7 @@ adminUserSettings.apiUser=UsuÃĄrio de API limitado adminUserSettings.extraApiUser=UsuÃĄrio de API limitado adicional adminUserSettings.webOnlyUser=UsuÃĄrio web apenas adminUserSettings.demoUser=UsuÃĄrio demo (Sem configuraçÃĩes personalizadas) -adminUserSettings.internalApiUser=UsuÃĄrio interno de API +adminUserSettings.internalApiUser=UsuÃĄrio de API interno adminUserSettings.forceChange=Forçar usuÃĄrio a trocar a senha ao iniciar sessÃŖo adminUserSettings.submit=Salvar UsuÃĄrio adminUserSettings.changeUserRole=Alterar FunÃ§ÃŖo do UsuÃĄrio @@ -225,52 +226,54 @@ adminUserSettings.authenticated=Autenticado adminUserSettings.editOwnProfil=Editar prÃŗprio perfil adminUserSettings.enabledUser=usuÃĄrio habilitado adminUserSettings.disabledUser=usuÃĄrio desabilitado -adminUserSettings.activeUsers=UsuÃĄrios ativos: -adminUserSettings.disabledUsers=UsuÃĄrios desabilitados: -adminUserSettings.totalUsers=Total de usuÃĄrios: +adminUserSettings.activeUsers=UsuÃĄrios Ativos: +adminUserSettings.disabledUsers=UsuÃĄrios Desabilitados: +adminUserSettings.totalUsers=Total de UsuÃĄrios: adminUserSettings.lastRequest=Última solicitaÃ§ÃŖo database.title=Importar/Exportar banco de dados database.header=Importar/Exportar banco de dados -database.fileName=Nome do arquivo -database.creationDate=Data de criaÃ§ÃŖo -database.fileSize=Tamanho do arquivo +database.fileName=Nome do Arquivo +database.creationDate=Data de CriaÃ§ÃŖo +database.fileSize=Tamanho do Arquivo database.deleteBackupFile=Apagar arquivo de backup database.importBackupFile=Importar arquivo de backup +database.createBackupFile=Create Backup File database.downloadBackupFile=Baixar arquivo de backup database.info_1=Ao importar dados, Ê crucial garantir a estrutura correta. Se vocÃĒ nÃŖo tem certeza do que estÃĄ fazendo procure auxílio de um profissional. Um erro na estrutura pode ocasionar em mau funcionamento da aplicaÃ§ÃŖo, incluindo a impossibilidade da aplicaÃ§ÃŖo ser executada. -database.info_2=O nome do arquivo nÃŖo importa ao enviar. Ele serÃĄ renomeado em seguida para seguir o formato backup_user_yyyyMMddHHmm.sql, garantindo uma convenÃ§ÃŖo de nomes coerente. +database.info_2=O nome do arquivo nÃŖo importa ao enviar. Ele serÃĄ renomeado em seguida para seguir o formato backup_usuario_yyyyMMddHHmm.sql, garantindo uma convenÃ§ÃŖo de nomes coerente. database.submit=Importar Backup database.importIntoDatabaseSuccessed=ImportaÃ§ÃŖo para o banco de dados bem sucedida +database.backupCreated=Database backup successful database.fileNotFound=Arquivo nÃŖo encontrado database.fileNullOrEmpty=O arquivo nÃŖo pode estar nulo ou vazio database.failedImportFile=Falha ao importar arquivo session.expired=Sua sessÃŖo expirou. Por gentileza atualize a pÃĄgina e tente novamente. -session.refreshPage=Refresh Page +session.refreshPage=Atualizar PÃĄgina ############# # HOME-PAGE # ############# -home.desc=Seu tudo-em-um hospedado localmente para tudo relacionado a PDFs. +home.desc=Seu tudo-em-um hospedado localmente para tudo relacionado a PDFs home.searchBar=Pesquisar funcionalidades... home.viewPdf.title=Visualizar PDF -home.viewPdf.desc=Visualizar, anotar, adicionar texto ou imagens +home.viewPdf.desc=Visualizar, anotar, adicionar texto ou imagens ao PDF. viewPdf.tags=visualizar,ler,anotar,texto,imagem -home.multiTool.title=Multiferramenta de PDF -home.multiTool.desc=Mesclar, girar, reorganizar, dividir e remover pÃĄginas -multiTool.tags=Multiferramenta, mÃēltiplas operaçÃĩes, Interface do UsuÃĄrio, Clique e arraste, front-end, lado do cliente, interativo, intratÃĄvel, movimento, excluir, migrar, dividir +home.multiTool.title=Multiferramentas de PDF +home.multiTool.desc=Mesclar, girar, reorganizar, dividir, inserir e remover pÃĄginas. +multiTool.tags=Multiferramentas,mÃēltiplas operaçÃĩes,Interface do UsuÃĄrio,Clique e arraste,front-end,lado do cliente,interativo,intratÃĄvel,movimento,excluir,migrar,dividir home.merge.title=Mesclar home.merge.desc=Mescle facilmente vÃĄrios PDFs em um sÃŗ. merge.tags=mesclar,OperaçÃĩes de PÃĄgina,Back-end,lado do servidor home.split.title=Dividir -home.split.desc=Dividir PDFs em vÃĄrios documentos +home.split.desc=Dividir PDFs em vÃĄrios documentos/arquivos. split.tags=OperaçÃĩes de PÃĄgina,dividir,MÃēltiplas PÃĄginas,cortar,lado do servidor home.rotate.title=Girar @@ -279,41 +282,41 @@ rotate.tags=Lado do servidor home.imageToPdf.title=Imagem para PDF -home.imageToPdf.desc=Converter uma imagem (PNG, JPEG, GIF) em PDF. +home.imageToPdf.desc=Converter uma imagem (PNG, JPG, GIF) em PDF. imageToPdf.tags=conversÃŖo,img,jpg,imagem,foto home.pdfToImage.title=PDF para Imagem -home.pdfToImage.desc=Converter um PDF em uma imagem. (PNG, JPG, GIF) +home.pdfToImage.desc=Converter PDF em uma imagem (PNG, JPG, GIF e outros). pdfToImage.tags=conversÃŖo,img,jpg,imagem,foto -home.pdfOrganiser.title=Organizar -home.pdfOrganiser.desc=Remover/reorganizar as pÃĄginas em qualquer ordem. +home.pdfOrganiser.title=Organizar PÃĄginas +home.pdfOrganiser.desc=Remover/reorganizar as pÃĄginas de diversas formas diferentes. pdfOrganiser.tags=duplex,par,ímpar,ordenar,mover home.addImage.title=Adicionar Imagem -home.addImage.desc=Adicionar uma imagem em um local definido no PDF +home.addImage.desc=Adicionar imagens em um local definido no PDF. addImage.tags=img,jpg,imagem,foto home.watermark.title=Adicionar Marca d'ÃĄgua -home.watermark.desc=Adicionar uma marca d'ÃĄgua personalizada ao seu documento PDF. +home.watermark.desc=Adicionar uma marca d'ÃĄgua personalizada ao seu PDF. watermark.tags=Texto,repetindo,rÃŗtulo,prÃŗprio,direitos autorais,marca registrada,img,jpg,imagem,foto home.permissions.title=Alterar PermissÃĩes -home.permissions.desc=Alterar as permissÃĩes do seu documento PDF. +home.permissions.desc=Alterar as permissÃĩes do seu PDF. permissions.tags=leitura,escrita,ediÃ§ÃŖo,impressÃŖo -home.removePages.title=Remover -home.removePages.desc=Excluir as pÃĄginas indesejadas do seu documento PDF. +home.removePages.title=Remover PÃĄginas +home.removePages.desc=Excluir pÃĄginas indesejadas do seu PDF. removePages.tags=Remover pÃĄginas,excluir pÃĄginas -home.addPassword.title=Adicionar Senha -home.addPassword.desc=Criptografar seu documento PDF com uma senha. +home.addPassword.title=Proteger PDF +home.addPassword.desc=Criptografar seu PDF com uma senha podendo realizar alteraçÃĩes de permissÃĩes. addPassword.tags=seguro,segurança -home.removePassword.title=Remover Senha -home.removePassword.desc=Remover a proteÃ§ÃŖo por senha do seu documento PDF. +home.removePassword.title=Desproteger PDF +home.removePassword.desc=Descriptografar o PDF realizando a remoÃ§ÃŖo da senha. removePassword.tags=seguro, descriptografar, segurança, remover senha home.compressPdfs.title=Comprimir @@ -322,189 +325,193 @@ compressPdfs.tags=compactar,pequeno,mínimo home.changeMetadata.title=Alterar Metadados -home.changeMetadata.desc=Alterar/remover/adicionar metadados de um documento PDF. +home.changeMetadata.desc=Alterar/remover/adicionar metadados de um PDF. changeMetadata.tags=Título,autor,data,criaÃ§ÃŖo,hora,editor,produtor,estatísticas home.fileToPDF.title=Converter Arquivo para PDF -home.fileToPDF.desc=Converter praticamente qualquer arquivo em PDF (DOCX, PNG, XLS, PPT, TXT e mais) +home.fileToPDF.desc=Converter praticamente qualquer arquivo em PDF (DOCX, PNG, XLS, PPT, TXT e outros). fileToPDF.tags=transformaÃ§ÃŖo,formato,documento,imagem,slide,texto,conversÃŖo,escritÃŗrio,documentos,word,excel,powerpoint -home.ocr.title=OCR / Limpeza de DigitalizaçÃĩes -home.ocr.desc=A limpeza verifica e detecta texto em imagens de um PDF e o adiciona novamente como texto. +home.ocr.title=Processamento de OCR +home.ocr.desc=Reconhecimento Óptico de Caracteres transforma PDFs com imagens em documentos pesquisÃĄveis e com texto selecionÃĄvel. ocr.tags=reconhecimento,texto,imagem,digitalizaÃ§ÃŖo,leitura,identificaÃ§ÃŖo,detecÃ§ÃŖo,editÃĄvel home.extractImages.title=Extrair Imagens -home.extractImages.desc=Extrair todas as imagens de um PDF e salvÃĄ-las em um arquivo zip. +home.extractImages.desc=Extrair as imagens de um PDF e salvÃĄ-las em um arquivo compactado. extractImages.tags=imagem,foto,salvar,arquivo,zip,captura,coleta home.pdfToPDFA.title=PDF para PDF/A -home.pdfToPDFA.desc=Converter PDF para o formato PDF/A para armazenamento a longo prazo. +home.pdfToPDFA.desc=Converter o PDF para o formato PDF/A, voltado a armazenamento a longo prazo. pdfToPDFA.tags=arquivo,longo prazo,padrÃŖo,conversÃŖo,armazenamento,preservaÃ§ÃŖo home.PDFToWord.title=PDF para Word -home.PDFToWord.desc=Converter PDF para formatos Word (DOC, DOCX e ODT) +home.PDFToWord.desc=Converter PDF para formatos Word (DOC, DOCX e ODT). PDFToWord.tags=doc,docx,odt,word,transformaÃ§ÃŖo,formato,conversÃŖo,escritÃŗrio,microsoft,doc home.PDFToPresentation.title=PDF para ApresentaÃ§ÃŖo -home.PDFToPresentation.desc=Converter PDF para formatos de apresentaÃ§ÃŖo (PPT, PPTX e ODP) +home.PDFToPresentation.desc=Converter PDF para formatos de ApresentaÃ§ÃŖo (PPT, PPTX e ODP). PDFToPresentation.tags=slides,apresentaÃ§ÃŖo,escritÃŗrio,microsoft -home.PDFToText.title=PDF para Texto/RTF -home.PDFToText.desc=Converter PDF em formato de texto ou RTF +home.PDFToText.title=PDF para TXT/RTF +home.PDFToText.desc=Converter PDF em formato de TXT ou RTF. PDFToText.tags=formato rich,formato richtext,formato rich text home.PDFToHTML.title=PDF para HTML -home.PDFToHTML.desc=Converter PDF para o formato HTML +home.PDFToHTML.desc=Converter PDF para o formato HTML. PDFToHTML.tags=conteÃēdo web,compatível com navegador home.PDFToXML.title=PDF para XML -home.PDFToXML.desc=Converter PDF para formato XML +home.PDFToXML.desc=Converter PDF para formato XML. PDFToXML.tags=extraÃ§ÃŖo-de-dados,conteÃēdo-estruturado,interoperabilidade,transformaÃ§ÃŖo,converter home.ScannerImageSplit.title=Detectar/Dividir Fotos Digitalizadas -home.ScannerImageSplit.desc=Divide vÃĄrias fotos de dentro de uma imagem/PDF +home.ScannerImageSplit.desc=Divide vÃĄrias fotos de dentro de uma imagem/PDF. ScannerImageSplit.tags=separar,detecÃ§ÃŖo-automÃĄtica,digitalizaçÃĩes,fotos-mÃēltiplas,organizar home.sign.title=Assinar -home.sign.desc=Adicionar assinatura ao PDF por desenho, texto ou imagem +home.sign.desc=Adicionar assinatura ao PDF por desenho, texto ou imagem. sign.tags=autorizar,iniciais,assinatura-desenhada,assinatura-de-texto,assinatura-de-imagem home.flatten.title=Achatar -home.flatten.desc=Remover todos os elementos e formulÃĄrios interativos de um PDF +home.flatten.desc=Combinar todos os elementos e formulÃĄrios interativos de um PDF em uma Ãēnica camada fixa, nÃŖo editÃĄvel. flatten.tags=estÃĄtico,desativar,nÃŖo-interativo,otimizar home.repair.title=Reparar -home.repair.desc=Tentar reparar um PDF corrompido/quebrado +home.repair.desc=Tentar reparar um PDF corrompido/quebrado. repair.tags=corrigir,restaurar,correÃ§ÃŖo,recuperar home.removeBlanks.title=Remover PÃĄginas em Branco -home.removeBlanks.desc=Detectar e remover pÃĄginas em branco de um documento +home.removeBlanks.desc=Detectar e remover pÃĄginas em branco de um PDF. removeBlanks.tags=limpeza,otimizaÃ§ÃŖo,sem-conteÃēdo,organizar home.removeAnnotations.title=Remover AnotaçÃĩes -home.removeAnnotations.desc=Remove todos os comentÃĄrios/anotaçÃĩes de um PDF +home.removeAnnotations.desc=Remove todos os comentÃĄrios/anotaçÃĩes de um PDF. removeAnnotations.tags=comentÃĄrios,destaque,notas,marcaÃ§ÃŖo,remover home.compare.title=Comparar -home.compare.desc=Comparar e mostrar as diferenças entre 2 documentos PDF +home.compare.desc=Comparar e mostrar as diferenças entre dois documentos PDF. compare.tags=diferenciar,contraste,mudanças,anÃĄlise home.certSign.title=Assinar com Certificado -home.certSign.desc=Assinar um PDF com um Certificado/Chave (PEM/P12) +home.certSign.desc=Assinar PDF com um Certificado/Chave (PEM/P12/JKS). certSign.tags=autenticar,PEM,P12,oficial,criptografar home.removeCertSign.title=Remover Assinatura com Certificado -home.removeCertSign.desc=Remover assinatura com certificado de PDF +home.removeCertSign.desc=Remover assinatura com Certificado/Chave (PEM/P12/JKS) em um PDF. removeCertSign.tags=autenticar,PEM,P12,oficial,descriptografar home.pageLayout.title=Layout de MÃēltiplas PÃĄginas -home.pageLayout.desc=Mesclar vÃĄrias pÃĄginas de um documento PDF em uma Ãēnica pÃĄgina +home.pageLayout.desc=Mesclar vÃĄrias pÃĄginas de um documento PDF em uma Ãēnica pÃĄgina. pageLayout.tags=mesclar,composto,vista-Ãēnica,organizar -home.scalePages.title=Ajustar Tamanho/Escala de PÃĄgina +home.scalePages.title=Ajustar Tamanho/Escala da PÃĄgina home.scalePages.desc=Alterar o tamanho/escala da pÃĄgina e/ou seu conteÃēdo. scalePages.tags=redimensionar,modificar,dimensÃŖo,adaptar home.pipeline.title=Pipeline -home.pipeline.desc=Executar vÃĄrias açÃĩes em PDFs definindo scripts de pipeline +home.pipeline.desc=Executar vÃĄrias açÃĩes em PDFs seguindo scripts de operaçÃĩes. pipeline.tags=automatizar,sequÃĒncia,scriptado,processo-em-lote home.add-page-numbers.title=Adicionar NÃēmeros de PÃĄgina -home.add-page-numbers.desc=Adicionar nÃēmeros de pÃĄgina em todo o documento em um local definido +home.add-page-numbers.desc=Adicionar nÃēmeros de pÃĄgina no documento, em um local definido. add-page-numbers.tags=paginar,rotular,organizar,índice -home.auto-rename.title=Renomear Automaticamente o Arquivo PDF -home.auto-rename.desc=Renomeia automaticamente um arquivo PDF com base no cabeçalho detectado +home.auto-rename.title=Renomear Automaticamente o PDF +home.auto-rename.desc=Renomeia automaticamente o PDF com base no cabeçalho detectado. auto-rename.tags=detecÃ§ÃŖo-automÃĄtica,baseado-em-cabeçalho,organizar,relabel -home.adjust-contrast.title=Ajustar Cores/Contraste -home.adjust-contrast.desc=Ajustar Contraste, SaturaÃ§ÃŖo e Brilho de um PDF +home.adjust-contrast.title=Ajuste Visual do PDF +home.adjust-contrast.desc=Ajustar Contraste, SaturaÃ§ÃŖo e Brilho de um PDF. adjust-contrast.tags=correÃ§ÃŖo-de-cor,ajustar,modificar,realçar -home.crop.title=Cortar PDF -home.crop.desc=Cortar um PDF para reduzir o tamanho (mantÊm o texto!) +home.crop.title=Recortar +home.crop.desc=Recortar trecho de um PDF para reduzir o tamanho. crop.tags=aparar,encolher,editar,formato home.autoSplitPDF.title=DivisÃŖo AutomÃĄtica de PÃĄginas -home.autoSplitPDF.desc=Dividir automaticamente um PDF digitalizado com separador de pÃĄginas físicas QR Code +home.autoSplitPDF.desc=Dividir automaticamente um PDF digitalizado utilizando um separador de pÃĄginas físico com QR Code. autoSplitPDF.tags=baseado-em-QR,separar,segmento-de-digitalizaÃ§ÃŖo,organizar home.sanitizePdf.title=Higienizar -home.sanitizePdf.desc=Remover scripts e outros elementos de arquivos PDF +home.sanitizePdf.desc=Remover scripts, links, metadados e outros elementos de um PDF. sanitizePdf.tags=limpar,seguro,protegido,remover-ameaças home.URLToPDF.title=Converter URL/Site para PDF -home.URLToPDF.desc=Converte qualquer pÃĄgina da internet para um arquivo PDF +home.URLToPDF.desc=Converter qualquer pÃĄgina da internet para um PDF. URLToPDF.tags=captura-de-web,salvar-pÃĄgina,web-para-doc,arquivar home.HTMLToPDF.title=HTML para PDF -home.HTMLToPDF.desc=Converte qualquer arquivo HTML ou zip para PDF +home.HTMLToPDF.desc=Converter qualquer arquivo HTML ou zip para PDF. HTMLToPDF.tags=marcaÃ§ÃŖo,conteÃēdo-web,transformaÃ§ÃŖo,converter home.MarkdownToPDF.title=Markdown para PDF -home.MarkdownToPDF.desc=Converte qualquer arquivo Markdown para PDF +home.MarkdownToPDF.desc=Converte qualquer arquivo Markdown para PDF. MarkdownToPDF.tags=marcaÃ§ÃŖo,conteÃēdo-web,transformaÃ§ÃŖo,converter -home.getPdfInfo.title=Obter TODAS as InformaçÃĩes de um PDF -home.getPdfInfo.desc=ObtÊm todas as informaçÃĩes possíveis de um PDF +home.getPdfInfo.title=Obter InformaçÃĩes de um PDF +home.getPdfInfo.desc=ObtÊm informaçÃĩes (metadata) de um PDF. getPdfInfo.tags=informaçÃĩes,dados,estatísticas home.extractPage.title=Extrair PÃĄgina(s) -home.extractPage.desc=Extrai pÃĄginas selecionadas de um PDF +home.extractPage.desc=Extrair determinadas pÃĄginas de um PDF. extractPage.tags=extrair -home.PdfToSinglePage.title=PDF para PÃĄgina Única Grande -home.PdfToSinglePage.desc=Combina todas as pÃĄginas de um PDF em uma Ãēnica pÃĄgina grande +home.PdfToSinglePage.title=PDF para PÃĄgina Única +home.PdfToSinglePage.desc=Combina todas as pÃĄginas de um PDF em uma Ãēnica pÃĄgina. PdfToSinglePage.tags=pÃĄgina Ãēnica home.showJS.title=Mostrar Javascript -home.showJS.desc=Procura e exibe qualquer JavaScript injetado em um PDF +home.showJS.desc=Procura, exibe e extrai qualquer JavaScript injetado em um PDF. showJS.tags=JavaScript -home.autoRedact.title=Auto Ocultar -home.autoRedact.desc=OcultaÃ§ÃŖo automÃĄtica (escurecimento) de texto em um PDF com base no texto de entrada +home.autoRedact.title=OcultaÃ§ÃŖo de Texto +home.autoRedact.desc=OcultaÃ§ÃŖo automÃĄtica (escurecimento) de texto em um PDF com base em texto de entrada. autoRedact.tags=Redigir,ocultar,escurecer,preto,marcador,oculto +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF para CSV -home.tableExtraxt.desc=Extrai tabelas de um PDF convertendo para CSV +home.tableExtraxt.desc=ExtraÃ§ÃŖo de tabelas de um PDF convertendo para CSV. tableExtraxt.tags=CSV,extraÃ§ÃŖo de tabela,extrair,converter -home.autoSizeSplitPDF.title=DivisÃŖo automÃĄtica por tamanho/contagem -home.autoSizeSplitPDF.desc=Divida um Ãēnico PDF em vÃĄrios documentos com base no tamanho, contagem de pÃĄginas ou contagem de documentos +home.autoSizeSplitPDF.title=DivisÃŖo Manual do PDF +home.autoSizeSplitPDF.desc=Divida um PDF em vÃĄrios, com base no tamanho, contagem de pÃĄginas ou contagem de documentos. autoSizeSplitPDF.tags=pdf,divisÃŖo,documento,organizaÃ§ÃŖo home.overlay-pdfs.title=Sobrepor PDFs -home.overlay-pdfs.desc=SobrepÃĩe PDFs sobre outro PDF +home.overlay-pdfs.desc=SobrepÃĩe PDF sobre outro PDF. overlay-pdfs.tags=SobreposiÃ§ÃŖo home.split-by-sections.title=Dividir PDF por SeçÃĩes -home.split-by-sections.desc=Divida cada pÃĄgina de um PDF em seçÃĩes horizontais e verticais menores +home.split-by-sections.desc=Divida cada pÃĄgina de um PDF em seçÃĩes horizontais e/ou verticais menores. split-by-sections.tags=SeÃ§ÃŖo Dividir, Dividir, Personalizar home.AddStampRequest.title=Adicionar Carimbo ao PDF -home.AddStampRequest.desc=Adicione texto ou carimbos de imagem em locais definidos +home.AddStampRequest.desc=Adicione texto ou carimbos de imagem em locais definidos. AddStampRequest.tags=Carimbo,Adicionar imagem,centralizar imagem,Marca d'ÃĄgua,PDF,Incorporar,Personalizar home.PDFToBook.title=PDF para Livro -home.PDFToBook.desc=Converte PDF para formatos de livro/quadrinhos usando Calibre +home.PDFToBook.desc=Converter PDF para formatos de livro/quadrinhos usando Calibre. PDFToBook.tags=Livro,Quadrinhos,Calibre,Converter,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf home.BookToPDF.title=Livro para PDF -home.BookToPDF.desc=Converte formatos de livros/quadrinhos para PDF usando Calibre +home.BookToPDF.desc=Converter formatos de livros/quadrinhos para PDF usando Calibre. BookToPDF.tags=Livro,Quadrinhos,Calibre,Converter,manga,amazon,kindle,epub,mobi,azw3,docx,rtf,txt,html,lit,fb2,pdb,lrf home.removeImagePdf.title=Remover Imagem -home.removeImagePdf.desc=Remova a imagem do PDF para reduzir o tamanho do arquivo +home.removeImagePdf.desc=Remova imagens do PDF para reduzir o tamanho do arquivo. removeImagePdf.tags=Remover imagem,operaçÃĩes de pÃĄgina,back-end,lado do servidor @@ -512,23 +519,27 @@ home.splitPdfByChapters.title=Divide PDF por Capítulos home.splitPdfByChapters.desc=Divide um PDF em vÃĄrios arquivos baseado na sua estrutura de capítulos. splitPdfByChapters.tags=dividir,capítulos,favoritos,organizar +home.validateSignature.title=Verificar Assinatura com Certificado +home.validateSignature.desc=Verifica assinatura digital e certificado em um PDF. +validateSignature.tags=assinatura,verificaÃ§ÃŖo,validaÃ§ÃŖo,pdf,certificado,assinatura digital,validar assinatura,validar certificado + #replace-invert-color -replace-color.title=Substituir-Inverter-Cor -replace-color.header=Substitui-Inverter Cor PDF -home.replaceColorPdf.title=Substitui e Inverte Cor -home.replaceColorPdf.desc=Substitui cor de um texto e plano de fundo de um PDF e inverte a toda cor do PDF para reduzir o tamanho +replace-color.title=Substitui e Inverte Cores +replace-color.header=Substitui e Inverte Cores +home.replaceColorPdf.title=Substitui e Inverte Cores +home.replaceColorPdf.desc=Substitui cor do texto e plano de fundo de um PDF e/ou inverte a toda cor do PDF para reduzir o tamanho. replaceColorPdf.tags=Substitui Cor, OperaçÃĩes na PÃĄgina, back end, lado do servidor -replace-color.selectText.1=Substituir ou inverter cor OpçÃĩes -replace-color.selectText.2=PadrÃŖo(PadrÃŖo cores de alto constraste) -replace-color.selectText.3=Customizado(Cores customizadas) -replace-color.selectText.4=InversÃŖo Completa(Inverte todas cores) -replace-color.selectText.5=OpçÃĩes de cores de alto contraste +replace-color.selectText.1=Substituir ou inverter cores OpçÃĩes: +replace-color.selectText.2=PadrÃŖo (Cores de alto constraste) +replace-color.selectText.3=Customizado (Cores customizadas) +replace-color.selectText.4=InversÃŖo Completa (Inverte todas cores) +replace-color.selectText.5=OpçÃĩes de cores de alto contraste: replace-color.selectText.6=Texto branco em um plano de fundo preto replace-color.selectText.7=Texto preto em um plano de fundo branco replace-color.selectText.8=Texto amarelo em um plano de fundo preto replace-color.selectText.9=Texto verde em um plano de fundo preto -replace-color.selectText.10=Escolha cor do texto -replace-color.selectText.11=Escolha cor do plano de fundo +replace-color.selectText.10=Escolha a cor do texto: +replace-color.selectText.11=Escolha a cor do plano de fundo: replace-color.submit=Substituir @@ -555,29 +566,39 @@ login.oauth2invalidRequest=RequisiÃ§ÃŖo InvÃĄlida login.oauth2AccessDenied=Acesso Negado login.oauth2InvalidTokenResponse=Resposta de Token InvÃĄlida login.oauth2InvalidIdToken=Id de Token InvÃĄlido +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=O usuÃĄrio estÃĄ desativado, o login estÃĄ atualmente bloqueado com este nome de usuÃĄrio. Entre em contato com o administrador. -login.alreadyLoggedIn=VocÃĒ jÃĄ estÃĄ conectado +login.alreadyLoggedIn=VocÃĒ jÃĄ estÃĄ conectado em login.alreadyLoggedIn2=aparelhos. Por favor saia dos aparelhos e tente novamente. login.toManySessions=VocÃĒ tem muitas sessÃĩes ativas #auto-redact -autoRedact.title=RedaÃ§ÃŖo AutomÃĄtica de Dados -autoRedact.header=RedaÃ§ÃŖo AutomÃĄtica de Dados -autoRedact.colorLabel=Cor -autoRedact.textsToRedactLabel=Texto para redigir (separado por linha) -autoRedact.textsToRedactPlaceholder=por exemplo: \nConfidencial \nSecreto -autoRedact.useRegexLabel=Usar Regex (expressÃŖo regular) -autoRedact.wholeWordSearchLabel=Pesquisa de palavras inteiras -autoRedact.customPaddingLabel=Preenchimento extra personalizado -autoRedact.convertPDFToImageLabel=Converter PDF em imagem PDF (Usado para remover o texto atrÃĄs da caixa) +autoRedact.title=OcultaÃ§ÃŖo de Texto +autoRedact.header=OcultaÃ§ÃŖo de Texto +autoRedact.colorLabel=Cor: +autoRedact.textsToRedactLabel=Texto para ocultar (um por linha): +autoRedact.textsToRedactPlaceholder=Por exemplo: \nConfidencial \nSecreto +autoRedact.useRegexLabel=Usar Regex (expressÃŖo regular). +autoRedact.wholeWordSearchLabel=Pesquisa apenas palavras inteiras. +autoRedact.customPaddingLabel=Preenchimento extra personalizado: +autoRedact.convertPDFToImageLabel=Converter PDF em imagem PDF (Usado para remover o texto atrÃĄs da caixa). autoRedact.submitButton=Enviar +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS -showJS.title=Exibir JavaScript -showJS.header=Exibir JavaScript +showJS.title=Mostrar JavaScript +showJS.header=Mostrar JavaScript showJS.downloadJS=Baixar JavaScript -showJS.submit=Exibir +showJS.submit=Mostrar #pdfToSinglePage @@ -587,8 +608,8 @@ pdfToSinglePage.submit=Converter para PÃĄgina Única #pageExtracter -pageExtracter.title=Extrair PÃĄginas -pageExtracter.header=Extrair PÃĄginas +pageExtracter.title=Extrair PÃĄgina(s) +pageExtracter.header=Extrair PÃĄginas(s) pageExtracter.submit=Extrair pageExtracter.placeholder=(por exemplo 1,2,8 or 4,7,12-16 ou 2n-1) @@ -604,25 +625,25 @@ getPdfInfo.downloadJson=Baixar JSON MarkdownToPDF.title=Markdown para PDF MarkdownToPDF.header=Markdown para PDF MarkdownToPDF.submit=Converter -MarkdownToPDF.help=Em desenvolvimento -MarkdownToPDF.credit=Usa o WeasyPrint +MarkdownToPDF.help=Em desenvolvimento. +MarkdownToPDF.credit=Utiliza o WeasyPrint. #url-to-pdf -URLToPDF.title=URL para PDF -URLToPDF.header=URL para PDF +URLToPDF.title=Converter URL/Site para PDF +URLToPDF.header=Converter URL/Site para PDF URLToPDF.submit=Converter -URLToPDF.credit=Usa o WeasyPrint +URLToPDF.credit=Utiliza o WeasyPrint. #html-to-pdf HTMLToPDF.title=HTML para PDF HTMLToPDF.header=HTML para PDF -HTMLToPDF.help=Aceita arquivos HTML e ZIPs contendo html, css, imagens, etc. necessÃĄrios +HTMLToPDF.help=Aceita arquivos HTML e ZIPs contendo html, css, imagens, etc. HTMLToPDF.submit=Converter -HTMLToPDF.credit=Usa o WeasyPrint -HTMLToPDF.zoom=Nível de zoom para exibiÃ§ÃŖo do site. +HTMLToPDF.credit=Utiliza o WeasyPrint. +HTMLToPDF.zoom=Nível de zoom para exibiÃ§ÃŖo do site: HTMLToPDF.pageWidth=Largura da pÃĄgina em centímetros. (Em branco para padrÃŖo) HTMLToPDF.pageHeight=Altura da pÃĄgina em centímetros. (Em branco para padrÃŖo) HTMLToPDF.marginTop=Margem superior da pÃĄgina em milímetros. (Em branco para padrÃŖo) @@ -638,58 +659,58 @@ HTMLToPDF.screen=Tela #AddStampRequest -AddStampRequest.header=Carimbar PDF -AddStampRequest.title=Carimbar PDF -AddStampRequest.stampType=Tipo de carimbo -AddStampRequest.stampText=Texto do carimbo -AddStampRequest.stampImage=Imagem do carimbo -AddStampRequest.alphabet=Alfabeto -AddStampRequest.fontSize=Tamanho da fonte/imagem -AddStampRequest.rotation=RotaÃ§ÃŖo -AddStampRequest.opacity=Opacidade -AddStampRequest.position=PosiÃ§ÃŖo -AddStampRequest.overrideX=Substituir Coordenada X -AddStampRequest.overrideY=Substituir Coordenada Y -AddStampRequest.customMargin=Margem personalizada -AddStampRequest.customColor=Cor de texto personalizada +AddStampRequest.header=Adicionar Carimbo ao PDF +AddStampRequest.title=Adicionar Carimbo ao PDF +AddStampRequest.stampType=Tipo de carimbo: +AddStampRequest.stampText=Texto do carimbo: +AddStampRequest.stampImage=Imagem do carimbo: +AddStampRequest.alphabet=Alfabeto: +AddStampRequest.fontSize=Tamanho da fonte/imagem: +AddStampRequest.rotation=RotaÃ§ÃŖo: +AddStampRequest.opacity=Opacidade: +AddStampRequest.position=PosiÃ§ÃŖo: +AddStampRequest.overrideX=Substituir coordenada X: +AddStampRequest.overrideY=Substituir coordenada Y: +AddStampRequest.customMargin=Margem personalizada: +AddStampRequest.customColor=Cor de texto personalizada: AddStampRequest.submit=Enviar #sanitizePDF -sanitizePDF.title=Higienizar PDF -sanitizePDF.header=Higienizar um arquivo PDF -sanitizePDF.selectText.1=Remover açÃĩes de JavaScript -sanitizePDF.selectText.2=Remover arquivos embutidos -sanitizePDF.selectText.3=Remover metadados -sanitizePDF.selectText.4=Remover links -sanitizePDF.selectText.5=Remover fontes +sanitizePDF.title=Higienizar +sanitizePDF.header=Higienizar +sanitizePDF.selectText.1=Remover scripts de JavaScript. +sanitizePDF.selectText.2=Remover arquivos embutidos. +sanitizePDF.selectText.3=Remover metadados. +sanitizePDF.selectText.4=Remover links. +sanitizePDF.selectText.5=Remover fontes. sanitizePDF.submit=Higienizar PDF #addPageNumbers -addPageNumbers.title=Adicionar nÃēmeros de pÃĄgina -addPageNumbers.header=Adicionar nÃēmeros de pÃĄgina +addPageNumbers.title=Adicionar NÃēmeros de PÃĄgina +addPageNumbers.header=Adicionar NÃēmeros de PÃĄgina addPageNumbers.selectText.1=Selecionar arquivo PDF: -addPageNumbers.selectText.2=Tamanho da margem -addPageNumbers.selectText.3=PosiÃ§ÃŖo -addPageNumbers.selectText.4=NÃēmero inicial -addPageNumbers.selectText.5=PÃĄginas a numerar -addPageNumbers.selectText.6=Texto personalizado -addPageNumbers.customTextDesc=Texto personalizado +addPageNumbers.selectText.2=Tamanho da margem: +addPageNumbers.selectText.3=PosiÃ§ÃŖo: +addPageNumbers.selectText.4=NÃēmero inicial: +addPageNumbers.selectText.5=PÃĄginas a numerar: +addPageNumbers.selectText.6=Texto personalizado: +addPageNumbers.customTextDesc=Texto personalizado: addPageNumbers.numberPagesDesc=Quais pÃĄginas numerar, padrÃŖo 'todas', tambÊm aceita 1-5 ou 2,5,9,etc. addPageNumbers.customNumberDesc=O padrÃŖo Ê {n}, tambÊm aceita 'PÃĄgina {n} de {total}', 'Texto-{n}', '{nome do arquivo}-{n}' -addPageNumbers.submit=Adicionar nÃēmeros de pÃĄgina +addPageNumbers.submit=Adicionar NÃēmeros de PÃĄgina #auto-rename -auto-rename.title=RenomeaÃ§ÃŖo automÃĄtica -auto-rename.header=RenomeaÃ§ÃŖo automÃĄtica de PDF -auto-rename.submit=RenomeaÃ§ÃŖo automÃĄtica +auto-rename.title=Renomear Automaticamente o PDF +auto-rename.header=Renomear Automaticamente o PDF +auto-rename.submit=RenomeaÃ§ÃŖo AutomÃĄtica #adjustContrast -adjustContrast.title=Ajustar Contraste -adjustContrast.header=Ajustar Contraste +adjustContrast.title=Ajuste Visual do PDF +adjustContrast.header=Ajuste Visual do PDF adjustContrast.contrast=Contraste: adjustContrast.brightness=Brilho: adjustContrast.saturation=SaturaÃ§ÃŖo: @@ -697,21 +718,21 @@ adjustContrast.download=Baixar #crop -crop.title=Cortar -crop.header=Cortar PDF +crop.title=Recortar +crop.header=Recortar crop.submit=Enviar #autoSplitPDF -autoSplitPDF.title=DivisÃŖo AutomÃĄtica de PDF -autoSplitPDF.header=DivisÃŖo AutomÃĄtica de PDF -autoSplitPDF.description=Imprima, insira, digitalize, faça o upload e deixe que a gente divida seus documentos automaticamente. Nenhuma classificaÃ§ÃŖo manual necessÃĄria. -autoSplitPDF.selectText.1=Imprima algumas folhas divisÃŗrias abaixo (preto e branco estÃĄ bom). -autoSplitPDF.selectText.2=Digitalize todos os seus documentos de uma vez, inserindo a folha divisÃŗria entre eles. -autoSplitPDF.selectText.3=Faça o upload do Ãēnico arquivo PDF grande digitalizado e deixe o Stirling PDF cuidar do resto. +autoSplitPDF.title=DivisÃŖo AutomÃĄtica de PÃĄginas +autoSplitPDF.header=DivisÃŖo AutomÃĄtica de PÃĄginas +autoSplitPDF.description=Imprima, insira, digitalize, faça o upload e deixe que a gente divida seus documentos automaticamente. +autoSplitPDF.selectText.1=Imprima algumas folhas divisÃŗrias, descritas abaixo (preto e branco ou colorido). +autoSplitPDF.selectText.2=Digitalize todos os seus documentos de uma vez, inserindo a folha divisÃŗria enre os documentos que deseja separar. +autoSplitPDF.selectText.3=Faça o upload do arquivo Ãēnico PDF digitalizado e deixe o Stirling PDF cuidar do resto. autoSplitPDF.selectText.4=As pÃĄginas divisÃŗrias sÃŖo detectadas e removidas automaticamente, garantindo um documento final organizado. autoSplitPDF.formPrompt=Enviar PDF contendo folhas divisÃŗrias Stirling-PDF: -autoSplitPDF.duplexMode=Modo Duplex (DigitalizaÃ§ÃŖo frente e verso) +autoSplitPDF.duplexMode=Modo Duplex (DigitalizaÃ§ÃŖo frente e verso). autoSplitPDF.dividerDownload1=Baixar 'Folha DivisÃŗria AutomÃĄtica (mínimo).pdf' autoSplitPDF.dividerDownload2=Baixar 'Folha DivisÃŗria AutomÃĄtica (com instruçÃĩes).pdf' autoSplitPDF.submit=Enviar @@ -725,31 +746,31 @@ pipeline.title=Pipeline pageLayout.title=Layout de MÃēltiplas PÃĄginas pageLayout.header=Layout de MÃēltiplas PÃĄginas pageLayout.pagesPerSheet=PÃĄginas por folha: -pageLayout.addBorder=Adicionar bordas +pageLayout.addBorder=Adicionar bordas. pageLayout.submit=Enviar #scalePages scalePages.title=Ajustar Tamanho/Escala da PÃĄgina scalePages.header=Ajustar Tamanho/Escala da PÃĄgina -scalePages.pageSize=Tamanho de uma pÃĄgina do documento. -scalePages.keepPageSize=Tamanho original -scalePages.scaleFactor=Fator de zoom (corte) de uma pÃĄgina. +scalePages.pageSize=Tamanho desejado do documento: +scalePages.keepPageSize=Tamanho Original +scalePages.scaleFactor=Fator de zoom (corte) de uma pÃĄgina: scalePages.submit=Enviar #certSign certSign.title=Assinatura com Certificado -certSign.header=Assine um PDF com o seu certificado (Em desenvolvimento) +certSign.header=Assinatura com Certificado (Em desenvolvimento) certSign.selectPDF=Selecione um arquivo PDF para assinatura: certSign.jksNote=Nota: Se o seu tipo de certificado nÃŖo estiver listado abaixo, converta-o em um arquivo Java Keystore (.jks) usando a ferramenta de linha de comando keytool. Em seguida, escolha a opÃ§ÃŖo de arquivo .jks abaixo. certSign.selectKey=Selecione o seu arquivo de chave privada (formato PKCS#8, pode ser .pem ou .der): certSign.selectCert=Selecione o seu arquivo de certificado (formato X.509, pode ser .pem ou .der): certSign.selectP12=Selecione o seu arquivo de armazenamento de chave PKCS#12 (.p12 ou .pfx) (opcional, se fornecido, deve conter a sua chave privada e certificado): certSign.selectJKS=Selecione seu arquivo Java Keystore (.jks ou .keystore): -certSign.certType=Tipo de Certificado +certSign.certType=Tipo de Certificado: certSign.password=Digite a senha do seu armazenamento de chave ou chave privada (se aplicÃĄvel): -certSign.showSig=Mostrar Assinatura +certSign.showSig=Mostrar Assinatura. certSign.reason=RazÃŖo certSign.location=LocalizaÃ§ÃŖo certSign.name=Nome @@ -758,20 +779,20 @@ certSign.submit=Assinar PDF #removeCertSign -removeCertSign.title=Remover Assinatura do Certificado -removeCertSign.header=Remover o certificado digital do PDF +removeCertSign.title=Remover Assinatura com Certificado +removeCertSign.header=Remover Assinatura com Certificado removeCertSign.selectPDF=Selecione um arquivo PDF: -removeCertSign.submit=Remover assinatura +removeCertSign.submit=Remover Assinatura #removeBlanks -removeBlanks.title=Remover pÃĄginas em branco -removeBlanks.header=Remover pÃĄginas em branco +removeBlanks.title=Remover PÃĄginas em Branco +removeBlanks.header=Remover PÃĄginas em Branco removeBlanks.threshold=Limite de brancura de pixel: -removeBlanks.thresholdDesc=Limite para determinar o quÃŖo branco um pixel branco deve ser para ser classificado como 'Branco'. 0 = Preto, 255 branco puro. -removeBlanks.whitePercent=Porcentagem de Branco (%): -removeBlanks.whitePercentDesc=Porcentagem da pÃĄgina que devem ter pixels “brancos” para serem removidas -removeBlanks.submit=Remover pÃĄginas em branco +removeBlanks.thresholdDesc=Limite para determinar o quÃŖo branco um pixel branco deve ser para ser classificado como "branco", para remoÃ§ÃŖo. 0 = Preto, 255 = branco puro. +removeBlanks.whitePercent=Porcentagem de branco (%): +removeBlanks.whitePercentDesc=Porcentagem da pÃĄgina que devem ter pixels classificados como “brancos” para serem removidas. +removeBlanks.submit=Remover PÃĄginas em Branco #removeAnnotations @@ -782,74 +803,79 @@ removeAnnotations.submit=Remover #compare compare.title=Comparar -compare.header=Comparar PDFs +compare.header=Comparar compare.highlightColor.1=Cor de destaque 1: compare.highlightColor.2=Cor de destaque 2: -compare.document.1=Documento 1 -compare.document.2=Documento 2 +compare.document.1=Documento 1: +compare.document.2=Documento 2: compare.submit=Comparar -compare.complex.message=Um ou ambos os documentos fornecidos sÃŖo arquivos grandes, a precisÃŖo da comparaÃ§ÃŖo pode ser reduzida -compare.large.file.message=Um ou ambos os documentos fornecidos sÃŖo muito grandes para processar +compare.complex.message=Um ou ambos os documentos fornecidos sÃŖo arquivos grandes, a precisÃŖo da comparaÃ§ÃŖo pode ser reduzida. +compare.large.file.message=Um ou ambos os documentos fornecidos sÃŖo muito grandes para processar. compare.no.text.message=Um ou ambos os PDFs selecionados nÃŖo possuem conteÃēdo de texto. Por favor, escolha PDFs com texto para comparaÃ§ÃŖo. #BookToPDF -BookToPDF.title=Livros e Quadrinhos para PDF +BookToPDF.title=Livro para PDF BookToPDF.header=Livro para PDF -BookToPDF.credit=Usa o Calibre +BookToPDF.credit=Utiliza o Calibre. BookToPDF.submit=Converter #PDFToBook PDFToBook.title=PDF para Livro PDFToBook.header=PDF para Livro -PDFToBook.selectText.1=Formato -PDFToBook.credit=Usa o Calibre +PDFToBook.selectText.1=Formato: +PDFToBook.credit=Utiliza o Calibre. PDFToBook.submit=Converter #sign sign.title=Assinar -sign.header=Assinar PDFs -sign.upload=Enviar imagem +sign.header=Assinar +sign.upload=Enviar Imagem sign.draw=Desenhar Assinatura -sign.text=Inserir texto +sign.text=Inserir Texto sign.clear=Limpar sign.add=Adicionar sign.saved=Assinaturas Salvas sign.save=Salvar Assinatura sign.personalSigs=Assinaturas Pessoais sign.sharedSigs=Assinaturas Compartilhadas -sign.noSavedSigs=Nenhuma assinatura salva encontrada - - +sign.noSavedSigs=Nenhuma assinatura salva encontrada. +sign.addToAll=Adicionar em todas pÃĄginas +sign.delete=Apagar +sign.first=Primeira pÃĄgina +sign.last=Última pÃĄgina +sign.next=PrÃŗxima pÃĄgina +sign.previous=PÃĄgina anterior +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Reparar -repair.header=Reparar PDFs +repair.header=Reparar repair.submit=Reparar #flatten flatten.title=Achatar -flatten.header=Achatar PDFs -flatten.flattenOnlyForms=Achatar apenas formulÃĄrios +flatten.header=Achatar +flatten.flattenOnlyForms=Achatar apenas formulÃĄrios interativos. flatten.submit=Achatar #ScannerImageSplit -ScannerImageSplit.selectText.1=Limite de Ângulo: +ScannerImageSplit.selectText.1=Limite de Ãĸngulo: ScannerImageSplit.selectText.2=Define o Ãĸngulo absoluto mínimo necessÃĄrio para que a imagem seja girada (padrÃŖo: 10). ScannerImageSplit.selectText.3=TolerÃĸncia: ScannerImageSplit.selectText.4=Determina o intervalo de variaÃ§ÃŖo de cor em torno da cor de fundo estimada (padrÃŖo: 30). -ScannerImageSplit.selectText.5=Área Mínima: +ScannerImageSplit.selectText.5=Área mínima: ScannerImageSplit.selectText.6=Define o limite mínimo de ÃĄrea para uma foto (padrÃŖo: 10000). ScannerImageSplit.selectText.7=Área mínima de contorno: -ScannerImageSplit.selectText.8=Define o limite mínimo da ÃĄrea de contorno para uma foto +ScannerImageSplit.selectText.8=Define o limite mínimo da ÃĄrea de contorno para uma foto. ScannerImageSplit.selectText.9=Tamanho da borda: ScannerImageSplit.selectText.10=Define o tamanho da borda adicionada e removida para evitar bordas brancas na saída (padrÃŖo: 1). ScannerImageSplit.info=Python nÃŖo estÃĄ instalado. É necessÃĄrio para executar. #OCR -ocr.title=OCR / Limpeza de DigitalizaÃ§ÃŖo -ocr.header=OCR / Limpeza de DigitalizaÃ§ÃŖo (Reconhecimento Óptico de Caracteres) +ocr.title=Processamento de OCR +ocr.header=Processamento de OCR (Reconhecimento Óptico de Caracteres) ocr.selectText.1=Selecione os idiomas a serem detectados no PDF (os listados sÃŖo os atualmente instalados): ocr.selectText.2=Criar um arquivo de texto contendo o texto OCR junto do PDF com OCR ocr.selectText.3=PÃĄginas corretamente digitalizadas em um Ãĸngulo inclinado, gire-as de volta à posiÃ§ÃŖo original @@ -859,46 +885,46 @@ ocr.selectText.6=Ignorar pÃĄginas com texto interativo, processar por OCR apenas ocr.selectText.7=Forçar OCR, executar OCR em todas as pÃĄginas, removendo todos os elementos de texto originais ocr.selectText.8=Normal (gerarÃĄ um erro se o PDF jÃĄ contiver texto) ocr.selectText.9=ConfiguraçÃĩes Adicionais -ocr.selectText.10=Modo OCR +ocr.selectText.10=Modo OCR: ocr.selectText.11=Remover imagens apÃŗs o OCR (remove TODAS as imagens, Ãētil apenas como parte do processo de conversÃŖo) -ocr.selectText.12=Tipo de RenderizaÃ§ÃŖo (avançado) -ocr.help=Por favor, leia a documentaÃ§ÃŖo sobre como usar isso para outros idiomas e/ou fora do ambiente Docker -ocr.credit=Este serviço usa OCRmyPDF e Tesseract para OCR. -ocr.submit=Processar PDF com OCR +ocr.selectText.12=Tipo de renderizaÃ§ÃŖo (Avançado): +ocr.help=Por favor, leia a documentaÃ§ÃŖo abaixo para saber mais sobre OCR e sua utilizaÃ§ÃŖo. +ocr.credit=Este serviço usa Qpdf e Tesseract para OCR. +ocr.submit=Processar OCR no PDF #extractImages extractImages.title=Extrair Imagens extractImages.header=Extrair Imagens -extractImages.selectText=Selecione o formato de imagem para converter as imagens extraídas -extractImages.allowDuplicates=Salvar imagens duplicadas +extractImages.selectText=Selecione o formato de saída das imagens extraídas: +extractImages.allowDuplicates=Salvar imagens duplicadas. extractImages.submit=Extrair #File to PDF -fileToPDF.title=Arquivo para PDF -fileToPDF.header=Converter Qualquer Arquivo para PDF -fileToPDF.credit=Este serviço usa o LibreOffice e o Unoconv para conversÃŖo de arquivos. -fileToPDF.supportedFileTypesInfo=Tipos de arquivos suportados -fileToPDF.supportedFileTypes=Os tipos de arquivo suportados devem incluir os listados abaixo. No entanto, para obter uma lista atualizada completa dos formatos suportados, consulte a documentaÃ§ÃŖo do LibreOffice. +fileToPDF.title=Converter Arquivo para PDF +fileToPDF.header=Converter Arquivo para PDF +fileToPDF.credit=Este serviço usa o LibreOffice e o Unoconv realizar a conversÃŖo de arquivos. +fileToPDF.supportedFileTypesInfo=Tipos de Arquivos Suportados +fileToPDF.supportedFileTypes=A listagem abaixo nÃŖo Ê exaustiva, para obter uma lista atualizada completa dos formatos suportados, consulte a documentaÃ§ÃŖo do LibreOffice. fileToPDF.submit=Converter para PDF #compress compress.title=Comprimir -compress.header=Comprimir PDF -compress.credit=Este serviço usa o Ghostscript para compressÃŖo/otimizaÃ§ÃŖo de PDF. -compress.selectText.1=Modo Manual - De 1 a 4 +compress.header=Comprimir +compress.credit=Este serviço usa o Qpdf para compressÃŖo/otimizaÃ§ÃŖo de PDF. +compress.selectText.1=Modo Manual - 1 (Menos) a 9 (Mais) compress.selectText.2=Nível de OtimizaÃ§ÃŖo: compress.selectText.3=4 (Pior para imagens de texto) -compress.selectText.4=Modo AutomÃĄtico - Ajusta automaticamente a qualidade para atingir o tamanho exato do PDF -compress.selectText.5=Tamanho esperado do PDF (por exemplo, 25 MB, 10,8 MB, 25 KB) +compress.selectText.4=Modo AutomÃĄtico - Ajusta automaticamente a qualidade para atingir o tamanho exato desejado +compress.selectText.5=Tamanho esperado do PDF (por exemplo, 25 MB, 10,8 MB, 25 KB): compress.submit=Comprimir #Add image addImage.title=Adicionar Imagem -addImage.header=Adicionar imagem ao PDF +addImage.header=Adicionar Imagem addImage.everyPage=Para cada pÃĄgina? addImage.upload=Enviar imagem addImage.submit=Adicionar imagem @@ -906,18 +932,18 @@ addImage.submit=Adicionar imagem #merge merge.title=Mesclar -merge.header=Mesclar vÃĄrios PDFs (2+) -merge.sortByName=Classificar por nome -merge.sortByDate=Classificar por data +merge.header=Mesclar +merge.sortByName=Classificar por Nome +merge.sortByDate=Classificar por Data merge.removeCertSign=Remover a assinatura digital do arquivo mesclado? merge.submit=Mesclar #pdfOrganiser -pdfOrganiser.title=Organizador de pÃĄginas -pdfOrganiser.header=Organizador de pÃĄginas PDF -pdfOrganiser.submit=Reorganizar pÃĄginas -pdfOrganiser.mode=Modo +pdfOrganiser.title=Organizar PÃĄginas +pdfOrganiser.header=Organizar PÃĄginas +pdfOrganiser.submit=Reorganizar PÃĄginas +pdfOrganiser.mode=Modo: pdfOrganiser.mode.1=Ordem de pÃĄgina personalizada pdfOrganiser.mode.2=Ordem inversa pdfOrganiser.mode.3=ClassificaÃ§ÃŖo duplex @@ -932,120 +958,144 @@ pdfOrganiser.placeholder=(por exemplo 1,3,2 ou 4-8,2,10-12 ou 2n-1) #multiTool -multiTool.title=Multiferramenta de PDF -multiTool.header=Multiferramenta de PDF -multiTool.uploadPrompts=Nome do arquivo -multiTool.selectAll=Select All -multiTool.deselectAll=Deselect All -multiTool.selectPages=Page Select -multiTool.selectedPages=Selected Pages -multiTool.page=Page -multiTool.deleteSelected=Delete Selected -multiTool.downloadAll=Export -multiTool.downloadSelected=Export Selected +multiTool.title=Multiferramentas de PDF +multiTool.header=Multiferramentas de PDF +multiTool.uploadPrompts=Nome do Arquivo: +multiTool.selectAll=Selecionar Tudo +multiTool.deselectAll=Desselecionar Tudo +multiTool.selectPages=Selecionar PÃĄginas +multiTool.selectedPages=PÃĄginas Selecionadas +multiTool.page=PÃĄgina +multiTool.deleteSelected=Apagar Selecionados +multiTool.downloadAll=Exportar +multiTool.downloadSelected=Exportar Selecionados + +multiTool.insertPageBreak=Inserir PÃĄgina em Branco +multiTool.addFile=Inserir Arquivo +multiTool.rotateLeft=Girar para Esquerda +multiTool.rotateRight=Girar para Direita +multiTool.split=Dividir +multiTool.moveLeft=Mover para Esquerda +multiTool.moveRight=Mover para Direita +multiTool.delete=Apagar +multiTool.dragDropMessage=PÃĄgina(s) Selecionadas +multiTool.undo=Desfazer +multiTool.redo=Refazer + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. #multiTool-advert -multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! +multiTool-advert.message=Esta funÃ§ÃŖo tambÊm estÃĄ disponível em Multiferramentas de PDF. Com uma interface mais completa e funçÃĩes adicionais. #view pdf viewPdf.title=Visualizar PDF viewPdf.header=Visualizar PDF #pageRemover -pageRemover.title=Remover pÃĄgina -pageRemover.header=Remover pÃĄginas do PDF -pageRemover.pagesToDelete=PÃĄginas a serem excluídas (insira uma lista separada por vírgulas de nÃēmeros de pÃĄgina): -pageRemover.submit=Excluir pÃĄginas +pageRemover.title=Remover PÃĄginas +pageRemover.header=Remover PÃĄginas +pageRemover.pagesToDelete=PÃĄginas a serem excluídas (insira uma lista separada por vírgulas, com os nÃēmeros de pÃĄginas): +pageRemover.submit=Excluir PÃĄginas pageRemover.placeholder=(por exemplo 1,2,6 ou 1-10,15-30) #rotate -rotate.title=Girar PDF -rotate.header=Girar PDF +rotate.title=Girar +rotate.header=Girar rotate.selectAngle=Selecione o Ãĸngulo de rotaÃ§ÃŖo (mÃēltiplos de 90 graus): rotate.submit=Girar #split-pdfs -split.title=Dividir PDF -split.header=Dividir PDF -split.desc.1=Os nÃēmeros selecionados correspondem às pÃĄginas onde vocÃĒ deseja fazer a divisÃŖo. -split.desc.2=Por exemplo, selecionar 1,3,7-9 dividirÃĄ um documento de 10 pÃĄginas em 6 PDFs separados da seguinte forma: +split.title=Dividir +split.header=Dividir +split.desc.1=Os nÃēmeros selecionados correspondem às pÃĄginas onde vocÃĒ deseja realizar a divisÃŖo. +split.desc.2=Por exemplo, selecionar 1,3,7-9 dividirÃĄ um documento de 11 pÃĄginas em 6 PDFs separados, da seguinte forma: split.desc.3=Documento NÂē1: PÃĄgina 1 split.desc.4=Documento NÂē2: PÃĄginas 2 e 3 split.desc.5=Documento NÂē3: PÃĄginas 4, 5, 6 e 7 split.desc.6=Documento NÂē4: PÃĄgina 8 split.desc.7=Documento NÂē5: PÃĄgina 9 -split.desc.8=Documento NÂē6: PÃĄgina 10 +split.desc.8=Documento NÂē6: PÃĄgina 10 e 11 (e mais se tiver) split.splitPages=Digite as pÃĄginas para a divisÃŖo: split.submit=Dividir #merge imageToPDF.title=Imagem para PDF -imageToPDF.header=Converter imagem para PDF +imageToPDF.header=Imagem para PDF imageToPDF.submit=Converter -imageToPDF.selectLabel=OpçÃĩes de ajuste de imagem -imageToPDF.fillPage=Preencher pÃĄgina +imageToPDF.selectLabel=OpçÃĩes de ajuste da imagem: +imageToPDF.fillPage=Preencher a pÃĄgina imageToPDF.fitDocumentToImage=Ajustar pÃĄgina à imagem imageToPDF.maintainAspectRatio=Manter proporçÃĩes -imageToPDF.selectText.2=Girar automaticamente -imageToPDF.selectText.3=LÃŗgica de vÃĄrios arquivos (Ativada apenas ao trabalhar com vÃĄrias imagens) +imageToPDF.selectText.2=Girar automaticamente. +imageToPDF.selectText.3=LÃŗgica de vÃĄrios arquivos (Ativada apenas ao trabalhar com vÃĄrias imagens): imageToPDF.selectText.4=Mesclar em um Ãēnico PDF imageToPDF.selectText.5=Converter em PDFs separados #pdfToImage pdfToImage.title=PDF para Imagem -pdfToImage.header=Converter PDF para imagem -pdfToImage.selectText=Formato de imagem -pdfToImage.singleOrMultiple=Tipo de resultado de imagem -pdfToImage.single=Imagem grande Ãēnica combinando todas as pÃĄginas -pdfToImage.multi=VÃĄrias imagens, uma imagem por pÃĄgina -pdfToImage.colorType=Tipo de cor -pdfToImage.color=Colorida +pdfToImage.header=PDF para Imagem +pdfToImage.selectText=Formato da imagem: +pdfToImage.singleOrMultiple=Resultado da conversÃŖo: +pdfToImage.single=Imagem grande Ãēnica combinando todas as pÃĄginas do PDF +pdfToImage.multi=VÃĄrias imagens, uma imagem por pÃĄgina do PDF +pdfToImage.colorType=Cor de saída: +pdfToImage.color=Colorido pdfToImage.grey=Escala de Cinza pdfToImage.blackwhite=Preto e Branco (pode perder informaçÃĩes!) pdfToImage.submit=Converter pdfToImage.info=Python nÃŖo estÃĄ instalado. NecessÃĄrio para conversÃŖo WebP. +pdfToImage.placeholder=(por exemplo 1,2,8 or 4,7,12-16 ou 2n-1) #addPassword -addPassword.title=Adicionar senha -addPassword.header=Adicionar Senha (Criptografar) -addPassword.selectText.1=Selecione o PDF para Criptografar -addPassword.selectText.2=Senha -addPassword.selectText.3=Tamanho da Chave de Criptografia +addPassword.title=Proteger PDF +addPassword.header=Proteger PDF (Criptografar) +addPassword.selectText.1=Selecione o PDF para Criptografar: +addPassword.selectText.2=Senha de acesso: +addPassword.selectText.3=Tamanho da chave de criptografia: addPassword.selectText.4=Valores mais altos sÃŖo mais seguros, mas valores mais baixos sÃŖo melhores para compatibilidade. -addPassword.selectText.5=PermissÃĩes a serem definidas (recomendado para uso junto com a senha do proprietÃĄrio) -addPassword.selectText.6=Impedir a montagem do documento -addPassword.selectText.7=Impedir a extraÃ§ÃŖo de conteÃēdo -addPassword.selectText.8=Impedir a extraÃ§ÃŖo para acessibilidade -addPassword.selectText.9=Impedir o preenchimento do formulÃĄrio -addPassword.selectText.10=Impedir modificaÃ§ÃŖo -addPassword.selectText.11=Impedir modificaÃ§ÃŖo de anotaÃ§ÃŖo -addPassword.selectText.12=Impedir impressÃŖo -addPassword.selectText.13=Impedir impressÃŖo de formatos diferentes -addPassword.selectText.14=Senha do proprietÃĄrio -addPassword.selectText.15=Restringe o que pode ser feito com o documento depois de aberto (nÃŖo suportado por todos os leitores) -addPassword.selectText.16=Restringe a abertura do prÃŗprio documento +addPassword.selectText.5=PermissÃĩes a serem definidas (recomendado para uso junto com a senha do proprietÃĄrio): +addPassword.selectText.6=Impedir a montagem do documento. +addPassword.selectText.7=Impedir a extraÃ§ÃŖo de conteÃēdo. +addPassword.selectText.8=Impedir a extraÃ§ÃŖo para acessibilidade. +addPassword.selectText.9=Impedir o preenchimento do formulÃĄrio. +addPassword.selectText.10=Impedir modificaÃ§ÃŖo. +addPassword.selectText.11=Impedir modificaÃ§ÃŖo de anotaçÃĩes. +addPassword.selectText.12=Impedir impressÃŖo. +addPassword.selectText.13=Impedir impressÃŖo de formatos diferentes. +addPassword.selectText.14=Senha do proprietÃĄrio: +addPassword.selectText.15=Restringe o que pode ser feito com o documento depois de aberto (nÃŖo suportado por todos os leitores). +addPassword.selectText.16=Restringe a abertura do prÃŗprio documento. addPassword.submit=Criptografar #watermark watermark.title=Adicionar marca d'ÃĄgua watermark.header=Adicionar marca d'ÃĄgua +watermark.customColor=Cor de texto personalizada watermark.selectText.1=Selecione PDF para adicionar a marca d'ÃĄgua: watermark.selectText.2=Texto da marca d'ÃĄgua: watermark.selectText.3=Tamanho da fonte: watermark.selectText.4=RotaÃ§ÃŖo (0-360): -watermark.selectText.5=widthSpacer (Espaço entre cada marca d'ÃĄgua horizontalmente): -watermark.selectText.6=heightSpacer (Espaço entre cada marca d'ÃĄgua verticalmente): +watermark.selectText.5=Espaçador de Largura (Espaço entre cada marca d'ÃĄgua horizontalmente): +watermark.selectText.6=Espaçador de Altura (Espaço entre cada marca d'ÃĄgua verticalmente): watermark.selectText.7=Opacidade (0% - 100%): watermark.selectText.8=Tipo de marca d'ÃĄgua: watermark.selectText.9=Imagem da marca d'ÃĄgua: -watermark.selectText.10=Converter PDF em imagem PDF -watermark.submit=Adicionar marca d'ÃĄgua +watermark.selectText.10=Converter PDF em imagem PDF. +watermark.submit=Adicionar Marca D'ÃĄgua watermark.type.1=Texto watermark.type.2=Imagem @@ -1053,61 +1103,61 @@ watermark.type.2=Imagem #Change permissions permissions.title=Alterar PermissÃĩes permissions.header=Alterar PermissÃĩes -permissions.warning=Aviso: para que essas permissÃĩes sejam imutÃĄveis, Ê recomendÃĄvel defini-las com uma senha atravÊs da pÃĄgina Adicionar Senha -permissions.selectText.1=Selecione o PDF para alterar as permissÃĩes -permissions.selectText.2=PermissÃĩes para definir -permissions.selectText.3=Impedir montagem do documento -permissions.selectText.4=Impedir extraÃ§ÃŖo de conteÃēdo -permissions.selectText.5=Impedir extraÃ§ÃŖo para acessibilidade -permissions.selectText.6=Impedir preenchimento de formulÃĄrio -permissions.selectText.7=Impedir modificaçÃĩes -permissions.selectText.8=Impedir modificaÃ§ÃŖo de anotaÃ§ÃŖo -permissions.selectText.9=Impedir impressÃŖo -permissions.selectText.10=Impedir impressÃŖo de formatos diferentes +permissions.warning=Aviso: para que essas permissÃĩes sejam imutÃĄveis, Ê recomendÃĄvel defini-las com uma senha atravÊs da pÃĄgina "Proteger PDF". +permissions.selectText.1=Selecione o PDF para alterar as permissÃĩes: +permissions.selectText.2=PermissÃĩes para definir: +permissions.selectText.3=Impedir montagem do documento. +permissions.selectText.4=Impedir extraÃ§ÃŖo de conteÃēdo. +permissions.selectText.5=Impedir extraÃ§ÃŖo para acessibilidade. +permissions.selectText.6=Impedir preenchimento de formulÃĄrio. +permissions.selectText.7=Impedir modificaçÃĩes. +permissions.selectText.8=Impedir modificaÃ§ÃŖo de anotaçÃĩes. +permissions.selectText.9=Impedir impressÃŖo. +permissions.selectText.10=Impedir impressÃŖo de formatos diferentes. permissions.submit=Alterar #remove password -removePassword.title=Remover Senha -removePassword.header=Remover senha (descriptografar) -removePassword.selectText.1=Selecione o PDF para descriptografar +removePassword.title=Desproteger PDF +removePassword.header=Desproteger PDF (descriptografar) +removePassword.selectText.1=Selecione o PDF para descriptografar: removePassword.selectText.2=Senha -removePassword.submit=Remover +removePassword.submit=Descriptografar #changeMetadata changeMetadata.title=Alterar Metadados -changeMetadata.header=Alterar metadados -changeMetadata.selectText.1=Edite as variÃĄveis ​​que deseja alterar -changeMetadata.selectText.2=Excluir todos os metadados -changeMetadata.selectText.3=Mostrar metadados personalizados: +changeMetadata.header=Alterar Metadados +changeMetadata.selectText.1=Edite as variÃĄveis ​​que deseja alterar. +changeMetadata.selectText.2=Excluir todos os metadados. +changeMetadata.selectText.3=Mostrar metadados personalizados. changeMetadata.author=Autor: -changeMetadata.creationDate=Data de criaÃ§ÃŖo (aaaa/MM/dd HH:mm:ss): +changeMetadata.creationDate=Data de criaÃ§ÃŖo (aaaa/mm/dd HH:mm:ss): changeMetadata.creator=Criador: changeMetadata.keywords=Palavras-chave: -changeMetadata.modDate=Data de modificaÃ§ÃŖo (aaaa/MM/dd HH:mm:ss): +changeMetadata.modDate=Data de modificaÃ§ÃŖo (aaaa/mm/dd HH:mm:ss): changeMetadata.producer=Produtor: changeMetadata.subject=Assunto: -changeMetadata.trapped=Atrapado: +changeMetadata.trapped=Metadados trapping: changeMetadata.selectText.4=Outros metadados: -changeMetadata.selectText.5=Adicionar entrada de metadados personalizada +changeMetadata.selectText.5=Adicionar Entrada de Metadados Personalizada changeMetadata.submit=Alterar #pdfToPDFA pdfToPDFA.title=PDF para PDF/A pdfToPDFA.header=PDF para PDF/A -pdfToPDFA.credit=Este serviço usa ghostscript para conversÃŖo de PDF/A +pdfToPDFA.credit=Este serviço usa Qpdf para conversÃŖo para PDF/A. pdfToPDFA.submit=Converter -pdfToPDFA.tip=Atualmente nÃŖo funciona para mÃēltiplas entradas ao mesmo tempo -pdfToPDFA.outputFormat=Formato de saída +pdfToPDFA.tip=AtenÃ§ÃŖo, atualmente nÃŖo funciona para mÃēltiplas entradas ao mesmo tempo. +pdfToPDFA.outputFormat=Formato de saída: pdfToPDFA.pdfWithDigitalSignature=O PDF contÊm uma assinatura digital. Isso serÃĄ removido na prÃŗxima etapa. #PDFToWord PDFToWord.title=PDF para Word PDFToWord.header=PDF para Word -PDFToWord.selectText.1=Formato do arquivo de saída +PDFToWord.selectText.1=Formato do arquivo de saída: PDFToWord.credit=Este serviço usa o LibreOffice para conversÃŖo de arquivos. PDFToWord.submit=Converter @@ -1115,15 +1165,15 @@ PDFToWord.submit=Converter #PDFToPresentation PDFToPresentation.title=PDF para ApresentaÃ§ÃŖo PDFToPresentation.header=PDF para ApresentaÃ§ÃŖo -PDFToPresentation.selectText.1=Formato do arquivo de saída +PDFToPresentation.selectText.1=Formato do arquivo de saída: PDFToPresentation.credit=Este serviço usa o LibreOffice para conversÃŖo de arquivos. PDFToPresentation.submit=Converter #PDFToText -PDFToText.title=PDF para RTF (Texto) -PDFToText.header=PDF para RTF (Texto) -PDFToText.selectText.1=Formato do arquivo de saída +PDFToText.title=PDF para TXT/RTF +PDFToText.header=PDF para TXT/RTF +PDFToText.selectText.1=Formato do arquivo de saída: PDFToText.credit=Este serviço usa o LibreOffice para conversÃŖo de arquivos. PDFToText.submit=Converter @@ -1144,26 +1194,26 @@ PDFToXML.submit=Converter #PDFToCSV PDFToCSV.title=PDF para CSV PDFToCSV.header=PDF para CSV -PDFToCSV.prompt=Escolha a pÃĄgina para extrair a tabela +PDFToCSV.prompt=Escolha a pÃĄgina para extraÃ§ÃŖo da tabela: PDFToCSV.submit=Extrair #split-by-size-or-count -split-by-size-or-count.title=Divida o PDF por tamanho ou contagem -split-by-size-or-count.header=Divida o PDF por tamanho ou contagem -split-by-size-or-count.type.label=Selecione o tipo de divisÃŖo +split-by-size-or-count.title=DivisÃŖo Manual do PDF +split-by-size-or-count.header=DivisÃŖo Manual do PDF +split-by-size-or-count.type.label=Selecione o tipo de divisÃŖo: split-by-size-or-count.type.size=Por tamanho split-by-size-or-count.type.pageCount=Por contagem de pÃĄginas split-by-size-or-count.type.docCount=Por contagem de documentos -split-by-size-or-count.value.label=Insira o valor +split-by-size-or-count.value.label=Insira o valor: split-by-size-or-count.value.placeholder=Insira o tamanho (por exemplo, 2 MB ou 3 KB) ou a contagem (por exemplo, 5) split-by-size-or-count.submit=Enviar #overlay-pdfs -overlay-pdfs.header=Sobrepor Arquivos PDF -overlay-pdfs.baseFile.label=Selecione o arquivo PDF base -overlay-pdfs.overlayFiles.label=Selecione os arquivos PDF para sobreposiÃ§ÃŖo -overlay-pdfs.mode.label=Selecione o modo de sobreposiÃ§ÃŖo +overlay-pdfs.header=Sobrepor PDFs +overlay-pdfs.baseFile.label=Selecione o arquivo PDF base: +overlay-pdfs.overlayFiles.label=Selecione os arquivos PDF para sobreposiÃ§ÃŖo: +overlay-pdfs.mode.label=Selecione o modo de sobreposiÃ§ÃŖo: overlay-pdfs.mode.sequential=SobreposiÃ§ÃŖo sequencial overlay-pdfs.mode.interleaved=SobreposiÃ§ÃŖo intercalada overlay-pdfs.mode.fixedRepeat=SobreposiÃ§ÃŖo de repetiÃ§ÃŖo fixa @@ -1176,14 +1226,14 @@ overlay-pdfs.submit=Enviar #split-by-sections -split-by-sections.title=Dividir PDF por seçÃĩes -split-by-sections.header=Divida o PDF em seçÃĩes -split-by-sections.horizontal.label=DivisÃĩes Horizontais -split-by-sections.vertical.label=DivisÃĩes Verticais +split-by-sections.title=Dividir PDF por SeçÃĩes +split-by-sections.header=Dividir PDF por SeçÃĩes +split-by-sections.horizontal.label=DivisÃĩes Horizontais: +split-by-sections.vertical.label=DivisÃĩes Verticais: split-by-sections.horizontal.placeholder=Insira o nÃēmero de divisÃĩes horizontais split-by-sections.vertical.placeholder=Insira o nÃēmero de divisÃĩes verticais -split-by-sections.submit=Dividir PDF -split-by-sections.merge=Mesclar em um PDF +split-by-sections.submit=Dividir +split-by-sections.merge=Mesclar em um PDF. #printFile @@ -1205,13 +1255,13 @@ licenses.license=Licença #survey survey.nav=Pesquisa survey.title=Pesquisa Stirling-PDF -survey.description=Stirling-PDF nÃŖo tem rastreamento, entÃŖo queremos ouvir nossos usuÃĄrios para melhorar o Stirling-PDF! -survey.changes=Stirling-PDF mudou desde o a Ãēltima pesquisa! Para saber mais acesse nosso post no blog: -survey.changes2=Com essas mudanças estamos implementando suporte empresarial pago e financeamento +survey.description=Stirling-PDF nÃŖo possui rastreamento, entÃŖo queremos ouvir nossos usuÃĄrios para melhorar o Stirling-PDF! +survey.changes=Stirling-PDF mudou desde sua Ãēltima pesquisa! Para saber mais acesse nosso blog: +survey.changes2=Com essas mudanças estamos implementando suporte empresarial pago e financeamento. survey.please=Por favor, considere responder à nossa pesquisa! survey.disabled=(O pop-up da pesquisa serÃĄ desativado nas atualizaçÃĩes seguintes, mas estarÃĄ disponível no rodapÊ da pÃĄgina) -survey.button=Responda a pesquisa -survey.dontShowAgain=NÃŖo mostre novamente +survey.button=Responder a Pesquisa +survey.dontShowAgain=NÃŖo mostre novamente. #error @@ -1230,18 +1280,68 @@ error.discordSubmit=Discord - Submeter um post de suporte #remove-image removeImage.title=Remover Imagem -removeImage.header=Remover imagem -removeImage.removeImage=Remover imagem -removeImage.submit=Remover imagem - - -splitByChapters.title=Dividir PDF por Capítulos -splitByChapters.header=Dividir PDF por Capítulos -splitByChapters.bookmarkLevel=Nível de Marcador -splitByChapters.includeMetadata=Incluir Metadados -splitByChapters.allowDuplicates=Permitir CÃŗpias -splitByChapters.desc.1=Essa ferramenta divide um arquivo PDF em vÃĄrios arquivos PDFs baseado na estrutura de cÃĄpitulos. -splitByChapters.desc.2=Nível de Marcador: Escolha o nível de marcador a ser usado para divisÃŖo (0 para o primeiro nível, 1 para o segundo nível, etc). -splitByChapters.desc.3=Incluir Metadados: Se marcado, os metadados do PDF original serÃŖo incluidos em cada divisÃŖo do PDF. +removeImage.header=Remover Imagem +removeImage.removeImage=Remover Imagem +removeImage.submit=Remover Imagem + + +splitByChapters.title=Divide PDF por Capítulos +splitByChapters.header=Divide PDF por Capítulos +splitByChapters.bookmarkLevel=Nível do Marcador: +splitByChapters.includeMetadata=Incluir Metadados. +splitByChapters.allowDuplicates=Permitir CÃŗpias. +splitByChapters.desc.1=Essa ferramenta divide um arquivo PDF em vÃĄrios arquivos PDFs baseado na estrutura de capítulos. +splitByChapters.desc.2=Nível do Marcador: Escolha o nível do marcador a ser usado para divisÃŖo (0 para o primeiro nível, 1 para o segundo nível, etc). +splitByChapters.desc.3=Incluir Metadados: Se marcado, os metadados do PDF original serÃŖo incluidos em cada arquivo gerado pela divisÃŖo do PDF. splitByChapters.desc.4=Permitir CÃŗpias: Se marcado, habilita vÃĄrios marcadores na mesma pÃĄgina para criar PDFs separados. -splitByChapters.submit=Dividir PDF +splitByChapters.submit=Dividir + +#File Chooser +fileChooser.click=Clique +fileChooser.or=ou +fileChooser.dragAndDrop=Arraste & Solte +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Arraste & Solte arquivo(s) aqui + +#release notes +releases.footer=VersÃĩes +releases.title=Notas de Lançamento +releases.header=Notas de Lançamento +releases.current.version=VersÃŖo Atual +releases.note=Notas de Lançamento estÃŖo disponíveis apenas em InglÃĒs + +#Validate Signature +validateSignature.title=Verificar Assinatura com Certificado +validateSignature.header=Verificar Assinatura com Certificado +validateSignature.selectPDF=Selecione PDF com assinatura por certificado: +validateSignature.submit=Verificar Assinatura +validateSignature.results=Resultados da VerificaÃ§ÃŖo +validateSignature.status=SituaÃ§ÃŖo +validateSignature.signer=SignatÃĄrio +validateSignature.date=Data +validateSignature.reason=Motivo +validateSignature.location=LocalizaÃ§ÃŖo +validateSignature.noSignatures=Nenhuma assinatura digital encontrada no documento. +validateSignature.status.valid=Valido +validateSignature.status.invalid=InvÃĄlido +validateSignature.chain.invalid=Falha na validaÃ§ÃŖo da cadeia de certificados - nÃŖo Ê possível verificar a identidade do signatÃĄrio +validateSignature.trust.invalid=Certificado nÃŖo estÃĄ presente no repositÃŗrio de confiança, a fonte nÃŖo pode ser verificada +validateSignature.cert.expired=Certificate expirou +validateSignature.cert.revoked=Certificado foi revogado +validateSignature.signature.info=InformaçÃĩes da assinatura +validateSignature.signature=Assinatura +validateSignature.signature.mathValid=Assinatura Ê matematicamente valida PORÉM: +validateSignature.selectCustomCert=Arquivo customizado de certificado X.509 (Opcional) +validateSignature.cert.info=Detalhes do certificado +validateSignature.cert.issuer=Emissor +validateSignature.cert.subject=Assunto +validateSignature.cert.serialNumber=NÃēmero de serial +validateSignature.cert.validFrom=Valido de +validateSignature.cert.validUntil=Valido atÊ +validateSignature.cert.algorithm=Algoritmo +validateSignature.cert.keySize=Tamanho da chave +validateSignature.cert.version=VersÃŖo +validateSignature.cert.keyUsage=Uso da chave +validateSignature.cert.selfSigned=Autoassinados +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index 01ad6f53c5..a7ab7f2247 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -82,6 +82,7 @@ pages=PÃĄginas loading=A carregar... addToDoc=Adicionar ao Documento reset=Reset +apply=Apply legal.privacy=Política de Privacidade legal.terms=Termos e CondiçÃĩes @@ -238,11 +239,13 @@ database.creationDate=Data de CriaÃ§ÃŖo database.fileSize=Tamanho do Ficheiro database.deleteBackupFile=Apagar Ficheiro de Backup database.importBackupFile=Importar Ficheiro de Backup +database.createBackupFile=Create Backup File database.downloadBackupFile=Baixar Ficheiro de Backup database.info_1=Ao importar dados, Ê crucial assegurar a estrutura correta. Se nÃŖo estiver seguro do que estÃĄ a fazer, busque conselhos e apoio de um profissional. Um erro na estrutura pode causar mal funcionamento da aplicaÃ§ÃŖo, atÊ mesmo o impossibilitar de executÃĄ-la. database.info_2=O nome do ficheiro nÃŖo importa ao carregar. SerÃĄ renomeado posteriormente para seguir o formato backup_user_yyyyMMddHHmm.sql, garantindo uma convenÃ§ÃŖo de nomenclatura consistente. database.submit=Importar Backup database.importIntoDatabaseSuccessed=ImportaÃ§ÃŖo no banco de dados concluída com sucesso +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=O ficheiro nÃŖo pode ser nulo ou vazio database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=EdiÃ§ÃŖo automÃĄtica home.autoRedact.desc=EdiÃ§ÃŖo automÃĄtica (marca a preto) baseada numa expressÃŖo indicada de um PDF. autoRedact.tags=Esconder,censurar,marcador,tampado,mÃĄscara,oculto +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF para CSV home.tableExtraxt.desc=Extrai tabelas de um PDF convertendo em um CSV tableExtraxt.tags=CSV,Tabelas ExtracÃ§ÃŖo,extracÃ§ÃŖo,conversÃŖo @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Dividir PDF por Capítulos home.splitPdfByChapters.desc=Divida um PDF em vÃĄrios arquivos com base na estrutura dos capítulos. splitPdfByChapters.tags=dividir,capítulos,marcadores,organizar +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Substituir-Inverter Cor do PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Requisito invÃĄlido login.oauth2AccessDenied=Acesso negado login.oauth2InvalidTokenResponse=Resposta de token invÃĄlida login.oauth2InvalidIdToken=Token de identificaÃ§ÃŖo invÃĄlido +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=O utilizador foi desativado, o login estÃĄ atualmente bloqueado com esta conta. Por favor, contacte o administrador. login.alreadyLoggedIn=JÃĄ estÃĄ logado em login.alreadyLoggedIn2=dispositivos. Por favor, faça logout nos dispositivos e tente novamente. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Preenchimento extra personalizado autoRedact.convertPDFToImageLabel=Converter PDF em imagem (usado para remover texto atrÃĄs de caixas) autoRedact.submitButton=Submeter +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Exibir JavaScript @@ -818,8 +839,13 @@ sign.save=Guardar Assinatura sign.personalSigs=Assinaturas Pessoais sign.sharedSigs=Assinaturas Compartilhadas sign.noSavedSigs=Nenhuma assinatura guardada encontrada - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Reparar repair.header=Reparar PDFs @@ -863,7 +889,7 @@ ocr.selectText.10=Modo OCR ocr.selectText.11=Remover imagens apÃŗs o OCR (remove TODAS as imagens, Ãētil apenas como parte do processo de conversÃŖo) ocr.selectText.12=Tipo de renderizaÃ§ÃŖo (avançado) ocr.help=Por favor, leia a documentaÃ§ÃŖo sobre como usar isso para outros idiomas e/ou fora do ambiente Docker -ocr.credit=Este serviço usa OCRmyPDF e Tesseract para OCR. +ocr.credit=Este serviço usa qpdf e Tesseract para OCR. ocr.submit=Processar PDF com OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Converter para PDF #compress compress.title=Comprimir compress.header=Comprimir PDF -compress.credit=Este serviço usa o Ghostscript para compressÃŖo/otimizaÃ§ÃŖo de PDF. +compress.credit=Este serviço usa o qpdf para compressÃŖo/otimizaÃ§ÃŖo de PDF. compress.selectText.1=Modo Manual - De 1 a 4 compress.selectText.2=Nível de OtimizaÃ§ÃŖo: compress.selectText.3=4 (Pior para imagens de texto) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Escala de Cinza pdfToImage.blackwhite=Preto e Branco (pode resultar em perda de dados!) pdfToImage.submit=Converter pdfToImage.info=O Python nÃŖo estÃĄ instalado. NecessÃĄrio para a conversÃŖo de WebP. +pdfToImage.placeholder=(ex: 1,2,8 ou 4,7,12-16 ou 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=Proteger #watermark watermark.title=Adicionar Marca d'Água watermark.header=Adicionar Marca d'Água +watermark.customColor=Personalizar a cor do texto watermark.selectText.1=Seleccione o PDF para Adicionar a Marca d'Água watermark.selectText.2=Texto da Marca d'Água watermark.selectText.3=Tamanho da Fonte watermark.selectText.4=RotaÃ§ÃŖo (0-360) -watermark.selectText.5=Espaçamento Horizontal (widthSpacer) -watermark.selectText.6=Espaçamento Vertical (heightSpacer) +watermark.selectText.5=Espaçamento Horizontal (Width Spacer) +watermark.selectText.6=Espaçamento Vertical (Height Spacer) watermark.selectText.7=Opacidade (0% - 100%) watermark.selectText.8=Tipo de Marca d'Água watermark.selectText.9=Imagem da Marca d'Água @@ -1097,7 +1147,7 @@ changeMetadata.submit=Mudar #pdfToPDFA pdfToPDFA.title=PDF para PDF/A pdfToPDFA.header=PDF para PDF/A -pdfToPDFA.credit=Este serviço usa ghostscript para ConversÃŖo de PDF/A +pdfToPDFA.credit=Este serviço usa qpdf para ConversÃŖo de PDF/A pdfToPDFA.submit=Converter pdfToPDFA.tip=Actualmente nÃŖo funciona para mÃēltiplos inputs de uma sÃŗ vez pdfToPDFA.outputFormat=Formato de saída @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Nível de AnotaçÃĩes: Escolha o nível das anotaçÃĩes a splitByChapters.desc.3=Inclua Metadados: Se marcado, os metadados originais do PDF serÃŖo incluídos em cada PDF dividido. splitByChapters.desc.4=Permitir Duplicatas: Se marcado, permite a criaÃ§ÃŖo de vÃĄrios bookmarks na mesma pÃĄgina para criar separadamente vÃĄrios PDFs. splitByChapters.submit=Dividir o PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index 7b4c99c223..41bfd7d92f 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=Data Creării database.fileSize=Dimensiune Fișier database.deleteBackupFile=Șterge Fișier de Backup database.importBackupFile=Importă Fișier de Backup +database.createBackupFile=Create Backup File database.downloadBackupFile=Descarcă Fișier de Backup database.info_1=CÃĸnd importați date, este crucial să vă asigurați de structura corectă. Dacă nu sunteți sigur de ceea ce faceți, cereți sfaturi și suport de la un profesionist. O eroare ÃŽn structură poate cauza defecțiuni ale aplicației, pÃĸnă la incapacitatea completă de a rula aplicația. database.info_2=Numele fișierului nu contează la ÃŽncărcare. Va fi redenumit ulterior pentru a urma formatul backup_user_aaaallzzoomm.sql, asigurÃĸnd o convenție de denumire consecventă. database.submit=Importă Backup database.importIntoDatabaseSuccessed=Importul ÃŽn baza de date a reușit +database.backupCreated=Database backup successful database.fileNotFound=Fișierul nu a fost găsit database.fileNullOrEmpty=Fișierul nu trebuie să fie nul sau gol database.failedImportFile=Importul Fișierului a Eșuat @@ -472,6 +475,10 @@ home.autoRedact.title=Redactare Automată home.autoRedact.desc=Redactează automat (ÃŽnnegrește) text ÃŽntr-un PDF bazat pe textul de intrare autoRedact.tags=Redactează,Ascunde,ÃŽnnegrește,negru,marker,ascuns +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF ÃŽn CSV home.tableExtraxt.desc=Extrage Tabelele dintr-un PDF convertindu-l ÃŽn CSV tableExtraxt.tags=CSV,Extragere Tabel,extrage,convertește @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Cerere Invalidă login.oauth2AccessDenied=Acces Refuzat login.oauth2InvalidTokenResponse=Răspuns Invalid la Token login.oauth2InvalidIdToken=Token de Id Invalid +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=Utilizatorul este dezactivat, conectarea este ÃŽn prezent blocată cu acest nume de utilizator. Te rugăm să contactezi administratorul. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Spațiere Suplimentară Personalizată autoRedact.convertPDFToImageLabel=Convertește PDF ÃŽn PDF-Imagine (Folosit pentru a elimina textul din spatele casetei) autoRedact.submitButton=Trimite +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Arată Javascript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Repară repair.header=Repară documente PDF @@ -863,7 +889,7 @@ ocr.selectText.10=Mod OCR ocr.selectText.11=Elimină imaginile după OCR (Elimină TOATE imaginile, util doar ÃŽn etapa de conversie) ocr.selectText.12=Tip de redare (Avansat) ocr.help=Citiți documentația pentru a afla cum să utilizați acest serviciu pentru alte limbi și/sau ÃŽn afara mediului Docker -ocr.credit=Acest serviciu utilizează OCRmyPDF și Tesseract pentru OCR. +ocr.credit=Acest serviciu utilizează qpdf și Tesseract pentru OCR. ocr.submit=Procesează PDF-ul cu OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Convertiți ÃŽn PDF #compress compress.title=Comprimare compress.header=Comprimare PDF -compress.credit=Acest serviciu utilizează OCRmyPDF pentru comprimarea/optimizarea PDF-urilor. +compress.credit=Acest serviciu utilizează qpdf pentru comprimarea/optimizarea PDF-urilor. compress.selectText.1=Nivel de optimizare: compress.selectText.2=0 (Fără optimizare) compress.selectText.3=1 (Implicit, optimizare fără pierdere) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Scală de gri pdfToImage.blackwhite=Alb și negru (Poate pierde date!) pdfToImage.submit=Convertește pdfToImage.info=Python nu este instalat. Necesar pentru conversia WebP. +pdfToImage.placeholder=(ex. 1,2,8 sau 4,7,12-16 sau 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Criptează #watermark watermark.title=Adaugă Filigran watermark.header=Adaugă Filigran +watermark.customColor=Culoare Text Personalizată watermark.selectText.1=Selectează PDF-ul la care să adaugi filigranul: watermark.selectText.2=Textul Filigranului: watermark.selectText.3=Mărimea fontului: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Schimbă #pdfToPDFA pdfToPDFA.title=PDF către PDF/A pdfToPDFA.header=PDF către PDF/A -pdfToPDFA.credit=Acest serviciu utilizează ghostscript pentru conversia ÃŽn PDF/A +pdfToPDFA.credit=Acest serviciu utilizează qpdf pentru conversia ÃŽn PDF/A pdfToPDFA.submit=Convertește pdfToPDFA.tip=În prezent nu funcționează pentru mai multe intrări simultan pdfToPDFA.outputFormat=Format de ieșire @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index a6c70139f6..ebc620b5c7 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -82,6 +82,7 @@ pages=ĐĄŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Ņ‹ loading=Đ—Đ°ĐŗŅ€ŅƒĐˇĐēа... addToDoc=Đ”ĐžĐąĐ°Đ˛Đ¸Ņ‚ŅŒ в Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚ reset=Reset +apply=Apply legal.privacy=ПоĐģĐ¸Ņ‚Đ¸Đēа ĐēĐžĐŊŅ„Đ¸Đ´ĐĩĐŊŅ†Đ¸Đ°ĐģҌĐŊĐžŅŅ‚Đ¸ legal.terms=ĐŖŅĐģĐžĐ˛Đ¸Ņ Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊĐ¸Ņ @@ -238,11 +239,13 @@ database.creationDate=Đ”Đ°Ņ‚Đ° ŅĐžĐˇĐ´Đ°ĐŊĐ¸Ņ database.fileSize=РаСĐŧĐĩŅ€ Ņ„Đ°ĐšĐģа database.deleteBackupFile=ĐŖĐ´Đ°ĐģĐ¸Ņ‚ŅŒ Ņ€ĐĩСĐĩŅ€Đ˛ĐŊŅƒŅŽ ĐēĐžĐŋĐ¸ŅŽ Ņ„Đ°ĐšĐģа database.importBackupFile=ИĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ Ņ€ĐĩСĐĩŅ€Đ˛ĐŊŅƒŅŽ ĐēĐžĐŋĐ¸ŅŽ Ņ„Đ°ĐšĐģа +database.createBackupFile=Create Backup File database.downloadBackupFile=ĐĄĐēĐ°Ņ‡Đ°Ņ‚ŅŒ Ņ€ĐĩСĐĩŅ€Đ˛ĐŊŅƒŅŽ ĐēĐžĐŋĐ¸ŅŽ Ņ„Đ°ĐšĐģа database.info_1=ĐŸŅ€Đ¸ иĐŧĐŋĐžŅ€Ņ‚Đĩ даĐŊĐŊҋ҅ ваĐļĐŊĐž ŅƒĐąĐĩĐ´Đ¸Ņ‚ŅŒŅŅ в ĐŋŅ€Đ°Đ˛Đ¸ĐģҌĐŊОК ŅŅ‚Ņ€ŅƒĐēŅ‚ŅƒŅ€Đĩ. Đ•ŅĐģи Đ˛Ņ‹ ĐŊĐĩ ŅƒĐ˛ĐĩŅ€ĐĩĐŊŅ‹, Ņ‡Ņ‚Đž Đ´ĐĩĐģаĐĩŅ‚Đĩ, ĐžĐąŅ€Đ°Ņ‚Đ¸Ņ‚ĐĩҁҌ Са ĐŋŅ€ĐžŅ„ĐĩŅŅĐ¸ĐžĐŊаĐģҌĐŊОК ĐŋĐžĐŧĐžŅ‰ŅŒŅŽ и ĐŋОддĐĩŅ€ĐļĐēОК. ĐžŅˆĐ¸ĐąĐēа в ŅŅ‚Ņ€ŅƒĐēŅ‚ŅƒŅ€Đĩ ĐŧĐžĐļĐĩŅ‚ ĐŋŅ€Đ¸Đ˛ĐĩŅŅ‚Đ¸ Đē ŅĐąĐžŅĐŧ ĐŋŅ€Đ¸ĐģĐžĐļĐĩĐŊиК, вĐŋĐģĐžŅ‚ŅŒ Đ´Đž ĐŋĐžĐģĐŊĐžĐŗĐž Đ¸Ņ… ĐžŅ‚ĐēаСа ĐžŅ‚ Ņ€Đ°ĐąĐžŅ‚Ņ‹. database.info_2=ИĐŧŅ Ņ„Đ°ĐšĐģа ĐŊĐĩ иĐŧĐĩĐĩŅ‚ СĐŊĐ°Ņ‡ĐĩĐŊĐ¸Ņ ĐŋŅ€Đ¸ ĐˇĐ°ĐŗŅ€ŅƒĐˇĐēĐĩ. ОĐŊĐž ĐąŅƒĐ´ĐĩŅ‚ ĐŋĐĩŅ€ĐĩиĐŧĐĩĐŊОваĐŊĐž ĐŋОСĐļĐĩ в Ņ„ĐžŅ€ĐŧĐ°Ņ‚ backup_user_yyyyMMddHHmm.sql Đ´ĐģŅ ОйĐĩҁĐŋĐĩ҇ĐĩĐŊĐ¸Ņ ĐĩдиĐŊĐžĐžĐąŅ€Đ°ĐˇĐ¸Ņ ĐŊаСваĐŊиК. database.submit=ИĐŧĐŋĐžŅ€Ņ‚Đ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ Ņ€ĐĩСĐĩŅ€Đ˛ĐŊŅƒŅŽ ĐēĐžĐŋĐ¸ŅŽ database.importIntoDatabaseSuccessed=ИĐŧĐŋĐžŅ€Ņ‚ в ĐąĐ°ĐˇŅƒ даĐŊĐŊҋ҅ Đ˛Ņ‹ĐŋĐžĐģĐŊĐĩĐŊ ҃ҁĐŋĐĩ҈ĐŊĐž +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=ФаКĐģ ĐŊĐĩ Đ´ĐžĐģĐļĐĩĐŊ ĐąŅ‹Ņ‚ŅŒ ĐŋŅƒŅŅ‚Ņ‹Đŧ иĐģи NULL database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=ĐĐ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐĩҁĐēĐžĐĩ Ņ€ĐĩдаĐēŅ‚Đ¸Ņ€ĐžĐ˛Đ°ĐŊиĐĩ home.autoRedact.desc=ĐĐ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐĩҁĐēĐžĐĩ ĐˇĐ°Ņ‚ĐĩĐŧĐŊĐĩĐŊиĐĩ (҇ĐĩŅ€ĐŊĐĩĐŊиĐĩ) Ņ‚ĐĩĐēŅŅ‚Đ° в PDF ĐŊа ĐžŅĐŊОвĐĩ Đ˛Ņ…ĐžĐ´ĐŊĐžĐŗĐž Ņ‚ĐĩĐēŅŅ‚Đ° autoRedact.tags=ĐĄĐēŅ€Ņ‹Ņ‚ŅŒ, ЗаĐēŅ€Ņ‹Ņ‚ŅŒ, СаĐēŅ€Đ°ŅĐ¸Ņ‚ŅŒ, ĐąĐģĐžĐēĐ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ, ĐŧĐ°Ņ€ĐēĐĩŅ€, ҁĐēŅ€Ņ‹Ņ‚Đž +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF в CSV home.tableExtraxt.desc=ИСвĐģĐĩĐēаĐĩŅ‚ Ņ‚Đ°ĐąĐģĐ¸Ņ†Ņ‹ иС PDF и ĐŋŅ€ĐĩĐžĐąŅ€Đ°ĐˇŅƒĐĩŅ‚ Đ¸Ņ… в CSV tableExtraxt.tags=CSV, иСвĐģĐĩ҇ĐĩĐŊиĐĩ Ņ‚Đ°ĐąĐģĐ¸Ņ†Ņ‹, Đ˛Ņ‹Ņ‚Đ°Ņ‰Đ¸Ņ‚ŅŒ, ĐēĐžĐŊвĐĩŅ€Ņ‚Đ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=РаСдĐĩĐģĐ¸Ņ‚ŅŒ PDF ĐŋĐž Ņ€Đ°ĐˇĐ´ĐĩĐģаĐŧ home.splitPdfByChapters.desc=РаСдĐĩĐģĐ¸Ņ‚Đĩ PDF ĐŊа ĐŊĐĩҁĐēĐžĐģҌĐēĐž Ņ„Đ°ĐšĐģОв ĐŊа ĐžŅĐŊОвĐĩ ŅŅ‚Ņ€ŅƒĐēŅ‚ŅƒŅ€Ņ‹ ĐĩĐŗĐž Ņ€Đ°ĐˇĐ´ĐĩĐģОв splitPdfByChapters.tags=Ņ€Đ°ĐˇĐ´ĐĩĐģĐĩĐŊиĐĩ, Ņ€Đ°ĐˇĐ´ĐĩĐģŅ‹, СаĐēĐģадĐēи, ĐžŅ€ĐŗĐ°ĐŊĐ¸ĐˇĐ°Ņ†Đ¸Ņ +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=ЗаĐŧĐĩĐŊĐ¸Ņ‚ŅŒ-ĐžĐąŅ€Đ°Ņ‚ĐŊĐžĐĩ иСĐŧĐĩĐŊĐĩĐŊиĐĩ Ņ†Đ˛ĐĩŅ‚Đ° PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=НĐĩвĐĩŅ€ĐŊŅ‹Đš СаĐŋŅ€ĐžŅ login.oauth2AccessDenied=Đ”ĐžŅŅ‚ŅƒĐŋ СаĐŋŅ€Đĩ҉ĐĩĐŊ login.oauth2InvalidTokenResponse=НĐĩĐ´ĐĩĐšŅŅ‚Đ˛Đ¸Ņ‚ĐĩĐģҌĐŊŅ‹Đš ĐžŅ‚Đ˛ĐĩŅ‚ Ņ‚ĐžĐēĐĩĐŊа login.oauth2InvalidIdToken=НĐĩĐ´ĐĩĐšŅŅ‚Đ˛Đ¸Ņ‚ĐĩĐģҌĐŊŅ‹Đš идĐĩĐŊŅ‚Đ¸Ņ„Đ¸ĐēĐ°Ņ†Đ¸ĐžĐŊĐŊŅ‹Đš Ņ‚ĐžĐēĐĩĐŊ +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=ПоĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģҌ Đ´ĐĩаĐēŅ‚Đ¸Đ˛Đ¸Ņ€ĐžĐ˛Đ°ĐŊ, Đ˛Ņ…ĐžĐ´ ҁ даĐŊĐŊŅ‹Đŧ иĐŧĐĩĐŊĐĩĐŧ ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ СайĐģĐžĐēĐ¸Ņ€ĐžĐ˛Đ°ĐŊ. ПоĐļаĐģŅƒĐšŅŅ‚Đ°, ĐžĐąŅ€Đ°Ņ‚Đ¸Ņ‚ĐĩҁҌ Đē адĐŧиĐŊĐ¸ŅŅ‚Ņ€Đ°Ņ‚ĐžŅ€Ņƒ. login.alreadyLoggedIn=Đ’Ņ‹ ҃ĐļĐĩ Đ˛ĐžŅˆĐģи в login.alreadyLoggedIn2=ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛Đ°. Đ’Ņ‹ĐŋĐžĐģĐŊĐ¸Ņ‚Đĩ Đ˛Ņ‹Ņ…ĐžĐ´ иС ŅƒŅŅ‚Ņ€ĐžĐšŅŅ‚Đ˛ и ĐŋĐžĐŋŅ€ĐžĐąŅƒĐšŅ‚Đĩ ҁĐŊОва. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=ДоĐŋĐžĐģĐŊĐ¸Ņ‚ĐĩĐģҌĐŊĐžĐĩ ĐžŅ‚ŅŅ‚ŅƒĐŋĐģĐĩĐŊи autoRedact.convertPDFToImageLabel=ĐŸŅ€ĐĩĐžĐąŅ€Đ°ĐˇĐžĐ˛Đ°Ņ‚ŅŒ PDF в Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊиĐĩ PDF (Đ¸ŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ŅŅ Đ´ĐģŅ ŅƒĐ´Đ°ĐģĐĩĐŊĐ¸Ņ Ņ‚ĐĩĐēŅŅ‚Đ° Са Ņ€Đ°ĐŧĐēОК) autoRedact.submitButton=ĐžŅ‚ĐŋŅ€Đ°Đ˛Đ¸Ņ‚ŅŒ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=ПоĐēĐ°ĐˇĐ°Ņ‚ŅŒ Javascript @@ -818,8 +839,13 @@ sign.save=ĐĄĐžŅ…Ņ€Đ°ĐŊĐ¸Ņ‚ŅŒ ĐŋОдĐŋĐ¸ŅŅŒ sign.personalSigs=Đ›Đ¸Ņ‡ĐŊŅ‹Đĩ ĐŋОдĐŋĐ¸ŅĐ¸ sign.sharedSigs=ĐžĐąŅ‰Đ¸Đĩ ĐŋОдĐŋĐ¸ŅĐ¸ sign.noSavedSigs=НайдĐĩĐŊĐž ĐŊи ОдĐŊОК ŅĐžŅ…Ņ€Đ°ĐŊĐĩĐŊĐŊОК ĐŋОдĐŋĐ¸ŅĐ¸ - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Đ ĐĩĐŧĐžĐŊŅ‚ repair.header=Đ ĐĩĐŧĐžĐŊŅ‚ PDF Ов @@ -863,7 +889,7 @@ ocr.selectText.10=OCR Ņ€ĐĩĐļиĐŧ ocr.selectText.11=ĐŖĐ´Đ°ĐģĐ¸Ņ‚ŅŒ Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸Ņ ĐŋĐžŅĐģĐĩ OCR (ŅƒĐ´Đ°ĐģŅĐĩŅ‚ ВСЕ Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐ¸Ņ, ĐŋĐžĐģĐĩСĐŊĐž Ņ‚ĐžĐģҌĐēĐž в Ņ‚ĐžĐŧ ҁĐģŅƒŅ‡Đ°Đĩ, ĐĩҁĐģи ĐžĐŊи ŅĐ˛ĐģŅŅŽŅ‚ŅŅ Ņ‡Đ°ŅŅ‚ŅŒŅŽ ŅˆĐ°ĐŗĐ° ĐŋŅ€ĐĩĐžĐąŅ€Đ°ĐˇĐžĐ˛Đ°ĐŊĐ¸Ņ) ocr.selectText.12=ĐĸиĐŋ Ņ€ĐĩĐŊĐ´ĐĩŅ€Đ° (Ņ€Đ°ŅŅˆĐ¸Ņ€ĐĩĐŊĐŊŅ‹Đš) ocr.help=ĐŸŅ€ĐžŅ‡Ņ‚Đ¸Ņ‚Đĩ ŅŅ‚Ņƒ Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Đ¸ŅŽ Đž Ņ‚ĐžĐŧ, ĐēаĐē Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ŅŅ‚Đž Đ´ĐģŅ Đ´Ņ€ŅƒĐŗĐ¸Ņ… ŅĐˇŅ‹ĐēОв и/иĐģи Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ĐŊĐĩ в Đ´ĐžĐēĐĩŅ€Đĩ. -ocr.credit=Đ­Ņ‚ĐžŅ‚ ҁĐĩŅ€Đ˛Đ¸Ņ Đ¸ŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ OCRmyPDF и Tesseract Đ´ĐģŅ OCR. +ocr.credit=Đ­Ņ‚ĐžŅ‚ ҁĐĩŅ€Đ˛Đ¸Ņ Đ¸ŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ qpdf и Tesseract Đ´ĐģŅ OCR. ocr.submit=ĐžĐąŅ€Đ°ĐąĐžŅ‚Đēа PDF ҁ OCR @@ -887,7 +913,7 @@ fileToPDF.submit=ĐŸŅ€ĐĩĐžĐąŅ€Đ°ĐˇĐžĐ˛Đ°Ņ‚ŅŒ в PDF #compress compress.title=ĐĄĐļĐ°Ņ‚ŅŒ compress.header=ĐĄĐļĐ°Ņ‚ŅŒ PDF -compress.credit=Đ­Ņ‚Đ° ҁĐģ҃Đļйа Đ¸ŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ Ghostscript Đ´ĐģŅ ҁĐļĐ°Ņ‚Đ¸Ņ/ĐžĐŋŅ‚Đ¸ĐŧĐ¸ĐˇĐ°Ņ†Đ¸Đ¸ PDF. +compress.credit=Đ­Ņ‚Đ° ҁĐģ҃Đļйа Đ¸ŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ qpdf Đ´ĐģŅ ҁĐļĐ°Ņ‚Đ¸Ņ/ĐžĐŋŅ‚Đ¸ĐŧĐ¸ĐˇĐ°Ņ†Đ¸Đ¸ PDF. compress.selectText.1=Đ ŅƒŅ‡ĐŊОК Ņ€ĐĩĐļиĐŧ - ĐžŅ‚ 1 Đ´Đž 4 compress.selectText.2=ĐŖŅ€ĐžĐ˛ĐĩĐŊҌ ĐžĐŋŅ‚Đ¸ĐŧĐ¸ĐˇĐ°Ņ†Đ¸Đ¸: compress.selectText.3=4 (ĐŖĐļĐ°ŅĐŊĐž Đ´ĐģŅ Ņ‚ĐĩĐēŅŅ‚ĐžĐ˛Ņ‹Ņ… Đ¸ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊиК) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=ĐžŅ‚Ņ‚ĐĩĐŊĐēи ҁĐĩŅ€ĐžĐŗĐž pdfToImage.blackwhite=ЧĐĩŅ€ĐŊĐž-ĐąĐĩĐģŅ‹Đš (ĐŧĐžĐļĐĩŅ‚ ĐŋĐžŅ‚ĐĩŅ€ŅŅ‚ŅŒ даĐŊĐŊŅ‹Đĩ!) pdfToImage.submit=КоĐŊвĐĩŅ€Ņ‚Đ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ pdfToImage.info=ĐŸĐ¸Ņ‚ĐžĐŊ ĐŊĐĩ ŅƒŅŅ‚Đ°ĐŊОвĐģĐĩĐŊ. НĐĩĐžĐąŅ…ĐžĐ´Đ¸Đŧ Đ´ĐģŅ ĐēĐžĐŊвĐĩŅ€Ņ‚Đ°Ņ†Đ¸Đ¸ в WebP. +pdfToImage.placeholder=(ĐŊаĐŋŅ€Đ¸ĐŧĐĩŅ€ 1,2,8 иĐģи 4,7,12-16 иĐģи 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=Đ¨Đ¸Ņ„Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ #watermark watermark.title=Đ”ĐžĐąĐ°Đ˛Đ¸Ņ‚ŅŒ Đ˛ĐžĐ´ŅĐŊОК СĐŊаĐē watermark.header=Đ”ĐžĐąĐ°Đ˛Đ¸Ņ‚ŅŒ Đ˛ĐžĐ´ŅĐŊОК СĐŊаĐē +watermark.customColor=ĐĐ°ŅŅ‚Ņ€ĐžĐĩĐŊĐŊŅ‹Đš Ņ†Đ˛ĐĩŅ‚ Ņ‚ĐĩĐēŅŅ‚Đ° watermark.selectText.1=Đ’Ņ‹ĐąĐĩŅ€Đ¸Ņ‚Đĩ PDF, Ņ‡Ņ‚ĐžĐąŅ‹ Đ´ĐžĐąĐ°Đ˛Đ¸Ņ‚ŅŒ Đ˛ĐžĐ´ŅĐŊОК СĐŊаĐē: watermark.selectText.2=ĐĸĐĩĐēҁ҂ Đ˛ĐžĐ´ŅĐŊĐžĐŗĐž СĐŊаĐēа: watermark.selectText.3=РаСĐŧĐĩŅ€ ŅˆŅ€Đ¸Ņ„Ņ‚Đ°: watermark.selectText.4=ĐŸĐžĐ˛ĐžŅ€ĐžŅ‚ (0-360): -watermark.selectText.5=widthSpacer (ĐŋŅ€ĐžĐąĐĩĐģ ĐŧĐĩĐļĐ´Ņƒ ĐēаĐļĐ´Ņ‹Đŧ Đ˛ĐžĐ´ŅĐŊŅ‹Đŧ СĐŊаĐēĐžĐŧ ĐŋĐž ĐŗĐžŅ€Đ¸ĐˇĐžĐŊŅ‚Đ°Đģи): -watermark.selectText.6=heightSpacer (ĐŋŅ€ĐžĐąĐĩĐģ ĐŧĐĩĐļĐ´Ņƒ ĐēаĐļĐ´Ņ‹Đŧ Đ˛ĐžĐ´ŅĐŊŅ‹Đŧ СĐŊаĐēĐžĐŧ ĐŋĐž вĐĩŅ€Ņ‚Đ¸ĐēаĐģи): +watermark.selectText.5=Width Spacer (ĐŋŅ€ĐžĐąĐĩĐģ ĐŧĐĩĐļĐ´Ņƒ ĐēаĐļĐ´Ņ‹Đŧ Đ˛ĐžĐ´ŅĐŊŅ‹Đŧ СĐŊаĐēĐžĐŧ ĐŋĐž ĐŗĐžŅ€Đ¸ĐˇĐžĐŊŅ‚Đ°Đģи): +watermark.selectText.6=Height Spacer (ĐŋŅ€ĐžĐąĐĩĐģ ĐŧĐĩĐļĐ´Ņƒ ĐēаĐļĐ´Ņ‹Đŧ Đ˛ĐžĐ´ŅĐŊŅ‹Đŧ СĐŊаĐēĐžĐŧ ĐŋĐž вĐĩŅ€Ņ‚Đ¸ĐēаĐģи): watermark.selectText.7=НĐĩĐŋŅ€ĐžĐˇŅ€Đ°Ņ‡ĐŊĐžŅŅ‚ŅŒ (0% - 100%): watermark.selectText.8=ĐĸиĐŋ Đ˛ĐžĐ´ŅĐŊĐžĐŗĐž СĐŊаĐēа: watermark.selectText.9=Đ˜ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊиĐĩ Đ˛ĐžĐ´ŅĐŊĐžĐŗĐž СĐŊаĐēа: @@ -1097,7 +1147,7 @@ changeMetadata.submit=ИСĐŧĐĩĐŊĐ¸Ņ‚ŅŒ #pdfToPDFA pdfToPDFA.title=PDF в PDF/A pdfToPDFA.header=PDF в PDF/A -pdfToPDFA.credit=Đ­Ņ‚ĐžŅ‚ ҁĐĩŅ€Đ˛Đ¸Ņ Đ¸ŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ ghostscript Đ´ĐģŅ ĐŋŅ€ĐĩĐžĐąŅ€Đ°ĐˇĐžĐ˛Đ°ĐŊĐ¸Ņ PDF/A +pdfToPDFA.credit=Đ­Ņ‚ĐžŅ‚ ҁĐĩŅ€Đ˛Đ¸Ņ Đ¸ŅĐŋĐžĐģŅŒĐˇŅƒĐĩŅ‚ qpdf Đ´ĐģŅ ĐŋŅ€ĐĩĐžĐąŅ€Đ°ĐˇĐžĐ˛Đ°ĐŊĐ¸Ņ PDF/A pdfToPDFA.submit=КоĐŊвĐĩŅ€Ņ‚Đ¸Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ pdfToPDFA.tip=В ĐŊĐ°ŅŅ‚ĐžŅŅ‰ĐĩĐĩ Đ˛Ņ€ĐĩĐŧŅ ĐŊĐĩ ĐŋОддĐĩŅ€ĐļиваĐĩŅ‚ŅŅ ĐŋŅ€Đ¸ ĐŊĐĩҁĐēĐžĐģҌĐēĐ¸Ņ… Đ˛Ņ…ĐžĐ´ĐŊҋ҅ даĐŊĐŊҋ҅ ОдĐŊĐžĐ˛Ņ€ĐĩĐŧĐĩĐŊĐŊĐž pdfToPDFA.outputFormat=Đ¤ĐžŅ€ĐŧĐ°Ņ‚ Đ˛Ņ‹Đ˛ĐžĐ´Đ° @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=ĐŖŅ€ĐžĐ˛ĐĩĐŊҌ СаĐēĐģадĐēи: Đ˛Ņ‹ĐąĐĩŅ€Đ¸Ņ‚Đĩ ŅƒŅ€Đž splitByChapters.desc.3=ВĐēĐģŅŽŅ‡Đ¸Ņ‚ŅŒ ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊŅ‹Đĩ: ĐĩҁĐģи ŅŅ‚Đ° ĐžĐŋŅ†Đ¸Ņ ĐžŅ‚ĐŧĐĩ҇ĐĩĐŊа, ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐŊŅ‹Đĩ Đ¸ŅŅ…ĐžĐ´ĐŊĐžĐŗĐž PDF ĐąŅƒĐ´ŅƒŅ‚ вĐēĐģŅŽŅ‡ĐĩĐŊŅ‹ в ĐēаĐļĐ´Ņ‹Đš Ņ€Đ°ĐˇĐąĐ¸Ņ‚Ņ‹Đš PDF. splitByChapters.desc.4=ПозвоĐģŅŅ‚ŅŒ Đ´ŅƒĐąĐģиĐēĐ°Ņ‚Ņ‹: ĐĩҁĐģи ŅŅ‚Đ° ĐžĐŋŅ†Đ¸Ņ ĐžŅ‚ĐŧĐĩ҇ĐĩĐŊа, ĐŊа ОдĐŊОК ŅŅ‚Ņ€Đ°ĐŊĐ¸Ņ†Đĩ ĐŧĐžĐŗŅƒŅ‚ ĐąŅ‹Ņ‚ŅŒ ŅĐžĐˇĐ´Đ°ĐŊŅ‹ ĐŊĐĩҁĐēĐžĐģҌĐēĐž PDF иС-Са ĐŊĐĩҁĐēĐžĐģҌĐēĐ¸Ņ… ОдиĐŊаĐēĐžĐ˛Ņ‹Ņ… СаĐēĐģадОĐē. splitByChapters.submit=РаСдĐĩĐģĐ¸Ņ‚ŅŒ PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties index 1f60795bae..39a03d2e44 100644 --- a/src/main/resources/messages_sk_SK.properties +++ b/src/main/resources/messages_sk_SK.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=Creation Date database.fileSize=File Size database.deleteBackupFile=Delete Backup File database.importBackupFile=Import Backup File +database.createBackupFile=Create Backup File database.downloadBackupFile=Download Backup File database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. database.submit=Import Backup database.importIntoDatabaseSuccessed=Import into database successed +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=AutomatickÊ redigovanie home.autoRedact.desc=Automaticky rediguje (zatieni) text v PDF na zÃĄklade zadanÊho textu autoRedact.tags=redigovaÅĨ, skryÅĨ, zatieniÅĨ, čierne, marker, skrytÊ +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF do CSV home.tableExtraxt.desc=Extrahuje tabuÄžky z PDF a konvertuje ich do CSV tableExtraxt.tags=CSV, extrakcia tabuliek, extrahovaÅĨ, konvertovaÅĨ @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response login.oauth2InvalidIdToken=Invalid Id Token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=VlastnÊ odsadenie autoRedact.convertPDFToImageLabel=KonvertovaÅĨ PDF na PDF-ObrÃĄzok (PouŞíva sa na odstrÃĄnenie textu za boxom) autoRedact.submitButton=OdoslaÅĨ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=ZobraziÅĨ JavaScript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=OpraviÅĨ repair.header=OpraviÅĨ PDF @@ -863,7 +889,7 @@ ocr.selectText.10=OCR reÅžim ocr.selectText.11=OdstrÃĄniÅĨ obrÃĄzky po OCR (OdstrÃĄni VÅ ETKY obrÃĄzky, uÅžitočnÊ iba ak je sÃēčasÅĨou konverznÊho kroku) ocr.selectText.12=Typ vykreslenia (PokročilÊ) ocr.help=Prosím, prečítajte si tÃēto dokumentÃĄciu o tom, ako pouŞívaÅĨ OCR pre inÊ jazyky a/alebo pouÅžitie mimo docker -ocr.credit=TÃĄto sluÅžba pouŞíva OCRmyPDF a Tesseract pre OCR. +ocr.credit=TÃĄto sluÅžba pouŞíva qpdf a Tesseract pre OCR. ocr.submit=SpracovaÅĨ PDF s OCR @@ -887,7 +913,7 @@ fileToPDF.submit=KonvertovaÅĨ do PDF #compress compress.title=KomprimovaÅĨ compress.header=KomprimovaÅĨ PDF -compress.credit=TÃĄto sluÅžba pouŞíva Ghostscript pre kompresiu/optimalizÃĄciu PDF. +compress.credit=TÃĄto sluÅžba pouŞíva qpdf pre kompresiu/optimalizÃĄciu PDF. compress.selectText.1=ManuÃĄlny reÅžim - Od 1 do 4 compress.selectText.2=Úroveň optimalizÃĄcie: compress.selectText.3=4 (HroznÊ pre textovÊ obrÃĄzky) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Odtiene ÅĄedej pdfToImage.blackwhite=Čierno-biele (MôŞe stratiÅĨ Ãēdaje!) pdfToImage.submit=KonvertovaÅĨ pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.placeholder=(napr. 1,2,8 alebo 4,7,12-16 alebo 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=ZaÅĄifrovaÅĨ #watermark watermark.title=PridaÅĨ vodotlač watermark.header=PridaÅĨ vodotlač +watermark.customColor=VlastnÃĄ farba textu watermark.selectText.1=Vyberte PDF, do ktorÊho chcete pridaÅĨ vodotlač: watermark.selectText.2=Text vodotlače: watermark.selectText.3=VeÄžkosÅĨ písma: @@ -1097,7 +1147,7 @@ changeMetadata.submit=ZmeniÅĨ #pdfToPDFA pdfToPDFA.title=PDF na PDF/A pdfToPDFA.header=PDF na PDF/A -pdfToPDFA.credit=TÃĄto sluÅžba pouŞíva ghostscript na konverziu PDF/A +pdfToPDFA.credit=TÃĄto sluÅžba pouŞíva qpdf na konverziu PDF/A pdfToPDFA.submit=KonvertovaÅĨ pdfToPDFA.tip=MomentÃĄlne nefunguje pre viacero vstupov naraz pdfToPDFA.outputFormat=VÃŊstupnÃŊ formÃĄt @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index c0c10d728c..c521cc8b37 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=Creation Date database.fileSize=File Size database.deleteBackupFile=Delete Backup File database.importBackupFile=Import Backup File +database.createBackupFile=Create Backup File database.downloadBackupFile=Download Backup File database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. database.submit=Import Backup database.importIntoDatabaseSuccessed=Import into database successed +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=Automatsko Cenzurisanje home.autoRedact.desc=Automatsko cenzurisanje teksta u PDF-u na osnovu unetog teksta autoRedact.tags=Cenzura,Sakrij,prekrivanje,crna,marker,skriveno +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF u CSV home.tableExtraxt.desc=Izdvaja tabele iz PDF-a pretvarajući ih u CSV tableExtraxt.tags=CSV,Izdvajanje tabela,izdvajanje,konvertovanje @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Invalid Request login.oauth2AccessDenied=Access Denied login.oauth2InvalidTokenResponse=Invalid Token Response login.oauth2InvalidIdToken=Invalid Id Token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Dodatni prazan prostor autoRedact.convertPDFToImageLabel=Konvertuj PDF u PDF-Image (koristi se za uklanjanje teksta iza okvira) autoRedact.submitButton=Potvrdi +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=PrikaÅži Javascript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Popravi repair.header=Popravi PDF fajlove @@ -863,7 +889,7 @@ ocr.selectText.10=ReÅžim OCR-a ocr.selectText.11=Ukloni slike nakon OCR-a (Uklanja SVE slike, korisno samo ako je deo koraka konverzije) ocr.selectText.12=Tip rendiranja (Napredno) ocr.help=Molimo vas da pročitate ovu dokumentaciju o tome kako koristiti ovo za druge jezike i/ili koriÅĄÄ‡enje van docker-a -ocr.credit=Ova usluga koristi OCRmyPDF i Tesseract za OCR. +ocr.credit=Ova usluga koristi qpdf i Tesseract za OCR. ocr.submit=Obradi PDF sa OCR-om @@ -887,7 +913,7 @@ fileToPDF.submit=Konvertuj u PDF #compress compress.title=Kompresija compress.header=Kompresuj PDF -compress.credit=Ova usluga koristi Ghostscript za kompresiju / optimizaciju PDF-a. +compress.credit=Ova usluga koristi qpdf za kompresiju / optimizaciju PDF-a. compress.selectText.1=Ručni reÅžim - Od 1 do 4 compress.selectText.2=Nivo optimizacije: compress.selectText.3=4 (UÅžasno za tekstualne slike) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Nijanse sive pdfToImage.blackwhite=Crno-belo (MoÅže izgubiti podatke!) pdfToImage.submit=Konvertuj pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Enkriptuj #watermark watermark.title=Dodaj vodeni Åžig watermark.header=Dodaj vodeni Åžig +watermark.customColor=Custom Text Color watermark.selectText.1=Izaberite PDF za dodavanje vodenog Åžiga: watermark.selectText.2=Tekst vodenog Åžiga: watermark.selectText.3=Veličina fonta: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Promeni #pdfToPDFA pdfToPDFA.title=PDF u PDF/A pdfToPDFA.header=PDF u PDF/A -pdfToPDFA.credit=Ova usluga koristi ghostscript za konverziju u PDF/A format +pdfToPDFA.credit=Ova usluga koristi qpdf za konverziju u PDF/A format pdfToPDFA.submit=Konvertuj pdfToPDFA.tip=Currently does not work for multiple inputs at once pdfToPDFA.outputFormat=Output format @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index 98226323fd..b3bce1d008 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -82,6 +82,7 @@ pages=Sidor loading=Laddar... addToDoc=Lägg till i dokument reset=Reset +apply=Apply legal.privacy=Dataprotektionspolicy legal.terms=Villkor och betingelser @@ -238,17 +239,19 @@ database.creationDate=Skapelsedatum database.fileSize=Filstorlek database.deleteBackupFile=Ta bort säkerhetskopieringsfil database.importBackupFile=Importera säkerhetskopieringsfil +database.createBackupFile=Create Backup File database.downloadBackupFile=Ladda ner säkerhetskopieringsfil database.info_1=Vid import av data är det avgÃļrande att säkerställa korrekt struktur. Om du är osäker pÃĨ vad du gÃļr, sÃļk rÃĨd och stÃļd frÃĨn en professionell. Ett fel i strukturen kan orsaka funktionsfel i applikationen, upp till och inklusive fullständig ofÃļrmÃĨga att kÃļra applikationen. database.info_2=Filnamnet spelar ingen roll vid uppladdning. Det kommer att dÃļpas om efterÃĨt fÃļr att fÃļlja formatet backup_user_yyyyMMddHHmm.sql, vilket säkerställer en konsekvent namngivningskonvention. database.submit=Importera säkerhetskopia database.importIntoDatabaseSuccessed=Import till databas lyckades +database.backupCreated=Database backup successful database.fileNotFound=Filen hittades inte database.fileNullOrEmpty=Filen fÃĨr inte vara null eller tom database.failedImportFile=Misslyckades med att importera fil session.expired=Din session har lÃļpt ut. Uppdatera sidan och fÃļrsÃļk igen. -session.refreshPage=Refresh Page +session.refreshPage=Uppdatera sida ############# # HOME-PAGE # @@ -472,6 +475,10 @@ home.autoRedact.title=Auto-redigera home.autoRedact.desc=Auto-redigerar (svärtar) text i en PDF baserat pÃĨ inmatad text autoRedact.tags=Redigera,DÃļlja,svärta,svart,markÃļr,dold +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF till CSV home.tableExtraxt.desc=Extraherar tabeller frÃĨn en PDF och konverterar dem till CSV tableExtraxt.tags=CSV,Tabellextraktion,extrahera,konvertera @@ -512,10 +519,14 @@ home.splitPdfByChapters.title=Dela upp PDF efter kapitel home.splitPdfByChapters.desc=Dela upp en PDF till flera filer baserat pÃĨ dess kapitelstruktur. splitPdfByChapters.tags=dela,kapitel,bokmärken,organisera +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color -replace-color.title=Replace-Invert-Color +replace-color.title=Ersätt-Invertera-Färg replace-color.header=Ersätt-Invertera färg pÃĨ PDF -home.replaceColorPdf.title=Replace and Invert Color +home.replaceColorPdf.title=Ersätt och Invertera färg home.replaceColorPdf.desc=Ersätt färg fÃļr text och bakgrund i PDF och invertera hela färgen pÃĨ PDF fÃļr att minska filstorlek replaceColorPdf.tags=Ersätt Färg, SidÃĨtgärder, Bakomliggande, Serversid replace-color.selectText.1=Ersätt eller Invertera färgalternativ @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Ogiltig begäran login.oauth2AccessDenied=Åtkomst nekad login.oauth2InvalidTokenResponse=Ogiltigt token-svar login.oauth2InvalidIdToken=Ogiltigt Id-token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=Användaren är inaktiverad, inloggning är fÃļr närvarande blockerad med detta användarnamn. Kontakta administratÃļren. login.alreadyLoggedIn=Du är redan inloggad pÃĨ login.alreadyLoggedIn2=enheter. Logga ut frÃĨn enheterna och fÃļrsÃļk igen. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Anpassad extra utfyllnad autoRedact.convertPDFToImageLabel=Konvertera PDF till PDF-bild (Används fÃļr att ta bort text bakom rutan) autoRedact.submitButton=Skicka +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Visa Javascript @@ -818,8 +839,13 @@ sign.save=Spara signatur sign.personalSigs=Personliga signaturer sign.sharedSigs=Delade signaturer sign.noSavedSigs=Inga sparade signaturer hittades - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Reparera repair.header=Reparera PDF-filer @@ -863,7 +889,7 @@ ocr.selectText.10=OCR-läge ocr.selectText.11=Ta bort bilder efter OCR (tar bort ALLA bilder, endast användbart som en del av konverteringssteget) ocr.selectText.12=Renderingstyp (avancerat) ocr.help=Vänligen läs denna dokumentation om hur du använder detta fÃļr andra sprÃĨk och/eller använder inte i docker -ocr.credit=Denna tjänst använder OCRmyPDF och Tesseract fÃļr OCR. +ocr.credit=Denna tjänst använder qpdf och Tesseract fÃļr OCR. ocr.submit=Bearbeta PDF med OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Konvertera till PDF #compress compress.title=Komprimera compress.header=Komprimera PDF -compress.credit=Denna tjänst använder Ghostscript fÃļr PDF-komprimering/optimering. +compress.credit=Denna tjänst använder qpdf fÃļr PDF-komprimering/optimering. compress.selectText.1=Manuellt läge - FrÃĨn 1 till 4 compress.selectText.2=OptimeringsnivÃĨ: compress.selectText.3=4 (Fruktansvärt fÃļr textbilder) @@ -944,8 +970,30 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=Denna fil är lÃļsenordsskyddad. Fyll i lÃļsenord: +decrypt.cancelled=Operation misslyckades fÃļr PDF: {0} +decrypt.noPassword=Inget lÃļsenord angivet fÃļr krypterad PDF: {0} +decrypt.invalidPassword=FÃļrsÃļk igen med korrekt lÃļsenord. +decrypt.invalidPasswordHeader=Felaktigt lÃļsenord eller osupportad kryptering fÃļr PDF: {0} +decrypt.unexpectedError=Det uppstod ett fel vid processering av filen. Vänligen fÃļrsÃļk igen. +decrypt.serverError=Serverfel vid avkryptering: {0} +decrypt.success=Fil avkrypterad. + #multiTool-advert -multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! +multiTool-advert.message=Denna funktion finns ocksÃĨ tillgänglig i vÃĨr multi-tool page. Spana in den fÃļr bättre sida-fÃļr-sida anpassning och ytterligare funktioner! #view pdf viewPdf.title=Visa PDF @@ -1008,6 +1056,7 @@ pdfToImage.grey=GrÃĨskala pdfToImage.blackwhite=Svartvitt (kan fÃļrlora data!) pdfToImage.submit=Konvertera pdfToImage.info=Python är inte installerat. Krävs fÃļr WebP-konvertering. +pdfToImage.placeholder=(t.ex. 1,2,8 eller 4,7,12-16 eller 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=Kryptera #watermark watermark.title=Lägg till vattenstämpel watermark.header=Lägg till vattenstämpel +watermark.customColor=Anpassad textfärg watermark.selectText.1=Välj PDF fÃļr att lägga till vattenstämpel till: watermark.selectText.2=Vattenmärkestext: watermark.selectText.3=Teckenstorlek: watermark.selectText.4=Vändning (0-360): -watermark.selectText.5=widthSpacer (mellanrum mellan varje vattenstämpel horisontellt): -watermark.selectText.6=heightSpacer (mellanrum mellan varje vattenstämpel vertikalt): +watermark.selectText.5=Width Spacer (mellanrum mellan varje vattenstämpel horisontellt): +watermark.selectText.6=Height Spacer (mellanrum mellan varje vattenstämpel vertikalt): watermark.selectText.7=Opacitet (0% - 100%): watermark.selectText.8=Vattenstämpeltyp: watermark.selectText.9=Vattenstämpelbild: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Ändra #pdfToPDFA pdfToPDFA.title=PDF till PDF/A pdfToPDFA.header=PDF till PDF/A -pdfToPDFA.credit=Denna tjänst använder ghostscript fÃļr PDF/A-konvertering +pdfToPDFA.credit=Denna tjänst använder qpdf fÃļr PDF/A-konvertering pdfToPDFA.submit=Konvertera pdfToPDFA.tip=Fungerar fÃļr närvarande inte fÃļr flera inmatningar samtidigt pdfToPDFA.outputFormat=Utdataformat @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=BokmärkesnivÃĨ: Välj nivÃĨn av bokmärken att använda splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=TillÃĨt duplicieringar: Om kryssrutan är markerad tillÃĨts flera bokmärken pÃĨ samma sida skapa individuella PDF:er. splitByChapters.submit=Dela upp PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_th_TH.properties b/src/main/resources/messages_th_TH.properties index 455f5d70cf..b4b27d8f24 100644 --- a/src/main/resources/messages_th_TH.properties +++ b/src/main/resources/messages_th_TH.properties @@ -82,6 +82,7 @@ pages=ā¸Ģā¸™āš‰ā¸˛ loading=⏁⏺ā¸Ĩā¸ąā¸‡āš‚ā¸Ģā¸Ĩ⏔... addToDoc=āš€ā¸žā¸´āšˆā¸Ąāš€ā¸‚āš‰ā¸˛ā¸Ēā¸šāšˆāš€ā¸­ā¸ā¸Ē⏞⏪ reset=Reset +apply=Apply legal.privacy=ā¸™āš‚ā¸ĸ⏚⏞ā¸ĸā¸„ā¸§ā¸˛ā¸Ąāš€ā¸›āš‡ā¸™ā¸Ēāšˆā¸§ā¸™ā¸•ā¸ąā¸§ legal.terms=ā¸‚āš‰ā¸­ā¸ā¸ŗā¸Ģā¸™ā¸”ā¸ā¸˛ā¸Ŗāšƒā¸Šāš‰ā¸‡ā¸˛ā¸™ @@ -238,11 +239,13 @@ database.creationDate=ā¸§ā¸ąā¸™ā¸—ā¸ĩāšˆā¸Ēā¸Ŗāš‰ā¸˛ā¸‡ database.fileSize=ā¸‚ā¸™ā¸˛ā¸”āš„ā¸Ÿā¸ĨāšŒ database.deleteBackupFile=ā¸Ĩā¸šāš„ā¸Ÿā¸ĨāšŒā¸Ē⏺⏪⏭⏇ database.importBackupFile=ā¸™ā¸ŗāš€ā¸‚āš‰ā¸˛āš„ā¸Ÿā¸ĨāšŒā¸Ē⏺⏪⏭⏇ +database.createBackupFile=Create Backup File database.downloadBackupFile=ā¸”ā¸˛ā¸§ā¸™āšŒāš‚ā¸Ģā¸Ĩā¸”āš„ā¸Ÿā¸ĨāšŒā¸Ē⏺⏪⏭⏇ database.info_1=āš€ā¸Ąā¸ˇāšˆā¸­ā¸™ā¸ŗāš€ā¸‚āš‰ā¸˛ā¸‚āš‰ā¸­ā¸Ąā¸šā¸Ĩ ā¸ˆā¸ŗāš€ā¸›āš‡ā¸™ā¸•āš‰ā¸­ā¸‡āšā¸™āšˆāšƒā¸ˆā¸§āšˆā¸˛āš‚ā¸„ā¸Ŗā¸‡ā¸Ēā¸Ŗāš‰ā¸˛ā¸‡ā¸–ā¸šā¸ā¸•āš‰ā¸­ā¸‡ ā¸Ģā¸˛ā¸āš„ā¸Ąāšˆāšā¸™āšˆāšƒā¸ˆā¸§āšˆā¸˛ā¸ā¸ŗā¸Ĩā¸ąā¸‡ā¸—ā¸ŗā¸­ā¸°āš„ā¸Ŗā¸­ā¸ĸā¸šāšˆ ā¸„ā¸§ā¸Ŗā¸‚ā¸­ā¸„ā¸ŗāšā¸™ā¸°ā¸™ā¸ŗāšā¸Ĩā¸°ā¸„ā¸§ā¸˛ā¸Ąā¸Šāšˆā¸§ā¸ĸāš€ā¸Ģā¸Ĩā¸ˇā¸­ā¸ˆā¸˛ā¸ā¸Ąā¸ˇā¸­ā¸­ā¸˛ā¸Šā¸ĩā¸ž ā¸„ā¸§ā¸˛ā¸Ąā¸œā¸´ā¸”ā¸žā¸Ĩā¸˛ā¸”āšƒā¸™āš‚ā¸„ā¸Ŗā¸‡ā¸Ēā¸Ŗāš‰ā¸˛ā¸‡ā¸­ā¸˛ā¸ˆā¸—ā¸ŗāšƒā¸Ģāš‰āš€ā¸ā¸´ā¸”ā¸‚āš‰ā¸­ā¸šā¸ā¸žā¸Ŗāšˆā¸­ā¸‡āšƒā¸™ā¸ā¸˛ā¸Ŗā¸—ā¸ŗā¸‡ā¸˛ā¸™ā¸‚ā¸­ā¸‡āšā¸­ā¸›ā¸žā¸Ĩā¸´āš€ā¸„ā¸Šā¸ąā¸™ā¸ˆā¸™ā¸–ā¸ļā¸‡ā¸‚ā¸ąāš‰ā¸™āš„ā¸Ąāšˆā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸–ā¸Ŗā¸ąā¸™āšā¸­ā¸›ā¸žā¸Ĩā¸´āš€ā¸„ā¸Šā¸ąā¸™āš„ā¸”āš‰āš€ā¸Ĩā¸ĸ database.info_2=ā¸Šā¸ˇāšˆā¸­āš„ā¸Ÿā¸ĨāšŒāš„ā¸Ąāšˆā¸Ēā¸ŗā¸„ā¸ąā¸āš€ā¸Ąā¸ˇāšˆā¸­ā¸­ā¸ąā¸›āš‚ā¸Ģā¸Ĩ⏔ ā¸ˆā¸°ā¸–ā¸šā¸āš€ā¸›ā¸Ĩā¸ĩāšˆā¸ĸā¸™ā¸Šā¸ˇāšˆā¸­ā¸ ā¸˛ā¸ĸā¸Ģā¸Ĩā¸ąā¸‡āšƒā¸Ģāš‰āš€ā¸›āš‡ā¸™ā¸Ŗā¸šā¸›āšā¸šā¸š backup_user_yyyyMMddHHmm.sql āš€ā¸žā¸ˇāšˆā¸­āšƒā¸Ģāš‰ā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸•ā¸ąāš‰ā¸‡ā¸Šā¸ˇāšˆā¸­ā¸—ā¸ĩāšˆā¸Ē⏭⏔⏄ā¸Ĩāš‰ā¸­ā¸‡ā¸ā¸ąā¸™ database.submit=ā¸™ā¸ŗāš€ā¸‚āš‰ā¸˛ā¸Ē⏺⏪⏭⏇ database.importIntoDatabaseSuccessed=ā¸ā¸˛ā¸Ŗā¸™ā¸ŗāš€ā¸‚āš‰ā¸˛āšƒā¸™ā¸ā¸˛ā¸™ā¸‚āš‰ā¸­ā¸Ąā¸šā¸Ĩā¸Ēā¸ŗāš€ā¸Ŗāš‡ā¸ˆ +database.backupCreated=Database backup successful database.fileNotFound=āš„ā¸Ąāšˆā¸žā¸šāš„ā¸Ÿā¸ĨāšŒ database.fileNullOrEmpty=āš„ā¸Ÿā¸ĨāšŒā¸•āš‰ā¸­ā¸‡āš„ā¸Ąāšˆā¸§āšˆā¸˛ā¸‡āš€ā¸›ā¸Ĩāšˆā¸˛ā¸Ģā¸Ŗā¸ˇā¸­āš„ā¸Ąāšˆā¸Ąā¸ĩā¸‚āš‰ā¸­ā¸Ąā¸šā¸Ĩ database.failedImportFile=ā¸ā¸˛ā¸Ŗā¸™ā¸ŗāš€ā¸‚āš‰ā¸˛āš„ā¸Ÿā¸ĨāšŒā¸Ĩāš‰ā¸Ąāš€ā¸Ģā¸Ĩ⏧ @@ -472,6 +475,10 @@ home.autoRedact.title=ā¸‹āšˆā¸­ā¸™ā¸‚āš‰ā¸­ā¸Ąā¸šā¸Ĩā¸­ā¸ąā¸•āš‚ā¸™ā¸Ąā¸ąā¸•ā¸´ home.autoRedact.desc=ā¸‹āšˆā¸­ā¸™ā¸‚āš‰ā¸­ā¸„ā¸§ā¸˛ā¸Ąāšƒā¸™ PDF āš‚ā¸”ā¸ĸā¸­ā¸ąā¸•āš‚ā¸™ā¸Ąā¸ąā¸•ā¸´ā¸•ā¸˛ā¸Ąā¸‚āš‰ā¸­ā¸„ā¸§ā¸˛ā¸Ąā¸—ā¸ĩāšˆā¸›āš‰ā¸­ā¸™ autoRedact.tags=ā¸‹āšˆā¸­ā¸™, ā¸‹āšˆā¸­ā¸™ā¸‚āš‰ā¸­ā¸„ā¸§ā¸˛ā¸Ą, ā¸‹āšˆā¸­ā¸™ā¸”āš‰ā¸§ā¸ĸā¸Ēā¸ĩ⏔⏺ +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF āš€ā¸›āš‡ā¸™ CSV home.tableExtraxt.desc=āšā¸ĸā¸ā¸•ā¸˛ā¸Ŗā¸˛ā¸‡ā¸ˆā¸˛ā¸ PDF āšā¸›ā¸Ĩā¸‡āš€ā¸›āš‡ā¸™ CSV tableExtraxt.tags=CSV, ā¸ā¸˛ā¸Ŗāšā¸ĸ⏁⏕⏞⏪⏞⏇, āšā¸ĸ⏁, ā¸ā¸˛ā¸Ŗāšā¸›ā¸Ĩ⏇ @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=ā¸„ā¸ŗā¸‚ā¸­āš„ā¸Ąāšˆā¸–ā¸šā¸ā¸•āš‰ā¸­ā¸‡ login.oauth2AccessDenied=ā¸ā¸˛ā¸Ŗāš€ā¸‚āš‰ā¸˛ā¸–ā¸ļā¸‡ā¸–ā¸šā¸ā¸›ā¸ā¸´āš€ā¸Ē⏘ login.oauth2InvalidTokenResponse=ā¸ā¸˛ā¸Ŗā¸•ā¸­ā¸šā¸ā¸Ĩā¸ąā¸šāš‚ā¸—āš€ā¸„āš‡ā¸™āš„ā¸Ąāšˆā¸–ā¸šā¸ā¸•āš‰ā¸­ā¸‡ login.oauth2InvalidIdToken=āš‚ā¸—āš€ā¸„āš‡ā¸™ Id āš„ā¸Ąāšˆā¸–ā¸šā¸ā¸•āš‰ā¸­ā¸‡ +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=ā¸œā¸šāš‰āšƒā¸Šāš‰ā¸‡ā¸˛ā¸™ā¸–ā¸šā¸ā¸Ŗā¸°ā¸‡ā¸ąā¸šā¸ā¸˛ā¸Ŗāšƒā¸Šāš‰ā¸‡ā¸˛ā¸™ āš„ā¸Ąāšˆā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸–āš€ā¸‚āš‰ā¸˛ā¸Ēā¸šāšˆā¸Ŗā¸°ā¸šā¸šā¸”āš‰ā¸§ā¸ĸā¸Šā¸ˇāšˆā¸­ā¸œā¸šāš‰āšƒā¸Šāš‰ā¸™ā¸ĩāš‰āš„ā¸”āš‰ ā¸ā¸Ŗā¸¸ā¸“ā¸˛ā¸•ā¸´ā¸”ā¸•āšˆā¸­ā¸œā¸šāš‰ā¸”ā¸šāšā¸Ĩ⏪⏰⏚⏚ login.alreadyLoggedIn=ā¸„ā¸¸ā¸“āš„ā¸”āš‰āš€ā¸‚āš‰ā¸˛ā¸Ēā¸šāšˆā¸Ŗā¸°ā¸šā¸šāšƒā¸™ login.alreadyLoggedIn2=ā¸­ā¸¸ā¸›ā¸ā¸Ŗā¸“āšŒāšā¸Ĩāš‰ā¸§ ā¸ā¸Ŗā¸¸ā¸“ā¸˛ā¸­ā¸­ā¸ā¸ˆā¸˛ā¸ā¸Ŗā¸°ā¸šā¸šā¸ˆā¸˛ā¸ā¸­ā¸¸ā¸›ā¸ā¸Ŗā¸“āšŒā¸—ā¸ĩāšˆāšƒā¸Šāš‰ā¸‡ā¸˛ā¸™ā¸­ā¸ĸā¸šāšˆāšā¸Ĩāš‰ā¸§ ā¸ˆā¸˛ā¸ā¸™ā¸ąāš‰ā¸™ā¸Ĩā¸­ā¸‡āšƒā¸Ģā¸Ąāšˆā¸­ā¸ĩā¸ā¸„ā¸Ŗā¸ąāš‰ā¸‡ @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=ā¸ā¸˛ā¸Ŗāš€ā¸•ā¸´ā¸Ąā¸—ā¸ĩāšˆā¸ā¸ŗā¸Ģā¸™ā¸”āš€ autoRedact.convertPDFToImageLabel=āšā¸›ā¸Ĩ⏇ PDF āš€ā¸›āš‡ā¸™ā¸ ā¸˛ā¸ž PDF (āšƒā¸Šāš‰āš€ā¸žā¸ˇāšˆā¸­ā¸Ĩā¸šā¸‚āš‰ā¸­ā¸„ā¸§ā¸˛ā¸Ąā¸—ā¸ĩāšˆā¸­ā¸ĸā¸šāšˆā¸”āš‰ā¸˛ā¸™ā¸Ģā¸Ĩā¸ąā¸‡ā¸ā¸Ĩāšˆā¸­ā¸‡) autoRedact.submitButton=ā¸Ēāšˆā¸‡ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=āšā¸Ē⏔⏇ Javascript @@ -818,8 +839,13 @@ sign.save=ā¸šā¸ąā¸™ā¸—ā¸ļ⏁ā¸Ĩ⏞ā¸ĸāš€ā¸‹āš‡ā¸™ sign.personalSigs=ā¸Ĩ⏞ā¸ĸāš€ā¸‹āš‡ā¸™ā¸Ēāšˆā¸§ā¸™ā¸•ā¸ąā¸§ sign.sharedSigs=ā¸Ĩ⏞ā¸ĸāš€ā¸‹āš‡ā¸™ā¸Ŗāšˆā¸§ā¸Ą sign.noSavedSigs=āš„ā¸Ąāšˆā¸žā¸šā¸Ĩ⏞ā¸ĸāš€ā¸‹āš‡ā¸™ā¸—ā¸ĩāšˆā¸šā¸ąā¸™ā¸—ā¸ļā¸āš„ā¸§āš‰ - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=ā¸‹āšˆā¸­ā¸Ąāšā¸‹ā¸Ą repair.header=ā¸‹āšˆā¸­ā¸Ąāšā¸‹ā¸Ą PDF @@ -863,7 +889,7 @@ ocr.selectText.10=āš‚ā¸Ģā¸Ąā¸” OCR ocr.selectText.11=ā¸Ĩā¸šā¸ ā¸˛ā¸žā¸Ģā¸Ĩā¸ąā¸‡ā¸ˆā¸˛ā¸ OCR (ā¸Ĩā¸šā¸ ā¸˛ā¸žā¸—ā¸ąāš‰ā¸‡ā¸Ģā¸Ąā¸”, ā¸Ąā¸ĩā¸›ā¸Ŗā¸°āš‚ā¸ĸā¸Šā¸™āšŒāš€ā¸‰ā¸žā¸˛ā¸°ā¸Ģā¸˛ā¸āš€ā¸›āš‡ā¸™ā¸Ēāšˆā¸§ā¸™ā¸Ģ⏙ā¸ļāšˆā¸‡ā¸‚ā¸­ā¸‡ā¸‚ā¸ąāš‰ā¸™ā¸•ā¸­ā¸™ā¸ā¸˛ā¸Ŗāšā¸›ā¸Ĩ⏇) ocr.selectText.12=ā¸›ā¸Ŗā¸°āš€ā¸ ā¸—ā¸ā¸˛ā¸Ŗāš€ā¸Ŗā¸™āš€ā¸”ā¸­ā¸ŖāšŒ (ā¸‚ā¸ąāš‰ā¸™ā¸Ēā¸šā¸‡) ocr.help=āš‚ā¸›ā¸Ŗā¸”ā¸­āšˆā¸˛ā¸™āš€ā¸­ā¸ā¸Ē⏞⏪⏙ā¸ĩāš‰āš€ā¸žā¸ˇāšˆā¸­āšƒā¸Šāš‰ā¸‡ā¸˛ā¸™ā¸ ā¸˛ā¸Šā¸˛ā¸­ā¸ˇāšˆā¸™āš† āšā¸Ĩ⏰/ā¸Ģā¸Ŗā¸ˇā¸­āšƒā¸Šāš‰ā¸‡ā¸˛ā¸™ā¸™ā¸­ā¸ docker -ocr.credit=ā¸šā¸Ŗā¸´ā¸ā¸˛ā¸Ŗā¸™ā¸ĩāš‰āšƒā¸Šāš‰ OCRmyPDF āšā¸Ĩ⏰ Tesseract ā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸š OCR +ocr.credit=ā¸šā¸Ŗā¸´ā¸ā¸˛ā¸Ŗā¸™ā¸ĩāš‰āšƒā¸Šāš‰ qpdf āšā¸Ĩ⏰ Tesseract ā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸š OCR ocr.submit=ā¸›ā¸Ŗā¸°ā¸Ąā¸§ā¸Ĩ⏜ā¸Ĩ PDF ā¸”āš‰ā¸§ā¸ĸ OCR @@ -887,7 +913,7 @@ fileToPDF.submit=āšā¸›ā¸Ĩā¸‡āš€ā¸›āš‡ā¸™ PDF #compress compress.title=⏚ā¸ĩā¸šā¸­ā¸ąā¸” compress.header=⏚ā¸ĩā¸šā¸­ā¸ąā¸” PDF -compress.credit=ā¸šā¸Ŗā¸´ā¸ā¸˛ā¸Ŗā¸™ā¸ĩāš‰āšƒā¸Šāš‰ Ghostscript ā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸šā¸ā¸˛ā¸Ŗā¸šā¸ĩā¸šā¸­ā¸ąā¸”/ā¸ā¸˛ā¸Ŗāš€ā¸žā¸´āšˆā¸Ąā¸›ā¸Ŗā¸°ā¸Ēā¸´ā¸—ā¸˜ā¸´ā¸ ā¸˛ā¸ž PDF +compress.credit=ā¸šā¸Ŗā¸´ā¸ā¸˛ā¸Ŗā¸™ā¸ĩāš‰āšƒā¸Šāš‰ qpdf ā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸šā¸ā¸˛ā¸Ŗā¸šā¸ĩā¸šā¸­ā¸ąā¸”/ā¸ā¸˛ā¸Ŗāš€ā¸žā¸´āšˆā¸Ąā¸›ā¸Ŗā¸°ā¸Ēā¸´ā¸—ā¸˜ā¸´ā¸ ā¸˛ā¸ž PDF compress.selectText.1=āš‚ā¸Ģā¸Ąā¸”āšā¸Ąā¸™ā¸™ā¸§ā¸Ĩ - ⏈⏞⏁ 1 ⏖ā¸ļ⏇ 4 compress.selectText.2=ā¸Ŗā¸°ā¸”ā¸ąā¸šā¸ā¸˛ā¸Ŗāš€ā¸žā¸´āšˆā¸Ąā¸›ā¸Ŗā¸°ā¸Ēā¸´ā¸—ā¸˜ā¸´ā¸ ā¸˛ā¸ž: compress.selectText.3=4 (āš„ā¸Ąāšˆā¸”ā¸ĩā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸šā¸ ā¸˛ā¸žā¸‚āš‰ā¸­ā¸„ā¸§ā¸˛ā¸Ą) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=ā¸Ŗā¸°ā¸”ā¸ąā¸šā¸Ēā¸ĩāš€ā¸—ā¸˛ pdfToImage.blackwhite=⏂⏞⏧⏔⏺ (⏭⏞⏈ā¸Ēā¸šā¸āš€ā¸Ēā¸ĩā¸ĸā¸‚āš‰ā¸­ā¸Ąā¸šā¸Ĩ!) pdfToImage.submit=āšā¸›ā¸Ĩ⏇ pdfToImage.info=Python āš„ā¸Ąāšˆā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸•ā¸´ā¸”ā¸•ā¸ąāš‰ā¸‡ ā¸ˆā¸ŗāš€ā¸›āš‡ā¸™ā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸šā¸ā¸˛ā¸Ŗāšā¸›ā¸Ĩ⏇ WebP +pdfToImage.placeholder=(āš€ā¸Šāšˆā¸™ 1,2,8 ā¸Ģ⏪⏎⏭ 4,7,12-16 ā¸Ģ⏪⏎⏭ 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=āš€ā¸‚āš‰ā¸˛ā¸Ŗā¸Ģā¸ąā¸Ē #watermark watermark.title=āš€ā¸žā¸´āšˆā¸Ąā¸Ĩ⏞ā¸ĸā¸™āš‰ā¸ŗ watermark.header=āš€ā¸žā¸´āšˆā¸Ąā¸Ĩ⏞ā¸ĸā¸™āš‰ā¸ŗ +watermark.customColor=ā¸Ēā¸ĩā¸‚āš‰ā¸­ā¸„ā¸§ā¸˛ā¸Ąā¸—ā¸ĩāšˆā¸ā¸ŗā¸Ģā¸™ā¸”āš€ā¸­ā¸‡ watermark.selectText.1=āš€ā¸Ĩ⏎⏭⏁ PDF āš€ā¸žā¸ˇāšˆā¸­āš€ā¸žā¸´āšˆā¸Ąā¸Ĩ⏞ā¸ĸā¸™āš‰ā¸ŗ: watermark.selectText.2=ā¸‚āš‰ā¸­ā¸„ā¸§ā¸˛ā¸Ąā¸Ĩ⏞ā¸ĸā¸™āš‰ā¸ŗ: watermark.selectText.3=ā¸‚ā¸™ā¸˛ā¸”ā¸Ÿā¸­ā¸™ā¸•āšŒ: @@ -1097,7 +1147,7 @@ changeMetadata.submit=āš€ā¸›ā¸Ĩā¸ĩāšˆā¸ĸ⏙ #pdfToPDFA pdfToPDFA.title=PDF āš€ā¸›āš‡ā¸™ PDF/A pdfToPDFA.header=PDF āš€ā¸›āš‡ā¸™ PDF/A -pdfToPDFA.credit=ā¸šā¸Ŗā¸´ā¸ā¸˛ā¸Ŗā¸™ā¸ĩāš‰āšƒā¸Šāš‰ ghostscript ā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸šā¸ā¸˛ā¸Ŗāšā¸›ā¸Ĩ⏇ PDF/A +pdfToPDFA.credit=ā¸šā¸Ŗā¸´ā¸ā¸˛ā¸Ŗā¸™ā¸ĩāš‰āšƒā¸Šāš‰ qpdf ā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸šā¸ā¸˛ā¸Ŗāšā¸›ā¸Ĩ⏇ PDF/A pdfToPDFA.submit=āšā¸›ā¸Ĩ⏇ pdfToPDFA.tip=ā¸›ā¸ąā¸ˆā¸ˆā¸¸ā¸šā¸ąā¸™āš„ā¸Ąāšˆā¸—ā¸ŗā¸‡ā¸˛ā¸™ā¸Ē⏺ā¸Ģā¸Ŗā¸ąā¸šā¸ā¸˛ā¸Ŗā¸›āš‰ā¸­ā¸™ā¸‚āš‰ā¸­ā¸Ąā¸šā¸Ĩā¸Ģā¸Ĩ⏞ā¸ĸ⏪⏞ā¸ĸā¸ā¸˛ā¸Ŗā¸žā¸Ŗāš‰ā¸­ā¸Ąā¸ā¸ąā¸™ pdfToPDFA.outputFormat=ā¸Ŗā¸šā¸›āšā¸šā¸šā¸œā¸Ĩā¸Ĩā¸ąā¸žā¸˜āšŒ @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=ā¸Ŗā¸°ā¸”ā¸ąā¸šā¸šā¸¸ā¸„ā¸„ā¸Ĩ⏗ā¸ĩāšˆāš„ā¸”āš‰ā¸Ŗā¸ąā¸š splitByChapters.desc.3=ā¸Ŗā¸§ā¸Ąā¸‚āš‰ā¸­ā¸Ąā¸šā¸Ĩāš€ā¸Ēā¸Ŗā¸´ā¸Ą: ā¸Ģā¸˛ā¸ā¸–ā¸šā¸āš€ā¸Ĩ⏎⏭⏁ ā¸‚āš‰ā¸­ā¸Ąā¸šā¸Ĩāš€ā¸Ēā¸Ŗā¸´ā¸Ąā¸‚ā¸­ā¸‡āš„ā¸Ÿā¸ĨāšŒ PDF ⏗ā¸ĩāšˆāš€ā¸”ā¸´ā¸Ąā¸ˆā¸°ā¸–ā¸šā¸ā¸Ŗā¸§ā¸Ąā¸­ā¸ĸā¸šāšˆāšƒā¸™āšā¸•āšˆā¸Ĩā¸°āš„ā¸Ÿā¸ĨāšŒā¸—ā¸ĩāšˆāšā¸šāšˆā¸‡ā¸­ā¸­ā¸ splitByChapters.desc.4=ā¸­ā¸™ā¸¸ā¸ā¸˛ā¸•āšƒā¸Ģāš‰ā¸Ąā¸ĩā¸ā¸˛ā¸Ŗā¸‹āš‰ā¸ŗ: ā¸Ģā¸˛ā¸ā¸–ā¸šā¸āš€ā¸Ĩ⏎⏭⏁ ā¸ˆā¸°ā¸—ā¸ŗāšƒā¸Ģāš‰ā¸Ēā¸˛ā¸Ąā¸˛ā¸Ŗā¸–ā¸Ēā¸Ŗāš‰ā¸˛ā¸‡āš„ā¸Ÿā¸ĨāšŒ PDF āšā¸ĸā¸ā¸­ā¸­ā¸ā¸Ąā¸˛ā¸ˆā¸˛ā¸ā¸Ģā¸™āš‰ā¸˛āš€ā¸”ā¸ĩā¸ĸā¸§ā¸ā¸ąā¸™āš„ā¸”āš‰ā¸Ģā¸Ĩ⏞ā¸ĸ⏪⏞ā¸ĸ⏁⏞⏪ splitByChapters.submit=āšā¸šāšˆā¸‡āš„ā¸Ÿā¸ĨāšŒ PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index f7089fa1c8..e5b0eee2cb 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Gizlilik PolitikasÄą legal.terms=Şartlar ve koşullar @@ -238,11 +239,13 @@ database.creationDate=Oluşturulma Tarihi database.fileSize=Dosya Boyutu database.deleteBackupFile=Yedekleme DosyasÄąnÄą Sil database.importBackupFile=Yedekleme DosyasÄąnÄą İçe Aktar +database.createBackupFile=Create Backup File database.downloadBackupFile=Yedekleme DosyasÄąnÄą İndir database.info_1=Verileri içe aktarÄąrken, yapÄąnÄąn doğru olduğundan emin olmak çok Ãļnemlidir. Ne yaptığınÄązdan emin değilseniz, bir uzmandan tavsiye ve destek alÄąn. YapÄądaki bir hata, uygulamanÄąn tamamen çalÄąÅŸtÄąrÄąlamamasÄą da dahil olmak Ãŧzere uygulama sorunlarÄąna neden olabilir. database.info_2=KarÅŸÄąya yÃŧklerken dosya adÄą Ãļnemli değildir. Daha sonra yedekleme_kullanÄącÄąsÄą_yyyyAAggSdd.sql biçiminde yeniden adlandÄąrÄąlacak ve tutarlÄą bir adlandÄąrma kuralÄą sağlanacaktÄąr. database.submit=Yedeklemeyi İçe Aktar database.importIntoDatabaseSuccessed=Veri tabanÄąna başarÄąyla aktarÄąldÄą +database.backupCreated=Database backup successful database.fileNotFound=Dosya bulunamadÄą database.fileNullOrEmpty=Dosya yok veya boş olmamalÄądÄąr database.failedImportFile=Dosya İçe AktarÄąlamadÄą @@ -472,6 +475,10 @@ home.autoRedact.title=Otomatik Karartma home.autoRedact.desc=Giriş metnine dayanarak bir PDF'teki metni Otomatik KarartÄąr (Redakte) autoRedact.tags=Karart,Gizle,karartma,siyah,markÃļr,gizli +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF'den CSV'ye home.tableExtraxt.desc=PDF'den TablolarÄą Ã§ÄąkarÄąr ve CSV'ye dÃļnÃŧştÃŧrÃŧr tableExtraxt.tags=CSV, Tablo Ã‡Äąkarma, ayÄąklama, dÃļnÃŧştÃŧrme @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=Geçersiz İstek login.oauth2AccessDenied=Erişim Reddedildi login.oauth2InvalidTokenResponse=Geçersiz Belirteç YanÄątÄą login.oauth2InvalidIdToken=Geçersiz Kimlik Belirteci +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=KullanÄącÄą devre dÄąÅŸÄą bÄąrakÄąldÄą, şu anda bu kullanÄącÄą adÄąyla giriş engellendi. LÃŧtfen yÃļneticiyle iletişime geçin. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Özel Ekstra Dolgu autoRedact.convertPDFToImageLabel=PDF'i PDF-GÃļrÃŧntÃŧ'ye dÃļnÃŧştÃŧr (Kutunun arkasÄąndaki metni kaldÄąrmak için kullanÄąlÄąr) autoRedact.submitButton=GÃļnder +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Javascript'i GÃļster @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Onar repair.header=PDF'leri Onar @@ -863,7 +889,7 @@ ocr.selectText.10=OCR Modu ocr.selectText.11=OCR'den sonra resimleri kaldÄąr (TÜM resimleri kaldÄąrÄąr, sadece dÃļnÃŧşÃŧm adÄąmÄąnÄąn bir parçasÄąysa yararlÄądÄąr) ocr.selectText.12=Render TÃŧrÃŧ (İleri Seviye) ocr.help=LÃŧtfen bu belgede başka dillerde nasÄąl kullanÄąlacağı ve/veya docker'da kullanÄąlmamasÄą hakkÄąnda bilgi edinin -ocr.credit=Bu hizmet OCR için OCRmyPDF ve Tesseract'Äą kullanÄąr. +ocr.credit=Bu hizmet OCR için qpdf ve Tesseract'Äą kullanÄąr. ocr.submit=PDF'i OCR(Metin TanÄąma) ile İşle @@ -887,7 +913,7 @@ fileToPDF.submit=PDF'e DÃļnÃŧştÃŧr #compress compress.title=SÄąkÄąÅŸtÄąr compress.header=PDF'i SÄąkÄąÅŸtÄąr -compress.credit=Bu hizmet PDF SÄąkÄąÅŸtÄąrma/Optimizasyonu için Ghostscript kullanÄąr. +compress.credit=Bu hizmet PDF SÄąkÄąÅŸtÄąrma/Optimizasyonu için qpdf kullanÄąr. compress.selectText.1=Manuel Mod - 1'den 4'e compress.selectText.2=Optimizasyon seviyesi: compress.selectText.3=4 (Metin resimleri için hiç uygun değil) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Gri tonlama pdfToImage.blackwhite=Siyah ve Beyaz (Veri kaybolabilir!) pdfToImage.submit=DÃļnÃŧştÃŧr pdfToImage.info=Python kurulu değil. WebP dÃļnÃŧşÃŧmÃŧ için gereklidir. +pdfToImage.placeholder=(Ãļrneğin 1,2,8 veya 4,7,12-16 ya da 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=Şifrele #watermark watermark.title=Filigran Ekle watermark.header=Filigran Ekle +watermark.customColor=Özel Metin Rengi watermark.selectText.1=Filigran eklemek için PDF seçin: watermark.selectText.2=Filigran Metni: watermark.selectText.3=YazÄą Boyutu: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Değiştir #pdfToPDFA pdfToPDFA.title=PDF'den PDF/A'ya pdfToPDFA.header=PDF'den PDF/A'ya -pdfToPDFA.credit=Bu hizmet PDF/A dÃļnÃŧşÃŧmÃŧ için ghostscript kullanÄąr +pdfToPDFA.credit=Bu hizmet PDF/A dÃļnÃŧşÃŧmÃŧ için qpdf kullanÄąr pdfToPDFA.submit=DÃļnÃŧştÃŧr pdfToPDFA.tip=Şu anda aynÄą anda birden fazla giriş için çalÄąÅŸmÄąyor pdfToPDFA.outputFormat=Ã‡ÄąkÄąÅŸ formatÄą @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties index 0f75eaa30f..68ba641856 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=Creation Date database.fileSize=File Size database.deleteBackupFile=Delete Backup File database.importBackupFile=Import Backup File +database.createBackupFile=Create Backup File database.downloadBackupFile=Download Backup File database.info_1=When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application. database.info_2=The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention. database.submit=Import Backup database.importIntoDatabaseSuccessed=Import into database successed +database.backupCreated=Database backup successful database.fileNotFound=File not Found database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File @@ -472,6 +475,10 @@ home.autoRedact.title=ĐĐ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐŊĐĩ Ņ€ĐĩĐ´Đ°ĐŗŅƒĐ˛Đ°ĐŊĐŊŅ home.autoRedact.desc=ĐĐ˛Ņ‚ĐžĐŧĐ°Ņ‚Đ¸Ņ‡ĐŊĐĩ ĐˇĐ°Ņ‚ĐĩĐŧĐŊĐĩĐŊĐŊŅ (Ņ‡ĐžŅ€ĐŊŅ–ĐŊĐŊŅ) Ņ‚ĐĩĐēŅŅ‚Ņƒ в PDF ĐŊа ĐžŅĐŊĐžĐ˛Ņ– Đ˛Ņ…Ņ–Đ´ĐŊĐžĐŗĐž Ņ‚ĐĩĐēŅŅ‚Ņƒ autoRedact.tags=Redact,Hide,black out,black,marker,hidden +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF ҃ CSV home.tableExtraxt.desc=Đ’Đ¸Đ´ĐžĐąŅƒĐ˛Đ°Ņ” Ņ‚Đ°ĐąĐģĐ¸Ņ†Ņ– С PDF Ņ‚Đ° ĐŋĐĩŅ€ĐĩŅ‚Đ˛ĐžŅ€ŅŽŅ” Ņ—Ņ… ҃ CSV tableExtraxt.tags=CSV,Table Extraction,extract,convert @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=НĐĩĐ´Ņ–ĐšŅĐŊиК СаĐŋĐ¸Ņ‚ login.oauth2AccessDenied=Đ”ĐžŅŅ‚ŅƒĐŋ СайĐģĐžĐēОваĐŊĐž login.oauth2InvalidTokenResponse=НĐĩĐ´Ņ–ĐšŅĐŊа Đ˛Ņ–Đ´ĐŋĐžĐ˛Ņ–Đ´ŅŒ С Ņ‚ĐžĐēĐĩĐŊĐžĐŧ login.oauth2InvalidIdToken=НĐĩĐ´Ņ–ĐšŅĐŊиК Id Ņ‚ĐžĐēĐĩĐŊ +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Đ”ĐžĐ´Đ°Ņ‚ĐēОвĐĩ СаĐŋОвĐŊĐĩĐŊĐŊŅ Са ĐēĐž autoRedact.convertPDFToImageLabel=ПĐĩŅ€ĐĩŅ‚Đ˛ĐžŅ€Đ¸Ņ‚Đ¸ PDF в ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐŊŅ PDF (виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ Đ´ĐģŅ видаĐģĐĩĐŊĐŊŅ Ņ‚ĐĩĐēŅŅ‚Ņƒ ĐŋОСа ĐŧĐĩĐļаĐŧи) autoRedact.submitButton=ĐĐ°Đ´Ņ–ŅĐģĐ°Ņ‚Đ¸ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=ПоĐēĐ°ĐˇĐ°Ņ‚Đ¸ JavaScript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Đ ĐĩĐŧĐžĐŊŅ‚ repair.header=Đ ĐĩĐŧĐžĐŊŅ‚ PDF @@ -863,7 +889,7 @@ ocr.selectText.10=Đ ĐĩĐļиĐŧ OCR ocr.selectText.11=ВидаĐģĐ¸Ņ‚Đ¸ ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐŊŅ ĐŋҖҁĐģŅ OCR (видаĐģŅŅ” ВСІ ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊĐŊŅ, ĐēĐžŅ€Đ¸ŅĐŊĐž ĐģĐ¸ŅˆĐĩ в Ņ‚ĐžĐŧ҃ виĐŋадĐē҃, ŅĐēŅ‰Đž вОĐŊи Ņ” Ņ‡Đ°ŅŅ‚Đ¸ĐŊĐžŅŽ ĐĩŅ‚Đ°Đŋ҃ ĐŋĐĩŅ€ĐĩŅ‚Đ˛ĐžŅ€ĐĩĐŊĐŊŅ) ocr.selectText.12=ĐĸиĐŋ Ņ€ĐĩĐŊĐ´ĐĩŅ€Ņƒ (Ņ€ĐžĐˇŅˆĐ¸Ņ€ĐĩĐŊиК) ocr.help=ĐŸŅ€ĐžŅ‡Đ¸Ņ‚Đ°ĐšŅ‚Đĩ Ņ†ŅŽ Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–ŅŽ ĐŋŅ€Đž Ņ‚Đĩ, ŅĐē виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Ņ‚Đ¸ ҆Đĩ Đ´ĐģŅ Ņ–ĐŊŅˆĐ¸Ņ… ĐŧОв Ņ–/айО виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Ņ‚Đ¸ ĐŊĐĩ в Đ´ĐžĐēĐĩҀҖ. -ocr.credit=ĐĻĐĩĐš ҁĐĩŅ€Đ˛Ņ–Ņ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ” OCRmyPDF Ņ‚Đ° Tesseract Đ´ĐģŅ OCR. +ocr.credit=ĐĻĐĩĐš ҁĐĩŅ€Đ˛Ņ–Ņ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ” qpdf Ņ‚Đ° Tesseract Đ´ĐģŅ OCR. ocr.submit=ĐžĐąŅ€ĐžĐąĐēа PDF С OCR @@ -887,7 +913,7 @@ fileToPDF.submit=ПĐĩŅ€ĐĩŅ‚Đ˛ĐžŅ€Đ¸Ņ‚Đ¸ ҃ PDF #compress compress.title=ĐĄŅ‚Đ¸ŅĐŊŅƒŅ‚Đ¸ compress.header=ĐĄŅ‚Đ¸ŅĐŊŅƒŅ‚Đ¸ PDF -compress.credit=ĐĻŅ ҁĐģ҃Đļйа виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ” Ghostscript Đ´ĐģŅ ŅŅ‚Đ¸ŅĐŊĐĩĐŊĐŊŅ/ĐžĐŋŅ‚Đ¸ĐŧŅ–ĐˇĐ°Ņ†Ņ–Ņ— PDF. +compress.credit=ĐĻŅ ҁĐģ҃Đļйа виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ” qpdf Đ´ĐģŅ ŅŅ‚Đ¸ŅĐŊĐĩĐŊĐŊŅ/ĐžĐŋŅ‚Đ¸ĐŧŅ–ĐˇĐ°Ņ†Ņ–Ņ— PDF. compress.selectText.1=Đ ŅƒŅ‡ĐŊиК Ņ€ĐĩĐļиĐŧ - Đ˛Ņ–Đ´ 1 Đ´Đž 4 compress.selectText.2=Đ Ņ–Đ˛ĐĩĐŊҌ ĐžĐŋŅ‚Đ¸ĐŧŅ–ĐˇĐ°Ņ†Ņ–Ņ—: compress.selectText.3=4 (Đ–Đ°Ņ…ĐģивО Đ´ĐģŅ Ņ‚ĐĩĐēŅŅ‚ĐžĐ˛Đ¸Ņ… ĐˇĐžĐąŅ€Đ°ĐļĐĩĐŊҌ) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Đ’Ņ–Đ´Ņ‚Ņ–ĐŊĐēи ŅŅ–Ņ€ĐžĐŗĐž pdfToImage.blackwhite=Đ§ĐžŅ€ĐŊĐž-ĐąŅ–ĐģиК (ĐŧĐžĐļĐĩ Đ˛Ņ‚Ņ€Đ°Ņ‚Đ¸Ņ‚Đ¸ даĐŊŅ–!) pdfToImage.submit=КоĐŊвĐĩŅ€Ņ‚ŅƒĐ˛Đ°Ņ‚Đ¸ pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.placeholder=(ĐŊаĐŋŅ€Đ¸ĐēĐģад 1,2,8 айО 4,7,12-16 айО 2n-1) #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=Đ¨Đ¸Ņ„Ņ€ŅƒĐ˛Đ°Ņ‚Đ¸ #watermark watermark.title=Đ”ĐžĐ´Đ°Ņ‚Đ¸ Đ˛ĐžĐ´ŅĐŊиК СĐŊаĐē watermark.header=Đ”ĐžĐ´Đ°Ņ‚Đ¸ Đ˛ĐžĐ´ŅĐŊиК СĐŊаĐē +watermark.customColor=ĐšĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ†ŅŒĐēиК ĐēĐžĐģŅ–Ņ€ Ņ‚ĐĩĐēŅŅ‚Ņƒ watermark.selectText.1=ВибĐĩŅ€Ņ–Ņ‚ŅŒ PDF, Ņ‰ĐžĐą Đ´ĐžĐ´Đ°Ņ‚Đ¸ Đ˛ĐžĐ´ŅĐŊиК СĐŊаĐē: watermark.selectText.2=ĐĸĐĩĐēҁ҂ Đ˛ĐžĐ´ŅĐŊĐžĐŗĐž СĐŊаĐē҃: watermark.selectText.3=РОСĐŧŅ–Ņ€ ŅˆŅ€Đ¸Ņ„Ņ‚Ņƒ: watermark.selectText.4=ОбĐĩŅ€Ņ‚Đ°ĐŊĐŊŅ (0-360): -watermark.selectText.5=widthSpacer (ĐŋŅ€ĐžĐŧŅ–ĐļĐžĐē ĐŧŅ–Đļ ĐēĐžĐļĐŊиĐŧ Đ˛ĐžĐ´ŅĐŊиĐŧ СĐŊаĐēĐžĐŧ ĐŋĐž ĐŗĐžŅ€Đ¸ĐˇĐžĐŊŅ‚Đ°ĐģŅ–): -watermark.selectText.6=heightSpacer (ĐŋŅ€ĐžĐŧŅ–ĐļĐžĐē ĐŧŅ–Đļ ĐēĐžĐļĐŊиĐŧ Đ˛ĐžĐ´ŅĐŊиĐŧ СĐŊаĐēĐžĐŧ ĐŋĐž вĐĩŅ€Ņ‚Đ¸ĐēаĐģŅ–): +watermark.selectText.5=Width Spacer (ĐŋŅ€ĐžĐŧŅ–ĐļĐžĐē ĐŧŅ–Đļ ĐēĐžĐļĐŊиĐŧ Đ˛ĐžĐ´ŅĐŊиĐŧ СĐŊаĐēĐžĐŧ ĐŋĐž ĐŗĐžŅ€Đ¸ĐˇĐžĐŊŅ‚Đ°ĐģŅ–): +watermark.selectText.6=Height Spacer (ĐŋŅ€ĐžĐŧŅ–ĐļĐžĐē ĐŧŅ–Đļ ĐēĐžĐļĐŊиĐŧ Đ˛ĐžĐ´ŅĐŊиĐŧ СĐŊаĐēĐžĐŧ ĐŋĐž вĐĩŅ€Ņ‚Đ¸ĐēаĐģŅ–): watermark.selectText.7=НĐĩĐŋŅ€ĐžĐˇĐžŅ€Ņ–ŅŅ‚ŅŒ (0% - 100%): watermark.selectText.8=ĐĸиĐŋ Đ˛ĐžĐ´ŅĐŊĐžĐŗĐž СĐŊаĐē҃: watermark.selectText.9=Đ—ĐžĐąŅ€Đ°ĐļĐĩĐŊĐŊŅ Đ˛ĐžĐ´ŅĐŊĐžĐŗĐž СĐŊаĐē҃: @@ -1097,7 +1147,7 @@ changeMetadata.submit=ЗĐŧŅ–ĐŊĐ¸Ņ‚Đ¸ #pdfToPDFA pdfToPDFA.title=PDF в PDF/A pdfToPDFA.header=PDF в PDF/A -pdfToPDFA.credit=ĐĻĐĩĐš ҁĐĩŅ€Đ˛Ņ–Ņ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ” ghostscript Đ´ĐģŅ ĐŋĐĩŅ€ĐĩŅ‚Đ˛ĐžŅ€ĐĩĐŊĐŊŅ ҃ Ņ„ĐžŅ€ĐŧĐ°Ņ‚ PDF/A +pdfToPDFA.credit=ĐĻĐĩĐš ҁĐĩŅ€Đ˛Ņ–Ņ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ” qpdf Đ´ĐģŅ ĐŋĐĩŅ€ĐĩŅ‚Đ˛ĐžŅ€ĐĩĐŊĐŊŅ ҃ Ņ„ĐžŅ€ĐŧĐ°Ņ‚ PDF/A pdfToPDFA.submit=КоĐŊвĐĩŅ€Ņ‚ŅƒĐ˛Đ°Ņ‚Đ¸ pdfToPDFA.tip=ĐĐ°Ņ€Đ°ĐˇŅ– ĐŊĐĩ ĐŋŅ€Đ°Ņ†ŅŽŅ” Đ´ĐģŅ ĐēŅ–ĐģҌĐēĐžŅ… Đ˛Ņ…Ņ–Đ´ĐŊĐ¸Ņ… Ņ„Đ°ĐšĐģŅ–Đ˛ ОдĐŊĐžŅ‡Đ°ŅĐŊĐž pdfToPDFA.outputFormat=Đ’Đ¸Ņ…Ņ–Đ´ĐŊиК Ņ„ĐžŅ€ĐŧĐ°Ņ‚ @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_vi_VN.properties b/src/main/resources/messages_vi_VN.properties index 8652775174..4325d4c082 100644 --- a/src/main/resources/messages_vi_VN.properties +++ b/src/main/resources/messages_vi_VN.properties @@ -82,6 +82,7 @@ pages=Pages loading=Loading... addToDoc=Add to Document reset=Reset +apply=Apply legal.privacy=Privacy Policy legal.terms=Terms and Conditions @@ -238,11 +239,13 @@ database.creationDate=Ngày táēĄo database.fileSize=Kích thưáģ›c táģ‡p database.deleteBackupFile=XÃŗa táģ‡p sao lưu database.importBackupFile=Nháē­p táģ‡p sao lưu +database.createBackupFile=Create Backup File database.downloadBackupFile=TáēŖi xuáģ‘ng táģ‡p sao lưu database.info_1=Khi nháē­p dáģ¯ liáģ‡u, điáģu quan tráģng là pháēŖi đáēŖm báēŖo cáēĨu trÃēc chính xÃĄc. Náēŋu báēĄn không cháē¯c cháē¯n váģ nháģ¯ng gÃŦ báēĄn đang làm, hÃŖy tÃŦm kiáēŋm láģi khuyÃĒn và háģ— tráģŖ táģĢ máģ™t chuyÃĒn gia. Láģ—i trong cáēĨu trÃēc cÃŗ tháģƒ gÃĸy ra sáģą cáģ‘ áģŠng dáģĨng, tháē­m chí là không tháģƒ cháēĄy áģŠng dáģĨng hoàn toàn. database.info_2=TÃĒn táģ‡p không quan tráģng khi táēŖi lÃĒn. NÃŗ sáēŊ đưáģŖc đáģ•i tÃĒn sau Ä‘Ãŗ đáģƒ tuÃĸn theo đáģ‹nh dáēĄng backup_user_yyyyMMddHHmm.sql, đáēŖm báēŖo quy ưáģ›c đáēˇt tÃĒn nháēĨt quÃĄn. database.submit=Nháē­p báēŖn sao lưu database.importIntoDatabaseSuccessed=Nháē­p vào cÆĄ sáģŸ dáģ¯ liáģ‡u thành công +database.backupCreated=Database backup successful database.fileNotFound=Không tÃŦm tháēĨy táģ‡p database.fileNullOrEmpty=Táģ‡p không đưáģŖc đáģƒ tráģ‘ng hoáēˇc ráģ—ng database.failedImportFile=Không tháģƒ nháē­p táģ‡p @@ -472,6 +475,10 @@ home.autoRedact.title=Táģą Ä‘áģ™ng biÃĒn táē­p home.autoRedact.desc=Táģą Ä‘áģ™ng biÃĒn táē­p (Che đen) văn báēŖn trong PDF dáģąa trÃĒn văn báēŖn đáē§u vào autoRedact.tags=BiÃĒn táē­p,áē¨n,che đen,đen,bÃēt Ä‘ÃĄnh dáēĨu,áēŠn +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF sang CSV home.tableExtraxt.desc=Trích xuáēĨt báēŖng táģĢ PDF chuyáģƒn đáģ•i thành CSV tableExtraxt.tags=CSV,Trích xuáēĨt báēŖng,trích xuáēĨt,chuyáģƒn đáģ•i @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=Split PDF by Chapters home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.validateSignature.title=Validate PDF Signature +home.validateSignature.desc=Verify digital signatures and certificates in PDF documents +validateSignature.tags=signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate + #replace-invert-color replace-color.title=Replace-Invert-Color replace-color.header=Replace-Invert Color PDF @@ -555,6 +566,7 @@ login.oauth2invalidRequest=YÃĒu cáē§u không háģŖp láģ‡ login.oauth2AccessDenied=Truy cáē­p báģ‹ táģĢ cháģ‘i login.oauth2InvalidTokenResponse=PháēŖn háģ“i token không háģŖp láģ‡ login.oauth2InvalidIdToken=Id Token không háģŖp láģ‡ +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=User is deactivated, login is currently blocked with this username. Please contact the administrator. login.alreadyLoggedIn=You are already logged in to login.alreadyLoggedIn2=devices. Please log out of the devices and try again. @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=Đáģ‡m thÃĒm tÚy cháģ‰nh autoRedact.convertPDFToImageLabel=Chuyáģƒn đáģ•i PDF thành PDF-HÃŦnh áēŖnh (DÚng đáģƒ xÃŗa văn báēŖn phía sau ô) autoRedact.submitButton=Gáģ­i +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=Hiáģƒn tháģ‹ Javascript @@ -818,8 +839,13 @@ sign.save=Save Signature sign.personalSigs=Personal Signatures sign.sharedSigs=Shared Signatures sign.noSavedSigs=No saved signatures found - - +sign.addToAll=Add to all pages +sign.delete=Delete +sign.first=First page +sign.last=Last page +sign.next=Next page +sign.previous=Previous page +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=Sáģ­a cháģ¯a repair.header=Sáģ­a cháģ¯a PDF @@ -863,7 +889,7 @@ ocr.selectText.10=Cháēŋ đáģ™ OCR ocr.selectText.11=XÃŗa hÃŦnh áēŖnh sau khi OCR (XÃŗa Táē¤T Cáēĸ hÃŦnh áēŖnh, cháģ‰ háģ¯u ích náēŋu là máģ™t pháē§n cáģ§a bưáģ›c chuyáģƒn đáģ•i) ocr.selectText.12=LoáēĄi hiáģƒn tháģ‹ (NÃĸng cao) ocr.help=Vui lÃ˛ng đáģc tài liáģ‡u này váģ cÃĄch sáģ­ dáģĨng cho cÃĄc ngôn ngáģ¯ khÃĄc và/hoáēˇc sáģ­ dáģĨng không trong docker -ocr.credit=Dáģ‹ch váģĨ này sáģ­ dáģĨng OCRmyPDF và Tesseract cho OCR. +ocr.credit=Dáģ‹ch váģĨ này sáģ­ dáģĨng qpdf và Tesseract cho OCR. ocr.submit=Xáģ­ lÃŊ PDF váģ›i OCR @@ -887,7 +913,7 @@ fileToPDF.submit=Chuyáģƒn đáģ•i sang PDF #compress compress.title=NÊn compress.header=NÊn PDF -compress.credit=Dáģ‹ch váģĨ này sáģ­ dáģĨng Ghostscript đáģƒ NÊn/Táģ‘i ưu hÃŗa PDF. +compress.credit=Dáģ‹ch váģĨ này sáģ­ dáģĨng qpdf đáģƒ NÊn/Táģ‘i ưu hÃŗa PDF. compress.selectText.1=Cháēŋ đáģ™ tháģ§ công - TáģĢ 1 đáēŋn 4 compress.selectText.2=MáģŠc đáģ™ táģ‘i ưu hÃŗa: compress.selectText.3=4 (Táģ‡ cho hÃŦnh áēŖnh văn báēŖn) @@ -944,6 +970,28 @@ multiTool.deleteSelected=Delete Selected multiTool.downloadAll=Export multiTool.downloadSelected=Export Selected +multiTool.insertPageBreak=Insert Page Break +multiTool.addFile=Add File +multiTool.rotateLeft=Rotate Left +multiTool.rotateRight=Rotate Right +multiTool.split=Split +multiTool.moveLeft=Move Left +multiTool.moveRight=Move Right +multiTool.delete=Delete +multiTool.dragDropMessage=Page(s) Selected +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=This file is password-protected. Please enter the password: +decrypt.cancelled=Operation cancelled for PDF: {0} +decrypt.noPassword=No password provided for encrypted PDF: {0} +decrypt.invalidPassword=Please try again with the correct password. +decrypt.invalidPasswordHeader=Incorrect password or unsupported encryption for PDF: {0} +decrypt.unexpectedError=There was an error processing the file. Please try again. +decrypt.serverError=Server error while decrypting: {0} +decrypt.success=File decrypted successfully. + #multiTool-advert multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! @@ -1008,6 +1056,7 @@ pdfToImage.grey=Thang đáģ™ xÃĄm pdfToImage.blackwhite=Đen tráē¯ng (CÃŗ tháģƒ máēĨt dáģ¯ liáģ‡u!) pdfToImage.submit=Chuyáģƒn đáģ•i pdfToImage.info=Python is not installed. Required for WebP conversion. +pdfToImage.placeholder=(ví dáģĨ: 1,2,8 hoáēˇc 4,7,12-16 hoáēˇc 2n-1) #addPassword @@ -1035,6 +1084,7 @@ addPassword.submit=MÃŖ hÃŗa #watermark watermark.title=ThÃĒm hÃŦnh máģ watermark.header=ThÃĒm hÃŦnh máģ +watermark.customColor=Màu văn báēŖn tÚy cháģ‰nh watermark.selectText.1=Cháģn PDF đáģƒ thÃĒm hÃŦnh máģ: watermark.selectText.2=Văn báēŖn hÃŦnh máģ: watermark.selectText.3=CáģĄ cháģ¯: @@ -1097,7 +1147,7 @@ changeMetadata.submit=Thay đáģ•i #pdfToPDFA pdfToPDFA.title=PDF sang PDF/A pdfToPDFA.header=PDF sang PDF/A -pdfToPDFA.credit=Dáģ‹ch váģĨ này sáģ­ dáģĨng ghostscript đáģƒ chuyáģƒn đáģ•i PDF/A +pdfToPDFA.credit=Dáģ‹ch váģĨ này sáģ­ dáģĨng qpdf đáģƒ chuyáģƒn đáģ•i PDF/A pdfToPDFA.submit=Chuyáģƒn đáģ•i pdfToPDFA.tip=Hiáģ‡n táēĄi không hoáēĄt đáģ™ng váģ›i nhiáģu đáē§u vào cÚng lÃēc pdfToPDFA.outputFormat=Đáģ‹nh dáēĄng đáē§u ra @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. splitByChapters.submit=Split PDF + +#File Chooser +fileChooser.click=Click +fileChooser.or=or +fileChooser.dragAndDrop=Drag & Drop +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=Drag & Drop file(s) here + +#release notes +releases.footer=Releases +releases.title=Release Notes +releases.header=Release Notes +releases.current.version=Current Release +releases.note=Release notes are only available in English + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index 52ed1c6fbf..3fdfccfdf7 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -3,11 +3,11 @@ ########### # the direction that the language is written (ltr = left to right, rtl = right to left) language.direction=ltr -addPageNumbers.fontSize=Font Size -addPageNumbers.fontName=Font Name -pdfPrompt=选拊PDF -multiPdfPrompt=选拊多ä¸ĒPDFīŧˆ2ä¸Ē或更多īŧ‰ -multiPdfDropPrompt=选拊īŧˆæˆ–æ‹–æ‹Ŋīŧ‰æ‰€éœ€įš„PDF +addPageNumbers.fontSize=字äŊ“大小 +addPageNumbers.fontName=字äŊ“åį§° +pdfPrompt=选拊 PDF +multiPdfPrompt=选拊多ä¸Ē PDFīŧˆ2ä¸Ē或更多īŧ‰ +multiPdfDropPrompt=选拊īŧˆæˆ–æ‹–æ‹Ŋīŧ‰æ‰€éœ€įš„ PDF imgPrompt=选拊回像 genericSubmit=提äē¤ processTimeWarning=č­Ļ告īŧšæ­¤čŋ‡į¨‹å¯čƒŊ需čĻå¤ščžžä¸€åˆ†é’ŸīŧŒå…ˇäŊ“æ—ļé—´å–å†ŗäēŽæ–‡äģļ大小 @@ -25,7 +25,7 @@ noFavourites=æ˛Ąæœ‰æˇģ加æ”ļč—å¤š downloadComplete=下čŊŊ厌成 bored=į­‰åž…æ—ļč§‰åž—æ— čŠīŧŸ alphabet=å­—æ¯čĄ¨ -downloadPdf=下čŊŊPDF +downloadPdf=下čŊŊ PDF text=文æœŦ font=字äŊ“ selectFillter=-- 选拊-- @@ -63,15 +63,15 @@ deleteUsernameExistsMessage=į”¨æˆˇåä¸å­˜åœ¨īŧŒæ— æŗ•删除。 downgradeCurrentUserMessage=æ— æŗ•é™įē§åŊ“å‰į”¨æˆˇįš„č§’č‰˛ disabledCurrentUserMessage=æ— æŗ•įρᔍåŊ“å‰į”¨æˆˇã€‚ downgradeCurrentUserLongMessage=æ— æŗ•é™įē§åŊ“å‰į”¨æˆˇįš„č§’č‰˛ã€‚å› æ­¤īŧŒåŊ“å‰į”¨æˆˇå°†ä¸äŧšæ˜žį¤ē。 -userAlreadyExistsOAuthMessage=č¯Ĩį”¨æˆˇåˇ˛äŊœä¸ēOAuth2į”¨æˆˇå­˜åœ¨ã€‚ -userAlreadyExistsWebMessage=č¯Ĩį”¨æˆˇåˇ˛äŊœä¸ēWebį”¨æˆˇå­˜åœ¨ã€‚ +userAlreadyExistsOAuthMessage=č¯Ĩį”¨æˆˇåˇ˛äŊœä¸ē OAuth2 į”¨æˆˇå­˜åœ¨ã€‚ +userAlreadyExistsWebMessage=č¯Ĩį”¨æˆˇåˇ˛äŊœä¸ē Web į”¨æˆˇå­˜åœ¨ã€‚ error=错蝝 oops=哎呀īŧ help=帎劊 goHomepage=čŋ”回ä¸ģéĄĩ -joinDiscord=加å…Ĩ我äģŦįš„DiscordæœåŠĄå™¨ -seeDockerHub=æŸĨįœ‹Docker Hub -visitGithub=čŽŋ问Githubäģ“åē“ +joinDiscord=加å…Ĩ我äģŦįš„ Discord æœåŠĄå™¨ +seeDockerHub=æŸĨįœ‹ Docker Hub +visitGithub=čŽŋ问 Github äģ“åē“ donate=捐æŦž color=éĸœč‰˛ sponsor=čĩžåŠŠ @@ -79,14 +79,15 @@ info=äŋĄæ¯ pro=Pro page=Page pages=Pages -loading=Loading... +loading=加čŊŊ中... addToDoc=Add to Document -reset=Reset +reset=重įŊŽ +apply=Apply -legal.privacy=Privacy Policy -legal.terms=Terms and Conditions -legal.accessibility=Accessibility -legal.cookie=Cookie Policy +legal.privacy=隐ᧁæ”ŋį­– +legal.terms=æœåŠĄæĄæŦž +legal.accessibility=无障įĸ +legal.cookie=Cookie æ”ŋį­– legal.impressum=Impressum ############### @@ -117,8 +118,8 @@ pipelineOptions.validateButton=énj蝁 ######################## # ENTERPRISE EDITION # ######################## -enterpriseEdition.button=Upgrade to Pro -enterpriseEdition.warning=This feature is only available to Pro users. +enterpriseEdition.button=升įē§åˆ° Pro į‰ˆæœŦ +enterpriseEdition.warning=此功čƒŊäģ…适ᔍäēŽ Pro į‰ˆæœŦ enterpriseEdition.yamlAdvert=Stirling PDF Pro supports YAML configuration files and other SSO features. enterpriseEdition.ssoAdvert=Looking for more user management features? Check out Stirling PDF Pro @@ -192,11 +193,11 @@ account.newPassword=æ–°å¯†į  account.changePassword=æ›´æ”šå¯†į  account.confirmNewPassword=įĄŽčŽ¤æ–°å¯†į  account.signOut=退å‡ēį™ģåŊ• -account.yourApiKey=æ‚¨įš„API密é’Ĩ +account.yourApiKey=æ‚¨įš„ API 密é’Ĩ account.syncTitle=将æĩč§ˆå™¨čŽžįŊŽä¸Žč´ĻæˆˇåŒæ­Ĩ account.settingsCompare=莞įŊŽæ¯”čžƒīŧš account.property=åąžæ€§ -account.webBrowserSettings=Webæĩč§ˆå™¨čŽžįŊŽ +account.webBrowserSettings=Web æĩč§ˆå™¨čŽžįŊŽ account.syncToBrowser=同æ­Ĩč´Ļæˆˇ -> æĩč§ˆå™¨ account.syncToAccount=同æ­Ĩč´Ļæˆˇ <- æĩč§ˆå™¨ @@ -213,11 +214,11 @@ adminUserSettings.usernameInfo=į”¨æˆˇååĒčƒŊ包åĢ字母、数字和äģĨä¸‹į‰š adminUserSettings.roles=角色 adminUserSettings.role=角色 adminUserSettings.actions=操äŊœ -adminUserSettings.apiUser=受限åˆļįš„APIį”¨æˆˇ -adminUserSettings.extraApiUser=éĸå¤–受限åˆļįš„APIį”¨æˆˇ -adminUserSettings.webOnlyUser=äģ…限Webį”¨æˆˇ +adminUserSettings.apiUser=受限åˆļįš„ API į”¨æˆˇ +adminUserSettings.extraApiUser=éĸå¤–受限åˆļįš„ API į”¨æˆˇ +adminUserSettings.webOnlyUser=äģ…限 Web į”¨æˆˇ adminUserSettings.demoUser=æŧ”į¤ēį”¨æˆˇ(无č‡ĒåŽšäš‰čŽžįŊŽ) -adminUserSettings.internalApiUser=内部APIį”¨æˆˇ +adminUserSettings.internalApiUser=内部 API į”¨æˆˇ adminUserSettings.forceChange=åŧēåˆļį”¨æˆˇåœ¨į™ģåŊ•æ—ļæ›´æ”šį”¨æˆˇå/坆᠁ adminUserSettings.submit=äŋå­˜į”¨æˆˇ adminUserSettings.changeUserRole=æ›´æ”šį”¨æˆˇč§’č‰˛ @@ -238,35 +239,37 @@ database.creationDate=创åģēæ—ļ间 database.fileSize=文äģļ大小 database.deleteBackupFile=删除备äģŊ文äģļ database.importBackupFile=å¯ŧå…Ĩ备äģŊ文äģļ +database.createBackupFile=Create Backup File database.downloadBackupFile=下čŊŊ备äģŊ文äģļ database.info_1=å¯ŧå…Ĩ数捎æ—ļīŧŒįĄŽäŋį쓿ž„æ­ŖįĄŽč‡ŗå…ŗé‡čĻã€‚åĻ‚æžœæ‚¨ä¸įĄŽåŽšč‡Ēåˇąåœ¨åšäģ€äšˆīŧŒč¯ˇå¯ģæą‚ä¸“ä¸šäēēåŖĢįš„åģēčŽŽå’Œæ”¯æŒã€‚į쓿ž„错蝝äŧšå¯ŧ致åē”ᔍፋåēæ•…éšœīŧŒį”šč‡ŗåŽŒå…¨æ— æŗ•čŋčĄŒåē”ᔍፋåēã€‚ database.info_2=上äŧ æ–‡äģļæ—ļīŧŒæ–‡äģļ名åšļ不重čĻã€‚ä¸Šäŧ åŽīŧŒæ–‡äģļ名将重å‘Ŋ名ä¸ē backup_user_yyyyMMddHHmm.sqlīŧŒäģĨįĄŽäŋå‘Ŋåč§„čŒƒįš„ä¸€č‡´æ€§ã€‚ database.submit=å¯ŧå…Ĩ备äģŊ database.importIntoDatabaseSuccessed=å¯ŧå…Ĩ数捎å瓿ˆåŠŸ +database.backupCreated=Database backup successful database.fileNotFound=æœĒ扞到文äģļ database.fileNullOrEmpty=文äģļ不čƒŊä¸ēįŠē database.failedImportFile=å¯ŧå…Ĩ文äģļå¤ąč´Ĩ -session.expired=Your session has expired. Please refresh the page and try again. -session.refreshPage=Refresh Page +session.expired=æ‚¨įš„äŧšč¯åˇ˛čŋ‡æœŸã€‚č¯ˇåˆˇæ–°éĄĩéĸåšļé‡č¯•ã€‚ +session.refreshPage=åˆˇæ–°éĄĩéĸ ############# # HOME-PAGE # ############# -home.desc=æœŦ地部įŊ˛įš„一įĢ™åŧæœåŠĄīŧŒæģĄčļŗæ‚¨įš„æ‰€æœ‰PDFéœ€æą‚ã€‚ +home.desc=æœŦ地部įŊ˛įš„一įĢ™åŧæœåŠĄīŧŒæģĄčļŗæ‚¨įš„æ‰€æœ‰ PDF éœ€æą‚ã€‚ home.searchBar=搜į´ĸ您需čĻįš„åŠŸčƒŊ... -home.viewPdf.title=æĩč§ˆPDF +home.viewPdf.title=æĩč§ˆ PDF home.viewPdf.desc=æĩč§ˆã€æŗ¨é‡Šã€æˇģ加文æœŦ或回像 viewPdf.tags=æĩč§ˆã€é˜…č¯ģã€æŗ¨é‡Šã€æ–‡æœŦ、回像 -home.multiTool.title=PDF多功čƒŊåˇĨå…ˇ -home.multiTool.desc=合åšļ、旋čŊŦ、重新排列和删除PDFéĄĩéĸ +home.multiTool.title=PDF 多功čƒŊåˇĨå…ˇ +home.multiTool.desc=合åšļ、旋čŊŦ、重新排列和删除 PDF éĄĩéĸ multiTool.tags=多åˇĨå…ˇīŧŒå¤šæ“äŊœīŧŒį”¨æˆˇį•ŒéĸīŧŒį‚šå‡ģ拖动īŧŒå‰į̝īŧŒåŽĸæˆˇį̝ home.merge.title=合åšļ -home.merge.desc=čŊģæžåˆåšļ多ä¸ĒPDFä¸ē一ä¸Ē。 +home.merge.desc=čŊģæžå°†å¤šä¸Ē PDF 合åšļ成一ä¸Ē。 merge.tags=合åšļīŧŒéĄĩéĸ操äŊœīŧŒåŽį̝īŧŒæœåŠĄå™¨į̝ home.split.title=拆分 @@ -274,16 +277,16 @@ home.split.desc=将 PDF 拆分ä¸ē多ä¸Ēæ–‡æĄŖã€‚ split.tags=éĄĩéĸ操äŊœīŧŒåˆ’分īŧŒå¤šéĄĩéĸīŧŒå‰Ē切īŧŒæœåŠĄå™¨į̝ home.rotate.title=旋čŊŦ -home.rotate.desc=旋čŊŦPDF。 +home.rotate.desc=旋čŊŦ PDF。 rotate.tags=æœåŠĄå™¨į̝ -home.imageToPdf.title=čŊŦæĸ回像到PDF -home.imageToPdf.desc=将回像īŧˆPNG、JPEG、GIFīŧ‰čŊŦæĸä¸ēPDF。 +home.imageToPdf.title=čŊŦæĸ回像到 PDF +home.imageToPdf.desc=将回像īŧˆPNG、JPEG、GIFīŧ‰čŊŦæĸä¸ē PDF。 imageToPdf.tags=čŊŦæĸ、回像、JPGã€å›žį‰‡ã€į…§į‰‡ -home.pdfToImage.title=čŊŦæĸPDF到回像 -home.pdfToImage.desc=将PDFčŊŦæĸä¸ē回像īŧˆPNG、JPEG、GIFīŧ‰ã€‚ +home.pdfToImage.title=čŊŦæĸ PDF 到回像 +home.pdfToImage.desc=将 PDF čŊŦæĸä¸ē回像īŧˆPNG、JPEG、GIFīŧ‰ã€‚ pdfToImage.tags=čŊŦæĸ、回像、JPGã€å›žį‰‡ã€į…§į‰‡ home.pdfOrganiser.title=æ•´į† @@ -291,92 +294,92 @@ home.pdfOrganiser.desc=按äģģæ„éĄēåēåˆ é™¤/重新排列éĄĩéĸ。 pdfOrganiser.tags=双éĸ、åļ数、åĨ‡æ•°ã€æŽ’åēã€į§ģ动 -home.addImage.title=在PDF中æˇģåŠ å›žį‰‡ -home.addImage.desc=将回像æˇģ加到PDFįš„æŒ‡åŽšäŊįŊŽã€‚ +home.addImage.title=在 PDF 中æˇģåŠ å›žį‰‡ +home.addImage.desc=将回像æˇģ加到 PDF įš„æŒ‡åŽšäŊįŊŽã€‚ addImage.tags=回像、JPGã€å›žį‰‡ã€į…§į‰‡ home.watermark.title=æˇģ加水印 -home.watermark.desc=在PDF中æˇģ加č‡Ē厚䚉水印。 +home.watermark.desc=在 PDF 中æˇģ加č‡Ē厚䚉水印。 watermark.tags=文æœŦã€é‡å¤ã€æ ‡į­žã€č‡ĒåŽšäš‰ã€į‰ˆæƒã€å•†æ ‡ã€å›žåƒã€JPGã€å›žį‰‡ã€į…§į‰‡ home.permissions.title=更攚权限 -home.permissions.desc=更攚PDFæ–‡æĄŖįš„æƒé™ã€‚ +home.permissions.desc=更攚 PDF æ–‡æĄŖįš„æƒé™ã€‚ permissions.tags=阅č¯ģ、写å…Ĩ、įŧ–čž‘ã€æ‰“å° home.removePages.title=删除 -home.removePages.desc=äģŽPDFæ–‡æĄŖä¸­åˆ é™¤ä¸éœ€čĻįš„éĄĩéĸ。 +home.removePages.desc=äģŽ PDF æ–‡æĄŖä¸­åˆ é™¤ä¸éœ€čĻįš„éĄĩéĸ。 removePages.tags=删除éĄĩéĸ、删除 home.addPassword.title=æˇģåŠ å¯†į  -home.addPassword.desc=äŊŋį”¨å¯†į å¯šPDFæ–‡æĄŖčŋ›čĄŒåŠ å¯†ã€‚ +home.addPassword.desc=äŊŋį”¨å¯†į å¯š PDF æ–‡æĄŖčŋ›čĄŒåŠ å¯†ã€‚ addPassword.tags=åŽ‰å…¨ã€å¯†į ã€åŠ å¯† home.removePassword.title=åˆ é™¤å¯†į  -home.removePassword.desc=äģŽPDFæ–‡æĄŖä¸­į§ģ除坆᠁äŋæŠ¤ã€‚ +home.removePassword.desc=äģŽ PDF æ–‡æĄŖä¸­į§ģ除坆᠁äŋæŠ¤ã€‚ removePassword.tags=åŽ‰å…¨ã€č§Ŗå¯†ã€å¯†į ã€åŽ‰å…¨æ€§ã€åˆ é™¤å¯†į  home.compressPdfs.title=压įŧŠ -home.compressPdfs.desc=压įŧŠPDF文äģļäģĨ减小文äģļ大小。 +home.compressPdfs.desc=压įŧŠ PDF 文äģļäģĨ减小文äģļ大小。 compressPdfs.tags=压įŧŠã€å°ã€åžŽå° home.changeMetadata.title=更攚元数捎 -home.changeMetadata.desc=更攚/删除/æˇģ加PDFæ–‡æĄŖįš„å…ƒæ•°æŽã€‚ +home.changeMetadata.desc=更攚/删除/æˇģ加 PDF æ–‡æĄŖįš„å…ƒæ•°æŽã€‚ changeMetadata.tags=标éĸ˜ã€äŊœč€…、æ—Ĩ期、创åģē、æ—ļé—´ã€å‘å¸ƒč€…ã€åˆļäŊœäēē、įģŸčŽĄæ•°æŽ -home.fileToPDF.title=将文äģļčŊŦæĸä¸ēPDF文äģļ -home.fileToPDF.desc=将几䚎所有文äģļčŊŦæĸä¸ēPDFīŧˆDOCX、PNG、XLS、PPT、TXTį­‰īŧ‰ã€‚ +home.fileToPDF.title=将文äģļčŊŦæĸä¸ē PDF 文äģļ +home.fileToPDF.desc=将几䚎所有文äģļčŊŦæĸä¸ē PDF īŧˆDOCX、PNG、XLS、PPT、TXTį­‰īŧ‰ã€‚ fileToPDF.tags=čŊŦæĸ、æ ŧåŧã€æ–‡æĄŖã€å›žį‰‡ã€åšģį¯į‰‡ã€æ–‡æœŦ、čŊŦæĸ、Office、Docs、Word、Excel、PowerPoint -home.ocr.title=čŋčĄŒOCR/æ¸…į†æ‰Ģ描 -home.ocr.desc=æ¸…į†å’Œč¯†åˆĢPDFä¸­įš„å›žåƒæ–‡æœŦīŧŒåšļ将å…ļčŊŦæĸä¸ē可įŧ–čž‘æ–‡æœŦ。 +home.ocr.title=čŋčĄŒ OCR /æ¸…į†æ‰Ģ描 +home.ocr.desc=æ¸…į†å’Œč¯†åˆĢ PDF ä¸­įš„å›žåƒæ–‡æœŦīŧŒåšļ将å…ļčŊŦæĸä¸ē可įŧ–čž‘æ–‡æœŦ。 ocr.tags=蝆åˆĢ、文æœŦ、回像、æ‰Ģ描、阅č¯ģã€č¯†åˆĢã€æŖ€æĩ‹ã€å¯įŧ–čž‘ home.extractImages.title=提取回像 -home.extractImages.desc=äģŽPDF中提取所有回像åšļäŋå­˜åˆ°åŽ‹įŧŠåŒ…中。 +home.extractImages.desc=äģŽ PDF 中提取所有回像åšļäŋå­˜åˆ°åŽ‹įŧŠåŒ…中。 extractImages.tags=å›žį‰‡ã€į…§į‰‡ã€äŋå­˜ã€åŊ’æĄŖã€åŽ‹įŧŠåŒ…、æˆĒ取、抓取 -home.pdfToPDFA.title=PDFčŊŦPDF/A -home.pdfToPDFA.desc=将PDFčŊŦæĸä¸ēPDF/AäģĨčŋ›čĄŒé•ŋ期äŋå­˜ã€‚ +home.pdfToPDFA.title=PDF čŊŦ PDF/A +home.pdfToPDFA.desc=将 PDF čŊŦæĸä¸ē PDF/A äģĨčŋ›čĄŒé•ŋ期äŋå­˜ã€‚ pdfToPDFA.tags=åŊ’æĄŖã€é•ŋ期、标准、čŊŦæĸ、存储、äŋå­˜ -home.PDFToWord.title=PDFčŊŦWord +home.PDFToWord.title=PDF čŊŦ Word home.PDFToWord.desc=将PDFčŊŦæĸä¸ēWordæ ŧåŧīŧˆDOC、DOCX和ODTīŧ‰ã€‚ PDFToWord.tags=doc、docx、odt、word、čŊŦæĸ、æ ŧåŧã€Office、Microsoftã€æ–‡æĄŖ -home.PDFToPresentation.title=PDFčŊŦæŧ”į¤ē文į¨ŋ -home.PDFToPresentation.desc=将PDFčŊŦæĸä¸ēæŧ”į¤ē文į¨ŋæ ŧåŧīŧˆPPT、PPTX和ODPīŧ‰ã€‚ +home.PDFToPresentation.title=PDF čŊŦæŧ”į¤ē文į¨ŋ +home.PDFToPresentation.desc=将 PDF čŊŦæĸä¸ēæŧ”į¤ē文į¨ŋæ ŧåŧīŧˆPPT、PPTX 和 ODPīŧ‰ã€‚ PDFToPresentation.tags=åšģį¯į‰‡ã€åą•į¤ē、Office、Microsoft -home.PDFToText.title=PDFčŊŦRTFīŧˆæ–‡æœŦīŧ‰ -home.PDFToText.desc=将PDFčŊŦæĸä¸ē文æœŦ或RTFæ ŧåŧã€‚ +home.PDFToText.title=PDF čŊŦ RTFīŧˆæ–‡æœŦīŧ‰ +home.PDFToText.desc=将PDFčŊŦæĸä¸ē文æœŦ或 RTF æ ŧåŧã€‚ PDFToText.tags=富文æœŦæ ŧåŧã€RTF、富文æœŦæ ŧåŧ -home.PDFToHTML.title=PDFčŊŦHTML -home.PDFToHTML.desc=将PDFčŊŦæĸä¸ēHTMLæ ŧåŧã€‚ +home.PDFToHTML.title=PDF čŊŦ HTML +home.PDFToHTML.desc=将 PDF čŊŦæĸä¸ē HTML æ ŧåŧã€‚ PDFToHTML.tags=įŊ‘éĄĩ内厚、æĩč§ˆå™¨å‹åĨŊ -home.PDFToXML.title=PDFčŊŦXML -home.PDFToXML.desc=将PDFčŊŦæĸä¸ēXMLæ ŧåŧã€‚ +home.PDFToXML.title=PDF čŊŦ XML +home.PDFToXML.desc=将 PDF čŊŦæĸä¸ē XML æ ŧåŧã€‚ PDFToXML.tags=数捎提取、į쓿ž„化内厚、äē’æ“äŊœã€čŊŦæĸ home.ScannerImageSplit.title=æŖ€æĩ‹/åˆ†å‰˛æ‰Ģ描回像 -home.ScannerImageSplit.desc=äģŽä¸€åŧ į…§į‰‡æˆ–PDFä¸­åˆ†å‰˛å‡ē多åŧ į…§į‰‡ã€‚ +home.ScannerImageSplit.desc=äģŽä¸€åŧ į…§į‰‡æˆ– PDF ä¸­åˆ†å‰˛å‡ē多åŧ į…§į‰‡ã€‚ ScannerImageSplit.tags=分įĻģ、č‡ĒåŠ¨æŖ€æĩ‹ã€æ‰Ģ描、多åŧ į…§į‰‡ã€æ•´į† home.sign.title=į­žå -home.sign.desc=通čŋ‡įģ˜å›žã€æ–‡å­—或回像向PDFæˇģåŠ į­žå +home.sign.desc=通čŋ‡įģ˜å›žã€æ–‡å­—或回像向 PDF æˇģåŠ į­žå sign.tags=授权、įŧŠå†™ã€æ‰‹įģ˜į­žåã€æ–‡æœŦį­žåã€å›žåƒį­žå home.flatten.title=åą•åšŗ -home.flatten.desc=äģŽPDF中删除所有äē’åŠ¨å…ƒį´ å’ŒčĄ¨å• +home.flatten.desc=äģŽ PDF 中删除所有äē’åŠ¨å…ƒį´ å’ŒčĄ¨å• flatten.tags=é™æ€ã€åœį”¨ã€éžäē¤äē’ã€įŽ€åŒ– home.repair.title=äŋŽå¤ -home.repair.desc=å°č¯•äŋŽå¤æŸå/æŸåįš„PDF +home.repair.desc=å°č¯•äŋŽå¤æŸå/æŸåįš„ PDF repair.tags=äŋŽå¤ã€æĸ复、įē æ­Ŗã€æĸ复 home.removeBlanks.title=删除įŠēį™ŊéĄĩ @@ -384,11 +387,11 @@ home.removeBlanks.desc=æŖ€æĩ‹åšļåˆ é™¤æ–‡æĄŖä¸­įš„įŠēį™ŊéĄĩ removeBlanks.tags=æ¸…į†ã€įŽ€åŒ–ã€éžå†…åŽšã€æ•´į† home.removeAnnotations.title=åˆ é™¤æ ‡æŗ¨ -home.removeAnnotations.desc=删除PDFä¸­įš„æ‰€æœ‰æ ‡æŗ¨/蝄čŽē +home.removeAnnotations.desc=删除 PDF ä¸­įš„æ‰€æœ‰æ ‡æŗ¨/蝄čŽē removeAnnotations.tags=蝄čŽē、é̘äēŽã€įŦ”čŽ°ã€æ ‡æŗ¨ã€åˆ é™¤ home.compare.title=æ¯”čžƒ -home.compare.desc=æ¯”čžƒåšļ昞į¤ē两ä¸ĒPDFæ–‡æĄŖäš‹é—´įš„åˇŽåŧ‚ +home.compare.desc=æ¯”čžƒåšļ昞į¤ē两ä¸Ē PDF æ–‡æĄŖäš‹é—´įš„åˇŽåŧ‚ compare.tags=åŒē分、寚比、更攚、分析 home.certSign.title=äŊŋᔍ蝁äšĻį­žå @@ -396,11 +399,11 @@ home.certSign.desc=äŊŋᔍ蝁äšĻ/密é’ĨīŧˆPEM/P12īŧ‰å¯šPDFčŋ›čĄŒį­žå certSign.tags=čēĢäģŊéĒŒč¯ã€PEM、P12、厘斚、加密 home.removeCertSign.title=į§ģ除蝁äšĻį­žå -home.removeCertSign.desc=į§ģ除PDFįš„č¯äšĻį­žå +home.removeCertSign.desc=į§ģ除 PDF įš„č¯äšĻį­žå removeCertSign.tags=čēĢäģŊéĒŒč¯ã€PEM、P12、厘斚、加密 home.pageLayout.title=多éĄĩå¸ƒåą€ -home.pageLayout.desc=将PDFæ–‡æĄŖįš„å¤šä¸ĒéĄĩéĸ合åšļ成一éĄĩ +home.pageLayout.desc=将 PDF æ–‡æĄŖįš„å¤šä¸ĒéĄĩéĸ合åšļ成一éĄĩ pageLayout.tags=合åšļ、įģ„åˆã€å•č§†å›žã€æ•´į† home.scalePages.title=č°ƒæ•´éĄĩéĸå°ē寸/įŧŠæ”ž @@ -408,86 +411,90 @@ home.scalePages.desc=č°ƒæ•´éĄĩéĸ及/或å…ļå†…åŽšįš„å°ē寸/įŧŠæ”ž scalePages.tags=č°ƒæ•´å¤§å°ã€äŋŽæ”šã€å°ē寸、适åē” home.pipeline.title=æĩæ°´įēŋīŧˆé̘įē§į‰ˆīŧ‰ -home.pipeline.desc=通čŋ‡åŽšäš‰æĩæ°´įēŋ脚æœŦ在PDF上čŋčĄŒå¤šä¸Ē操äŊœ +home.pipeline.desc=通čŋ‡åŽšäš‰æĩæ°´įēŋ脚æœŦ在 PDF 上čŋčĄŒå¤šä¸Ē操äŊœ pipeline.tags=č‡Ē动化、éĄēåēã€č„šæœŦåŒ–ã€æ‰šå¤„į† home.add-page-numbers.title=æˇģ加éĄĩ᠁ home.add-page-numbers.desc=åœ¨æ–‡æĄŖįš„æŒ‡åŽšäŊįŊŽæˇģ加éĄĩ᠁ add-page-numbers.tags=分éĄĩã€æ ‡į­žã€æ•´į†ã€į´ĸåŧ• -home.auto-rename.title=č‡Ē动重å‘Ŋ名PDF文äģļ -home.auto-rename.desc=æ šæŽæŖ€æĩ‹åˆ°įš„æ ‡éĸ˜č‡Ē动寚PDF文äģļčŋ›čĄŒé‡å‘Ŋ名 +home.auto-rename.title=č‡Ē动重å‘Ŋ名 PDF 文äģļ +home.auto-rename.desc=æ šæŽæŖ€æĩ‹åˆ°įš„æ ‡éĸ˜č‡Ē动寚 PDF 文äģļčŋ›čĄŒé‡å‘Ŋ名 auto-rename.tags=č‡ĒåŠ¨æŖ€æĩ‹ã€åŸēäēŽæ ‡éĸ˜ã€æ•´į†ã€é‡æ–°æ ‡čް home.adjust-contrast.title=č°ƒæ•´éĸœč‰˛/寚比åēĻ -home.adjust-contrast.desc=č°ƒæ•´PDFįš„å¯šæ¯”åēĻ、éĨąå’ŒåēĻ和äēŽåēĻ +home.adjust-contrast.desc=č°ƒæ•´ PDF įš„å¯šæ¯”åēĻ、éĨąå’ŒåēĻ和äēŽåēĻ adjust-contrast.tags=éĸœč‰˛æ Ąæ­Ŗã€č°ƒčŠ‚ã€äŋŽæ”šã€åĸžåŧē -home.crop.title=誁å‰ĒPDF -home.crop.desc=誁å‰ĒPDFäģĨ减小å…ļ文äģļ大小īŧˆäŋį•™æ–‡æœŦīŧīŧ‰ +home.crop.title=誁å‰Ē PDF +home.crop.desc=誁å‰Ē PDF äģĨ减小å…ļ文äģļ大小īŧˆäŋį•™æ–‡æœŦīŧīŧ‰ crop.tags=äŋŽå‰Ē、įŧŠå°ã€įŧ–čž‘ã€åŊĸįŠļ home.autoSplitPDF.title=č‡Ē动拆分éĄĩéĸ -home.autoSplitPDF.desc=äŊŋį”¨į‰Šį†æ‰Ģ描éĄĩéĸåˆ†å‰˛å™¨QRäģŖį č‡Ē动拆分æ‰Ģæįš„PDF -autoSplitPDF.tags=åŸēäēŽQRį ã€åˆ†įĻģ、æ‰Ģæåˆ†å‰˛ã€æ•´į† +home.autoSplitPDF.desc=äŊŋį”¨į‰Šį†æ‰Ģ描éĄĩéĸåˆ†å‰˛å™¨ QR äģŖį č‡Ē动拆分æ‰Ģæįš„ PDF +autoSplitPDF.tags=åŸēäēŽ QR į ã€åˆ†įĻģ、æ‰Ģæåˆ†å‰˛ã€æ•´į† home.sanitizePdf.title=æ¸…į† -home.sanitizePdf.desc=äģŽPDF文äģļä¸­åˆ é™¤č„šæœŦ和å…ļäģ–å…ƒį´  +home.sanitizePdf.desc=äģŽ PDF 文äģļä¸­åˆ é™¤č„šæœŦ和å…ļäģ–å…ƒį´  sanitizePdf.tags=æ¸…į†ã€åŽ‰å…¨ã€åŽ‰å…¨ã€åˆ é™¤å¨čƒ -home.URLToPDF.title=URL/įŊ‘įĢ™čŊŦPDF -home.URLToPDF.desc=将äģģäŊ•http(s)URLčŊŦæĸä¸ēPDF +home.URLToPDF.title=URL/įŊ‘įĢ™čŊŦ PDF +home.URLToPDF.desc=将äģģäŊ• http(s)URL čŊŦæĸä¸ēPDF URLToPDF.tags=įŊ‘éĄĩæ•čŽˇã€äŋå­˜įŊ‘éĄĩ、įŊ‘éĄĩčŊŦæ–‡æĄŖã€åŊ’æĄŖ -home.HTMLToPDF.title=HTMLčŊŦPDF -home.HTMLToPDF.desc=将äģģäŊ•HTML文äģ￈–zip文äģļčŊŦæĸä¸ēPDF +home.HTMLToPDF.title=HTML čŊŦ PDF +home.HTMLToPDF.desc=将äģģäŊ• HTML 文äģ￈– zip 文äģļčŊŦæĸä¸ē PDF HTMLToPDF.tags=æ ‡čŽ°ã€įŊ‘éĄĩ内厚、čŊŦæĸ、čŊŦæĸ -home.MarkdownToPDF.title=MarkdownčŊŦPDF -home.MarkdownToPDF.desc=将äģģäŊ•Markdown文äģļčŊŦæĸä¸ēPDF +home.MarkdownToPDF.title=Markdown čŊŦ PDF +home.MarkdownToPDF.desc=将äģģäŊ• Markdown 文äģļčŊŦæĸä¸ē PDF MarkdownToPDF.tags=æ ‡čŽ°ã€įŊ‘éĄĩ内厚、čŊŦæĸ、čŊŦæĸ -home.getPdfInfo.title=čŽˇå–PDFįš„æ‰€æœ‰äŋĄæ¯ -home.getPdfInfo.desc=čŽˇå–PDFįš„æ‰€æœ‰å¯čƒŊįš„äŋĄæ¯ +home.getPdfInfo.title=čŽˇå– PDF įš„æ‰€æœ‰äŋĄæ¯ +home.getPdfInfo.desc=čŽˇå– PDF įš„æ‰€æœ‰å¯čƒŊįš„äŋĄæ¯ getPdfInfo.tags=äŋĄæ¯ã€æ•°æŽã€įģŸčŽĄã€įģŸčŽĄæ•°æŽ home.extractPage.title=提取éĄĩéĸ -home.extractPage.desc=äģŽPDFä¸­æå–é€‰åŽšįš„éĄĩéĸ +home.extractPage.desc=äģŽ PDF ä¸­æå–é€‰åŽšįš„éĄĩéĸ extractPage.tags=提取 -home.PdfToSinglePage.title=PDFčŊŦ单一大éĄĩ -home.PdfToSinglePage.desc=将所有PDFéĄĩéĸ合åšļä¸ē一ä¸Ēå¤§įš„å•éĄĩ +home.PdfToSinglePage.title=PDF čŊŦ单一大éĄĩ +home.PdfToSinglePage.desc=将所有 PDF éĄĩéĸ合åšļä¸ē一ä¸Ēå¤§įš„å•éĄĩ PdfToSinglePage.tags=单éĄĩ -home.showJS.title=昞į¤ēJavaScript -home.showJS.desc=搜į´ĸåšļ昞į¤ēåĩŒå…Ĩ到PDFä¸­įš„äģģäŊ•JavaScriptäģŖį  +home.showJS.title=昞į¤ē JavaScript +home.showJS.desc=搜į´ĸåšļ昞į¤ēåĩŒå…Ĩ到 PDF ä¸­įš„äģģäŊ• JavaScript äģŖį  showJS.tags=JavaScript home.autoRedact.title=č‡Ē动删除 -home.autoRedact.desc=æ šæŽčž“å…Ĩ文æœŦč‡Ē动删除īŧˆčφᛖīŧ‰PDFä¸­įš„æ–‡æœŦ +home.autoRedact.desc=æ šæŽčž“å…Ĩ文æœŦč‡Ē动删除īŧˆčφᛖīŧ‰PDF ä¸­įš„æ–‡æœŦ autoRedact.tags=č„ąæ•ã€éšč—ã€æļ‚éģ‘ã€æ ‡čŽ°ã€ä¸å¯č§ -home.tableExtraxt.title=PDFčŊŦCSV -home.tableExtraxt.desc=äģŽPDFä¸­æå–čĄ¨æ ŧåšļ将å…ļčŊŦæĸä¸ēCSV +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + +home.tableExtraxt.title=PDF čŊŦ CSV +home.tableExtraxt.desc=äģŽ PDF ä¸­æå–čĄ¨æ ŧåšļ将å…ļčŊŦæĸä¸ē CSV tableExtraxt.tags=CSVã€čĄ¨æ ŧ提取、提取、čŊŦæĸ -home.autoSizeSplitPDF.title=č‡Ē动栚捎大小/æ•°į›Žæ‹†åˆ†PDF -home.autoSizeSplitPDF.desc=将单ä¸ĒPDF拆分ä¸ē多ä¸Ēæ–‡æĄŖīŧŒåŸēäēŽå¤§å°ã€éĄĩæ•°æˆ–æ–‡æĄŖæ•° +home.autoSizeSplitPDF.title=č‡Ē动栚捎大小/æ•°į›Žæ‹†åˆ† PDF +home.autoSizeSplitPDF.desc=将单ä¸Ē PDF 拆分ä¸ē多ä¸Ēæ–‡æĄŖīŧŒåŸēäēŽå¤§å°ã€éĄĩæ•°æˆ–æ–‡æĄŖæ•° autoSizeSplitPDF.tags=pdf、拆分、文äģļ、įģ„įģ‡ -home.overlay-pdfs.title=叠加PDF -home.overlay-pdfs.desc=将PDF叠加在åĻ一ä¸ĒPDF上 +home.overlay-pdfs.title=叠加 PDF +home.overlay-pdfs.desc=将 PDF 叠加在åĻ一ä¸Ē PDF 上 overlay-pdfs.tags=叠加 -home.split-by-sections.title=拆分PDF成小块 -home.split-by-sections.desc=将PDFįš„æ¯ä¸€éĄĩåˆ†å‰˛æˆæ›´å°įš„æ°´åšŗå’Œåž‚į›´įš„éƒ¨åˆ† +home.split-by-sections.title=拆分 PDF 成小块 +home.split-by-sections.desc=将 PDF įš„æ¯ä¸€éĄĩåˆ†å‰˛æˆæ›´å°įš„æ°´åšŗå’Œåž‚į›´įš„éƒ¨åˆ† split-by-sections.tags=įĢ čŠ‚æ‹†åˆ†ã€åˆ†å‰˛ã€č‡Ē厚䚉 home.AddStampRequest.title=æˇģ加回įĢ  @@ -495,30 +502,34 @@ home.AddStampRequest.desc=在指厚äŊįŊŽæˇģ加文æœŦæˆ–å›žį‰‡å›žįĢ  AddStampRequest.tags=回įĢ ã€æˇģåŠ å›žį‰‡ã€å›žį‰‡åą…ä¸­ã€æ°´å°ã€PDF、åĩŒå…Ĩ、č‡Ē厚䚉 -home.PDFToBook.title=PDFčŊŦį”ĩ子äšĻ -home.PDFToBook.desc=äŊŋᔍCalibre将PDFčŊŦæĸ成į”ĩ子äšĻ/æŧĢį”ģ +home.PDFToBook.title=PDF čŊŦį”ĩ子äšĻ +home.PDFToBook.desc=äŊŋᔍ Calibre 将 PDF čŊŦæĸ成į”ĩ子äšĻ/æŧĢį”ģ PDFToBook.tags=į”ĩ子äšĻ、æŧĢį”ģ、Calibre、čŊŦæĸ、æ—ĨæœŦæŧĢį”ģ、äēšéŠŦ逊、kindle -home.BookToPDF.title=į”ĩ子äšĻčŊŦPDF -home.BookToPDF.desc=äŊŋᔍCalibre将į”ĩ子äšĻ/æŧĢį”ģčŊŦæĸ成PDF +home.BookToPDF.title=į”ĩ子äšĻčŊŦ PDF +home.BookToPDF.desc=äŊŋᔍ Calibre 将į”ĩ子äšĻ/æŧĢį”ģčŊŦæĸ成 PDF BookToPDF.tags=į”ĩ子äšĻ、æŧĢį”ģ、Calibre、čŊŦæĸ、æ—ĨæœŦæŧĢį”ģ、äēšéŠŦ逊、kindle home.removeImagePdf.title=删除回像 -home.removeImagePdf.desc=删除回像减少PDF大小 +home.removeImagePdf.desc=删除回像减少 PDF 大小 removeImagePdf.tags=删除回像, éĄĩéĸ操äŊœ, 后į̝, æœåŠĄį̝ -home.splitPdfByChapters.title=Split PDF by Chapters -home.splitPdfByChapters.desc=Split a PDF into multiple files based on its chapter structure. -splitPdfByChapters.tags=split,chapters,bookmarks,organize +home.splitPdfByChapters.title=按įĢ čŠ‚æ‹†åˆ† PDF +home.splitPdfByChapters.desc=栚捎å…ļįĢ čŠ‚į쓿ž„å°† PDF 拆分ä¸ē多ä¸Ē文äģļ。 +splitPdfByChapters.tags=åˆ†å‰˛,įĢ čŠ‚,äšĻį­ž,įģ„įģ‡ + +home.validateSignature.title=énj蝁 PDF į­žå +home.validateSignature.desc=énj蝁 PDF æ–‡æĄŖä¸­įš„æ•°å­—į­žåå’Œč¯äšĻ +validateSignature.tags=į­žåīŧŒénj蝁īŧŒénj蝁īŧŒPDFīŧŒč¯äšĻīŧŒæ•°å­—į­žåīŧŒéĒŒč¯į­žåīŧŒénj蝁蝁äšĻ #replace-invert-color -replace-color.title=Replace-Invert-Color -replace-color.header=Replace-Invert Color PDF -home.replaceColorPdf.title=Replace and Invert Color -home.replaceColorPdf.desc=Replace color for text and background in PDF and invert full color of pdf to reduce file size +replace-color.title=æ›ŋæĸ-反čŊŦ-éĸœč‰˛ +replace-color.header=æ›ŋæĸ-反čŊŦ PDF éĸœč‰˛ +home.replaceColorPdf.title=æ›ŋæĸ和反čŊŦéĸœč‰˛ +home.replaceColorPdf.desc=æ›ŋæĸ PDF 中文æœŦå’ŒčƒŒæ™¯įš„éĸœč‰˛īŧŒåšļ将PDFå…¨č‰˛åčŊŦäģĨ减小文äģļ大小 replaceColorPdf.tags=Replace Color,Page operations,Back end,server side -replace-color.selectText.1=Replace or Invert color Options +replace-color.selectText.1=æ›ŋæĸ或反čŊŦéĸœč‰˛é€‰éĄš replace-color.selectText.2=Default(Default high contrast colors) replace-color.selectText.3=Custom(Customized colors) replace-color.selectText.4=Full-Invert(Invert all colors) @@ -547,18 +558,19 @@ login.invalid=į”¨æˆˇåæˆ–å¯†į æ— æ•ˆã€‚ login.locked=æ‚¨įš„č´Ļæˆˇåˇ˛čĸĢ锁厚。 login.signinTitle=蝎į™ģåŊ• login.ssoSignIn=通čŋ‡å•į‚šį™ģåŊ•į™ģåŊ• -login.oauth2AutoCreateDisabled=OAuth2č‡Ē动创åģēį”¨æˆˇåˇ˛įρᔍ +login.oauth2AutoCreateDisabled=OAuth2 č‡Ē动创åģēį”¨æˆˇåˇ˛įρᔍ login.oauth2AdminBlockedUser=į›Žå‰åˇ˛é˜ģæ­ĸæœĒæŗ¨å†Œį”¨æˆˇįš„æŗ¨å†Œæˆ–į™ģåŊ•ã€‚č¯ˇč”įŗģįŽĄį†å‘˜ã€‚ login.oauth2RequestNotFound=扞不到éĒŒč¯č¯ˇæą‚ login.oauth2InvalidUserInfoResponse=æ— æ•ˆįš„į”¨æˆˇäŋĄæ¯å“åē” login.oauth2invalidRequest=æ— æ•ˆč¯ˇæą‚ login.oauth2AccessDenied=拒įģčŽŋ问 -login.oauth2InvalidTokenResponse=æ— æ•ˆįš„Token响åē” -login.oauth2InvalidIdToken=æ— æ•ˆįš„Token +login.oauth2InvalidTokenResponse=æ— æ•ˆįš„ Token 响åē” +login.oauth2InvalidIdToken=æ— æ•ˆįš„ Token +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=į”¨æˆˇčĸĢįρᔍīŧŒį™ģåŊ•厞čĸĢé˜ģæ­ĸã€‚č¯ˇč”įŗģįŽĄį†å‘˜ã€‚ -login.alreadyLoggedIn=You are already logged in to -login.alreadyLoggedIn2=devices. Please log out of the devices and try again. -login.toManySessions=You have too many active sessions +login.alreadyLoggedIn=æ‚¨åˇ˛įģį™ģåŊ•到äē† +login.alreadyLoggedIn2=čŽžå¤‡īŧŒč¯ˇæŗ¨é”€čŽžå¤‡åŽé‡č¯•ã€‚ +login.toManySessions=äŊ åˇ˛įģæœ‰å¤Ēå¤šįš„äŧšč¯äē†ã€‚č¯ˇæŗ¨é”€ä¸€äē›čŽžå¤‡åŽé‡č¯•ã€‚ #auto-redact autoRedact.title=č‡Ē动删除 @@ -572,17 +584,26 @@ autoRedact.customPaddingLabel=č‡Ē厚䚉éĸå¤–é—´čˇ autoRedact.convertPDFToImageLabel=将PDFčŊŦæĸä¸ēPDF-Imageīŧˆį”¨äēŽåˆ é™¤æ–šæĄ†åŽéĸįš„æ–‡æœŦīŧ‰ autoRedact.submitButton=提äē¤ +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS -showJS.title=昞į¤ēJavaScript -showJS.header=昞į¤ēJavaScript -showJS.downloadJS=下čŊŊJavaScript +showJS.title=昞į¤ē JavaScript +showJS.header=昞į¤ē JavaScript +showJS.downloadJS=下čŊŊ JavaScript showJS.submit=昞į¤ē #pdfToSinglePage -pdfToSinglePage.title=PDFčŊŦ单éĄĩ -pdfToSinglePage.header=将PDFčŊŦæĸä¸ē单éĄĩ +pdfToSinglePage.title=PDF čŊŦ单éĄĩ +pdfToSinglePage.header=将 PDF čŊŦæĸä¸ē单éĄĩ pdfToSinglePage.submit=čŊŦä¸ē单éĄĩ @@ -594,34 +615,34 @@ pageExtracter.placeholder=īŧˆäž‹åĻ‚īŧš1,2,8 或 4,7,12-16 或 2n-1īŧ‰ #getPdfInfo -getPdfInfo.title=čŽˇå–PDFäŋĄæ¯ -getPdfInfo.header=čŽˇå–PDFäŋĄæ¯ +getPdfInfo.title=čŽˇå– PDF äŋĄæ¯ +getPdfInfo.header=čŽˇå– PDF äŋĄæ¯ getPdfInfo.submit=čŽˇå–äŋĄæ¯ -getPdfInfo.downloadJson=下čŊŊJSON +getPdfInfo.downloadJson=下čŊŊ JSON #markdown-to-pdf -MarkdownToPDF.title=MarkdownčŊŦPDF -MarkdownToPDF.header=将MarkdownčŊŦæĸä¸ēPDF +MarkdownToPDF.title=Markdown čŊŦ PDF +MarkdownToPDF.header=将 Markdown čŊŦæĸä¸ē PDF MarkdownToPDF.submit=čŊŦæĸ MarkdownToPDF.help=æ­Ŗåœ¨åŠĒ力中 -MarkdownToPDF.credit=æ­¤æœåŠĄäŊŋᔍWeasyPrintčŋ›čĄŒæ–‡äģļčŊŦæĸ。 +MarkdownToPDF.credit=æ­¤æœåŠĄäŊŋᔍ WeasyPrint čŋ›čĄŒæ–‡äģļčŊŦæĸ。 #url-to-pdf -URLToPDF.title=URLčŊŦPDF -URLToPDF.header=将URLčŊŦæĸä¸ēPDF +URLToPDF.title=URL čŊŦ PDF +URLToPDF.header=将 URL čŊŦæĸä¸ē PDF URLToPDF.submit=čŊŦæĸ -URLToPDF.credit=æ­¤æœåŠĄäŊŋᔍWeasyPrintčŋ›čĄŒæ–‡äģļčŊŦæĸ。 +URLToPDF.credit=æ­¤æœåŠĄäŊŋᔍ WeasyPrint čŋ›čĄŒæ–‡äģļčŊŦæĸ。 #html-to-pdf -HTMLToPDF.title=HTMLčŊŦPDF -HTMLToPDF.header=将HTMLčŊŦæĸä¸ēPDF -HTMLToPDF.help=æŽĨ受HTML文äģļ和包åĢæ‰€éœ€įš„html/css/imagesį­‰įš„ZIP文äģļ +HTMLToPDF.title=HTML čŊŦ PDF +HTMLToPDF.header=将 HTML čŊŦæĸä¸ē PDF +HTMLToPDF.help=æŽĨ受 HTML 文äģļ和包åĢæ‰€éœ€įš„ html/css/images į­‰įš„ ZIP 文äģļ HTMLToPDF.submit=čŊŦæĸ -HTMLToPDF.credit=æ­¤æœåŠĄäŊŋᔍWeasyPrintčŋ›čĄŒæ–‡äģļčŊŦæĸ。 +HTMLToPDF.credit=æ­¤æœåŠĄäŊŋᔍ WeasyPrint čŋ›čĄŒæ–‡äģļčŊŦæĸ。 HTMLToPDF.zoom=įŊ‘įĢ™æ˜žį¤ēįŧŠæ”žįē§åˆĢ HTMLToPDF.pageWidth=éĄĩéĸåŽŊåēĻ-äģĨåŽ˜įąŗä¸ē单äŊīŧˆåĄĢįŠē则äŊŋᔍéģ˜čޤå€ŧīŧ‰ HTMLToPDF.pageHeight=éĄĩéĸé̘åēĻ-äģĨåŽ˜įąŗä¸ē单äŊīŧˆåĄĢįŠē则äŊŋᔍéģ˜čޤå€ŧīŧ‰ @@ -631,7 +652,7 @@ HTMLToPDF.marginLeft=éĄĩéĸåˇĻ上边距-äģĨæ¯Ģįąŗä¸ē单äŊīŧˆåĄĢįŠē则äŊŋᔍéģ˜ HTMLToPDF.marginRight=éĄĩéĸåŗčžščˇ-äģĨæ¯Ģįąŗä¸ē单äŊīŧˆåĄĢįŠē则äŊŋᔍéģ˜čޤå€ŧīŧ‰ HTMLToPDF.printBackground=éĄĩéĸčƒŒæ™¯æ¸˛æŸ“ HTMLToPDF.defaultHeader=吝ᔍéģ˜čޤéĄĩ头īŧˆæ–‡äģļåį§°å’ŒéĄĩ᠁īŧ‰ -HTMLToPDF.cssMediaType=更æĸéĄĩéĸįš„CSSåĒ’äŊ“įąģ型。 +HTMLToPDF.cssMediaType=更æĸéĄĩéĸįš„ CSS åĒ’äŊ“įąģ型。 HTMLToPDF.none=无 HTMLToPDF.print=打印 HTMLToPDF.screen=åąåš• @@ -656,9 +677,9 @@ AddStampRequest.submit=提äē¤ #sanitizePDF -sanitizePDF.title=æ¸…į†PDF -sanitizePDF.header=æ¸…į†PDF文äģļ -sanitizePDF.selectText.1=į§ģ除JavaScript操äŊœ +sanitizePDF.title=æ¸…į† PDF +sanitizePDF.header=æ¸…į† PDF 文äģļ +sanitizePDF.selectText.1=į§ģ除 JavaScript 操äŊœ sanitizePDF.selectText.2=į§ģ除åĩŒå…Ĩįš„æ–‡äģļ sanitizePDF.selectText.3=į§ģ除元数捎 sanitizePDF.selectText.4=į§ģ除链æŽĨ @@ -677,13 +698,13 @@ addPageNumbers.selectText.5=æˇģ加éĄĩį įš„éĄĩ数 addPageNumbers.selectText.6=č‡Ē厚䚉文æœŦ addPageNumbers.customTextDesc=č‡Ē厚䚉文æœŦ addPageNumbers.numberPagesDesc=čρæˇģ加éĄĩį įš„éĄĩ数īŧŒéģ˜čޤä¸ē“所有”īŧŒäšŸå¯äģĨæŽĨ受1-5或2,5,9į­‰ -addPageNumbers.customNumberDesc=éģ˜čޤä¸ē{n}īŧŒäšŸå¯äģĨæŽĨ受“įŦŦ{n}éĄĩ/å…ą{total}éĄĩ”īŧŒâ€œæ–‡æœŦ-{n}”īŧŒâ€œ{filename}-{n}” +addPageNumbers.customNumberDesc=éģ˜čޤä¸ē {n}īŧŒäšŸå¯äģĨæŽĨ受“įŦŦ {n} éĄĩ/å…ą {total} éĄĩ”īŧŒâ€œæ–‡æœŦ-{n}”īŧŒâ€œ{filename}-{n}” addPageNumbers.submit=æˇģ加éĄĩ᠁ #auto-rename auto-rename.title=č‡Ē动重å‘Ŋ名 -auto-rename.header=č‡Ē动重å‘Ŋ名PDF +auto-rename.header=č‡Ē动重å‘Ŋ名 PDF auto-rename.submit=č‡Ē动重å‘Ŋ名 @@ -698,19 +719,19 @@ adjustContrast.download=下čŊŊ #crop crop.title=誁å‰Ē -crop.header=誁å‰ĒPDF +crop.header=誁å‰Ē PDF crop.submit=提äē¤ #autoSplitPDF -autoSplitPDF.title=č‡Ē动拆分PDF -autoSplitPDF.header=č‡Ē动拆分PDF +autoSplitPDF.title=č‡Ē动拆分 PDF +autoSplitPDF.header=č‡Ē动拆分 PDF autoSplitPDF.description=打印、插å…Ĩ、æ‰Ģ描、上äŧ īŧŒčŽŠæˆ‘äģŦč‡Ē动分įĻģæ‚¨įš„æ–‡æĄŖã€‚无需手动排åēã€‚ autoSplitPDF.selectText.1=äģŽä¸‹éĸ打印一äē›åˆ†éš”éĄĩīŧˆéģ‘į™Ŋæ‰“å°åŗå¯īŧ‰ã€‚ autoSplitPDF.selectText.2=åœ¨æ–‡æĄŖäš‹é—´æ’å…Ĩ分隔éĄĩīŧŒä¸€æŦĄæ€§æ‰Ģææ‰€æœ‰æ–‡æĄŖã€‚ -autoSplitPDF.selectText.3=上äŧ å•ä¸Ē大型æ‰Ģæįš„PDF文äģļīŧŒčŽŠStirling PDFå¤„į†å‰Šä¸‹įš„ä狿ƒ…。 +autoSplitPDF.selectText.3=上äŧ å•ä¸Ē大型æ‰Ģæįš„ PDF 文äģļīŧŒčŽŠ Stirling PDF å¤„į†å‰Šä¸‹įš„ä狿ƒ…。 autoSplitPDF.selectText.4=分隔éĄĩäŧšč‡ĒåŠ¨æŖ€æĩ‹å’Œåˆ é™¤īŧŒįĄŽäŋæœ€į숿–‡æĄŖæ•´æ´ã€‚ -autoSplitPDF.formPrompt=提äē¤åŒ…åĢStirling-PDF分隔éĄĩįš„PDFīŧš +autoSplitPDF.formPrompt=提äē¤åŒ…åĢ Stirling-PDF 分隔éĄĩįš„ PDFīŧš autoSplitPDF.duplexMode=双éĸæ¨Ąåŧīŧˆæ­Ŗåéĸæ‰Ģ描īŧ‰ autoSplitPDF.dividerDownload1=下čŊŊ“č‡Ē动拆分分隔éĄĩīŧˆæœ€å°åŒ–īŧ‰.pdf” autoSplitPDF.dividerDownload2=下čŊŊ“č‡Ē动拆分分隔éĄĩīŧˆå¸Ļ指å¯ŧč¯´æ˜Žīŧ‰.pdf” @@ -733,34 +754,34 @@ pageLayout.submit=提äē¤ scalePages.title=č°ƒæ•´éĄĩéĸįŧŠæ”žæ¯”äž‹ scalePages.header=č°ƒæ•´éĄĩéĸįŧŠæ”žæ¯”äž‹ scalePages.pageSize=æ–‡æĄŖéĄĩéĸįš„å°ē寸。 -scalePages.keepPageSize=Original Size +scalePages.keepPageSize=äŋæŒéĄĩéĸ原å°ē寸 scalePages.scaleFactor=éĄĩéĸįš„įŧŠæ”žįē§åˆĢīŧˆčŖå‰Ēīŧ‰ã€‚ scalePages.submit=提äē¤ #certSign certSign.title=蝁äšĻį­žå -certSign.header=äŊŋį”¨æ‚¨įš„č¯äšĻį­žåPDFīŧˆčŋ›čĄŒä¸­īŧ‰ -certSign.selectPDF=选拊čĻį­žåįš„PDF文äģļīŧš -certSign.jksNote=æŗ¨æ„īŧšåĻ‚æžœæ‚¨įš„č¯äšĻįąģ型æœĒ在下éĸ列å‡ēīŧŒč¯ˇäŊŋᔍkeytoolå‘Ŋäģ¤čĄŒåˇĨ兎将å…ļčŊŦæĸä¸ēJava Keystoreīŧˆ.jksīŧ‰æ–‡äģļ。 į„ļ后īŧŒé€‰æ‹Šä¸‹éĸįš„.jks文äģļé€‰éĄšã€‚ +certSign.header=äŊŋį”¨æ‚¨įš„č¯äšĻį­žå PDFīŧˆčŋ›čĄŒä¸­īŧ‰ +certSign.selectPDF=选拊čĻį­žåįš„ PDF 文äģļīŧš +certSign.jksNote=æŗ¨æ„īŧšåĻ‚æžœæ‚¨įš„č¯äšĻįąģ型æœĒ在下éĸ列å‡ēīŧŒč¯ˇäŊŋᔍkeytoolå‘Ŋäģ¤čĄŒåˇĨ兎将å…ļčŊŦæĸä¸ē Java Keystoreīŧˆ.jksīŧ‰æ–‡äģļ。 į„ļ后īŧŒé€‰æ‹Šä¸‹éĸįš„.jks文äģļé€‰éĄšã€‚ certSign.selectKey=é€‰æ‹Šæ‚¨įš„į§é’Ĩ文äģļīŧˆPKCS#8æ ŧåŧīŧŒå¯äģĨ是.pem或.derīŧ‰īŧš certSign.selectCert=é€‰æ‹Šæ‚¨įš„č¯äšĻ文äģļīŧˆX.509æ ŧåŧīŧŒå¯äģĨ是.pem或.derīŧ‰īŧš -certSign.selectP12=é€‰æ‹Šæ‚¨įš„PKCS#12密é’Ĩå瓿–‡äģļīŧˆ.p12或.pfxīŧ‰īŧˆå¯é€‰īŧŒåĻ‚æžœæäž›īŧŒåރåē”č¯Ĩ包åĢæ‚¨įš„į§é’Ĩå’Œč¯äšĻīŧ‰īŧš -certSign.selectJKS=选拊äŊ įš„Java Keystore文äģļ (.jks或.keystore): +certSign.selectP12=é€‰æ‹Šæ‚¨įš„ PKCS#12 密é’Ĩå瓿–‡äģļīŧˆ.p12或.pfxīŧ‰īŧˆå¯é€‰īŧŒåĻ‚æžœæäž›īŧŒåރåē”č¯Ĩ包åĢæ‚¨įš„į§é’Ĩå’Œč¯äšĻīŧ‰īŧš +certSign.selectJKS=选拊äŊ įš„ Java Keystore 文äģļ (.jks或.keystore): certSign.certType=蝁äšĻįąģ型 certSign.password=输å…Ĩæ‚¨įš„å¯†é’Ĩå瓿ˆ–ᧁé’Ĩ坆᠁īŧˆåĻ‚æžœæœ‰īŧ‰īŧš certSign.showSig=昞į¤ēį­žå certSign.reason=原因 certSign.location=äŊįŊŽ certSign.name=åį§° -certSign.showLogo=Show Logo -certSign.submit=įģ™PDFį­žå +certSign.showLogo=昞į¤ē Logo +certSign.submit=įģ™ PDF į­žå #removeCertSign removeCertSign.title=į§ģ除蝁äšĻį­žå -removeCertSign.header=į§ģ除PDFįš„č¯äšĻį­žå -removeCertSign.selectPDF=选拊PDF文äģļīŧš +removeCertSign.header=į§ģ除 PDF įš„č¯äšĻį­žå +removeCertSign.selectPDF=选拊 PDF 文äģļīŧš removeCertSign.submit=į§ģé™¤į­žå @@ -788,21 +809,21 @@ compare.highlightColor.2=é̘äēŽéĸœč‰˛ 2: compare.document.1=æ–‡æĄŖ 1 compare.document.2=æ–‡æĄŖ 2 compare.submit=æ¯”čžƒ -compare.complex.message=One or both of the provided documents are large files, accuracy of comparison may be reduced -compare.large.file.message=One or Both of the provided documents are too large to process -compare.no.text.message=One or both of the selected PDFs have no text content. Please choose PDFs with text for comparison. +compare.complex.message=æäž›įš„ä¸€äģŊ或两äģŊ文äģ￘¯å¤§æ–‡äģļīŧŒæ¯”čžƒįš„å‡†įĄŽæ€§å¯čƒŊäŧšé™äŊŽã€‚ +compare.large.file.message=æäž›įš„æ–‡äģļ中有一äģŊ或两äģŊčŋ‡å¤§īŧŒæ— æŗ•å¤„į†ã€‚ +compare.no.text.message=æ‰€é€‰įš„ PDF 文äģļ中有一ä¸Ē或两ä¸Ēæ˛Ąæœ‰æ–‡æœŦå†…åŽšã€‚č¯ˇé€‰æ‹ŠåŒ…åĢ文æœŦįš„ PDF 文äģļčŋ›čĄŒå¯šæ¯”。 #BookToPDF -BookToPDF.title=į”ĩ子äšĻ和æŧĢį”ģčŊŦæĸ成PDF -BookToPDF.header=į”ĩ子äšĻčŊŦPDF -BookToPDF.credit=æ­¤æœåŠĄäŊŋᔍCalibrečŋ›čĄŒæ–‡äģļčŊŦæĸ。 +BookToPDF.title=į”ĩ子äšĻ和æŧĢį”ģčŊŦæĸ成 PDF +BookToPDF.header=į”ĩ子äšĻčŊŦ PDF +BookToPDF.credit=æ­¤æœåŠĄäŊŋᔍ Calibre čŋ›čĄŒæ–‡äģļčŊŦæĸ。 BookToPDF.submit=čŊŦæĸ #PDFToBook -PDFToBook.title=PDFčŊŦį”ĩ子äšĻ -PDFToBook.header=PDFčŊŦį”ĩ子äšĻ +PDFToBook.title=PDF čŊŦį”ĩ子äšĻ +PDFToBook.header=PDF čŊŦį”ĩ子äšĻ PDFToBook.selectText.1=æ ŧåŧ -PDFToBook.credit=æ­¤æœåŠĄäŊŋᔍCalibrečŋ›čĄŒæ–‡äģļčŊŦæĸ。 +PDFToBook.credit=æ­¤æœåŠĄäŊŋᔍ Calibre čŋ›čĄŒæ–‡äģļčŊŦæĸ。 PDFToBook.submit=čŊŦæĸ #sign @@ -813,16 +834,21 @@ sign.draw=įģ˜åˆļį­žå sign.text=文æœŦ输å…Ĩ sign.clear=清除 sign.add=æˇģ加 -sign.saved=Saved Signatures -sign.save=Save Signature -sign.personalSigs=Personal Signatures +sign.saved=厞äŋå­˜į­žå +sign.save=äŋå­˜į­žå +sign.personalSigs=ä¸Ēäēēį­žå sign.sharedSigs=Shared Signatures -sign.noSavedSigs=No saved signatures found - - +sign.noSavedSigs=æœĒæ‰žåˆ°åˇ˛äŋå­˜įš„į­žå +sign.addToAll=æˇģ加到所有éĄĩéĸ +sign.delete=删除 +sign.first=éĻ–éĄĩ +sign.last=æœĢéĄĩ +sign.next=下一éĄĩ +sign.previous=上一éĄĩ +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=äŋŽå¤ -repair.header=äŋŽå¤PDF +repair.header=äŋŽå¤ PDF repair.submit=äŋŽå¤ @@ -844,27 +870,27 @@ ScannerImageSplit.selectText.7=最小čŊŽåģ“éĸ᧝īŧš ScannerImageSplit.selectText.8=莞įŊŽį…§į‰‡įš„æœ€å°čŊŽåģ“éĸ᧝阈å€ŧ。 ScannerImageSplit.selectText.9=čžšæĄ†å°ē寸īŧš ScannerImageSplit.selectText.10=莞įŊŽæˇģåŠ å’Œåˆ é™¤įš„čžšæĄ†å¤§å°īŧŒäģĨ防æ­ĸ输å‡ē中å‡ēįŽ°į™Ŋčžšīŧˆéģ˜čޤå€ŧīŧš1īŧ‰ã€‚ -ScannerImageSplit.info=此功čƒŊ需čĻåŽ‰čŖ…Python +ScannerImageSplit.info=此功čƒŊ需čĻåŽ‰čŖ… Python #OCR ocr.title=OCR/æ‰Ģææ¸…į† ocr.header=æ¸…į†æ‰Ģ描äģļ/OCRīŧˆå…‰å­Ļ字įŦĻ蝆åˆĢīŧ‰ã€‚ -ocr.selectText.1=选拊čρ圍PDFä¸­æŖ€æĩ‹įš„蝭荀īŧˆåˆ—å‡ēįš„č¯­č¨€æ˜¯į›Žå‰æŖ€æĩ‹åˆ°įš„īŧ‰īŧš -ocr.selectText.2=į”ŸæˆåŒ…åĢOCR文æœŦįš„æ–‡æœŦ文äģļīŧŒä¸ŽOCRįŧ–čž‘įš„PDF一čĩˇã€‚ +ocr.selectText.1=选拊čρ圍 PDF ä¸­æŖ€æĩ‹įš„蝭荀īŧˆåˆ—å‡ēįš„č¯­č¨€æ˜¯į›Žå‰æŖ€æĩ‹åˆ°įš„īŧ‰īŧš +ocr.selectText.2=į”ŸæˆåŒ…åĢ OCR 文æœŦįš„æ–‡æœŦ文äģļīŧŒä¸Ž OCR įŧ–čž‘įš„ PDF 一čĩˇã€‚ ocr.selectText.3=通čŋ‡å°†éĄĩéĸ旋čŊŦ回原äŊæĨįē æ­Ŗåæ–œįš„æ‰Ģæč§’åēĻ -ocr.selectText.4=æ¸…į†éĄĩéĸīŧŒé™äŊŽOCR在å™Ēį‚šä¸­č¯†åˆĢ到文æœŦįš„å¯čƒŊ。(æ˛Ąæœ‰čž“å‡ē变化) -ocr.selectText.5=清洁éĄĩéĸīŧŒé™äŊŽOCR在å™Ēį‚šä¸­č¯†åˆĢ到文æœŦįš„å¯čƒŊīŧŒäŋæŒčž“å‡ēįš„æ¸…æ´ã€‚ -ocr.selectText.6=åŋŊį•Ĩ有äē¤äē’åŧæ–‡æœŦįš„éĄĩéĸīŧŒåĒå¯šæœ‰å›žåƒįš„éĄĩéĸčŋ›čĄŒOCR。 -ocr.selectText.7=åŧēåˆļOCRīŧŒå°†OCR每ä¸ĒéĄĩéĸīŧŒåˆ é™¤æ‰€æœ‰įš„原始文æœŦå…ƒį´ ã€‚ -ocr.selectText.8=æ­Ŗå¸¸ (åĻ‚æžœPDF包åĢ文æœŦīŧŒå°†å‡ēįŽ°é”™č¯¯) +ocr.selectText.4=æ¸…į†éĄĩéĸīŧŒé™äŊŽ OCR 在å™Ēį‚šä¸­č¯†åˆĢ到文æœŦįš„å¯čƒŊ。(æ˛Ąæœ‰čž“å‡ē变化) +ocr.selectText.5=清洁éĄĩéĸīŧŒé™äŊŽ OCR 在å™Ēį‚šä¸­č¯†åˆĢ到文æœŦįš„å¯čƒŊīŧŒäŋæŒčž“å‡ēįš„æ¸…æ´ã€‚ +ocr.selectText.6=åŋŊį•Ĩ有äē¤äē’åŧæ–‡æœŦįš„éĄĩéĸīŧŒåĒå¯šæœ‰å›žåƒįš„éĄĩéĸčŋ›čĄŒ OCR。 +ocr.selectText.7=åŧēåˆļ OCRīŧŒå°† OCR 每ä¸ĒéĄĩéĸīŧŒåˆ é™¤æ‰€æœ‰įš„原始文æœŦå…ƒį´ ã€‚ +ocr.selectText.8=æ­Ŗå¸¸ (åĻ‚æžœ PDF 包åĢ文æœŦīŧŒå°†å‡ēįŽ°é”™č¯¯) ocr.selectText.9=éĸå¤–莞įŊŽ -ocr.selectText.10=OCRæ¨Ąåŧ -ocr.selectText.11=OCR后į§ģ除回像īŧˆį§ģ除所有回像īŧŒåĒ有在čŊŦæĸæ­ĨéĒ¤ä¸­æ‰æœ‰į”¨īŧ‰ã€‚ +ocr.selectText.10=OCR æ¨Ąåŧ +ocr.selectText.11=OCR 后į§ģ除回像īŧˆį§ģ除所有回像īŧŒåĒ有在čŊŦæĸæ­ĨéĒ¤ä¸­æ‰æœ‰į”¨īŧ‰ã€‚ ocr.selectText.12=æ¸˛æŸ“įąģ型īŧˆé̘įē§īŧ‰ -ocr.help=č¯ˇé˜…č¯ģæ­¤æ–‡æĄŖīŧŒäē†č§ŖåĻ‚äŊ•å°†å…ļᔍäēŽå…ļäģ–č¯­č¨€å’Œ/或不在docker中äŊŋį”¨ã€‚ -ocr.credit=æ­¤æœåŠĄäŊŋᔍOCRmyPDF和Tesseractčŋ›čĄŒOCR。 -ocr.submit=ᔍOCR处ᐆPDF +ocr.help=č¯ˇé˜…č¯ģæ­¤æ–‡æĄŖīŧŒäē†č§ŖåĻ‚äŊ•å°†å…ļᔍäēŽå…ļäģ–č¯­č¨€å’Œ/或不在 docker 中äŊŋį”¨ã€‚ +ocr.credit=æ­¤æœåŠĄäŊŋᔍ qpdf 和 Tesseract čŋ›čĄŒ OCR。 +ocr.submit=ᔍ OCR 处ᐆ PDF #extractImages @@ -876,18 +902,18 @@ extractImages.submit=提取 #File to PDF -fileToPDF.title=文äģļčŊŦæĸä¸ēPDF -fileToPDF.header=将äģģäŊ•æ–‡äģļčŊŦæĸä¸ēPDF。 -fileToPDF.credit=æ­¤æœåŠĄäŊŋᔍLibreOffice和Unoconvčŋ›čĄŒæ–‡äģļčŊŦæĸ。 +fileToPDF.title=文äģļčŊŦæĸä¸ē PDF +fileToPDF.header=将äģģäŊ•æ–‡äģļčŊŦæĸä¸ē PDF。 +fileToPDF.credit=æ­¤æœåŠĄäŊŋᔍ LibreOffice 和 Unoconv čŋ›čĄŒæ–‡äģļčŊŦæĸ。 fileToPDF.supportedFileTypesInfo=æ”¯æŒįš„æ–‡äģļįąģ型 -fileToPDF.supportedFileTypes=æ”¯æŒįš„æ–‡äģļįąģ型åē”č¯Ĩ包æ‹ŦäģĨä¸‹å‡ į§īŧŒäŊ†æ˜¯īŧŒå¯šäēŽæ”¯æŒįš„æ ŧåŧįš„åŽŒæ•´æ›´æ–°åˆ—čĄ¨īŧŒč¯ˇå‚č€ƒLibreOfficeæ–‡æĄŖã€‚ +fileToPDF.supportedFileTypes=æ”¯æŒįš„æ–‡äģļįąģ型åē”č¯Ĩ包æ‹ŦäģĨä¸‹å‡ į§īŧŒäŊ†æ˜¯īŧŒå¯šäēŽæ”¯æŒįš„æ ŧåŧįš„åŽŒæ•´æ›´æ–°åˆ—čĄ¨īŧŒč¯ˇå‚č€ƒ LibreOffice æ–‡æĄŖã€‚ fileToPDF.submit=čŊŦæĸä¸ē PDF #compress compress.title=压įŧŠ -compress.header=压įŧŠPDF -compress.credit=æ­¤æœåŠĄäŊŋᔍGhostscriptčŋ›čĄŒPDF压įŧŠ/äŧ˜åŒ–。 +compress.header=压įŧŠ PDF +compress.credit=æ­¤æœåŠĄäŊŋᔍqpdfčŋ›čĄŒ PDF 压įŧŠ/äŧ˜åŒ–。 compress.selectText.1=æ‰‹åŠ¨æ¨Ąåŧ - äģŽ 1 到 4 compress.selectText.2=äŧ˜åŒ–įē§åˆĢīŧš compress.selectText.3=4īŧˆæ–‡æœŦå›žåƒåžˆįŗŸįŗ•īŧ‰ @@ -898,7 +924,7 @@ compress.submit=压įŧŠ #Add image addImage.title=æˇģ加回像 -addImage.header=æˇģåŠ å›žį‰‡åˆ°PDF +addImage.header=æˇģåŠ å›žį‰‡åˆ° PDF addImage.everyPage=每一éĄĩīŧŸ addImage.upload=æˇģåŠ å›žį‰‡ addImage.submit=æˇģåŠ å›žį‰‡ @@ -906,7 +932,7 @@ addImage.submit=æˇģåŠ å›žį‰‡ #merge merge.title=合åšļ -merge.header=合åšļ多ä¸ĒPDFīŧˆ2ä¸ĒäģĨ上īŧ‰ã€‚ +merge.header=合åšļ多ä¸Ē PDFīŧˆ2ä¸ĒäģĨ上īŧ‰ã€‚ merge.sortByName=æŒ‰åį§°æŽ’åē merge.sortByDate=按æ—Ĩ期排åē merge.removeCertSign=删除合åšļ文äģļįš„æ•°å­—į­žåå—īŧŸ @@ -915,7 +941,7 @@ merge.submit=合åšļ #pdfOrganiser pdfOrganiser.title=éĄĩéĸ排åē -pdfOrganiser.header=PDFéĄĩéĸ排åē +pdfOrganiser.header=PDF éĄĩéĸ排åē pdfOrganiser.submit=重新排列éĄĩéĸ pdfOrganiser.mode=æ¨Ąåŧ pdfOrganiser.mode.1=č‡Ē厚䚉éĄĩéĸéĄēåē @@ -932,72 +958,94 @@ pdfOrganiser.placeholder=īŧˆäž‹åĻ‚īŧš1,3,2 或 4-8,2,10-12 或 2n-1īŧ‰ #multiTool -multiTool.title=PDF多功čƒŊåˇĨå…ˇ -multiTool.header=PDF多功čƒŊåˇĨå…ˇ +multiTool.title=PDF 多功čƒŊåˇĨå…ˇ +multiTool.header=PDF 多功čƒŊåˇĨå…ˇ multiTool.uploadPrompts=文äģļ名 -multiTool.selectAll=Select All -multiTool.deselectAll=Deselect All +multiTool.selectAll=选拊所有 +multiTool.deselectAll=取æļˆé€‰æ‹Šæ‰€æœ‰ multiTool.selectPages=Page Select -multiTool.selectedPages=Selected Pages +multiTool.selectedPages=åˇ˛é€‰æ‹Šįš„éĄĩéĸ multiTool.page=Page -multiTool.deleteSelected=Delete Selected -multiTool.downloadAll=Export -multiTool.downloadSelected=Export Selected +multiTool.deleteSelected=åˆ é™¤åˇ˛é€‰ +multiTool.downloadAll=å¯ŧå‡ē全部 +multiTool.downloadSelected=å¯ŧå‡ē厞选 + +multiTool.insertPageBreak=插å…Ĩ分éĄĩįŦĻ +multiTool.addFile=æˇģ加文äģļ +multiTool.rotateLeft=向åˇĻ旋čŊŦ +multiTool.rotateRight=å‘åŗæ—‹čŊŦ +multiTool.split=åˆ†å‰˛ +multiTool.moveLeft=向做į§ģ动 +multiTool.moveRight=å‘åŗį§ģ动 +multiTool.delete=删除 +multiTool.dragDropMessage=选拊éĄĩéĸ +multiTool.undo=Undo +multiTool.redo=Redo + +#decrypt +decrypt.passwordPrompt=此文äģļå—å¯†į äŋæŠ¤ã€‚č¯ˇčž“å…Ĩ坆᠁īŧš +decrypt.cancelled=PDF 操äŊœåˇ˛å–æļˆīŧš {0} +decrypt.noPassword=æœĒ提䞛加密 PDF įš„å¯†į īŧš {0} +decrypt.invalidPassword=蝎äŊŋį”¨æ­ŖįĄŽįš„å¯†į é‡č¯•ã€‚ +decrypt.invalidPasswordHeader=å¯†į é”™č¯¯æˆ–ä¸æ”¯æŒįš„ PDF 加密īŧš {0} +decrypt.unexpectedError=å¤„į†æ–‡äģļæ—ļå‘į”Ÿé”™č¯¯ã€‚č¯ˇå†č¯•ä¸€æŦĄã€‚ +decrypt.serverError=æœåŠĄå™¨č§Ŗå¯†æ—ļå‘į”Ÿé”™č¯¯īŧš {0} +decrypt.success=文äģļč§Ŗå¯†æˆåŠŸã€‚ #multiTool-advert -multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! +multiTool-advert.message=此功čƒŊäšŸé€‚į”¨äēŽæˆ‘äģŦįš„â€œå¤šåŠŸčƒŊåˇĨå…ˇéĄĩéĸ”。æŸĨįœ‹åŽƒäģĨčŽˇåž—åĸžåŧēįš„é€éĄĩ UI äģĨ及å…ļäģ–功čƒŊīŧ #view pdf -viewPdf.title=æĩč§ˆPDF -viewPdf.header=æĩč§ˆPDF +viewPdf.title=æĩč§ˆ PDF +viewPdf.header=æĩč§ˆ PDF #pageRemover pageRemover.title=删除éĄĩéĸ -pageRemover.header=PDFéĄĩéĸį§ģ除器 +pageRemover.header=PDF éĄĩéĸį§ģ除器 pageRemover.pagesToDelete=čĻåˆ é™¤įš„éĄĩéĸīŧˆčž“å…Ĩ一ä¸Ēį”¨é€—åˇåˆ†éš”įš„éĄĩį åˆ—čĄ¨īŧ‰īŧš pageRemover.submit=删除éĄĩéĸ pageRemover.placeholder=īŧˆäž‹åĻ‚īŧš1,2,6 或 1-10,15-30īŧ‰ #rotate -rotate.title=旋čŊŦPDF -rotate.header=旋čŊŦPDF -rotate.selectAngle=选拊旋čŊŦ角åēĻīŧˆäģĨ90åēĻįš„å€æ•°īŧ‰īŧš +rotate.title=旋čŊŦ PDF +rotate.header=旋čŊŦ PDF +rotate.selectAngle=选拊旋čŊŦ角åēĻīŧˆäģĨ 90 åēĻįš„å€æ•°īŧ‰īŧš rotate.submit=旋čŊŦ #split-pdfs -split.title=拆分PDF -split.header=拆分PDF +split.title=拆分 PDF +split.header=拆分 PDF split.desc.1=选拊希望čŋ›čĄŒåˆ†å‰˛įš„éĄĩ数 -split.desc.2=åĻ‚é€‰æ‹Š1,3,7-9将把一ä¸Ē10éĄĩįš„æ–‡äģļåˆ†å‰˛æˆ6ä¸Ēį‹ŦįĢ‹įš„PDFīŧš -split.desc.3=æ–‡æĄŖ #1īŧšįŦŦ1éĄĩ -split.desc.4=æ–‡æĄŖ #2īŧšįŦŦ2éĄĩ和įŦŦ3éĄĩ -split.desc.5=æ–‡æĄŖ #3īŧšįŦŦ4éĄĩ、įŦŦ5éĄĩ、įŦŦ6éĄĩ和įŦŦ7éĄĩ -split.desc.6=æ–‡æĄŖ #4īŧšįŦŦ7éĄĩ -split.desc.7=æ–‡æĄŖ #5īŧšįŦŦ8éĄĩ -split.desc.8=æ–‡æĄŖ #6īŧšįŦŦ9éĄĩ和įŦŦ10éĄĩ +split.desc.2=åĻ‚é€‰æ‹Š1,3,7-9将把一ä¸Ē 10 éĄĩįš„æ–‡äģļåˆ†å‰˛æˆ6ä¸Ēį‹ŦįĢ‹įš„PDFīŧš +split.desc.3=æ–‡æĄŖ #1īŧšįŦŦ 1 éĄĩ +split.desc.4=æ–‡æĄŖ #2īŧšįŦŦ 2 éĄĩ和įŦŦ 3 éĄĩ +split.desc.5=æ–‡æĄŖ #3īŧšįŦŦ 4 éĄĩ、įŦŦ 5 éĄĩ、įŦŦ 6 éĄĩ和įŦŦ 7 éĄĩ +split.desc.6=æ–‡æĄŖ #4īŧšįŦŦ 7 éĄĩ +split.desc.7=æ–‡æĄŖ #5īŧšįŦŦ 8 éĄĩ +split.desc.8=æ–‡æĄŖ #6īŧšįŦŦ 9 éĄĩ和įŦŦ 10 éĄĩ split.splitPages=输å…ĨčĻåˆ†å‰˛įš„éĄĩéĸīŧš split.submit=拆分 #merge -imageToPDF.title=å›žį‰‡čŊŦPDF -imageToPDF.header=å°†å›žį‰‡čŊŦæĸä¸ēPDF +imageToPDF.title=å›žį‰‡čŊŦ PDF +imageToPDF.header=å°†å›žį‰‡čŊŦæĸä¸ē PDF imageToPDF.submit=čŊŦæĸ imageToPDF.selectLabel=å›žį‰‡é€‚åē”选饚 imageToPDF.fillPage=åĄĢ充éĄĩéĸ imageToPDF.fitDocumentToImage=适åē”å›žį‰‡å¤§å° imageToPDF.maintainAspectRatio=äŋæŒįēĩæ¨Ē比䞋 -imageToPDF.selectText.2=č‡Ē动旋čŊŦPDF +imageToPDF.selectText.2=č‡Ē动旋čŊŦ PDF imageToPDF.selectText.3=多文äģļé€ģ辑īŧˆäģ…åœ¨å¤„į†å¤šä¸Ē回像æ—ļ吝ᔍīŧ‰ -imageToPDF.selectText.4=合åšļ成一ä¸ĒPDF文äģļ -imageToPDF.selectText.5=čŊŦæĸä¸ēį‹ŦįĢ‹įš„PDF文äģļ +imageToPDF.selectText.4=合åšļ成一ä¸Ē PDF 文äģļ +imageToPDF.selectText.5=čŊŦæĸä¸ēį‹ŦįĢ‹įš„ PDF 文äģļ #pdfToImage -pdfToImage.title=PDFčŊŦå›žį‰‡ -pdfToImage.header=将PDFčŊŦæĸä¸ēå›žį‰‡ +pdfToImage.title=PDF čŊŦå›žį‰‡ +pdfToImage.header=将 PDF čŊŦæĸä¸ēå›žį‰‡ pdfToImage.selectText=回像æ ŧåŧ pdfToImage.singleOrMultiple=回像į쓿žœįąģ型 pdfToImage.single=单åŧ å›žį‰‡ @@ -1007,13 +1055,14 @@ pdfToImage.color=éĸœč‰˛ pdfToImage.grey=ၰåēĻ pdfToImage.blackwhite=éģ‘į™Ŋīŧˆå¯čƒŊäŧšä¸ĸå¤ąæ•°æŽīŧīŧ‰ã€‚ pdfToImage.submit=čŊŦæĸ -pdfToImage.info=WebPčŊŦæĸ需čĻåŽ‰čŖ…Python +pdfToImage.info=WebP čŊŦæĸ需čĻåŽ‰čŖ… Python +pdfToImage.placeholder=īŧˆäž‹åĻ‚īŧš1,2,8 或 4,7,12-16 或 2n-1īŧ‰ #addPassword addPassword.title=æˇģåŠ å¯†į  addPassword.header=æˇģåŠ å¯†į īŧˆåР坆īŧ‰ã€‚ -addPassword.selectText.1=选拊čĻåŠ å¯†įš„PDF。 +addPassword.selectText.1=选拊čĻåŠ å¯†įš„ PDF。 addPassword.selectText.2=坆᠁ addPassword.selectText.3=加密密é’Ĩé•ŋåēĻ addPassword.selectText.4=å€ŧčļŠé̘čļŠåŧēīŧŒäŊ†å€ŧčļŠäŊŽå…ŧ厚性čļŠåĨŊ。 @@ -1035,7 +1084,8 @@ addPassword.submit=加密 #watermark watermark.title=æˇģ加水印 watermark.header=æˇģ加水印 -watermark.selectText.1=选拊čρæˇģåŠ æ°´å°įš„PDFīŧš +watermark.customColor=č‡Ē厚䚉文æœŦéĸœč‰˛ +watermark.selectText.1=选拊čρæˇģåŠ æ°´å°įš„ PDFīŧš watermark.selectText.2=水印文æœŦīŧš watermark.selectText.3=字äŊ“大小īŧš watermark.selectText.4=旋čŊŦīŧˆ0-360īŧ‰īŧš @@ -1044,7 +1094,7 @@ watermark.selectText.6=åž‚į›´é—´čˇīŧˆæ¯ä¸Ēæ°´å°äš‹é—´įš„åž‚į›´čˇįĻģīŧ‰īŧš watermark.selectText.7=透明åēĻīŧˆ0% - 100%īŧ‰īŧš watermark.selectText.8=水印įąģ型īŧš watermark.selectText.9=æ°´å°å›žį‰‡īŧš -watermark.selectText.10=将PDFčŊŦæĸä¸ēPDF-Image +watermark.selectText.10=将 PDF čŊŦæĸä¸ē PDF-Image watermark.submit=æˇģ加水印 watermark.type.1=文字 watermark.type.2=å›žį‰‡ @@ -1054,7 +1104,7 @@ watermark.type.2=å›žį‰‡ permissions.title=更攚权限 permissions.header=攚变权限 permissions.warning=č­Ļ告īŧŒä¸ēäē†äŊŋčŋ™ä盿ƒé™ä¸čƒŊčĸĢæ”šå˜īŧŒåģē议通čŋ‡æˇģåŠ å¯†į éĄĩéĸ莞įŊŽå¯†į ã€‚ -permissions.selectText.1=选拊PDFæĨ攚变权限 +permissions.selectText.1=选拊 PDF æĨ攚变权限 permissions.selectText.2=čĻčŽžįŊŽįš„æƒé™ permissions.selectText.3=防æ­ĸ文äģļįš„æ‹ŧæŽĨ permissions.selectText.4=防æ­ĸ内厚提取 @@ -1070,7 +1120,7 @@ permissions.submit=攚变 #remove password removePassword.title=åˆ é™¤å¯†į  removePassword.header=į§ģ除坆᠁īŧˆč§Ŗå¯†īŧ‰ã€‚ -removePassword.selectText.1=选拊čĻč§Ŗå¯†įš„PDF +removePassword.selectText.1=选拊čĻč§Ŗå¯†įš„ PDF removePassword.selectText.2=坆᠁ removePassword.submit=删除 @@ -1095,9 +1145,9 @@ changeMetadata.submit=更攚 #pdfToPDFA -pdfToPDFA.title=PDFčŊŦPDF/A -pdfToPDFA.header=将PDFčŊŦæĸä¸ēPDF/A -pdfToPDFA.credit=æ­¤æœåŠĄäŊŋᔍghostscriptčŋ›čĄŒPDF/AčŊŦæĸ +pdfToPDFA.title=PDF čŊŦ PDF/A +pdfToPDFA.header=将 PDF čŊŦæĸä¸ē PDF/A +pdfToPDFA.credit=æ­¤æœåŠĄäŊŋᔍ qpdf čŋ›čĄŒ PDF/A čŊŦæĸ pdfToPDFA.submit=čŊŦæĸ pdfToPDFA.tip=į›Žå‰ä¸æ”¯æŒä¸Šäŧ å¤šä¸Ē pdfToPDFA.outputFormat=输å‡ēæ ŧåŧ @@ -1105,51 +1155,51 @@ pdfToPDFA.pdfWithDigitalSignature=č¯ĨPDF包åĢæ•°å­—į­žåīŧŒä¸‹ä¸€æ­Ĩ将į§ģ除 #PDFToWord -PDFToWord.title=PDFčŊŦWord -PDFToWord.header=将PDFčŊŦæĸä¸ēWord +PDFToWord.title=PDF čŊŦ Word +PDFToWord.header=将 PDF čŊŦæĸä¸ē Word PDFToWord.selectText.1=输å‡ē文äģļæ ŧåŧ -PDFToWord.credit=æ­¤æœåŠĄäŊŋᔍLibreOfficečŋ›čĄŒæ–‡äģļčŊŦæĸ。 +PDFToWord.credit=æ­¤æœåŠĄäŊŋᔍ LibreOffice čŋ›čĄŒæ–‡äģļčŊŦæĸ。 PDFToWord.submit=čŊŦæĸ #PDFToPresentation -PDFToPresentation.title=PDFčŊŦæŧ”į¤ē文į¨ŋ -PDFToPresentation.header=将PDFčŊŦæĸä¸ēæŧ”į¤ē文į¨ŋ +PDFToPresentation.title=PDF čŊŦæŧ”į¤ē文į¨ŋ +PDFToPresentation.header=将 PDF čŊŦæĸä¸ēæŧ”į¤ē文į¨ŋ PDFToPresentation.selectText.1=输å‡ē文äģļæ ŧåŧ -PDFToPresentation.credit=æ­¤æœåŠĄäŊŋᔍLibreOfficečŋ›čĄŒæ–‡äģļčŊŦæĸ。 +PDFToPresentation.credit=æ­¤æœåŠĄäŊŋᔍ LibreOffice čŋ›čĄŒæ–‡äģļčŊŦæĸ。 PDFToPresentation.submit=čŊŦæĸ #PDFToText -PDFToText.title=PDFčŊŦ文æœŦ/RTF -PDFToText.header=将PDFčŊŦæĸä¸ē文æœŦ/RTF +PDFToText.title=PDF čŊŦ文æœŦ/RTF +PDFToText.header=将 PDF čŊŦæĸä¸ē文æœŦ/RTF PDFToText.selectText.1=输å‡ē文äģļæ ŧåŧ -PDFToText.credit=æ­¤æœåŠĄäŊŋᔍLibreOfficečŋ›čĄŒæ–‡äģļčŊŦæĸ。 +PDFToText.credit=æ­¤æœåŠĄäŊŋᔍ LibreOffice čŋ›čĄŒæ–‡äģļčŊŦæĸ。 PDFToText.submit=čŊŦæĸ #PDFToHTML -PDFToHTML.title=PDFčŊŦHTML -PDFToHTML.header=将PDFčŊŦæĸä¸ēHTML -PDFToHTML.credit=æ­¤æœåŠĄäŊŋᔍpdftohtmlčŋ›čĄŒæ–‡äģļčŊŦæĸ。 +PDFToHTML.title=PDF čŊŦ HTML +PDFToHTML.header=将 PDF čŊŦæĸä¸ē HTML +PDFToHTML.credit=æ­¤æœåŠĄäŊŋᔍ pdftohtml čŋ›čĄŒæ–‡äģļčŊŦæĸ。 PDFToHTML.submit=čŊŦæĸ #PDFToXML -PDFToXML.title=PDFčŊŦXML -PDFToXML.header=将PDFčŊŦæĸä¸ēXML -PDFToXML.credit=æ­¤æœåŠĄäŊŋᔍLibreOfficečŋ›čĄŒæ–‡äģļčŊŦæĸ。 +PDFToXML.title=PDF čŊŦ XML +PDFToXML.header=将 PDF čŊŦæĸä¸ē XML +PDFToXML.credit=æ­¤æœåŠĄäŊŋᔍ LibreOffice čŋ›čĄŒæ–‡äģļčŊŦæĸ。 PDFToXML.submit=čŊŦæĸ #PDFToCSV -PDFToCSV.title=PDFčŊŦCSV -PDFToCSV.header=将PDFčŊŦæĸä¸ēCSV +PDFToCSV.title=PDF čŊŦ CSV +PDFToCSV.header=将 PDF čŊŦæĸä¸ē CSV PDFToCSV.prompt=选拊需čĻæå–čĄ¨æ ŧįš„éĄĩéĸ PDFToCSV.submit=提取 #split-by-size-or-count -split-by-size-or-count.title=æŒ‰į…§å¤§å°æˆ–æ•°į›Žæ‹†åˆ†PDF -split-by-size-or-count.header=æŒ‰į…§å¤§å°æˆ–æ•°į›Žæ‹†åˆ†PDF +split-by-size-or-count.title=æŒ‰į…§å¤§å°æˆ–æ•°į›Žæ‹†åˆ† PDF +split-by-size-or-count.header=æŒ‰į…§å¤§å°æˆ–æ•°į›Žæ‹†åˆ† PDF split-by-size-or-count.type.label=选拊拆分įąģ型 split-by-size-or-count.type.size=æŒ‰į…§å¤§å° split-by-size-or-count.type.pageCount=æŒ‰į…§éĄĩ数 @@ -1160,9 +1210,9 @@ split-by-size-or-count.submit=提äē¤ #overlay-pdfs -overlay-pdfs.header=叠加PDF文äģļ -overlay-pdfs.baseFile.label=选拊åŸēįĄ€PDF文äģļ -overlay-pdfs.overlayFiles.label=选拊需čĻå åŠ åœ¨åŸēįĄ€ä¸Šįš„PDF文äģļ +overlay-pdfs.header=叠加 PDF 文äģļ +overlay-pdfs.baseFile.label=选拊åŸēįĄ€ PDF 文äģļ +overlay-pdfs.overlayFiles.label=选拊需čĻå åŠ åœ¨åŸēįĄ€ä¸Šįš„ PDF 文äģļ overlay-pdfs.mode.label=é€‰æ‹Šå åŠ æ¨Ąåŧ overlay-pdfs.mode.sequential=按éĄēåēå åŠ  overlay-pdfs.mode.interleaved=äē¤é”™å åŠ  @@ -1176,14 +1226,14 @@ overlay-pdfs.submit=提äē¤ #split-by-sections -split-by-sections.title=æŒ‰į…§å—īŧˆSectionīŧ‰æ‹†åˆ†PDF -split-by-sections.header=将PDF拆分成块 +split-by-sections.title=æŒ‰į…§å—īŧˆSectionīŧ‰æ‹†åˆ† PDF +split-by-sections.header=将 PDF 拆分成块 split-by-sections.horizontal.label=æ°´åšŗåˆ†å‰˛ split-by-sections.vertical.label=åž‚į›´åˆ†å‰˛ split-by-sections.horizontal.placeholder=输å…Ĩæ°´åšŗåˆ†å‰˛æ•° split-by-sections.vertical.placeholder=输å…Ĩåž‚į›´åˆ†å‰˛æ•° -split-by-sections.submit=åˆ†å‰˛PDF -split-by-sections.merge=是åĻ合åšļä¸ē一ä¸Ēpdf +split-by-sections.submit=åˆ†å‰˛ PDF +split-by-sections.merge=是åĻ合åšļä¸ē一ä¸Ē pdf #printFile @@ -1203,11 +1253,11 @@ licenses.version=į‰ˆæœŦ licenses.license=čŽ¸å¯č¯ #survey -survey.nav=调æŸĨ -survey.title=Stirling-PDF调æŸĨ -survey.description=Stirling-PDFæ˛Ąæœ‰čˇŸč¸Ē器īŧŒæ‰€äģĨ我äģŦ希望åŦå–į”¨æˆˇįš„æ„č§æĨ攚čŋ›Stirling-PDFīŧ -survey.changes=Stirling-PDF has changed since the last survey! To find out more please check our blog post here: -survey.changes2=With these changes we are getting paid business support and funding +survey.nav=é—Žåˇč°ƒæŸĨ +survey.title=Stirling-PDF é—Žåˇč°ƒæŸĨ +survey.description=Stirling-PDF æ˛Ąæœ‰čˇŸč¸Ē器īŧŒæ‰€äģĨ我äģŦ希望åŦå–į”¨æˆˇįš„æ„č§æĨ攚čŋ› Stirling-PDFīŧ +survey.changes=č‡Ē上æŦĄč°ƒæŸĨäģĨæĨīŧŒStirling-PDF 厞įģå‘į”Ÿäē†å˜åŒ–īŧčρäē†č§Ŗæ›´å¤šäŋĄæ¯īŧŒč¯ˇåœ¨æ­¤å¤„æŸĨįœ‹æˆ‘äģŦįš„åšåŽĸ文įĢ īŧš +survey.changes2=通čŋ‡čŋ™äē›å˜åŒ–īŧŒæˆ‘äģŦ垗到äē†å•†ä¸šæ”¯æŒå’Œčĩ„金援劊。 survey.please=č¯ˇč€ƒč™‘å‚åŠ æˆ‘äģŦįš„č°ƒæŸĨīŧ survey.disabled=īŧˆč°ƒæŸĨåŧšå‡ēįĒ—åŖå°†åœ¨åŽįģ­æ›´æ–°ä¸­čĸĢįρᔍīŧŒäŊ†å¯åœ¨éĄĩč„šå¤„æŸĨįœ‹īŧ‰ survey.button=å‚ä¸Žč°ƒæŸĨ @@ -1217,11 +1267,11 @@ survey.dontShowAgain=不再昞į¤ē #error error.sorry=寚此闎éĸ˜æ„Ÿåˆ°æŠąæ­‰īŧ error.needHelp=需čĻå¸ŽåŠŠ / å‘įŽ°é—Žéĸ˜īŧŸ -error.contactTip=åĻ‚æžœäŊ äģį„ļ遇到闎éĸ˜īŧŒä¸čĻįŠščąĢīŧŒå‘我äģŦå¯ģæą‚å¸ŽåŠŠã€‚äŊ å¯äģĨ在我äģŦįš„GitHubéĄĩéĸ上提äē¤åˇĨ单īŧŒæˆ–者通čŋ‡Discord与我äģŦ联įŗģīŧš +error.contactTip=åĻ‚æžœäŊ äģį„ļ遇到闎éĸ˜īŧŒä¸čĻįŠščąĢīŧŒå‘我äģŦå¯ģæą‚å¸ŽåŠŠã€‚äŊ å¯äģĨ在我äģŦįš„ GitHub éĄĩéĸ上提äē¤åˇĨ单īŧŒæˆ–者通čŋ‡ Discord 与我äģŦ联įŗģīŧš error.404.head=404 - éĄĩéĸæœĒ扞到 | 哎呀īŧŒæˆ‘äģŦ在äģŖį ä¸­č§Ļ发äē†é”™č¯¯īŧ error.404.1=我äģŦäŧŧ䚎扞不到äŊ å¯ģæ‰žįš„éĄĩéĸ。 error.404.2=å‡ēäē†äē›é—Žéĸ˜ -error.github=在GitHub上提äē¤åˇĨ单 +error.github=在 GitHub 上提äē¤åˇĨ单 error.showStack=昞į¤ēå †æ ˆčˇŸč¸Ē error.copyStack=复åˆļå †æ ˆčˇŸč¸Ē error.githubSubmit=GitHub - 提äē¤åˇĨ单 @@ -1235,13 +1285,63 @@ removeImage.removeImage=删除回像 removeImage.submit=删除回像 -splitByChapters.title=Split PDF by Chapters -splitByChapters.header=Split PDF by Chapters -splitByChapters.bookmarkLevel=Bookmark Level -splitByChapters.includeMetadata=Include Metadata -splitByChapters.allowDuplicates=Allow Duplicates +splitByChapters.title=按įĢ čŠ‚æ‹†åˆ† PDF +splitByChapters.header=按įĢ čŠ‚æ‹†åˆ† PDF +splitByChapters.bookmarkLevel=äšĻį­žįē§åˆĢ +splitByChapters.includeMetadata=包åĢ元数捎 +splitByChapters.allowDuplicates=å…čŽ¸é‡å¤ splitByChapters.desc.1=This tool splits a PDF file into multiple PDFs based on its chapter structure. splitByChapters.desc.2=Bookmark Level: Choose the level of bookmarks to use for splitting (0 for top-level, 1 for second-level, etc.). splitByChapters.desc.3=Include Metadata: If checked, the original PDF's metadata will be included in each split PDF. splitByChapters.desc.4=Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs. -splitByChapters.submit=Split PDF +splitByChapters.submit=拆分 PDF + +#File Chooser +fileChooser.click=单å‡ģ +fileChooser.or=或 +fileChooser.dragAndDrop=拖攞文äģļ +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=拖攞文äģļ到此处 + +#release notes +releases.footer=į‰ˆæœŦ +releases.title=į‰ˆæœŦč¯´æ˜Ž +releases.header=į‰ˆæœŦč¯´æ˜Ž +releases.current.version=åŊ“å‰į‰ˆæœŦ +releases.note=į‰ˆæœŦč¯´æ˜Žäģ…æäž›č‹ąæ–‡į‰ˆæœŦ + +#Validate Signature +validateSignature.title=Validate PDF Signatures +validateSignature.header=Validate Digital Signatures +validateSignature.selectPDF=Select signed PDF file +validateSignature.submit=Validate Signatures +validateSignature.results=Validation Results +validateSignature.status=Status +validateSignature.signer=Signer +validateSignature.date=Date +validateSignature.reason=Reason +validateSignature.location=Location +validateSignature.noSignatures=No digital signatures found in this document +validateSignature.status.valid=Valid +validateSignature.status.invalid=Invalid +validateSignature.chain.invalid=Certificate chain validation failed - cannot verify signer's identity +validateSignature.trust.invalid=Certificate not in trust store - source cannot be verified +validateSignature.cert.expired=Certificate has expired +validateSignature.cert.revoked=Certificate has been revoked +validateSignature.signature.info=Signature Information +validateSignature.signature=Signature +validateSignature.signature.mathValid=Signature is mathematically valid BUT: +validateSignature.selectCustomCert=Custom Certificate File X.509 (Optional) +validateSignature.cert.info=Certificate Details +validateSignature.cert.issuer=Issuer +validateSignature.cert.subject=Subject +validateSignature.cert.serialNumber=Serial Number +validateSignature.cert.validFrom=Valid From +validateSignature.cert.validUntil=Valid Until +validateSignature.cert.algorithm=Algorithm +validateSignature.cert.keySize=Key Size +validateSignature.cert.version=Version +validateSignature.cert.keyUsage=Key Usage +validateSignature.cert.selfSigned=Self-Signed +validateSignature.cert.bits=bits diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index 788962959b..13764e4329 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -81,7 +81,8 @@ page=頁éĸ pages=頁éĸ loading=čŧ‰å…Ĩ中... addToDoc=新åĸžč‡ŗæ–‡äģļ -reset=Reset +reset=重設 +apply=Apply legal.privacy=éšąį§æŦŠæ”ŋį­– legal.terms=äŊŋᔍæĸæŦž @@ -142,7 +143,7 @@ navbar.language=čĒžč¨€ navbar.settings=č¨­åŽš navbar.allTools=åˇĨå…ˇ navbar.multiTool=č¤‡åˆåˇĨå…ˇ -navbar.search=Search +navbar.search=搜尋 navbar.sections.organize=æ•´į† navbar.sections.convertTo=čŊ‰æ›į‚ē PDF navbar.sections.convertFrom=åžž PDF čŊ‰æ› @@ -238,11 +239,13 @@ database.creationDate=åģēįĢ‹æ—Ĩ期 database.fileSize=æĒ”æĄˆå¤§å° database.deleteBackupFile=åˆĒ除備äģŊæĒ”æĄˆ database.importBackupFile=匯å…Ĩ備äģŊæĒ”æĄˆ +database.createBackupFile=åģēį̋備äģŊæĒ”æĄˆ database.downloadBackupFile=下čŧ‰å‚™äģŊæĒ”æĄˆ database.info_1=在匯å…Ĩčŗ‡æ–™æ™‚īŧŒįĸēäŋæ­Ŗįĸēįš„įĩæ§‹č‡ŗé—œé‡čĻã€‚åĻ‚æžœæ‚¨ä¸įĸē厚č‡Ēåˇąåœ¨åšäģ€éēŧīŧŒčĢ‹å°‹æą‚å°ˆæĨ­äēēåŖĢįš„åģēč­°å’Œæ”¯æ´ã€‚įĩæ§‹éŒ¯čĒ¤å¯čƒŊæœƒå°Žč‡´æ‡‰į”¨į¨‹åŧæ•…éšœīŧŒį”šč‡ŗåŽŒå…¨į„Ąæŗ•åŸˇčĄŒæ‡‰į”¨į¨‹åŧã€‚ database.info_2=ä¸Šå‚ŗæ™‚æĒ”æĄˆåį¨ąä¸Ļ不重čĻã€‚ä¸Šå‚ŗåžŒå°‡é‡æ–°å‘Ŋ名į‚ē backup_user_yyyyMMddHHmm.sql æ ŧåŧīŧŒäģĨįĸēäŋå‘Ŋ名čĻį¯„ä¸€č‡´ã€‚ database.submit=匯å…Ĩ備äģŊ database.importIntoDatabaseSuccessed=成功匯å…Ĩčŗ‡æ–™åēĢ +database.backupCreated=čŗ‡æ–™åēĢ備äģŊ成功 database.fileNotFound=扞不到æĒ”æĄˆ database.fileNullOrEmpty=æĒ”æĄˆä¸åž—į‚ēįŠē或įŠēį™Ŋ database.failedImportFile=匯å…ĨæĒ”æĄˆå¤ąæ•— @@ -253,7 +256,7 @@ session.refreshPage=é‡æ–°æ•´į†é éĸ ############# # HOME-PAGE # ############# -home.desc=äŊ įš„æœŦ抟ä¸ģ抟一įĢ™åŧ PDF éœ€æą‚č§Ŗæąēæ–šæĄˆã€‚ +home.desc=æ‚¨įš„æœŦ抟一įĢ™åŧ PDF č§Ŗæąēæ–šæĄˆã€‚ home.searchBar=搜尋功čƒŊ... @@ -472,6 +475,10 @@ home.autoRedact.title=č‡Ēå‹•åĄ—éģ‘ home.autoRedact.desc=栚據čŧ¸å…Ĩįš„æ–‡å­—č‡Ēå‹•åĄ—éģ‘ PDF ä¸­įš„æ–‡å­— autoRedact.tags=åĄ—éģ‘,隱藏,åĄ—éģ‘,éģ‘色,æ¨™č¨˜,隱藏 +home.redact.title=Manual Redaction +home.redact.desc=Redacts a PDF based on selected text, drawn shapes and/or selected page(s) +redact.tags=Redact,Hide,black out,black,marker,hidden,manual + home.tableExtraxt.title=PDF čŊ‰ CSV home.tableExtraxt.desc=åžž PDF ä¸­æå–čĄ¨æ ŧä¸Ļ將å…ļčŊ‰æ›į‚ē CSV tableExtraxt.tags=CSV,襨æ ŧ提取,提取,čŊ‰æ› @@ -512,6 +519,10 @@ home.splitPdfByChapters.title=䞝įĢ į¯€åˆ†å‰˛ PDF home.splitPdfByChapters.desc=栚據 PDF įš„į̠ᝀįĩæ§‹å°‡å…ļåˆ†å‰˛æˆå¤šå€‹æĒ”æĄˆã€‚ splitPdfByChapters.tags=åˆ†å‰˛,į̠ᝀ,æ›¸įą¤,æ•´į† +home.validateSignature.title=驗證 PDF į°ŊįĢ  +home.validateSignature.desc=驗證 PDF 文äģļä¸­įš„æ•¸äŊį°ŊįĢ čˆ‡æ†‘č­‰ +validateSignature.tags=į°ŊįĢ ,驗證,įĸēčĒ,pdf,æ†‘č­‰,數äŊį°ŊįĢ ,驗證į°ŊįĢ ,éŠ—č­‰æ†‘č­‰ + #replace-invert-color replace-color.title=取äģŖ-反čŊ‰éĄč‰˛ replace-color.header=取äģŖ-反čŊ‰ PDF 顏色 @@ -555,6 +566,7 @@ login.oauth2invalidRequest=į„Ąæ•ˆįš„å›žæ‡‰ login.oauth2AccessDenied=存取čĸĢæ‹’ login.oauth2InvalidTokenResponse=į„Ąæ•ˆįš„æŦŠæ–回應 login.oauth2InvalidIdToken=į„Ąæ•ˆįš„č­˜åˆĨæŦŠæ– +login.relyingPartyRegistrationNotFound=No relying party registration found login.userIsDisabled=äŊŋį”¨č€…åˇ˛åœį”¨īŧŒį›Žå‰æ­¤äŊŋį”¨č€…į„Ąæŗ•į™ģå…Ĩ。č̋聝įĩĄįŗģįĩąįŽĄį†å“Ąã€‚ login.alreadyLoggedIn=æ‚¨åˇ˛įļ“į™ģå…Ĩäē† login.alreadyLoggedIn2=å€‹čŖįŊŽã€‚čĢ‹į™ģå‡ēå…ļäģ–čŖįŊŽåžŒå†čŠĻ一æŦĄã€‚ @@ -572,6 +584,15 @@ autoRedact.customPaddingLabel=č‡Ēč¨‚éĄå¤–åĄĢ充 autoRedact.convertPDFToImageLabel=將 PDF čŊ‰æ›į‚ē PDF-åŊąåƒīŧˆį”¨æ–ŧį§ģé™¤æ–šæĄ†åžŒéĸįš„æ–‡å­—īŧ‰ autoRedact.submitButton=送å‡ē +#redact +redact.title=Manual Redaction +redact.header=Manual Redaction +redact.submit=Redact +redact.pageBasedRedaction=Page-based Redaction +redact.convertPDFToImageLabel=Convert PDF to PDF-Image (Used to remove text behind the box) +redact.pageRedactionNumbers.title=Pages +redact.pageRedactionNumbers.placeholder=(e.g. 1,2,8 or 4,7,12-16 or 2n-1) +redact.redactionColor.title=Redaction Color #showJS showJS.title=éĄ¯į¤ē JavaScript @@ -623,12 +644,12 @@ HTMLToPDF.help=æŽĨ受 HTML 文äģļ和包åĢ所需 html/css/images į­‰įš„ ZIP HTMLToPDF.submit=čŊ‰æ› HTMLToPDF.credit=此服務äŊŋᔍ WeasyPrint 進行čŊ‰æ› HTMLToPDF.zoom=ᔍæ–ŧéĄ¯į¤ēįļ˛įĢ™įš„į¸Žæ”žį´šåˆĨ。 -HTMLToPDF.pageWidth=頁éĸå¯ŦåēĻ-äģĨé‡įąŗį‚ēå–ŽäŊīŧˆåĄĢįŠē則äŊŋᔍ預荭å€ŧīŧ‰ -HTMLToPDF.pageHeight=頁éĸé̘åēĻ-äģĨé‡įąŗį‚ēå–ŽäŊīŧˆåĄĢįŠē則äŊŋᔍ預荭å€ŧīŧ‰ -HTMLToPDF.marginTop=頁éĸįš„ä¸Šé‚Ščˇ-äģĨæ¯Ģįąŗį‚ēå–ŽäŊīŧˆåĄĢįŠē則äŊŋᔍ預荭å€ŧīŧ‰ -HTMLToPDF.marginBottom=頁éĸįš„ä¸‹é‚Ščˇ-äģĨæ¯Ģįąŗį‚ēå–ŽäŊīŧˆåĄĢįŠē則äŊŋᔍ預荭å€ŧīŧ‰ -HTMLToPDF.marginLeft=頁éĸįš„åˇĻ邊距-äģĨæ¯Ģįąŗį‚ēå–ŽäŊīŧˆåĄĢįŠē則äŊŋᔍ預荭å€ŧīŧ‰ -HTMLToPDF.marginRight=頁éĸįš„åŗé‚Ščˇ-äģĨæ¯Ģįąŗį‚ēå–ŽäŊīŧˆåĄĢįŠē則äŊŋᔍ預荭å€ŧīŧ‰ +HTMLToPDF.pageWidth=頁éĸå¯ŦåēĻ-äģĨå…Ŧ分į‚ēå–ŽäŊīŧˆį•™įŠē則äŊŋᔍ預荭å€ŧīŧ‰ +HTMLToPDF.pageHeight=頁éĸé̘åēĻ-äģĨå…Ŧ分į‚ēå–ŽäŊīŧˆį•™įŠē則äŊŋᔍ預荭å€ŧīŧ‰ +HTMLToPDF.marginTop=頁éĸįš„ä¸Šé‚Ščˇ-äģĨæ¯Ģįąŗį‚ēå–ŽäŊīŧˆį•™įŠē則äŊŋᔍ預荭å€ŧīŧ‰ +HTMLToPDF.marginBottom=頁éĸįš„ä¸‹é‚Ščˇ-äģĨæ¯Ģįąŗį‚ēå–ŽäŊīŧˆį•™įŠē則äŊŋᔍ預荭å€ŧīŧ‰ +HTMLToPDF.marginLeft=頁éĸįš„åˇĻ邊距-äģĨæ¯Ģįąŗį‚ēå–ŽäŊīŧˆį•™įŠē則äŊŋᔍ預荭å€ŧīŧ‰ +HTMLToPDF.marginRight=頁éĸįš„åŗé‚Ščˇ-äģĨæ¯Ģįąŗį‚ēå–ŽäŊīŧˆį•™įŠē則äŊŋᔍ預荭å€ŧīŧ‰ HTMLToPDF.printBackground=æ¸˛æŸ“įļ˛įĢ™įš„čƒŒæ™¯ã€‚ HTMLToPDF.defaultHeader=å•Ÿį”¨é č¨­æ¨™é ­īŧˆåį¨ąå’Œé įĸŧīŧ‰ HTMLToPDF.cssMediaType=更攚頁éĸįš„ CSS åĒ’éĢ”éĄžåž‹ã€‚ @@ -742,13 +763,13 @@ scalePages.submit=送å‡ē certSign.title=æ†‘č­‰į°ŊįĢ  certSign.header=äŊŋᔍäŊ įš„æ†‘č­‰į°ŊįĢ īŧˆé€˛čĄŒä¸­īŧ‰ certSign.selectPDF=選擇čρį°ŊįĢ įš„ PDF æĒ”æĄˆīŧš -certSign.jksNote=æŗ¨æ„īŧšåĻ‚æžœäŊ įš„č­‰æ›¸éĄžåž‹æœĒ在下éĸ列å‡ēīŧŒčĢ‹äŊŋᔍ keytool å‘Ŋäģ¤åˆ—åˇĨ兎將å…ļčŊ‰æ›į‚ē Java Keystore īŧˆ.jksīŧ‰ æĒ”。 į„ļ垌īŧŒé¸æ“‡ä¸‹éĸįš„ .jks 文äģļ選項。 -certSign.selectKey=選擇äŊ įš„į§é‘°æ–‡äģļīŧˆPKCS#8 æ ŧåŧīŧŒå¯čƒŊ是 .pem 或 .derīŧ‰īŧš -certSign.selectCert=選擇äŊ įš„æ†‘č­‰æ–‡äģļīŧˆX.509 æ ŧåŧīŧŒå¯čƒŊ是 .pem 或 .derīŧ‰īŧš -certSign.selectP12=選擇äŊ įš„ PKCS#12 金鑰åēĢæ–‡äģļīŧˆ.p12 或 .pfxīŧ‰īŧˆå¯é¸īŧŒåĻ‚æžœæäž›īŧŒåŽƒæ‡‰åŒ…åĢäŊ įš„į§é‘°å’Œæ†‘č­‰īŧ‰īŧš -certSign.selectJKS=選擇äŊ įš„ Java Keystore æĒ” īŧˆ.jks 或 .keystoreīŧ‰īŧš +certSign.jksNote=æŗ¨æ„īŧšåĻ‚æžœäŊ įš„č­‰æ›¸éĄžåž‹æœĒčĸĢ列在下斚īŧŒčĢ‹äŊŋᔍ keytool å‘Ŋäģ¤åˆ—åˇĨ兎將å…ļčŊ‰æ›į‚ē Java Keystore īŧˆ.jksīŧ‰ æĒ”æĄˆæ ŧåŧīŧŒį„ļ垌選擇下éĸįš„ .jks æĒ”æĄˆé¸é …ã€‚ +certSign.selectKey=選擇äŊ įš„ᧁ鑰æĒ”æĄˆīŧˆPKCS#8 æ ŧåŧīŧŒå‰¯æĒ”名可čƒŊ是 .pem 或 .derīŧ‰īŧš +certSign.selectCert=選擇äŊ įš„æ†‘č­‰æĒ”æĄˆīŧˆX.509 æ ŧåŧīŧŒå‰¯æĒ”名可čƒŊ是 .pem 或 .derīŧ‰īŧš +certSign.selectP12=選擇äŊ įš„ PKCS#12 金鑰åēĢæĒ”æĄˆīŧˆå‰¯æĒ”名可čƒŊ是 .p12 或 .pfxīŧ‰īŧˆé¸åĄĢīŧŒåĻ‚æžœæœ‰æäž›īŧŒå‰‡åŽƒæ‡‰čŠ˛åŒ…åĢäŊ įš„į§é‘°å’Œæ†‘č­‰īŧ‰īŧš +certSign.selectJKS=選擇äŊ įš„ Java Keystore æĒ”æĄˆ īŧˆå‰¯æĒ”名可čƒŊ是 .jks 或 .keystoreīŧ‰īŧš certSign.certType=æ†‘č­‰éĄžåž‹ -certSign.password=čŧ¸å…ĨäŊ įš„金鑰åēĢæˆ–ᧁ鑰坆įĸŧīŧˆåĻ‚æžœæœ‰īŧ‰īŧš +certSign.password=čŧ¸å…ĨäŊ įš„金鑰åēĢæˆ–ᧁ鑰坆įĸŧīŧˆåĻ‚æžœæœ‰įš„čŠąīŧ‰īŧš certSign.showSig=éĄ¯į¤ēį°ŊįĢ  certSign.reason=原因 certSign.location=äŊįŊŽ @@ -818,8 +839,13 @@ sign.save=å„˛å­˜į°ŊįĢ  sign.personalSigs=個äēēį°ŊįĢ  sign.sharedSigs=å…ąį”¨į°ŊįĢ  sign.noSavedSigs=尚æœĒå„˛å­˜äģģäŊ•į°ŊįĢ  - - +sign.addToAll=新åĸžč‡ŗæ‰€æœ‰é éĸ +sign.delete=åˆĒ除 +sign.first=įŦŦ一頁 +sign.last=最垌一頁 +sign.next=下一頁 +sign.previous=上一頁 +sign.maintainRatio=Toggle maintain aspect ratio #repair repair.title=äŋŽåžŠ repair.header=äŋŽåžŠ PDF @@ -863,7 +889,7 @@ ocr.selectText.10=OCR æ¨Ąåŧ ocr.selectText.11=į§ģ除 OCR åžŒįš„åŊąåƒīŧˆį§ģ除所有åŊąåƒīŧŒåĒ有在čŊ‰æ›æ­ĨéŠŸä¸­æ‰æœ‰į”¨īŧ‰ ocr.selectText.12=æ¸˛æŸ“éĄžåž‹īŧˆé€˛éšŽīŧ‰ ocr.help=čĢ‹é–ąčŽ€æ­¤æ–‡äģļīŧŒäē†č§ŖåĻ‚äŊ•äŊŋᔍå…ļäģ–čĒžč¨€å’Œ/或在 Docker 中äŊŋᔍ -ocr.credit=此服務äŊŋᔍ OCRmyPDF 和 Tesseract 進行 OCR。 +ocr.credit=此服務äŊŋᔍ qpdf 和 Tesseract 進行 OCR。 ocr.submit=äŊŋᔍ OCR 處ᐆ PDF @@ -887,7 +913,7 @@ fileToPDF.submit=čŊ‰æ›į‚ē PDF #compress compress.title=åŖ“į¸Ž compress.header=åŖ“į¸Ž PDF -compress.credit=此服務äŊŋᔍ Ghostscript 進行 PDF åŖ“į¸Ž/最äŊŗåŒ–。 +compress.credit=此服務äŊŋᔍ qpdf 進行 PDF åŖ“į¸Ž/最äŊŗåŒ–。 compress.selectText.1=æ‰‹å‹•æ¨Ąåŧ - åžž 1 到 4 compress.selectText.2=最äŊŗåŒ–į­‰į´šīŧš compress.selectText.3=4īŧˆå°æ–ŧåĢæœ‰æ–‡å­—įš„åŊąåƒäž†čĒĒįĩæžœåžˆįŗŸīŧ‰ @@ -935,17 +961,39 @@ pdfOrganiser.placeholder=īŧˆäž‹åĻ‚ 1,3,2 或 4-8,2,10-12 或 2n-1īŧ‰ multiTool.title=PDF č¤‡åˆåˇĨå…ˇ multiTool.header=PDF č¤‡åˆåˇĨå…ˇ multiTool.uploadPrompts=æĒ”名 -multiTool.selectAll=Select All -multiTool.deselectAll=Deselect All -multiTool.selectPages=Page Select -multiTool.selectedPages=Selected Pages -multiTool.page=Page -multiTool.deleteSelected=Delete Selected -multiTool.downloadAll=Export -multiTool.downloadSelected=Export Selected +multiTool.selectAll=全選 +multiTool.deselectAll=取æļˆå…¨é¸ +multiTool.selectPages=選取頁éĸ +multiTool.selectedPages=åˇ˛é¸å–įš„é éĸ +multiTool.page=頁éĸ +multiTool.deleteSelected=åˆĒé™¤åˇ˛é¸å–įš„é …į›Ž +multiTool.downloadAll=匯å‡ē +multiTool.downloadSelected=匯å‡ēåˇ˛é¸å–įš„é …į›Ž + +multiTool.insertPageBreak=插å…Ĩ分頁įŦĻ號 +multiTool.addFile=新åĸžæĒ”æĄˆ +multiTool.rotateLeft=向åˇĻ旋čŊ‰ +multiTool.rotateRight=å‘åŗæ—‹čŊ‰ +multiTool.split=åˆ†å‰˛ +multiTool.moveLeft=向åˇĻį§ģ動 +multiTool.moveRight=å‘åŗį§ģ動 +multiTool.delete=åˆĒ除 +multiTool.dragDropMessage=åˇ˛é¸å–įš„é éĸ +multiTool.undo=垊原 +multiTool.redo=重做 + +#decrypt +decrypt.passwordPrompt=æ­¤æĒ”æĄˆåˇ˛å—å¯†įĸŧäŋč­ˇã€‚čĢ‹čŧ¸å…Ĩ密įĸŧīŧš +decrypt.cancelled=åˇ˛å–æļˆč™•ᐆ PDFīŧš{0} +decrypt.noPassword=æœĒ提䞛加密 PDF įš„å¯†įĸŧīŧš{0} +decrypt.invalidPassword=čĢ‹é‡æ–°čŧ¸å…Ĩæ­Ŗįĸēįš„å¯†įĸŧ。 +decrypt.invalidPasswordHeader=密įĸŧ錯čĒ¤æˆ–ä¸æ”¯æ´įš„åŠ å¯†æ–šåŧīŧŒPDFīŧš{0} +decrypt.unexpectedError=處ᐆæĒ”æĄˆæ™‚į™ŧį”ŸéŒ¯čĒ¤ã€‚čĢ‹å†čŠĻ一æŦĄã€‚ +decrypt.serverError=č§Ŗå¯†æ™‚į™ŧį”Ÿäŧ翜å™¨éŒ¯čǤīŧš{0} +decrypt.success=æĒ”æĄˆåˇ˛æˆåŠŸč§Ŗå¯†ã€‚ #multiTool-advert -multiTool-advert.message=This feature is also available in our multi-tool page. Check it out for enhanced page-by-page UI and additional features! +multiTool-advert.message=此功čƒŊ䚟可äģĨåœ¨æˆ‘å€‘įš„č¤‡åˆåˇĨ兎頁éĸ中äŊŋį”¨ã€‚å‰åž€æŸĨįœ‹ä¸ĻéĢ”éŠ—æ›´åŧˇå¤§įš„逐頁操äŊœäģ‹éĸ及å…ļäģ–é€˛éšŽåŠŸčƒŊīŧ #view pdf viewPdf.title=æĒĸčĻ– PDF @@ -1008,6 +1056,7 @@ pdfToImage.grey=ၰåēĻ pdfToImage.blackwhite=éģ‘į™Ŋīŧˆå¯čƒŊ會éēå¤ąčŗ‡æ–™īŧīŧ‰ pdfToImage.submit=čŊ‰æ› pdfToImage.info=尚æœĒåŽ‰čŖ Python。需čĻåŽ‰čŖ Python 才čƒŊ進行 WebP čŊ‰æ›ã€‚ +pdfToImage.placeholder=īŧˆäž‹åĻ‚ 1,2,8 或 4,7,12-16 或 2n-1īŧ‰ #addPassword @@ -1035,12 +1084,13 @@ addPassword.submit=加密 #watermark watermark.title=新åĸžæĩŽæ°´å° watermark.header=新åĸžæĩŽæ°´å° +watermark.customColor=č‡Ēč¨‚æ–‡å­—éĄč‰˛ watermark.selectText.1=選擇čĻæ–°åĸžæĩŽæ°´å°įš„ PDFīŧš watermark.selectText.2=æĩŽæ°´å°æ–‡å­—īŧš watermark.selectText.3=字型大小īŧš watermark.selectText.4=旋čŊ‰īŧˆ0-360īŧ‰īŧš -watermark.selectText.5=widthSpacerīŧˆæ¯å€‹æĩŽæ°´å°äš‹é–“įš„æ°´åšŗé–“čˇīŧ‰īŧš -watermark.selectText.6=heightSpacerīŧˆæ¯å€‹æĩŽæ°´å°äš‹é–“įš„åž‚į›´é–“čˇīŧ‰īŧš +watermark.selectText.5=Width Spacerīŧˆæ¯å€‹æĩŽæ°´å°äš‹é–“įš„æ°´åšŗé–“čˇīŧ‰īŧš +watermark.selectText.6=Height Spacerīŧˆæ¯å€‹æĩŽæ°´å°äš‹é–“įš„åž‚į›´é–“čˇīŧ‰īŧš watermark.selectText.7=不透明åēĻīŧˆ0% - 100%īŧ‰īŧš watermark.selectText.8=æĩŽæ°´å°éĄžåž‹īŧš watermark.selectText.9=æĩŽæ°´å°åŊąåƒīŧš @@ -1097,7 +1147,7 @@ changeMetadata.submit=čŽŠæ›´ #pdfToPDFA pdfToPDFA.title=PDF čŊ‰ PDF/A pdfToPDFA.header=PDF čŊ‰ PDF/A -pdfToPDFA.credit=此服務äŊŋᔍ ghostscript 進行 PDF/A čŊ‰æ› +pdfToPDFA.credit=此服務äŊŋᔍ qpdf 進行 PDF/A čŊ‰æ› pdfToPDFA.submit=čŊ‰æ› pdfToPDFA.tip=į›Žå‰ä¸æ”¯æ´ä¸Šå‚ŗå¤šå€‹ pdfToPDFA.outputFormat=čŧ¸å‡ēæ ŧåŧ @@ -1161,7 +1211,7 @@ split-by-size-or-count.submit=送å‡ē #overlay-pdfs overlay-pdfs.header=čφ蓋 PDF æĒ”æĄˆ -overlay-pdfs.baseFile.label=選擇åŸēį¤Ž PDF æĒ”æĄˆ +overlay-pdfs.baseFile.label=選擇åŸēåē• PDF æĒ”æĄˆ overlay-pdfs.overlayFiles.label=選擇čφ蓋 PDF æĒ”æĄˆ overlay-pdfs.mode.label=選擇čĻ†č“‹æ¨Ąåŧ overlay-pdfs.mode.sequential=åēåˆ—čφ蓋 @@ -1245,3 +1295,53 @@ splitByChapters.desc.2=æ›¸įą¤åą¤į´šīŧšé¸æ“‡į”¨æ–ŧåˆ†å‰˛įš„æ›¸įą¤åą¤į´šīŧˆ0 襨 splitByChapters.desc.3=包åĢ中įšŧčŗ‡æ–™īŧšåĻ‚æžœå‹žé¸īŧŒåŽŸå§‹ PDF įš„ä¸­įšŧčŗ‡æ–™å°‡åŒ…åĢåœ¨æ¯å€‹åˆ†å‰˛åžŒįš„ PDF 中。 splitByChapters.desc.4=å…č¨ąé‡č¤‡īŧšåĻ‚æžœå‹žé¸īŧŒå…č¨ąåŒä¸€é éĸä¸Šįš„å¤šå€‹æ›¸įą¤åģēįĢ‹į¨įĢ‹įš„ PDF。 splitByChapters.submit=åˆ†å‰˛ PDF + +#File Chooser +fileChooser.click=éģžé¸ +fileChooser.or=或 +fileChooser.dragAndDrop=拖攞æĒ”æĄˆ +fileChooser.dragAndDropPDF=Drag & Drop PDF file +fileChooser.dragAndDropImage=Drag & Drop Image file +fileChooser.hoveredDragAndDrop=將æĒ”æĄˆæ‹–æ”žč‡ŗæ­¤ + +#release notes +releases.footer=į‰ˆæœŦčŗ‡č¨Š +releases.title=į‰ˆæœŦčŗ‡č¨Š +releases.header=į‰ˆæœŦčŗ‡č¨Š +releases.current.version=į›Žå‰į‰ˆæœŦ +releases.note=į‰ˆæœŦčŗ‡č¨Šåƒ…æäž›č‹ąæ–‡į‰ˆæœŦ + +#Validate Signature +validateSignature.title=驗證 PDF į°ŊįĢ  +validateSignature.header=éŠ—č­‰æ•¸äŊį°ŊįĢ  +validateSignature.selectPDF=é¸æ“‡åˇ˛į°ŊįĢ įš„ PDF æĒ”æĄˆ +validateSignature.submit=驗證į°ŊįĢ  +validateSignature.results=驗證įĩæžœ +validateSignature.status=į‹€æ…‹ +validateSignature.signer=į°ŊįŊ˛č€… +validateSignature.date=æ—Ĩ期 +validateSignature.reason=原因 +validateSignature.location=äŊįŊŽ +validateSignature.noSignatures=此文äģļ中æœĒ扞到數äŊį°ŊįĢ  +validateSignature.status.valid=有效 +validateSignature.status.invalid=į„Ąæ•ˆ +validateSignature.chain.invalid=æ†‘č­‰éˆéŠ—č­‰å¤ąæ•— - į„Ąæŗ•éŠ—č­‰į°ŊįŊ˛č€…čēĢäģŊ +validateSignature.trust.invalid=æ†‘č­‰ä¸åœ¨äŋĄäģģå„˛å­˜å€ä¸­ - į„Ąæŗ•éŠ—č­‰äž†æē +validateSignature.cert.expired=æ†‘č­‰åˇ˛éŽæœŸ +validateSignature.cert.revoked=æ†‘č­‰åˇ˛čĸĢæ’¤éЎ +validateSignature.signature.info=į°ŊįĢ čŗ‡č¨Š +validateSignature.signature=į°ŊįĢ  +validateSignature.signature.mathValid=į°ŊįĢ åœ¨æ•¸å­¸ä¸Šæœ‰æ•ˆīŧŒäŊ†īŧš +validateSignature.selectCustomCert=č‡Ē訂 X.509 æ†‘č­‰æĒ”æĄˆīŧˆé¸åĄĢīŧ‰ +validateSignature.cert.info=æ†‘č­‰čŠŗį´°čŗ‡č¨Š +validateSignature.cert.issuer=į™ŧ行者 +validateSignature.cert.subject=ä¸ģ旨 +validateSignature.cert.serialNumber=åēč™Ÿ +validateSignature.cert.validFrom=有效期č‡Ē +validateSignature.cert.validUntil=æœ‰æ•ˆæœŸč‡ŗ +validateSignature.cert.algorithm=æŧ”įŽ—æŗ• +validateSignature.cert.keySize=金鑰長åēĻ +validateSignature.cert.version=į‰ˆæœŦ +validateSignature.cert.keyUsage=金鑰ᔍ途 +validateSignature.cert.selfSigned=č‡Ē我į°ŊįŊ˛ +validateSignature.cert.bits=äŊå…ƒ diff --git a/src/main/resources/settings.yml.template b/src/main/resources/settings.yml.template index d9971d0c86..a110744a02 100644 --- a/src/main/resources/settings.yml.template +++ b/src/main/resources/settings.yml.template @@ -13,10 +13,10 @@ security: enableLogin: false # set to 'true' to enable login - csrfDisabled: true # set to 'true' to disable CSRF protection (not recommended for production) + csrfDisabled: false # set to 'true' to disable CSRF protection (not recommended for production) loginAttemptCount: 5 # lock user account after 5 tries; when using e.g. Fail2Ban you can deactivate the function with -1 loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts - loginMethod: all # 'all' (Login Username/Password and OAuth2[must be enabled and configured]), 'normal'(only Login with Username/Password) or 'oauth2'(only Login with OAuth2) + loginMethod: all # Accepts values like 'all' and 'normal'(only Login with Username/Password), 'oauth2'(only Login with OAuth2) or 'saml2'(only Login with SAML2) initialLogin: username: '' # initial username for the first login password: '' # initial password for the first login @@ -42,14 +42,14 @@ security: issuer: '' # set to any provider that supports OpenID Connect Discovery (/.well-known/openid-configuration) endpoint clientId: '' # client ID from your provider clientSecret: '' # client secret from your provider - autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users + autoCreateUser: true # set to 'true' to allow auto-creation of non-existing users blockRegistration: false # set to 'true' to deny login with SSO without prior registration by an admin useAsUsername: email # default is 'email'; custom fields can be used as the username scopes: openid, profile, email # specify the scopes for which the application will request permissions provider: google # set this to your OAuth provider's name, e.g., 'google' or 'keycloak' saml2: - enabled: false # currently in alpha, not recommended for use yet, enableAlphaFunctionality must be set to true - autoCreateUser: false # set to 'true' to allow auto-creation of non-existing users + enabled: false # Only enabled for paid enterprise clients (enterpriseEdition.enabled must be true) + autoCreateUser: true # set to 'true' to allow auto-creation of non-existing users blockRegistration: false # set to 'true' to deny login with SSO without prior registration by an admin registrationId: stirling idpMetadataUri: https://dev-XXXXXXXX.okta.com/app/externalKey/sso/saml/metadata @@ -102,14 +102,15 @@ metrics: AutomaticallyGenerated: key: example UUID: example - + appVersion: 0.35.0 + processExecutor: sessionLimit: # Process executor instances limits libreOfficeSessionLimit: 1 pdfToHtmlSessionLimit: 1 - ocrMyPdfSessionLimit: 2 + qpdfSessionLimit: 4 + tesseractSessionLimit: 1 pythonOpenCvSessionLimit: 8 - ghostScriptSessionLimit: 16 weasyPrintSessionLimit: 16 installAppSessionLimit: 1 calibreSessionLimit: 1 @@ -117,7 +118,7 @@ processExecutor: libreOfficetimeoutMinutes: 30 pdfToHtmltimeoutMinutes: 20 pythonOpenCvtimeoutMinutes: 30 - ghostScripttimeoutMinutes: 30 weasyPrinttimeoutMinutes: 30 installApptimeoutMinutes: 60 calibretimeoutMinutes: 30 + tesseractTimeoutMinutes: 30 diff --git a/src/main/resources/static/3rdPartyLicenses.json b/src/main/resources/static/3rdPartyLicenses.json index 789ebe0fb4..ae8e6ad7fa 100644 --- a/src/main/resources/static/3rdPartyLicenses.json +++ b/src/main/resources/static/3rdPartyLicenses.json @@ -3,14 +3,14 @@ { "moduleName": "ch.qos.logback:logback-classic", "moduleUrl": "http://www.qos.ch", - "moduleVersion": "1.5.11", + "moduleVersion": "1.5.12", "moduleLicense": "GNU Lesser General Public License", "moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" }, { "moduleName": "ch.qos.logback:logback-core", "moduleUrl": "http://www.qos.ch", - "moduleVersion": "1.5.11", + "moduleVersion": "1.5.12", "moduleLicense": "GNU Lesser General Public License", "moduleLicenseUrl": "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" }, @@ -45,77 +45,56 @@ { "moduleName": "com.fasterxml.jackson.core:jackson-annotations", "moduleUrl": "https://github.com/FasterXML/jackson", - "moduleVersion": "2.17.2", + "moduleVersion": "2.18.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.core:jackson-core", "moduleUrl": "https://github.com/FasterXML/jackson-core", - "moduleVersion": "2.17.2", + "moduleVersion": "2.18.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.core:jackson-databind", "moduleUrl": "https://github.com/FasterXML/jackson", - "moduleVersion": "2.17.2", + "moduleVersion": "2.18.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml", "moduleUrl": "https://github.com/FasterXML/jackson-dataformats-text", - "moduleVersion": "2.17.2", + "moduleVersion": "2.18.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jdk8", "moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jdk8", - "moduleVersion": "2.17.2", + "moduleVersion": "2.18.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", "moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-datatype-jsr310", - "moduleVersion": "2.17.2", + "moduleVersion": "2.18.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, - { - "moduleName": "com.fasterxml.jackson.jaxrs:jackson-jaxrs-base", - "moduleUrl": "https://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-base", - "moduleVersion": "2.17.2", - "moduleLicense": "The Apache Software License, Version 2.0", - "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" - }, - { - "moduleName": "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider", - "moduleUrl": "https://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-json-provider", - "moduleVersion": "2.17.2", - "moduleLicense": "The Apache Software License, Version 2.0", - "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" - }, - { - "moduleName": "com.fasterxml.jackson.module:jackson-module-jaxb-annotations", - "moduleUrl": "https://github.com/FasterXML/jackson-modules-base", - "moduleVersion": "2.17.2", - "moduleLicense": "The Apache Software License, Version 2.0", - "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" - }, { "moduleName": "com.fasterxml.jackson.module:jackson-module-parameter-names", "moduleUrl": "https://github.com/FasterXML/jackson-modules-java8/jackson-module-parameter-names", - "moduleVersion": "2.17.2", + "moduleVersion": "2.18.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.fasterxml.jackson:jackson-bom", "moduleUrl": "https://github.com/FasterXML/jackson-bom", - "moduleVersion": "2.17.2", + "moduleVersion": "2.18.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -146,6 +125,18 @@ "moduleLicense": "GNU General Public License v3.0", "moduleLicenseUrl": "https://api.github.com/licenses/gpl-3.0" }, + { + "moduleName": "com.github.jai-imageio:jai-imageio-core", + "moduleUrl": "https://github.com/jai-imageio/jai-imageio-core", + "moduleVersion": "1.4.0", + "moduleLicense": "LICENSE.txt" + }, + { + "moduleName": "com.github.jai-imageio:jai-imageio-jpeg2000", + "moduleUrl": "https://github.com/jai-imageio/jai-imageio-jpeg2000", + "moduleVersion": "1.4.0", + "moduleLicense": "LICENSE-JJ2000.txt, LICENSE-Sun.txt" + }, { "moduleName": "com.github.stephenc.jcip:jcip-annotations", "moduleUrl": "http://stephenc.github.com/jcip-annotations", @@ -161,22 +152,30 @@ "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { - "moduleName": "com.google.errorprone:error_prone_annotations", + "moduleName": "com.google.code.gson:gson", + "moduleUrl": "https://github.com/google/gson", "moduleVersion": "2.11.0", + "moduleLicense": "Apache-2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "com.google.errorprone:error_prone_annotations", + "moduleUrl": "https://errorprone.info/error_prone_annotations", + "moduleVersion": "2.28.0", "moduleLicense": "Apache 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.google.guava:failureaccess", "moduleUrl": "https://github.com/google/guava/", - "moduleVersion": "1.0.1", + "moduleVersion": "1.0.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "com.google.guava:guava", "moduleUrl": "https://github.com/google/guava/", - "moduleVersion": "31.1-jre", + "moduleVersion": "33.3.1-jre", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -189,8 +188,8 @@ { "moduleName": "com.google.j2objc:j2objc-annotations", "moduleUrl": "https://github.com/google/j2objc/", - "moduleVersion": "1.3", - "moduleLicense": "The Apache Software License, Version 2.0", + "moduleVersion": "3.0.0", + "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { @@ -222,7 +221,7 @@ { "moduleName": "com.h2database:h2", "moduleUrl": "https://h2database.com", - "moduleVersion": "2.1.214", + "moduleVersion": "2.3.232", "moduleLicense": "MPL 2.0", "moduleLicenseUrl": "https://www.mozilla.org/en-US/MPL/2.0/" }, @@ -342,20 +341,6 @@ "moduleLicense": "The BSD License", "moduleLicenseUrl": "https://github.com/haraldk/TwelveMonkeys#license" }, - { - "moduleName": "com.unboundid.product.scim2:scim2-sdk-client", - "moduleUrl": "https://github.com/pingidentity/scim2", - "moduleVersion": "2.3.5", - "moduleLicense": "UnboundID SCIM2 SDK Free Use License", - "moduleLicenseUrl": "https://github.com/pingidentity/scim2" - }, - { - "moduleName": "com.unboundid.product.scim2:scim2-sdk-common", - "moduleUrl": "https://github.com/pingidentity/scim2", - "moduleVersion": "2.3.5", - "moduleLicense": "UnboundID SCIM2 SDK Free Use License", - "moduleLicenseUrl": "https://github.com/pingidentity/scim2" - }, { "moduleName": "com.zaxxer:HikariCP", "moduleUrl": "https://github.com/brettwooldridge/HikariCP", @@ -370,10 +355,17 @@ "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, + { + "moduleName": "commons-cli:commons-cli", + "moduleUrl": "http://commons.apache.org/proper/commons-cli/", + "moduleVersion": "1.4", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, { "moduleName": "commons-codec:commons-codec", "moduleUrl": "https://commons.apache.org/proper/commons-codec/", - "moduleVersion": "1.16.1", + "moduleVersion": "1.17.1", "moduleLicense": "Apache-2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -387,16 +379,16 @@ { "moduleName": "commons-io:commons-io", "moduleUrl": "https://commons.apache.org/proper/commons-io/", - "moduleVersion": "2.17.0", + "moduleVersion": "2.18.0", "moduleLicense": "Apache-2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "commons-logging:commons-logging", - "moduleUrl": "http://jakarta.apache.org/commons/logging/", - "moduleVersion": "1.0.4", - "moduleLicense": "The Apache Software License, Version 2.0", - "moduleLicenseUrl": "/LICENSE.txt" + "moduleUrl": "https://commons.apache.org/proper/commons-logging/", + "moduleVersion": "1.3.3", + "moduleLicense": "Apache-2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "io.dropwizard.metrics:metrics-core", @@ -407,41 +399,41 @@ { "moduleName": "io.github.pixee:java-security-toolkit", "moduleUrl": "https://github.com/pixee/java-security-toolkit", - "moduleVersion": "1.2.0", + "moduleVersion": "1.2.1", "moduleLicense": "MIT License", "moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php" }, { "moduleName": "io.micrometer:micrometer-commons", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.6", + "moduleVersion": "1.14.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "io.micrometer:micrometer-core", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.6", + "moduleVersion": "1.14.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "io.micrometer:micrometer-jakarta9", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.6", + "moduleVersion": "1.14.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "io.micrometer:micrometer-observation", "moduleUrl": "https://github.com/micrometer-metrics/micrometer", - "moduleVersion": "1.13.6", + "moduleVersion": "1.14.2", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "io.smallrye:jandex", - "moduleVersion": "3.1.2", + "moduleVersion": "3.2.0", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -558,22 +550,36 @@ "moduleLicenseUrl": "https://www.gnu.org/software/classpath/license.html" }, { - "moduleName": "javax.activation:javax.activation-api", - "moduleUrl": "http://www.oracle.com", - "moduleVersion": "1.2.0", - "moduleLicense": "COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0", - "moduleLicenseUrl": "https://opensource.org/licenses/CDDL-1.0" + "moduleName": "me.friwi:gluegen-rt", + "moduleUrl": "http://jogamp.org/gluegen/www/", + "moduleVersion": "v2.4.0-rc-20210111", + "moduleLicense": "BSD-4 License", + "moduleLicenseUrl": "http://www.spdx.org/licenses/BSD-4-Clause" }, { - "moduleName": "javax.xml.bind:jaxb-api", - "moduleUrl": "http://www.oracle.com/", - "moduleVersion": "2.3.1", - "moduleLicense": "GPL2 w/ CPE", - "moduleLicenseUrl": "https://oss.oracle.com/licenses/CDDL+GPL-1.1" + "moduleName": "me.friwi:jcef-api", + "moduleUrl": "https://bitbucket.org/chromiumembedded/java-cef/", + "moduleVersion": "jcef-99c2f7a+cef-127.3.1+g6cbb30e+chromium-127.0.6533.100", + "moduleLicense": "BSD License", + "moduleLicenseUrl": "https://bitbucket.org/chromiumembedded/java-cef/src/master/LICENSE.txt" + }, + { + "moduleName": "me.friwi:jcefmaven", + "moduleUrl": "https://github.com/jcefmaven/jcefmaven/", + "moduleVersion": "127.3.1", + "moduleLicense": "Apache-2.0 License", + "moduleLicenseUrl": "https://github.com/jcefmaven/jcefmaven/blob/master/LICENSE" + }, + { + "moduleName": "me.friwi:jogl-all", + "moduleUrl": "http://jogamp.org/jogl/www/", + "moduleVersion": "v2.4.0-rc-20210111", + "moduleLicense": "Ubuntu Font Licence 1.0", + "moduleLicenseUrl": "http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt" }, { "moduleName": "net.bytebuddy:byte-buddy", - "moduleVersion": "1.14.19", + "moduleVersion": "1.15.11", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -611,10 +617,24 @@ "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, + { + "moduleName": "org.apache.commons:commons-compress", + "moduleUrl": "https://commons.apache.org/proper/commons-compress/", + "moduleVersion": "1.21", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, + { + "moduleName": "org.apache.commons:commons-csv", + "moduleUrl": "https://commons.apache.org/proper/commons-csv/", + "moduleVersion": "1.9.0", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" + }, { "moduleName": "org.apache.commons:commons-lang3", "moduleUrl": "https://commons.apache.org/proper/commons-lang/", - "moduleVersion": "3.14.0", + "moduleVersion": "3.17.0", "moduleLicense": "Apache-2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -641,13 +661,13 @@ }, { "moduleName": "org.apache.logging.log4j:log4j-api", - "moduleVersion": "2.23.1", + "moduleVersion": "2.24.3", "moduleLicense": "Apache-2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "org.apache.logging.log4j:log4j-to-slf4j", - "moduleVersion": "2.23.1", + "moduleVersion": "2.24.3", "moduleLicense": "Apache-2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -695,7 +715,7 @@ { "moduleName": "org.apache.tomcat.embed:tomcat-embed-el", "moduleUrl": "https://tomcat.apache.org/", - "moduleVersion": "10.1.31", + "moduleVersion": "10.1.34", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -733,31 +753,52 @@ "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, + { + "moduleName": "org.bouncycastle:bcmail-jdk15on", + "moduleUrl": "https://www.bouncycastle.org/java.html", + "moduleVersion": "1.69", + "moduleLicense": "Bouncy Castle Licence", + "moduleLicenseUrl": "https://www.bouncycastle.org/licence.html" + }, + { + "moduleName": "org.bouncycastle:bcpkix-jdk15on", + "moduleUrl": "https://www.bouncycastle.org/java.html", + "moduleVersion": "1.69", + "moduleLicense": "Bouncy Castle Licence", + "moduleLicenseUrl": "https://www.bouncycastle.org/licence.html" + }, { "moduleName": "org.bouncycastle:bcpkix-jdk18on", "moduleUrl": "https://www.bouncycastle.org/java.html", - "moduleVersion": "1.78.1", + "moduleVersion": "1.79", "moduleLicense": "Bouncy Castle Licence", "moduleLicenseUrl": "https://www.bouncycastle.org/licence.html" }, { "moduleName": "org.bouncycastle:bcprov-jdk18on", "moduleUrl": "https://www.bouncycastle.org/java.html", - "moduleVersion": "1.78.1", + "moduleVersion": "1.79", + "moduleLicense": "Bouncy Castle Licence", + "moduleLicenseUrl": "https://www.bouncycastle.org/licence.html" + }, + { + "moduleName": "org.bouncycastle:bcutil-jdk15on", + "moduleUrl": "https://www.bouncycastle.org/java.html", + "moduleVersion": "1.69", "moduleLicense": "Bouncy Castle Licence", "moduleLicenseUrl": "https://www.bouncycastle.org/licence.html" }, { "moduleName": "org.bouncycastle:bcutil-jdk18on", "moduleUrl": "https://www.bouncycastle.org/java.html", - "moduleVersion": "1.78.1", + "moduleVersion": "1.79", "moduleLicense": "Bouncy Castle Licence", "moduleLicenseUrl": "https://www.bouncycastle.org/licence.html" }, { "moduleName": "org.checkerframework:checker-qual", - "moduleUrl": "https://checkerframework.org", - "moduleVersion": "3.12.0", + "moduleUrl": "https://checkerframework.org/", + "moduleVersion": "3.43.0", "moduleLicense": "The MIT License", "moduleLicenseUrl": "http://opensource.org/licenses/MIT" }, @@ -790,182 +831,182 @@ { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-client", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-common", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-servlet", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-annotations", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-plus", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlet", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-servlets", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.ee10:jetty-ee10-webapp", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-client", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-common", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-core-server", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-api", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty.websocket:jetty-websocket-jetty-common", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-alpn-client", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-client", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-ee", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-http", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-io", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-plus", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-security", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-server", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-session", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-util", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, { "moduleName": "org.eclipse.jetty:jetty-xml", "moduleUrl": "https://jetty.org/", - "moduleVersion": "12.0.14", + "moduleVersion": "12.0.16", "moduleLicense": "Eclipse Public License - Version 2.0", "moduleLicenseUrl": "https://www.eclipse.org/legal/epl-2.0/" }, @@ -1000,23 +1041,23 @@ { "moduleName": "org.hibernate.common:hibernate-commons-annotations", "moduleUrl": "http://hibernate.org", - "moduleVersion": "6.0.6.Final", - "moduleLicense": "GNU Library General Public License v2.1 or later", - "moduleLicenseUrl": "http://www.opensource.org/licenses/LGPL-2.1" + "moduleVersion": "7.0.3.Final", + "moduleLicense": "Apache License Version 2.0", + "moduleLicenseUrl": "https://opensource.org/licenses/Apache-2.0" }, { "moduleName": "org.hibernate.orm:hibernate-core", - "moduleUrl": "https://www.hibernate.org/orm/6.5", - "moduleVersion": "6.5.3.Final", + "moduleUrl": "https://www.hibernate.org/orm/6.6", + "moduleVersion": "6.6.4.Final", "moduleLicense": "GNU Library General Public License v2.1 or later", "moduleLicenseUrl": "https://www.opensource.org/licenses/LGPL-2.1" }, { "moduleName": "org.jboss.logging:jboss-logging", "moduleUrl": "http://www.jboss.org", - "moduleVersion": "3.5.3.Final", - "moduleLicense": "Public Domain", - "moduleLicenseUrl": "http://repository.jboss.org/licenses/cc0-1.0.txt" + "moduleVersion": "3.6.1.Final", + "moduleLicense": "Apache License 2.0", + "moduleLicenseUrl": "https://repository.jboss.org/licenses/apache-2.0.txt" }, { "moduleName": "org.latencyutils:LatencyUtils", @@ -1025,6 +1066,36 @@ "moduleLicense": "Public Domain, per Creative Commons CC0", "moduleLicenseUrl": "http://creativecommons.org/publicdomain/zero/1.0/" }, + { + "moduleName": "org.locationtech.jts:jts-core", + "moduleVersion": "1.18.1", + "moduleLicense": "Eclipse Public License, Version 2.0", + "moduleLicenseUrl": "https://github.com/locationtech/jts/blob/master/LICENSE_EPLv2.txt" + }, + { + "moduleName": "org.openjfx:javafx-base", + "moduleVersion": "21", + "moduleLicense": "GPLv2+CE", + "moduleLicenseUrl": "https://openjdk.java.net/legal/gplv2+ce.html" + }, + { + "moduleName": "org.openjfx:javafx-controls", + "moduleVersion": "21", + "moduleLicense": "GPLv2+CE", + "moduleLicenseUrl": "https://openjdk.java.net/legal/gplv2+ce.html" + }, + { + "moduleName": "org.openjfx:javafx-graphics", + "moduleVersion": "21", + "moduleLicense": "GPLv2+CE", + "moduleLicenseUrl": "https://openjdk.java.net/legal/gplv2+ce.html" + }, + { + "moduleName": "org.openjfx:javafx-swing", + "moduleVersion": "21", + "moduleLicense": "GPLv2+CE", + "moduleLicenseUrl": "https://openjdk.java.net/legal/gplv2+ce.html" + }, { "moduleName": "org.opensaml:opensaml-core", "moduleVersion": "4.3.2", @@ -1100,21 +1171,21 @@ { "moduleName": "org.ow2.asm:asm", "moduleUrl": "http://asm.ow2.org", - "moduleVersion": "9.7", + "moduleVersion": "9.7.1", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "org.ow2.asm:asm-commons", "moduleUrl": "http://asm.ow2.org", - "moduleVersion": "9.7", + "moduleVersion": "9.7.1", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "org.ow2.asm:asm-tree", "moduleUrl": "http://asm.ow2.org", - "moduleVersion": "9.7", + "moduleVersion": "9.7.1", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -1153,297 +1224,297 @@ { "moduleName": "org.springframework.boot:spring-boot", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-actuator", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-actuator-autoconfigure", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-autoconfigure", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-devtools", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-actuator", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", - "moduleLicense": "Apache License, Version 2.0", - "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" - }, - { - "moduleName": "org.springframework.boot:spring-boot-starter-aop", - "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-data-jpa", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-jdbc", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-jetty", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-json", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-logging", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-oauth2-client", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-security", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-thymeleaf", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.boot:spring-boot-starter-web", "moduleUrl": "https://spring.io/projects/spring-boot", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.data:spring-data-commons", "moduleUrl": "https://spring.io/projects/spring-data", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.data:spring-data-jpa", "moduleUrl": "https://projects.spring.io/spring-data-jpa", - "moduleVersion": "3.3.5", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-config", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.4", + "moduleVersion": "6.4.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-core", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.4", + "moduleVersion": "6.4.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-crypto", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.4", + "moduleVersion": "6.4.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-oauth2-client", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.4", + "moduleVersion": "6.4.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-oauth2-core", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.4", + "moduleVersion": "6.4.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-oauth2-jose", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.4", + "moduleVersion": "6.4.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-saml2-service-provider", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.4", + "moduleVersion": "6.4.2", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework.security:spring-security-web", "moduleUrl": "https://spring.io/projects/spring-security", - "moduleVersion": "6.3.4", + "moduleVersion": "6.4.2", + "moduleLicense": "Apache License, Version 2.0", + "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" + }, + { + "moduleName": "org.springframework.session:spring-session-core", + "moduleUrl": "https://spring.io/projects/spring-session", + "moduleVersion": "3.4.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-aop", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-aspects", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-beans", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-context", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-core", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-expression", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-jcl", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-jdbc", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-orm", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-tx", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-web", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.springframework:spring-webmvc", "moduleUrl": "https://github.com/spring-projects/spring-framework", - "moduleVersion": "6.1.14", + "moduleVersion": "6.2.1", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0" }, { "moduleName": "org.thymeleaf.extras:thymeleaf-extras-springsecurity5", - "moduleVersion": "3.1.2.RELEASE", + "moduleVersion": "3.1.3.RELEASE", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "org.thymeleaf:thymeleaf", - "moduleVersion": "3.1.2.RELEASE", + "moduleVersion": "3.1.3.RELEASE", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "org.thymeleaf:thymeleaf-spring5", - "moduleVersion": "3.1.2.RELEASE", + "moduleVersion": "3.1.3.RELEASE", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, { "moduleName": "org.thymeleaf:thymeleaf-spring6", - "moduleVersion": "3.1.2.RELEASE", + "moduleVersion": "3.1.3.RELEASE", "moduleLicense": "The Apache Software License, Version 2.0", "moduleLicenseUrl": "https://www.apache.org/licenses/LICENSE-2.0.txt" }, @@ -1464,10 +1535,17 @@ { "moduleName": "org.yaml:snakeyaml", "moduleUrl": "https://bitbucket.org/snakeyaml/snakeyaml", - "moduleVersion": "2.2", + "moduleVersion": "2.3", "moduleLicense": "Apache License, Version 2.0", "moduleLicenseUrl": "http://www.apache.org/licenses/LICENSE-2.0.txt" }, + { + "moduleName": "technology.tabula:tabula", + "moduleUrl": "http://github.com/tabulapdf/tabula-java", + "moduleVersion": "1.0.5", + "moduleLicense": "MIT License", + "moduleLicenseUrl": "http://www.opensource.org/licenses/mit-license.php" + }, { "moduleName": "xml-apis:xml-apis", "moduleUrl": "http://xml.apache.org/commons/components/external/", diff --git a/src/main/resources/static/css/add-image.css b/src/main/resources/static/css/add-image.css index 5a735b4255..f51da024fa 100644 --- a/src/main/resources/static/css/add-image.css +++ b/src/main/resources/static/css/add-image.css @@ -2,22 +2,32 @@ position: relative; margin: 20px 0; } + #pdf-canvas { box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.384); width: 100%; } + .draggable-buttons-box { - position: absolute; + position: relative; top: 0; padding: 10px; - width: 100%; + width: calc(100% + 4.4rem); display: flex; gap: 5px; + z-index: 5; + margin-left: -2.2rem; } -.draggable-buttons-box > button { - z-index: 10; + +.draggable-buttons-box>button { + z-index: 4; background-color: rgba(13, 110, 253, 0.1); + flex: 1 1 auto; + min-width: 2.5rem; + max-width: 4rem; } + + .draggable-canvas { border: 1px solid red; position: absolute; @@ -26,3 +36,20 @@ top: 0px; left: 0; } + +.input-with-icon { + position: relative; + display: inline-flex; + align-items: center; +} + +.input-with-icon .icon { + position: absolute; + left: 0.5rem; + pointer-events: none; + color: #aaa; +} + +.input-with-icon input { + padding-left: 2.2rem; +} diff --git a/src/main/resources/static/css/dragdrop.css b/src/main/resources/static/css/dragdrop.css index 7758bdd9dd..688cbca4a9 100644 --- a/src/main/resources/static/css/dragdrop.css +++ b/src/main/resources/static/css/dragdrop.css @@ -19,15 +19,20 @@ transform-origin: top left; } -.drag-manager_dragging { - width: 0px; - visibility: hidden; +#drag-container .multidrag { + position: fixed; + max-width: 200px; + max-height: 200px; + transform-origin: top left; + margin-left: 1rem; + background-color: rgba(0, 29, 41, 0.9); } -.drag-manager_draghover { - width: 375px !important; +.drag-manager_dragging { + opacity: 0.2; } + .drag-manager_draghover .insert-file-button-container { display: none !important; } @@ -37,11 +42,11 @@ } html[dir="ltr"] .drag-manager_draghover img { - left: calc(50% + 62.5px) !important; + left: 80% !important; } html[dir="rtl"] .drag-manager_draghover img { - left: 125px; + left: 25px; } .drag-manager_dragging-container .hide-on-drag { @@ -49,14 +54,17 @@ html[dir="rtl"] .drag-manager_draghover img { } .drag-manager_endpoint { - width: 80px; - height: 100%; + width: 150px; + height: 250px; background-color: #ffffff10; transition: width 0.1s; animation: end-drop-expand 0.3s ease; display: flex; align-items: center; justify-content: center; + margin-left:16px; + border-radius: 8px; + } .drag-manager_endpoint svg { @@ -65,7 +73,8 @@ html[dir="rtl"] .drag-manager_draghover img { } .drag-manager_endpoint.drag-manager_draghover { - width: 150px !important; + width: 180px !important; + border: 2px solid darkgreen; } @keyframes end-drop-expand { @@ -76,3 +85,12 @@ html[dir="rtl"] .drag-manager_draghover img { width: 80px; } } +.moved-element img { + border: 8px solid #198754; + border-radius: 3px; + transition: border 0.5s ease-out; +} + +.moved-element.remove img{ + border: 8px solid transparent; +} diff --git a/src/main/resources/static/css/fileSelect.css b/src/main/resources/static/css/fileSelect.css index e8f1297958..afb0b075f2 100644 --- a/src/main/resources/static/css/fileSelect.css +++ b/src/main/resources/static/css/fileSelect.css @@ -1,10 +1,273 @@ +.custom-file-chooser { + display: flex; + flex-direction: column; + position: relative; + + min-height: 55px; + border-radius: 1rem; + --selected-files-display: none; +} + +.input-container { + position: relative; + border-radius: 1rem; + border: 1px dashed rgb(105, 116, 134); + + column-gap: 7px; + row-gap: 7px; + height: 150px; + width: 100%; + + --overlay-display: none; + transition: background-color 0.5s linear; +} + +.input-container:hover { + outline: none; + border: none; + background-color: var(--md-sys-color-surface-container-low); + + -webkit-transition: box-shadow 1s ease, background-color 2s linear; + -moz-transition: box-shadow 1s ease, background-color 2s linear; + -o-transition: box-shadow 1s ease, background-color 2s linear; + -ms-transition: box-shadow 1s ease, background-color 2s linear; + transition: box-shadow 1s ease, background-color 2s linear; + + box-shadow: 0 0 10px rgb(105, 116, 134); + cursor: pointer; +} + +.input-container * { + user-select: none; + pointer-events: none; +} + + +.input-container::before { + display: var(--overlay-display); + position: absolute; + + content: ''; + + top: 0; + left: 0; + + height: 100%; + width: 100%; + + background-color: var(--md-sys-color-surface); + z-index: 1; + + white-space: pre; + border-radius: 1rem; +} + +.input-container::after { + display: var(--overlay-display); + position: absolute; + + content: attr(data-text); + font-size: 0.9rem; + font-weight: 550; + color: var(--md-sys-color-on-surface); + + background-color: transparent; + + min-width: 150px; + + top: 50%; + left: 50%; + + transform: translateX(-50%) translateY(-50%); + text-align: center; + + z-index: 2; +} + +.input-container input[type="file"] { + display: none; +} + +.input-container div:nth-of-type(2) { + color: var(--md-sys-color-on-surface); +} + +.input-container div:nth-of-type(1), .input-container div:nth-of-type(3) { + color: var(--md-sys-color-on-surface); + font-size: 16px; + font-weight: bold; +} + +.file-input-btn { + display: inline-block; + + border: 1px solid #ccc; + padding: 6px 12px; + cursor: pointer; + + color: #212529; + font-size: 1rem; + border-radius: 3rem; + + background-color: #DDE0E3; +} + +.small-file-container { + padding-top: 1px; + position: relative; + row-gap: 1px; + height: 60px; + width: 60px; + top:4px; +} + +.file-icon { + display: flex; + align-items: center; + justify-content: center; + height: 30px; + width: 30px; +} + +.file-icon * { + height: inherit; + width: inherit; +} + +.file-info { + min-width: 0; +} + +.file-info > div:nth-child(1) { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--md-sys-color-on-surface); + + max-width: 60px; + font-size: 0.75rem; +} + +.file-info > div:nth-child(2) { + overflow: hidden; + text-overflow: ellipsis; + color: grey; + + max-width: 60px; + font-size: 10px; +} + +.remove-selected-file { + display: flex; + justify-content: center; + align-items: center; + + position: absolute; + height: 15px; + width: 15px; + + right: 0px; + top: -17px; +} + +.remove-selected-file * { + overflow: hidden; + height: inherit; + width: inherit; + z-index: 3; + pointer-events: none; + user-select: none; +} + +.remove-selected-file:after { + content: ''; + position: absolute; + + left: 1; + + width: 10px; + height: 10px; + border-radius: 50%; + + background-color: white; + z-index: 2; + + user-select: none; + pointer-events: none; +} + +.remove-selected-file:hover { + cursor: pointer; +} + .custom-file-label { padding-right: 90px; } .selected-files { - margin-top: 10px; - max-height: 150px; - overflow-y: auto; + display: var(--selected-files-display); + padding-left: 5px; + padding-right: 3px; + padding-top: 15px; + padding-bottom: 15px; + + flex: 1; white-space: pre-wrap; + + row-gap: 12px; + column-gap: 5px; + + border-radius: 1rem; + border: 1px solid rgb(105, 116, 134, 0.5); +} + +.draggable-image-overlay{ + position: absolute; + background: rgba(0, 0, 0, 0.7); + display: none; + z-index: 10; + align-items: center; + justify-content: center; + color: white; + font-size: 16px; + font-weight: bold; + pointer-events: none; + left:0; + top:0; + height:100%; + width:100%; + border-radius: 1rem; +} + +.small-file-container:hover .drag-icon { + display: flex; +} + +.drag-icon { + display: none; + position: absolute; + top: 5px; + width: 20px; + height: 20px; + background: rgba(0, 0, 0, 0.5); + color: white; + align-items: center; + justify-content: center; + border-radius: 50%; + font-size: 14px; + pointer-events: none; + z-index: 1; +} + +#imagePreviewModal { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background-color: rgba(0, 0, 0, 0.5); + display: none; + justify-content: center; + align-items: center; + z-index: 9999; } diff --git a/src/main/resources/static/css/general.css b/src/main/resources/static/css/general.css index 9ef750ff43..d5948f99b5 100644 --- a/src/main/resources/static/css/general.css +++ b/src/main/resources/static/css/general.css @@ -100,3 +100,30 @@ input:-webkit-autofill:focus { input[data-autocompleted] { background-color: transparent !important; } +.btn-tooltip { + position: absolute; + display: none; + bottom: 3.2rem; + white-space: nowrap; + flex-wrap: nowrap; + width: fit-content; + padding: 7px; + background-color: rgba(0, 29, 41, 0.9); + border-radius: 3px; + font-size: 12px; + color: whitesmoke; + animation: fadeup 0.15s linear; +} +@keyframes fadeup { + 0% { + transform: translateY(10px); + opacity: 0; + } + 100% { + transform: translateY(0); + opacity: 1; + } +} +.btn:hover .btn-tooltip { + display: block; + } diff --git a/src/main/resources/static/css/home.css b/src/main/resources/static/css/home.css index 8faa916381..301abe81b5 100644 --- a/src/main/resources/static/css/home.css +++ b/src/main/resources/static/css/home.css @@ -65,6 +65,7 @@ overflow: hidden; margin: -20px; padding: 20px; + box-sizing:content-box; } .feature-group-container.animated-group { diff --git a/src/main/resources/static/css/multi-tool.css b/src/main/resources/static/css/multi-tool.css index 60514fccd7..99e15f2317 100644 --- a/src/main/resources/static/css/multi-tool.css +++ b/src/main/resources/static/css/multi-tool.css @@ -61,10 +61,6 @@ label { padding: 0; } -#export-button { - margin-left: auto; -} - .bg-card { background-color: var(--md-sys-color-surface-5); border-radius: 3rem; @@ -290,3 +286,6 @@ label { .checkbox-label { font-size: medium; } +.btn { + position: relative; +} diff --git a/src/main/resources/static/css/navbar.css b/src/main/resources/static/css/navbar.css index a437f0ecc5..71c573986e 100644 --- a/src/main/resources/static/css/navbar.css +++ b/src/main/resources/static/css/navbar.css @@ -366,3 +366,11 @@ span.icon-text::after { background-color: #0056b3; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } + +#stacked { + gap: 1rem; +} + +#stacked > .navbar-item { + margin: 0; +} diff --git a/src/main/resources/static/css/pdfActions.css b/src/main/resources/static/css/pdfActions.css index c3845445c8..8d69d792ed 100644 --- a/src/main/resources/static/css/pdfActions.css +++ b/src/main/resources/static/css/pdfActions.css @@ -1,5 +1,5 @@ .pdf-actions_button-container { - z-index: 2; + z-index: 4; display: flex; opacity: 0; transition: opacity 0.1s linear; @@ -46,7 +46,7 @@ width: 80px; height: 100%; - z-index: 1; + z-index: 3; opacity: 0; transition: opacity 0.2s; } @@ -116,6 +116,7 @@ html[dir="rtl"] .pdf-actions_container:last-child>.pdf-actions_insert-file-butto translate: 50% -50%; aspect-ratio: 1; border-radius: 100px; + z-index: 4; } .pdf-actions_split-file-button { @@ -125,9 +126,9 @@ html[dir="rtl"] .pdf-actions_container:last-child>.pdf-actions_insert-file-butto translate: 0 -50%; aspect-ratio: 1; border-radius: 100px; + z-index: 3; } - .pdf-actions_checkbox { position: absolute; top: 5px; @@ -137,7 +138,7 @@ html[dir="rtl"] .pdf-actions_container:last-child>.pdf-actions_insert-file-butto padding: 6px 8px; border-radius: 8px; font-size: 16px; - z-index: 2; + z-index: 10; } .hidden { @@ -150,4 +151,5 @@ html[dir="rtl"] .pdf-actions_container:last-child>.pdf-actions_insert-file-butto translate: 0% -50%; aspect-ratio: 1; border-radius: 100px; + z-index: 5; } diff --git a/src/main/resources/static/css/redact.css b/src/main/resources/static/css/redact.css new file mode 100644 index 0000000000..4c9a8d749a --- /dev/null +++ b/src/main/resources/static/css/redact.css @@ -0,0 +1,322 @@ +:root { + --page-redaction-color: #000000; +} + +.textLayer span::selection, +.textLayer span::-moz-selection { + background-color: rgba(0, 100, 0, 0.26); +} + +.selected-wrapper { + position: absolute; + outline: 2px solid darkgreen; + outline-offset: -2px; + z-index: 10; +} + +.selected-wrapper:hover:not(:has(.redaction-overlay:hover)) { + outline-color: var(--palette-color, #000000); + background-color: var(--palette-color, #000000); + z-index: 10; + transition: background-color 0.065s linear; + + cursor: pointer; +} + +.redaction-overlay { + display: flex; + position: absolute; + + left: 50%; + top: 100%; + + min-width: 25px; + max-width: 90px; + + min-height: 25px; + + flex-wrap: nowrap; + + column-gap: 5px; + row-gap: 2px; + + border-radius: 2px; + padding: 2px; + + box-sizing: border-box; + + background-color: rgb(0 96 170); + outline: 1px solid gray; + translate: -50% -100%; +} + +.redaction-overlay svg { + height: 25px; + width: 25px; + + max-width: 35px; + max-height: 35px; + + fill: rgba(255, 255, 255, 0.904); + user-select: none; +} + +.redaction-overlay svg:hover { + cursor: pointer; + background-color: rgb(3, 63, 109); + fill: rgba(226, 226, 226, 0.904); +} + +.textLayer div, +.textLayer div > * { + user-select: none; +} + +.rectangle { + border: 2px solid #ff0000; + position: absolute; +} + +html { + --textLayer-pointer-events: auto; + --textLayer-user-select: auto; +} + +.textLayer * { + pointer-events: var(--textLayer-pointer-events); + user-select: var(--textLayer-user-select); +} + +#showMoreBtnIcon::before { + left: 5px; + top: 5px; +} + +#showMoreBtn { + display: flex; + justify-content: center; + align-items: center; +} + +#man-text-select-redact, #man-shape-redact, #downloadBtn, #uploadBtn, #pageBasedRedactionBtn, #pdfToImageBtn, #showMoreBtn { + height: var(--toolButton-height); + width: var(--toolButton-width); + + border-radius: var(--toolButton-border-radius); + transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; + user-select: none; +} + +#text-selection, #shape-selection, #downloadBtnIcon, #uploadBtnIcon, #pageBasedRedactionBtnIcon, #pdfToImageBtnIcon, #showMoreBtnIcon { + position: relative; + font-size: var(--toolButton-icon-font-size); +} + +:is(#man-shape-redact, #man-text-select-redact, #sidebarToggle, #viewThumbnail, #viewOutline, #showMoreBtn).toggled { + background-color: rgb(50, 159, 243); + color: rgb(255 255 255); + outline:rgb(50, 159, 243) !important; + border-color: rgb(50, 159, 243) !important; +} + +:is(#man-shape-redact, #man-text-select-redact, #redactionsPaletteContainer, #downloadBtn, #uploadBtn, #pageBasedRedactionBtn, #pdfToImageBtn, #showMoreBtn):hover { + background-color: rgba(6, 114, 197, 0.82); + color: rgb(255 255 255); + outline:rgba(6, 114, 197, 0.82) !important; + border-color: rgba(6, 114, 197, 0.82) !important; +} + +#redactionsPaletteContainer { + height: var(--toolButton-height); + width: var(--toolButton-width); + + border-radius: var(--toolButton-border-radius); + overflow: hidden; +} + +#redactionsPaletteContainer *, #showMoreBtn * { + user-select: none; + pointer-events: none; +} + +#redactions-palette { + display: inline; + position: relative; + + border-bottom: 8px solid var(--palette-color); + border-radius: inherit; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + font-size: var(--toolButton-icon-font-size); +} + +#redactions-palette::before { + position: absolute; + content: ''; + height: 6px; + width: 100%; + left: 0; + bottom: 0px; + background-color: var(--palette-color); +} + +#redactions-palette > input[type=color] { + visibility: hidden; + position: absolute; + left: 0; + top: var(--toolButton-height); + height: 0; +} + +#apply-redaction { + height: var(--toolButton-height); + width: var(--toolButton-width); + + border-radius: var(--toolButton-border-radius); +} + +#apply-redaction[disabled=true], #apply-redaction:disabled:not([disabled=false]) { + color: rgb(147, 149, 153); + box-shadow: none !important; +} + +#apply-redaction:is(:hover):not([disabled=true], :disabled:not([disabled=false])) { + cursor: pointer; + background-color: rgba(6, 114, 197, 0.82); + color: rgb(255 255 255); + outline:rgba(6, 114, 197, 0.82) !important; + border-color: rgba(6, 114, 197, 0.82) !important; +} + +.toolbar-btn-hover:hover { + cursor: pointer; + background-color: rgba(6, 114, 197, 0.82) !important; + color: rgb(255 255 255) !important; + outline:rgba(6, 114, 197, 0.82) !important; + border-color: rgba(6, 114, 197, 0.82) !important; +} + +#apply-redaction-icon { + font-size: var(--toolButton-icon-font-size); +} + +#apply-redaction > span { + user-select: none; + pointer-events: none; +} + +#pageRedactColor, input[data-for=pageRedactColor] { + flex: 1; + padding: 1px; +} + +#pageRedactColor:is(:hover, :focus-within), input[data-for=pageRedactColor]:is(:hover, :focus-within) { + cursor: pointer; +} + +.palette-color { + border-bottom: 3px solid var(--palette-color); +} + +.palette-color:is(:hover, :focus-within) { + cursor: pointer; + background-color: var(--button-hover-color); +} + +.splitToolbarButton > .btn-primary, .splitToolbarButton > .btn-secondary, .splitToolbarButton > .toolbarButton { + margin-left: 3px; + margin-right: 3px; +} + +.spin-animation { + -webkit-animation: spin 2s linear infinite; /* Safari */ + -moz-animation: spin 2s linear infinite; + -o-animation: spin 2s linear infinite; + animation: spin 2s linear infinite; +} + +@-webkit-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(360deg); } +} + +@-moz-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(360deg); } +} + +@-o-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(360deg); } +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.active-redaction { + z-index: 30 !important; +} + +#pageBasedRedactionOverlay { + position: absolute; + left: 50%; + top: 50%; + background-color: var(--md-sys-color-surface); + color: var(--md-sys-color-on-surface); + border-radius: 3rem; + z-index: 100; + transform: translate(-50%, -50%); +} + +.list-styling { + display: list-item !important; + margin-left: 15px; + list-style-type: disc; +} + +.redacted-page { + --page-redaction-color: none; +} + +.redacted-page-preview { + border: 2px solid blue; +} + +.redacted-page-preview:hover { + background-color: var(--page-redaction-color) !important; +} + +.redacted-page-preview * { + user-select: none; + pointer-events: none; +} + +.overlay-colorpicker-window { + position: absolute; + left: 0; + top: 24px; + height: 0; + visibility: hidden; +} + +.redacted-thumbnail-image-preview { + border: 2px solid blue; +} + +.redacted-thumbnail-preview { + position: relative; +} + +.redacted-thumbnail-preview:hover::after { + content: ''; + background-color: var(--page-redaction-color); + + position: absolute; + left: 0; + top: 0; + + height: var(--thumbnail-height); + width: var(--thumbnail-width); +} diff --git a/src/main/resources/static/css/sign.css b/src/main/resources/static/css/sign.css index 3055b52e96..6de4efcd6b 100644 --- a/src/main/resources/static/css/sign.css +++ b/src/main/resources/static/css/sign.css @@ -22,18 +22,38 @@ select#font-select option { } .draggable-buttons-box { - position: absolute; + position: relative; top: 0; padding: 10px; - width: 100%; + width: calc(100% + 4.4rem); display: flex; gap: 5px; z-index: 5; + margin-left: -2.2rem; } .draggable-buttons-box>button { z-index: 4; background-color: rgba(13, 110, 253, 0.1); + flex: 1 1 auto; + min-width: 2.5rem; + max-width: 4rem; +} + + +.rotation-handle { + width: 20px; + height: 20px; + border: 2px solid #3498db; + background-color: rgba(52, 152, 219, 0.1); + color: white; + border-radius: 50%; + text-align: center; + line-height: 20px; + position: absolute; + cursor: grab; + top: -30px; + left: calc(50% - 10px); } .draggable-canvas { @@ -62,53 +82,84 @@ select#font-select option { background-color: rgba(52, 152, 219, 0.2); /* Darken background on hover */ } + .signature-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); - gap: 1rem; - padding: 1rem; - max-height: 400px; - overflow-y: auto; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + gap: 1rem; + padding: 1rem; + max-height: 400px; + overflow-y: auto; } .signature-list { - max-height: 400px; - overflow-y: auto; + max-height: 400px; + overflow-y: auto; } .signature-list-item { - padding: 0.75rem; - border: 1px solid #dee2e6; - border-radius: 4px; - margin-bottom: 0.5rem; - cursor: pointer; - transition: background-color 0.2s; + padding: 0.75rem; + border: 1px solid #dee2e6; + border-radius: 4px; + margin-bottom: 0.5rem; + cursor: pointer; + transition: background-color 0.2s; } .signature-list-item:hover { - background-color: #f8f9fa; + background-color: #f8f9fa; } .signature-list-info { - display: flex; - justify-content: space-between; - align-items: center; + display: flex; + justify-content: space-between; + align-items: center; } .signature-list-name { - font-weight: 500; + font-weight: 500; } .signature-list-details { - color: #6c757d; - font-size: 0.875rem; + color: #6c757d; + font-size: 0.875rem; } .signature-list-details small:not(:last-child) { - margin-right: 1rem; + margin-right: 1rem; } .view-toggle { - text-align: right; - padding: 0.5rem 1rem; -} \ No newline at end of file + text-align: right; + padding: 0.5rem 1rem; +} + +.input-with-icon { + position: relative; + display: inline-flex; + align-items: center; +} + +.input-with-icon .icon { + position: absolute; + left: 0.5rem; + pointer-events: none; + color: #aaa; +} + +.input-with-icon input { + padding-left: 2.2rem; +} + +.small-file-container-saved { + padding-top: 1px; + position: relative; + row-gap: 1px; + height: 60px; + width: 60px; + top: 4px; +} + +.small-file-container-saved:hover .drag-icon { + display: flex; +} diff --git a/src/main/resources/static/favicon.icns b/src/main/resources/static/favicon.icns new file mode 100644 index 0000000000..7b281937e8 Binary files /dev/null and b/src/main/resources/static/favicon.icns differ diff --git a/src/main/resources/static/images/flags/az.svg b/src/main/resources/static/images/flags/az.svg new file mode 100644 index 0000000000..3557522110 --- /dev/null +++ b/src/main/resources/static/images/flags/az.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/main/resources/static/images/flags/ir.svg b/src/main/resources/static/images/flags/ir.svg new file mode 100644 index 0000000000..8c6d516216 --- /dev/null +++ b/src/main/resources/static/images/flags/ir.svg @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/js/DecryptFiles.js b/src/main/resources/static/js/DecryptFiles.js new file mode 100644 index 0000000000..a06687b1d4 --- /dev/null +++ b/src/main/resources/static/js/DecryptFiles.js @@ -0,0 +1,131 @@ +export class DecryptFile { + async decryptFile(file, requiresPassword) { + try { + async function getCsrfToken() { + const cookieValue = document.cookie + .split('; ') + .find((row) => row.startsWith('XSRF-TOKEN=')) + ?.split('=')[1]; + + if (cookieValue) { + return cookieValue; + } + + const csrfElement = document.querySelector('input[name="_csrf"]'); + return csrfElement ? csrfElement.value : null; + } + const csrfToken = await getCsrfToken(); + const formData = new FormData(); + formData.append('fileInput', file); + if (requiresPassword) { + const password = prompt(`${window.decrypt.passwordPrompt}`); + + if (password === null) { + // User cancelled + console.error(`Password prompt cancelled for PDF: ${file.name}`); + return null; // No file to return + } + + if (!password) { + // No password provided + console.error(`No password provided for encrypted PDF: ${file.name}`); + this.showErrorBanner( + `${window.decrypt.noPassword.replace('{0}', file.name)}`, + '', + `${window.decrypt.unexpectedError}` + ); + return null; // No file to return + } + + formData.append('password', password); + } + // Send decryption request + const response = await fetch('/api/v1/security/remove-password', { + method: 'POST', + body: formData, + headers: csrfToken ? {'X-XSRF-TOKEN': csrfToken} : undefined, + }); + + if (response.ok) { + const decryptedBlob = await response.blob(); + this.removeErrorBanner(); + return new File([decryptedBlob], file.name, {type: 'application/pdf'}); + } else { + const errorText = await response.text(); + console.error(`${window.decrypt.invalidPassword} ${errorText}`); + this.showErrorBanner( + `${window.decrypt.invalidPassword}`, + errorText, + `${window.decrypt.invalidPasswordHeader.replace('{0}', file.name)}` + ); + return null; // No file to return + } + } catch (error) { + // Handle network or unexpected errors + console.error(`Failed to decrypt PDF: ${file.name}`, error); + this.showErrorBanner( + `${window.decrypt.unexpectedError.replace('{0}', file.name)}`, + `${error.message || window.decrypt.unexpectedError}`, + error + ); + return null; // No file to return + } + } + + async checkFileEncrypted(file) { + try { + if (file.type !== 'application/pdf') { + return {isEncrypted: false, requiresPassword: false}; + } + + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + const arrayBuffer = await file.arrayBuffer(); + const arrayBufferForPdfLib = arrayBuffer.slice(0); + + const loadingTask = pdfjsLib.getDocument({ + data: arrayBuffer, + }); + + await loadingTask.promise; + + try { + //Uses PDFLib.PDFDocument to check if unpassworded but encrypted + const pdfDoc = await PDFLib.PDFDocument.load(arrayBufferForPdfLib); + return {isEncrypted: false, requiresPassword: false}; + } catch (error) { + if (error.message.includes('Input document to `PDFDocument.load` is encrypted')) { + return {isEncrypted: true, requiresPassword: false}; + } + console.error('Error checking encryption:', error); + throw new Error('Failed to determine if the file is encrypted.'); + } + } catch (error) { + if (error.name === 'PasswordException') { + if (error.code === pdfjsLib.PasswordResponses.NEED_PASSWORD) { + return {isEncrypted: true, requiresPassword: true}; + } else if (error.code === pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) { + return {isEncrypted: true, requiresPassword: false}; + } + } + + console.error('Error checking encryption:', error); + throw new Error('Failed to determine if the file is encrypted.'); + } + } + + showErrorBanner(message, stackTrace, error) { + const errorContainer = document.getElementById('errorContainer'); + errorContainer.style.display = 'block'; // Display the banner + errorContainer.querySelector('.alert-heading').textContent = error; + errorContainer.querySelector('p').textContent = message; + document.querySelector('#traceContent').textContent = stackTrace; + } + + removeErrorBanner() { + const errorContainer = document.getElementById('errorContainer'); + errorContainer.style.display = 'none'; // Hide the banner + errorContainer.querySelector('.alert-heading').textContent = ''; + errorContainer.querySelector('p').textContent = ''; + document.querySelector('#traceContent').textContent = ''; + } +} diff --git a/src/main/resources/static/js/download.js b/src/main/resources/static/js/download.js new file mode 100644 index 0000000000..8eed99f9a5 --- /dev/null +++ b/src/main/resources/static/js/download.js @@ -0,0 +1,27 @@ +document.getElementById('download-pdf').addEventListener('click', async () => { + const modifiedPdf = await DraggableUtils.getOverlayedPdfDocument(); + let decryptedFile = modifiedPdf; + let isEncrypted = false; + let requiresPassword = false; + await this.decryptFile + .checkFileEncrypted(decryptedFile) + .then((result) => { + isEncrypted = result.isEncrypted; + requiresPassword = result.requiresPassword; + }) + .catch((error) => { + console.error(error); + }); + if (decryptedFile.type === 'application/pdf' && isEncrypted) { + decryptedFile = await this.decryptFile.decryptFile(decryptedFile, requiresPassword); + if (!decryptedFile) { + throw new Error('File decryption failed.'); + } + } + const modifiedPdfBytes = await modifiedPdf.save(); + const blob = new Blob([modifiedPdfBytes], {type: 'application/pdf'}); + const link = document.createElement('a'); + link.href = URL.createObjectURL(blob); + link.download = originalFileName + '_signed.pdf'; + link.click(); +}); diff --git a/src/main/resources/static/js/downloader.js b/src/main/resources/static/js/downloader.js index e828bb8615..77a673c04b 100644 --- a/src/main/resources/static/js/downloader.js +++ b/src/main/resources/static/js/downloader.js @@ -1,26 +1,36 @@ -(function() { - - const { pdfPasswordPrompt, multipleInputsForSingleRequest, disableMultipleFiles, remoteCall, sessionExpired, refreshPage, error } = window.stirlingPDF; +(function () { + if (window.isDownloadScriptInitialized) return; // Prevent re-execution + window.isDownloadScriptInitialized = true; + + const { + pdfPasswordPrompt, + multipleInputsForSingleRequest, + disableMultipleFiles, + remoteCall, + sessionExpired, + refreshPage, + error, + } = window.stirlingPDF; function showErrorBanner(message, stackTrace) { - const errorContainer = document.getElementById("errorContainer"); - errorContainer.style.display = "block"; // Display the banner - errorContainer.querySelector(".alert-heading").textContent = error; - errorContainer.querySelector("p").textContent = message; - document.querySelector("#traceContent").textContent = stackTrace; + const errorContainer = document.getElementById('errorContainer'); + errorContainer.style.display = 'block'; // Display the banner + errorContainer.querySelector('.alert-heading').textContent = error; + errorContainer.querySelector('p').textContent = message; + document.querySelector('#traceContent').textContent = stackTrace; } function showSessionExpiredPrompt() { - const errorContainer = document.getElementById("errorContainer"); - errorContainer.style.display = "block"; - errorContainer.querySelector(".alert-heading").textContent = sessionExpired; - errorContainer.querySelector("p").textContent = sessionExpired; - document.querySelector("#traceContent").textContent = ""; + const errorContainer = document.getElementById('errorContainer'); + errorContainer.style.display = 'block'; + errorContainer.querySelector('.alert-heading').textContent = sessionExpired; + errorContainer.querySelector('p').textContent = sessionExpired; + document.querySelector('#traceContent').textContent = ''; // Optional: Add a refresh button - const refreshButton = document.createElement("button"); + const refreshButton = document.createElement('button'); refreshButton.textContent = refreshPage; - refreshButton.className = "btn btn-primary mt-3"; + refreshButton.className = 'btn btn-primary mt-3'; refreshButton.onclick = () => location.reload(); errorContainer.appendChild(refreshButton); } @@ -28,12 +38,20 @@ let firstErrorOccurred = false; $(document).ready(function () { - $("form").submit(async function (event) { + $('form').submit(async function (event) { event.preventDefault(); firstErrorOccurred = false; const url = this.action; - const files = $("#fileInput-input")[0].files; + let files = $('#fileInput-input')[0].files; const formData = new FormData(this); + const submitButton = document.getElementById('submitBtn'); + const showGameBtn = document.getElementById('show-game-btn'); + const originalButtonText = submitButton.textContent; + var boredWaiting = localStorage.getItem('boredWaiting') || 'disabled'; + + if (showGameBtn) { + showGameBtn.style.display = 'none'; + } // Remove empty file entries for (let [key, value] of formData.entries()) { @@ -41,56 +59,69 @@ formData.delete(key); } } - const override = $("#override").val() || ""; - const originalButtonText = $("#submitBtn").text(); - $("#submitBtn").text("Processing..."); + const override = $('#override').val() || ''; console.log(override); // Set a timeout to show the game button if operation takes more than 5 seconds const timeoutId = setTimeout(() => { - var boredWaiting = localStorage.getItem("boredWaiting") || "disabled"; - const showGameBtn = document.getElementById("show-game-btn"); - if (boredWaiting === "enabled" && showGameBtn) { - showGameBtn.style.display = "block"; + if (boredWaiting === 'enabled' && showGameBtn) { + showGameBtn.style.display = 'block'; showGameBtn.parentNode.insertBefore(document.createElement('br'), showGameBtn.nextSibling); } }, 5000); try { + if (!url.includes('remove-password')) { + // Check if any PDF files are encrypted and handle decryption if necessary + const decryptedFiles = await checkAndDecryptFiles(url, files); + files = decryptedFiles; + } + + submitButton.textContent = 'Processing...'; + submitButton.disabled = true; + if (remoteCall === true) { - if (override === "multi" || (!multipleInputsForSingleRequest && files.length > 1 && override !== "single")) { - await submitMultiPdfForm(url, files); + if (override === 'multi' || (!multipleInputsForSingleRequest && files.length > 1 && override !== 'single')) { + await submitMultiPdfForm(url, files, this); } else { await handleSingleDownload(url, formData); } } - clearFileInput(); + //clearFileInput(); clearTimeout(timeoutId); - $("#submitBtn").text(originalButtonText); + if (showGameBtn) { + showGameBtn.style.display = 'none'; + showGameBtn.style.marginTop = ''; + } + submitButton.textContent = originalButtonText; + submitButton.disabled = false; // After process finishes, check for boredWaiting and gameDialog open status - const boredWaiting = localStorage.getItem("boredWaiting") || "disabled"; const gameDialog = document.getElementById('game-container-wrapper'); - if (boredWaiting === "enabled" && gameDialog && gameDialog.open) { + if (boredWaiting === 'enabled' && gameDialog && gameDialog.open) { // Display a green banner at the bottom of the screen saying "Download complete" - let downloadCompleteText = "Download Complete"; - if(window.downloadCompleteText){ + let downloadCompleteText = 'Download Complete'; + if (window.downloadCompleteText) { downloadCompleteText = window.downloadCompleteText; } - $("body").append('

'+ downloadCompleteText + '
'); - setTimeout(function() { - $("#download-complete-banner").fadeOut("slow", function() { + $('body').append( + '
' + + downloadCompleteText + + '
' + ); + setTimeout(function () { + $('#download-complete-banner').fadeOut('slow', function () { $(this).remove(); // Remove the banner after fading out }); }, 5000); // Banner will fade out after 5 seconds } - } catch (error) { - clearFileInput(); clearTimeout(timeoutId); + showGameBtn.style.display = 'none'; + submitButton.textContent = originalButtonText; + submitButton.disabled = false; handleDownloadError(error); - $("#submitBtn").text(originalButtonText); console.error(error); } }); @@ -99,24 +130,116 @@ async function getPDFPageCount(file) { try { const arrayBuffer = await file.arrayBuffer(); - pdfjsLib.GlobalWorkerOptions.workerSrc = '/pdfjs-legacy/pdf.worker.mjs' - const pdf = await pdfjsLib.getDocument({ data: arrayBuffer }).promise; + pdfjsLib.GlobalWorkerOptions.workerSrc = '/pdfjs-legacy/pdf.worker.mjs'; + const pdf = await pdfjsLib.getDocument({data: arrayBuffer}).promise; return pdf.numPages; } catch (error) { console.error('Error getting PDF page count:', error); return null; } } - + + async function checkAndDecryptFiles(url, files) { + const decryptedFiles = []; + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + + // Extract the base URL + const baseUrl = new URL(url); + let removePasswordUrl = `${baseUrl.origin}`; + + // Check if there's a path before /api/ + const apiIndex = baseUrl.pathname.indexOf('/api/'); + if (apiIndex > 0) { + removePasswordUrl += baseUrl.pathname.substring(0, apiIndex); + } + + // Append the new endpoint + removePasswordUrl += '/api/v1/security/remove-password'; + + console.log(`Remove password URL: ${removePasswordUrl}`); + + for (const file of files) { + console.log(`Processing file: ${file.name}`); + if (file.type !== 'application/pdf') { + console.log(`Skipping non-PDF file: ${file.name}`); + decryptedFiles.push(file); + continue; + } + try { + const arrayBuffer = await file.arrayBuffer(); + const loadingTask = pdfjsLib.getDocument({data: arrayBuffer}); + + console.log(`Attempting to load PDF: ${file.name}`); + const pdf = await loadingTask.promise; + console.log(`File is not encrypted: ${file.name}`); + decryptedFiles.push(file); // If no error, file is not encrypted + } catch (error) { + if (error.name === 'PasswordException' && error.code === 1) { + console.log(`PDF requires password: ${file.name}`, error); + console.log(`Attempting to remove password from PDF: ${file.name} with password.`); + const password = prompt(`${window.translations.decrypt.passwordPrompt}`); + + if (!password) { + console.error(`No password provided for encrypted PDF: ${file.name}`); + showErrorBanner( + `${window.translations.decrypt.noPassword.replace('{0}', file.name)}`, + `${window.translations.decrypt.unexpectedError}` + ); + throw error; + } + + try { + // Prepare FormData for the decryption request + const formData = new FormData(); + formData.append('fileInput', file); + formData.append('password', password); + + // Use handleSingleDownload to send the request + const decryptionResult = await fetch(removePasswordUrl, {method: 'POST', body: formData}); + + if (decryptionResult && decryptionResult.blob) { + const decryptedBlob = await decryptionResult.blob(); + const decryptedFile = new File([decryptedBlob], file.name, {type: 'application/pdf'}); + + /* // Create a link element to download the file + const link = document.createElement('a'); + link.href = URL.createObjectURL(decryptedBlob); + link.download = 'test.pdf'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); +*/ + decryptedFiles.push(decryptedFile); + console.log(`Successfully decrypted PDF: ${file.name}`); + } else { + throw new Error('Decryption failed: No valid response from server'); + } + } catch (decryptError) { + console.error(`Failed to decrypt PDF: ${file.name}`, decryptError); + showErrorBanner( + `${window.translations.invalidPasswordHeader.replace('{0}', file.name)}`, + `${window.translations.invalidPassword}` + ); + throw decryptError; + } + } else { + console.log(`Error loading PDF: ${file.name}`, error); + throw error; + } + } + } + return decryptedFiles; + } + async function handleSingleDownload(url, formData, isMulti = false, isZip = false) { const startTime = performance.now(); const file = formData.get('fileInput'); let success = false; let errorMessage = null; - + try { - const response = await fetch(url, { method: "POST", body: formData }); - const contentType = response.headers.get("content-type"); + const response = await window.fetchWithCsrf(url, {method: 'POST', body: formData}); + const contentType = response.headers.get('content-type'); if (!response.ok) { errorMessage = response.status; @@ -124,99 +247,97 @@ showSessionExpiredPrompt(); return; } - if (contentType && contentType.includes("application/json")) { - console.error("Throwing error banner, response was not okay"); + if (contentType && contentType.includes('application/json')) { + console.error('Throwing error banner, response was not okay'); return handleJsonResponse(response); } throw new Error(`HTTP error! status: ${response.status}`); } - const contentDisposition = response.headers.get("Content-Disposition"); + const contentDisposition = response.headers.get('Content-Disposition'); let filename = getFilenameFromContentDisposition(contentDisposition); const blob = await response.blob(); success = true; - - if (contentType.includes("application/pdf") || contentType.includes("image/")) { - clearFileInput(); + + if (contentType.includes('application/pdf') || contentType.includes('image/')) { + //clearFileInput(); return handleResponse(blob, filename, !isMulti, isZip); } else { - clearFileInput(); + //clearFileInput(); return handleResponse(blob, filename, false, isZip); } - } catch (error) { success = false; errorMessage = error.message; - clearFileInput(); - console.error("Error in handleSingleDownload:", error); + console.error('Error in handleSingleDownload:', error); throw error; } finally { const processingTime = performance.now() - startTime; - + // Capture analytics const pageCount = file && file.type === 'application/pdf' ? await getPDFPageCount(file) : null; - if(analyticsEnabled) { + if (analyticsEnabled) { posthog.capture('file_processing', { success: success, file_type: file ? file.type || 'unknown' : 'unknown', file_size: file ? file.size : 0, processing_time: processingTime, error_message: errorMessage, - pdf_pages: pageCount + pdf_pages: pageCount, }); } } } - function getFilenameFromContentDisposition(contentDisposition) { + function getFilenameFromContentDisposition(contentDisposition) { let filename; - if (contentDisposition && contentDisposition.indexOf("attachment") !== -1) { - filename = decodeURIComponent(contentDisposition.split("filename=")[1].replace(/"/g, "")).trim(); + if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) { + filename = decodeURIComponent(contentDisposition.split('filename=')[1].replace(/"/g, '')).trim(); } else { // If the Content-Disposition header is not present or does not contain the filename, use a default filename - filename = "download"; + filename = 'download'; } return filename; } - + async function handleJsonResponse(response) { const json = await response.json(); const errorMessage = JSON.stringify(json, null, 2); if ( - errorMessage.toLowerCase().includes("the password is incorrect") || - errorMessage.toLowerCase().includes("Password is not provided") || - errorMessage.toLowerCase().includes("PDF contains an encryption dictionary") + errorMessage.toLowerCase().includes('the password is incorrect') || + errorMessage.toLowerCase().includes('Password is not provided') || + errorMessage.toLowerCase().includes('PDF contains an encryption dictionary') ) { if (!firstErrorOccurred) { firstErrorOccurred = true; alert(pdfPasswordPrompt); } } else { - showErrorBanner(json.error + ":" + json.message, json.trace); + showErrorBanner(json.error + ':' + json.message, json.trace); } } async function handleResponse(blob, filename, considerViewOptions = false, isZip = false) { if (!blob) return; - const downloadOption = localStorage.getItem("downloadOption"); + const downloadOption = localStorage.getItem('downloadOption'); if (considerViewOptions) { - if (downloadOption === "sameWindow") { + if (downloadOption === 'sameWindow') { const url = URL.createObjectURL(blob); window.location.href = url; return; - } else if (downloadOption === "newWindow") { + } else if (downloadOption === 'newWindow') { const url = URL.createObjectURL(blob); - window.open(url, "_blank"); + window.open(url, '_blank'); return; } } if (!isZip) { downloadFile(blob, filename); } - return { filename, blob }; + return {filename, blob}; } function handleDownloadError(error) { @@ -228,32 +349,32 @@ function downloadFile(blob, filename) { if (!(blob instanceof Blob)) { - console.error("Invalid blob passed to downloadFile function"); + console.error('Invalid blob passed to downloadFile function'); return; } const url = URL.createObjectURL(blob); - const a = document.createElement("a"); + const a = document.createElement('a'); a.href = url; a.download = filename; a.click(); urls.push(url); // Store the URL so it doesn't get garbage collected too soon - return { filename, blob }; + return {filename, blob}; } - async function submitMultiPdfForm(url, files) { - const zipThreshold = parseInt(localStorage.getItem("zipThreshold"), 10) || 4; + async function submitMultiPdfForm(url, files, form) { + const zipThreshold = parseInt(localStorage.getItem('zipThreshold'), 10) || 4; const zipFiles = files.length > zipThreshold; let jszip = null; // Add Space below Progress Bar before Showing $('.progressBarContainer').after($('
')); - $(".progressBarContainer").show(); + $('.progressBarContainer').show(); // Initialize the progress bar - let progressBar = $(".progressBar"); - progressBar.css("width", "0%"); - progressBar.attr("aria-valuenow", 0); - progressBar.attr("aria-valuemax", files.length); + let progressBar = $('.progressBar'); + progressBar.css('width', '0%'); + progressBar.attr('aria-valuenow', 0); + progressBar.attr('aria-valuemax', files.length); if (zipFiles) { jszip = new JSZip(); @@ -264,13 +385,15 @@ // Get existing form data let formData; - if (postForm) { + if (form) { + formData = new FormData(form); + } else if (postForm) { formData = new FormData($(postForm)[0]); // Convert the form to a jQuery object and get the raw DOM element } else { - console.log("No form with POST method found."); + console.log('No form with POST method found.'); } //Remove file to reuse parameters for other runs - formData.delete("fileInput"); + formData.delete('fileInput'); // Remove empty file entries for (let [key, value] of formData.entries()) { if (value instanceof File && !value.name) { @@ -286,12 +409,13 @@ for (const chunk of chunks) { const promises = chunk.map(async (file) => { let fileFormData = new FormData(); - fileFormData.append("fileInput", file); - console.log(fileFormData); - // Add other form data + fileFormData.append('fileInput', file); + for (let [key, value] of fileFormData.entries()) { + console.log(key, value); + } // Add other form data for (let pair of formData.entries()) { fileFormData.append(pair[0], pair[1]); - console.log(pair[0] + ", " + pair[1]); + console.log(pair[0] + ', ' + pair[1]); } try { @@ -313,47 +437,47 @@ if (zipFiles) { try { - const content = await jszip.generateAsync({ type: "blob" }); - downloadFile(content, "files.zip"); + const content = await jszip.generateAsync({type: 'blob'}); + downloadFile(content, 'files.zip'); } catch (error) { - console.error("Error generating ZIP file: " + error); + console.error('Error generating ZIP file: ' + error); } } - progressBar.css("width", "100%"); - progressBar.attr("aria-valuenow", Array.from(files).length); + progressBar.css('width', '100%'); + progressBar.attr('aria-valuenow', Array.from(files).length); } function updateProgressBar(progressBar, files) { - let progress = (progressBar.attr("aria-valuenow") / files.length) * 100 + 100 / files.length; - progressBar.css("width", progress + "%"); - progressBar.attr("aria-valuenow", parseInt(progressBar.attr("aria-valuenow")) + 1); + let progress = (progressBar.attr('aria-valuenow') / files.length) * 100 + 100 / files.length; + progressBar.css('width', progress + '%'); + progressBar.attr('aria-valuenow', parseInt(progressBar.attr('aria-valuenow')) + 1); } - window.addEventListener("unload", () => { + window.addEventListener('unload', () => { for (const url of urls) { URL.revokeObjectURL(url); } }); // Clear file input after job - function clearFileInput(){ + function clearFileInput() { let pathname = document.location.pathname; - if(pathname != "/merge-pdfs"){ - let formElement = document.querySelector("#fileInput-input"); + if (pathname != '/merge-pdfs') { + let formElement = document.querySelector('#fileInput-input'); formElement.value = ''; - let editSectionElement = document.querySelector("#editSection"); - if(editSectionElement){ - editSectionElement.style.display = "none"; + let editSectionElement = document.querySelector('#editSection'); + if (editSectionElement) { + editSectionElement.style.display = 'none'; } - let cropPdfCanvas = document.querySelector("#cropPdfCanvas"); - let overlayCanvas = document.querySelector("#overlayCanvas"); - if(cropPdfCanvas && overlayCanvas){ + let cropPdfCanvas = document.querySelector('#cropPdfCanvas'); + let overlayCanvas = document.querySelector('#overlayCanvas'); + if (cropPdfCanvas && overlayCanvas) { cropPdfCanvas.width = 0; cropPdfCanvas.height = 0; overlayCanvas.width = 0; overlayCanvas.height = 0; } - } else{ + } else { console.log("Disabled for 'Merge'"); } } diff --git a/src/main/resources/static/js/draggable-utils.js b/src/main/resources/static/js/draggable-utils.js index bdcb81610b..b6fa73b5fb 100644 --- a/src/main/resources/static/js/draggable-utils.js +++ b/src/main/resources/static/js/draggable-utils.js @@ -1,84 +1,143 @@ const DraggableUtils = { - boxDragContainer: document.getElementById("box-drag-container"), - pdfCanvas: document.getElementById("pdf-canvas"), + boxDragContainer: document.getElementById('box-drag-container'), + pdfCanvas: document.getElementById('pdf-canvas'), nextId: 0, pdfDoc: null, pageIndex: 0, + elementAllPages: [], documentsMap: new Map(), lastInteracted: null, - + padding: 15, + maintainRatioEnabled: true, init() { - interact(".draggable-canvas") + interact('.draggable-canvas') .draggable({ listeners: { + start(event) { + const target = event.target; + x = parseFloat(target.getAttribute('data-bs-x')); + y = parseFloat(target.getAttribute('data-bs-y')); + }, move: (event) => { const target = event.target; - const x = (parseFloat(target.getAttribute("data-bs-x")) || 0) - + event.dx; - const y = (parseFloat(target.getAttribute("data-bs-y")) || 0) - + event.dy; + // Retrieve position attributes + let x = parseFloat(target.getAttribute('data-bs-x')) || 0; + let y = parseFloat(target.getAttribute('data-bs-y')) || 0; + const angle = parseFloat(target.getAttribute('data-angle')) || 0; + + // Update position based on drag movement + x += event.dx; + y += event.dy; + + // Apply translation to the parent container (bounding box) target.style.transform = `translate(${x}px, ${y}px)`; - target.setAttribute("data-bs-x", x); - target.setAttribute("data-bs-y", y); - this.onInteraction(target); - //update the last interacted element - this.lastInteracted = event.target; + // Preserve rotation on the inner canvas + const canvas = target.querySelector('.display-canvas'); + + const canvasWidth = parseFloat(canvas.style.width); + const canvasHeight = parseFloat(canvas.style.height); + + const cosAngle = Math.abs(Math.cos(angle)); + const sinAngle = Math.abs(Math.sin(angle)); + + const rotatedWidth = canvasWidth * cosAngle + canvasHeight * sinAngle; + const rotatedHeight = canvasWidth * sinAngle + canvasHeight * cosAngle; + + const offsetX = (rotatedWidth - canvasWidth) / 2; + const offsetY = (rotatedHeight - canvasHeight) / 2; + + canvas.style.transform = `translate(${offsetX}px, ${offsetY}px) rotate(${angle}rad)`; + + // Update attributes for persistence + target.setAttribute('data-bs-x', x); + target.setAttribute('data-bs-y', y); + + // Set the last interacted element + this.lastInteracted = target; }, }, }) .resizable({ edges: { left: true, right: true, bottom: true, top: true }, listeners: { + start: (event) => { + const target = event.target; + x = parseFloat(target.getAttribute('data-bs-x')) || 0; + y = parseFloat(target.getAttribute('data-bs-y')) || 0; + }, move: (event) => { - var target = event.target; - var x = parseFloat(target.getAttribute("data-bs-x")) || 0; - var y = parseFloat(target.getAttribute("data-bs-y")) || 0; - - // check if control key is pressed - if (event.ctrlKey) { - const aspectRatio = target.offsetWidth / target.offsetHeight; - // preserve aspect ratio - let width = event.rect.width; - let height = event.rect.height; - - if (Math.abs(event.deltaRect.width) >= Math.abs( - event.deltaRect.height)) { - height = width / aspectRatio; - } else { - width = height * aspectRatio; + const target = event.target; + + const MAX_CHANGE = 60; + + let width = event.rect.width - 2 * this.padding; + let height = event.rect.height - 2 * this.padding; + + const canvas = target.querySelector('.display-canvas'); + if (canvas) { + const originalWidth = parseFloat(canvas.style.width) || canvas.width; + const originalHeight = parseFloat(canvas.style.height) || canvas.height; + const angle = parseFloat(target.getAttribute('data-angle')) || 0; + + const aspectRatio = originalWidth / originalHeight; + + if (!event.ctrlKey && this.maintainRatioEnabled) { + if (Math.abs(event.deltaRect.width) >= Math.abs(event.deltaRect.height)) { + height = width / aspectRatio; + } else { + width = height * aspectRatio; + } } - event.rect.width = width; - event.rect.height = height; - } + const widthChange = width - originalWidth; + const heightChange = height - originalHeight; - target.style.width = event.rect.width + "px"; - target.style.height = event.rect.height + "px"; + if (Math.abs(widthChange) > MAX_CHANGE || Math.abs(heightChange) > MAX_CHANGE) { + const scale = MAX_CHANGE / Math.max(Math.abs(widthChange), Math.abs(heightChange)); + width = originalWidth + widthChange * scale; + height = originalHeight + heightChange * scale; + } - // translate when resizing from top or left edges - x += event.deltaRect.left; - y += event.deltaRect.top; + const cosAngle = Math.abs(Math.cos(angle)); + const sinAngle = Math.abs(Math.sin(angle)); + const boundingWidth = width * cosAngle + height * sinAngle; + const boundingHeight = width * sinAngle + height * cosAngle; - target.style.transform = "translate(" + x + "px," + y + "px)"; + if (event.edges.left) { + const dx = event.deltaRect.left; + x += dx; + } + if (event.edges.top) { + const dy = event.deltaRect.top; + y += dy; + } + + target.style.transform = `translate(${x}px, ${y}px)`; + target.style.width = `${boundingWidth + 2 * this.padding}px`; + target.style.height = `${boundingHeight + 2 * this.padding}px`; + + canvas.style.width = `${width}px`; + canvas.style.height = `${height}px`; + canvas.style.transform = `translate(${(boundingWidth - width) / 2}px, ${(boundingHeight - height) / 2 + }px) rotate(${angle}rad)`; - target.setAttribute("data-bs-x", x); - target.setAttribute("data-bs-y", y); - target.textContent = Math.round(event.rect.width) + "\u00D7" - + Math.round(event.rect.height); + target.setAttribute('data-bs-x', x); + target.setAttribute('data-bs-y', y); - this.onInteraction(target); + this.lastInteracted = target; + } }, }, - modifiers: [ interact.modifiers.restrictSize({ - min: { width: 5, height: 5 }, + min: { width: 50, height: 50 }, }), ], inertia: true, }); + //Arrow key Support for Add-Image and Sign pages if (window.location.pathname.endsWith('sign') || window.location.pathname.endsWith('add-image')) { window.addEventListener('keydown', (event) => { @@ -94,8 +153,8 @@ const DraggableUtils = { const stepY = target.offsetHeight * 0.05; // Get the current x and y coordinates - let x = (parseFloat(target.getAttribute('data-bs-x')) || 0); - let y = (parseFloat(target.getAttribute('data-bs-y')) || 0); + let x = parseFloat(target.getAttribute('data-bs-x')) || 0; + let y = parseFloat(target.getAttribute('data-bs-y')) || 0; // Check which key was pressed and update the coordinates accordingly switch (event.key) { @@ -120,7 +179,8 @@ const DraggableUtils = { } // Update position - target.style.transform = `translate(${x}px, ${y}px)`; + const angle = parseFloat(target.getAttribute('data-angle')) || 0; + target.style.transform = `translate(${x}px, ${y}px) rotate(${angle}rad)`; target.setAttribute('data-bs-x', x); target.setAttribute('data-bs-y', y); @@ -128,74 +188,160 @@ const DraggableUtils = { }); } }, - onInteraction(target) { - this.boxDragContainer.appendChild(target); - }, - - createDraggableCanvas() { - const createdCanvas = document.createElement("canvas"); - createdCanvas.id = `draggable-canvas-${this.nextId++}`; - createdCanvas.classList.add("draggable-canvas"); - - const x = 0; - const y = 20; - createdCanvas.style.transform = `translate(${x}px, ${y}px)`; - createdCanvas.setAttribute("data-bs-x", x); - createdCanvas.setAttribute("data-bs-y", y); - - //Click element in order to enable arrow keys - createdCanvas.addEventListener('click', () => { - this.lastInteracted = createdCanvas; - }); - - createdCanvas.onclick = (e) => this.onInteraction(e.target); - - this.boxDragContainer.appendChild(createdCanvas); - - //Enable Arrow keys directly after the element is created - this.lastInteracted = createdCanvas; - - return createdCanvas; + this.lastInteracted = target; + // this.boxDragContainer.appendChild(target); + // target.appendChild(target.querySelector(".display-canvas")); }, createDraggableCanvasFromUrl(dataUrl) { return new Promise((resolve) => { - var myImage = new Image(); + const canvasContainer = document.createElement('div'); + const createdCanvas = document.createElement('canvas'); // Inner canvas + const padding = this.padding; + + canvasContainer.id = `draggable-canvas-${this.nextId++}`; + canvasContainer.classList.add('draggable-canvas'); + createdCanvas.classList.add('display-canvas'); + + canvasContainer.style.position = 'absolute'; + canvasContainer.style.padding = `${padding}px`; + canvasContainer.style.overflow = 'hidden'; + + let x = 0, + y = 30, + angle = 0; + canvasContainer.style.transform = `translate(${x}px, ${y}px)`; + canvasContainer.setAttribute('data-bs-x', x); + canvasContainer.setAttribute('data-bs-y', y); + canvasContainer.setAttribute('data-angle', angle); + + canvasContainer.addEventListener('click', () => { + this.lastInteracted = canvasContainer; + this.showRotationControls(canvasContainer); + }); + canvasContainer.appendChild(createdCanvas); + this.boxDragContainer.appendChild(canvasContainer); + + const myImage = new Image(); myImage.src = dataUrl; myImage.onload = () => { - var createdCanvas = this.createDraggableCanvas(); + const context = createdCanvas.getContext('2d'); createdCanvas.width = myImage.width; createdCanvas.height = myImage.height; const imgAspect = myImage.width / myImage.height; - const pdfAspect = this.boxDragContainer.offsetWidth / this.boxDragContainer.offsetHeight; + const containerWidth = this.boxDragContainer.offsetWidth; + const containerHeight = this.boxDragContainer.offsetHeight; - var scaleMultiplier; - if (imgAspect > pdfAspect) { - scaleMultiplier = this.boxDragContainer.offsetWidth / myImage.width; - } else { - scaleMultiplier = this.boxDragContainer.offsetHeight / myImage.height; - } + let scaleMultiplier = Math.min(containerWidth / myImage.width, containerHeight / myImage.height); + const scaleFactor = 0.5; - var newWidth = createdCanvas.width; - var newHeight = createdCanvas.height; - if (scaleMultiplier < 1) { - newWidth = newWidth * scaleMultiplier; - newHeight = newHeight * scaleMultiplier; - } + const newWidth = myImage.width * scaleMultiplier * scaleFactor; + const newHeight = myImage.height * scaleMultiplier * scaleFactor; + + // Calculate initial bounding box size + const cosAngle = Math.abs(Math.cos(angle)); + const sinAngle = Math.abs(Math.sin(angle)); + const boundingWidth = newWidth * cosAngle + newHeight * sinAngle; + const boundingHeight = newWidth * sinAngle + newHeight * cosAngle; + + createdCanvas.style.width = `${newWidth}px`; + createdCanvas.style.height = `${newHeight}px`; - createdCanvas.style.width = newWidth + "px"; - createdCanvas.style.height = newHeight + "px"; + canvasContainer.style.width = `${boundingWidth + 2 * padding}px`; + canvasContainer.style.height = `${boundingHeight + 2 * padding}px`; - var myContext = createdCanvas.getContext("2d"); - myContext.drawImage(myImage, 0, 0); - resolve(createdCanvas); + context.imageSmoothingEnabled = true; + context.imageSmoothingQuality = 'high'; + context.drawImage(myImage, 0, 0, myImage.width, myImage.height); + this.showRotationControls(canvasContainer); + this.lastInteracted = canvasContainer; + + resolve(canvasContainer); + }; + + myImage.onerror = () => { + console.error('Failed to load the image.'); + resolve(null); }; }); }, + toggleMaintainRatio() { + this.maintainRatioEnabled = !this.maintainRatioEnabled; + const button = document.getElementById('ratioToggleBtn'); + if (this.maintainRatioEnabled) { + button.classList.remove('btn-danger'); + button.classList.add('btn-outline-secondary'); + } else { + button.classList.remove('btn-outline-secondary'); + button.classList.add('btn-danger'); + } + }, + deleteAllDraggableCanvases() { - this.boxDragContainer.querySelectorAll(".draggable-canvas").forEach((el) => el.remove()); + this.boxDragContainer.querySelectorAll('.draggable-canvas').forEach((el) => el.remove()); + }, + async addAllPagesDraggableCanvas(element) { + if (element) { + let currentPage = this.pageIndex; + if (!this.elementAllPages.includes(element)) { + this.elementAllPages.push(element); + element.style.filter = 'sepia(1) hue-rotate(90deg) brightness(1.2)'; + let newElement = { + element: element, + offsetWidth: element.width, + offsetHeight: element.height, + }; + + let pagesMap = this.documentsMap.get(this.pdfDoc); + + if (!pagesMap) { + pagesMap = {}; + this.documentsMap.set(this.pdfDoc, pagesMap); + } + let page = this.pageIndex; + + for (let pageIndex = 0; pageIndex < this.pdfDoc.numPages; pageIndex++) { + if (pagesMap[`${pageIndex}-offsetWidth`]) { + if (!pagesMap[pageIndex].includes(newElement)) { + pagesMap[pageIndex].push(newElement); + } + } else { + pagesMap[pageIndex] = []; + pagesMap[pageIndex].push(newElement); + pagesMap[`${pageIndex}-offsetWidth`] = pagesMap[`${page}-offsetWidth`]; + pagesMap[`${pageIndex}-offsetHeight`] = pagesMap[`${page}-offsetHeight`]; + } + await this.goToPage(pageIndex); + } + } else { + const index = this.elementAllPages.indexOf(element); + if (index !== -1) { + this.elementAllPages.splice(index, 1); + } + element.style.filter = ''; + let pagesMap = this.documentsMap.get(this.pdfDoc); + + if (!pagesMap) { + pagesMap = {}; + this.documentsMap.set(this.pdfDoc, pagesMap); + } + for (let pageIndex = 0; pageIndex < this.pdfDoc.numPages; pageIndex++) { + if (pagesMap[`${pageIndex}-offsetWidth`] && pageIndex != currentPage) { + const pageElements = pagesMap[pageIndex]; + pageElements.forEach((elementPage) => { + const elementIndex = pageElements.findIndex((elementPage) => elementPage['element'].id === element.id); + if (elementIndex !== -1) { + pageElements.splice(elementIndex, 1); + } + }); + } + await this.goToPage(pageIndex); + } + } + await this.goToPage(currentPage); + } }, deleteDraggableCanvas(element) { if (element) { @@ -208,16 +354,68 @@ const DraggableUtils = { } }, getLastInteracted() { - return this.boxDragContainer.querySelector(".draggable-canvas:last-of-type"); + return this.lastInteracted; + }, + showRotationControls(element) { + const rotationControls = document.getElementById('rotation-controls'); + const rotationInput = document.getElementById('rotation-input'); + rotationControls.style.display = 'flex'; + rotationInput.value = Math.round((parseFloat(element.getAttribute('data-angle')) * 180) / Math.PI); + rotationInput.addEventListener('input', this.handleRotationInputChange); + }, + hideRotationControls() { + const rotationControls = document.getElementById('rotation-controls'); + const rotationInput = document.getElementById('rotation-input'); + rotationControls.style.display = 'none'; + rotationInput.addEventListener('input', this.handleRotationInputChange); }, + applyRotationToElement(element, degrees) { + const radians = degrees * (Math.PI / 180); // Convert degrees to radians + + // Get current position + const x = parseFloat(element.getAttribute('data-bs-x')) || 0; + const y = parseFloat(element.getAttribute('data-bs-y')) || 0; + + // Get the inner canvas (image) + const canvas = element.querySelector('.display-canvas'); + if (canvas) { + const originalWidth = parseFloat(canvas.style.width); + const originalHeight = parseFloat(canvas.style.height); + const padding = this.padding; // Access the padding value + + // Calculate rotated bounding box dimensions + const cosAngle = Math.abs(Math.cos(radians)); + const sinAngle = Math.abs(Math.sin(radians)); + const boundingWidth = originalWidth * cosAngle + originalHeight * sinAngle + 2 * padding; + const boundingHeight = originalWidth * sinAngle + originalHeight * cosAngle + 2 * padding; + + // Update parent container to fit the rotated bounding box + element.style.width = `${boundingWidth}px`; + element.style.height = `${boundingHeight}px`; + + // Center the canvas within the bounding box, accounting for padding + const offsetX = (boundingWidth - originalWidth) / 2 - padding; + const offsetY = (boundingHeight - originalHeight) / 2 - padding; + + canvas.style.transform = `translate(${offsetX}px, ${offsetY}px) rotate(${radians}rad)`; + } + // Keep the bounding box positioned properly + element.style.transform = `translate(${x}px, ${y}px)`; + element.setAttribute('data-angle', radians); + }, + handleRotationInputChange() { + const rotationInput = document.getElementById('rotation-input'); + const degrees = parseFloat(rotationInput.value) || 0; + DraggableUtils.applyRotationToElement(DraggableUtils.lastInteracted, degrees); + }, storePageContents() { var pagesMap = this.documentsMap.get(this.pdfDoc); if (!pagesMap) { pagesMap = {}; } - const elements = [...this.boxDragContainer.querySelectorAll(".draggable-canvas")]; + const elements = [...this.boxDragContainer.querySelectorAll('.draggable-canvas')]; const draggablesData = elements.map((el) => { return { element: el, @@ -228,8 +426,8 @@ const DraggableUtils = { elements.forEach((el) => this.boxDragContainer.removeChild(el)); pagesMap[this.pageIndex] = draggablesData; - pagesMap[this.pageIndex + "-offsetWidth"] = this.pdfCanvas.offsetWidth; - pagesMap[this.pageIndex + "-offsetHeight"] = this.pdfCanvas.offsetHeight; + pagesMap[this.pageIndex + '-offsetWidth'] = this.pdfCanvas.offsetWidth; + pagesMap[this.pageIndex + '-offsetHeight'] = this.pdfCanvas.offsetHeight; this.documentsMap.set(this.pdfDoc, pagesMap); }, @@ -241,7 +439,7 @@ const DraggableUtils = { } const draggablesData = pagesMap[this.pageIndex]; - if (draggablesData) { + if (draggablesData && Array.isArray(draggablesData)) { draggablesData.forEach((draggableData) => this.boxDragContainer.appendChild(draggableData.element)); } @@ -266,13 +464,20 @@ const DraggableUtils = { // render the page onto the canvas var renderContext = { - canvasContext: this.pdfCanvas.getContext("2d"), + canvasContext: this.pdfCanvas.getContext('2d'), viewport: page.getViewport({ scale: 1 }), }; await page.render(renderContext).promise; //return pdfCanvas.toDataURL(); }, + + async goToPage(pageIndex) { + this.storePageContents(); + await this.renderPage(this.pdfDoc, pageIndex); + this.loadPageContents(); + }, + async incrementPage() { if (this.pageIndex < this.pdfDoc.numPages - 1) { this.storePageContents(); @@ -287,8 +492,6 @@ const DraggableUtils = { this.loadPageContents(); } }, - - parseTransform(element) { }, async getOverlayedPdfDocument() { const pdfBytes = await this.pdfDoc.getData(); const pdfDocModified = await PDFLib.PDFDocument.load(pdfBytes, { @@ -297,58 +500,74 @@ const DraggableUtils = { this.storePageContents(); const pagesMap = this.documentsMap.get(this.pdfDoc); + for (let pageIdx in pagesMap) { - if (pageIdx.includes("offset")) { + if (pageIdx.includes('offset')) { continue; } - console.log(typeof pageIdx); const page = pdfDocModified.getPage(parseInt(pageIdx)); - const draggablesData = pagesMap[pageIdx]; - const offsetWidth = pagesMap[pageIdx + "-offsetWidth"]; - const offsetHeight = pagesMap[pageIdx + "-offsetHeight"]; + let draggablesData = pagesMap[pageIdx]; + const offsetWidth = pagesMap[pageIdx + '-offsetWidth']; + const offsetHeight = pagesMap[pageIdx + '-offsetHeight']; for (const draggableData of draggablesData) { - // embed the draggable canvas - const draggableElement = draggableData.element; + // Embed the draggable canvas + const draggableElement = draggableData.element.querySelector('.display-canvas'); const response = await fetch(draggableElement.toDataURL()); const draggableImgBytes = await response.arrayBuffer(); const pdfImageObject = await pdfDocModified.embedPng(draggableImgBytes); - // calculate the position in the pdf document - const tansform = draggableElement.style.transform.replace(/[^.,-\d]/g, ""); - const transformComponents = tansform.split(","); + // Extract transformation data + const transform = draggableData.element.style.transform || ''; + const translateRegex = /translate\((-?\d+(?:\.\d+)?)px,\s*(-?\d+(?:\.\d+)?)px\)/; + + const translateMatch = transform.match(translateRegex); + + const translateX = translateMatch ? parseFloat(translateMatch[1]) : 0; + const translateY = translateMatch ? parseFloat(translateMatch[2]) : 0; + + const childTransform = draggableElement.style.transform || ''; + const childTranslateMatch = childTransform.match(translateRegex); + + const childOffsetX = childTranslateMatch ? parseFloat(childTranslateMatch[1]) : 0; + const childOffsetY = childTranslateMatch ? parseFloat(childTranslateMatch[2]) : 0; + + const rotateAngle = parseFloat(draggableData.element.getAttribute('data-angle')) || 0; + const draggablePositionPixels = { - x: parseFloat(transformComponents[0]), - y: parseFloat(transformComponents[1]), - width: draggableData.offsetWidth, - height: draggableData.offsetHeight, + x: translateX + childOffsetX + this.padding + 2, + y: translateY + childOffsetY + this.padding + 2, + width: parseFloat(draggableElement.style.width), + height: parseFloat(draggableElement.style.height), + angle: rotateAngle, // Store rotation }; - //Auxiliary variables + // Auxiliary variables let widthAdjusted = page.getWidth(); let heightAdjusted = page.getHeight(); const rotation = page.getRotation(); - //Normalizing angle + // Normalize page rotation angle let normalizedAngle = rotation.angle % 360; if (normalizedAngle < 0) { normalizedAngle += 360; } - //Changing the page dimension if the angle is 90 or 270 + // Adjust page dimensions for rotated pages if (normalizedAngle === 90 || normalizedAngle === 270) { - let widthTemp = widthAdjusted; - widthAdjusted = heightAdjusted; - heightAdjusted = widthTemp; + [widthAdjusted, heightAdjusted] = [heightAdjusted, widthAdjusted]; } + const draggablePositionRelative = { x: draggablePositionPixels.x / offsetWidth, y: draggablePositionPixels.y / offsetHeight, width: draggablePositionPixels.width / offsetWidth, height: draggablePositionPixels.height / offsetHeight, + angle: draggablePositionPixels.angle, }; + const draggablePositionPdf = { x: draggablePositionRelative.x * widthAdjusted, y: draggablePositionRelative.y * heightAdjusted, @@ -356,12 +575,13 @@ const DraggableUtils = { height: draggablePositionRelative.height * heightAdjusted, }; - //Defining the image if the page has a 0-degree angle - let x = draggablePositionPdf.x - let y = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height + // Calculate position based on normalized page rotation + let x = draggablePositionPdf.x; + let y = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height; + let originx = x + draggablePositionPdf.width / 2; + let originy = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height / 2; - //Defining the image position if it is at other angles if (normalizedAngle === 90) { x = draggablePositionPdf.y + draggablePositionPdf.height; y = draggablePositionPdf.x; @@ -372,15 +592,29 @@ const DraggableUtils = { x = heightAdjusted - draggablePositionPdf.y - draggablePositionPdf.height; y = widthAdjusted - draggablePositionPdf.x; } - - // draw the image + // let angle = draggablePositionPixels.angle % 360; + // if (angle < 0) angle += 360; // Normalize to positive angle + const radians = -draggablePositionPixels.angle; // Convert angle to radians + page.pushOperators( + PDFLib.pushGraphicsState(), + PDFLib.concatTransformationMatrix(1, 0, 0, 1, originx, originy), + PDFLib.concatTransformationMatrix( + Math.cos(radians), + Math.sin(radians), + -Math.sin(radians), + Math.cos(radians), + 0, + 0 + ), + PDFLib.concatTransformationMatrix(1, 0, 0, 1, -1 * originx, -1 * originy) + ); page.drawImage(pdfImageObject, { x: x, y: y, width: draggablePositionPdf.width, height: draggablePositionPdf.height, - rotate: rotation }); + page.pushOperators(PDFLib.popGraphicsState()); } } @@ -389,6 +623,6 @@ const DraggableUtils = { }, }; -document.addEventListener("DOMContentLoaded", () => { +document.addEventListener('DOMContentLoaded', () => { DraggableUtils.init(); }); diff --git a/src/main/resources/static/js/draggable.js b/src/main/resources/static/js/draggable.js deleted file mode 100644 index cba6f3c026..0000000000 --- a/src/main/resources/static/js/draggable.js +++ /dev/null @@ -1,36 +0,0 @@ -const draggableElement = document.querySelector('.draggable-canvas'); - -// Variables to store the current position of the draggable element -let offsetX, offsetY, isDragging = false; - -draggableElement.addEventListener('mousedown', (e) => { - // Get the offset when the mouse is clicked inside the element - offsetX = e.clientX - draggableElement.getBoundingClientRect().left; - offsetY = e.clientY - draggableElement.getBoundingClientRect().top; - - // Set isDragging to true - isDragging = true; - - // Add event listeners for mouse movement and release - document.addEventListener('mousemove', onMouseMove); - document.addEventListener('mouseup', onMouseUp); -}); - -function onMouseMove(e) { - if (isDragging) { - // Calculate the new position of the element - const left = e.clientX - offsetX; - const top = e.clientY - offsetY; - - // Move the element by setting its style - draggableElement.style.left = `${left}px`; - draggableElement.style.top = `${top}px`; - } -} - -function onMouseUp() { - // Stop dragging and remove event listeners - isDragging = false; - document.removeEventListener('mousemove', onMouseMove); - document.removeEventListener('mouseup', onMouseUp); -} diff --git a/src/main/resources/static/js/fetch-utils.js b/src/main/resources/static/js/fetch-utils.js index f92c7d9ede..d606d71ac5 100644 --- a/src/main/resources/static/js/fetch-utils.js +++ b/src/main/resources/static/js/fetch-utils.js @@ -8,7 +8,6 @@ window.fetchWithCsrf = async function(url, options = {}) { if (cookieValue) { return cookieValue; } - const csrfElement = document.querySelector('input[name="_csrf"]'); return csrfElement ? csrfElement.value : null; } diff --git a/src/main/resources/static/js/file-icon-factory.js b/src/main/resources/static/js/file-icon-factory.js new file mode 100644 index 0000000000..81328f4237 --- /dev/null +++ b/src/main/resources/static/js/file-icon-factory.js @@ -0,0 +1,52 @@ +class FileIconFactory { + static createFileIcon(fileExtension) { + let ext = fileExtension.toLowerCase(); + switch (ext) { + case "pdf": + return this.createPDFIcon(); + case "csv": + return this.createCSVIcon(); + case "jpe": + case "jpg": + case "jpeg": + case "gif": + case "png": + case "bmp": + case "ico": + case "svg": + case "svgz": + case "tif": + case "tiff": + case "ai": + case "drw": + case "pct": + case "psp": + case "xcf": + case "psd": + case "raw": + case "webp": + case "heic": + return this.createImageIcon(); + default: + return this.createUnknownFileIcon(); + } + } + + static createPDFIcon() { + return ` + + + + `; + } + + static createImageIcon() { + return ``; + } + + static createUnknownFileIcon() { + return ``; + } +} + +export default FileIconFactory; diff --git a/src/main/resources/static/js/file-utils.js b/src/main/resources/static/js/file-utils.js new file mode 100644 index 0000000000..98772cb2f8 --- /dev/null +++ b/src/main/resources/static/js/file-utils.js @@ -0,0 +1,31 @@ +class FileUtils { + static extractFileExtension(filename) { + if (!filename || filename.trim().length <= 0) return ""; + let trimmedName = filename.trim(); + return trimmedName.substring(trimmedName.lastIndexOf(".") + 1); + } + + static transformFileSize(size) { + if (!size) return `0Bs`; + let oneKB = 1024; + let oneMB = oneKB * 1024; + let oneGB = oneMB * 1024; + let oneTB = oneGB * 1024; + + if (size < oneKB) return `${this._toFixed(size)}Bs`; + else if (oneKB <= size && size < oneMB) return `${this._toFixed(size / oneKB)}KBs`; + else if (oneMB <= size && size < oneGB) return `${this._toFixed(size / oneMB)}MBs`; + else if (oneGB <= size && size < oneTB) return `${this._toFixed(size / oneGB)}GBs`; + else return `${this._toFixed(size / oneTB)}TBs`; + } + + static _toFixed(val, digits = 1) { + // Return value without ending 0s after decimal point + // Example: if res == 145.0 then return 145, else if 145.x (where x != 0) return 145.x + let res = val.toFixed(digits); + let resRounded = (res|0); + return res == resRounded ? resRounded : res; + } +} + +export default FileUtils; diff --git a/src/main/resources/static/js/fileInput.js b/src/main/resources/static/js/fileInput.js index 001c8f24f3..b2316f4ffc 100644 --- a/src/main/resources/static/js/fileInput.js +++ b/src/main/resources/static/js/fileInput.js @@ -1,73 +1,98 @@ -document.addEventListener("DOMContentLoaded", function () { - document.querySelectorAll(".custom-file-chooser").forEach(setupFileInput); -}); +import FileIconFactory from './file-icon-factory.js'; +import FileUtils from './file-utils.js'; +import UUID from './uuid.js'; +import {DecryptFile} from './DecryptFiles.js'; +let isScriptExecuted = false; +if (!isScriptExecuted) { + isScriptExecuted = true; + document.addEventListener('DOMContentLoaded', function () { + document.querySelectorAll('.custom-file-chooser').forEach(setupFileInput); + }); +} +let hasDroppedImage = false; function setupFileInput(chooser) { - const elementId = chooser.getAttribute("data-bs-element-id"); - const filesSelected = chooser.getAttribute("data-bs-files-selected"); - const pdfPrompt = chooser.getAttribute("data-bs-pdf-prompt"); + const elementId = chooser.getAttribute('data-bs-element-id'); + const filesSelected = chooser.getAttribute('data-bs-files-selected'); + const pdfPrompt = chooser.getAttribute('data-bs-pdf-prompt'); + const inputContainerId = chooser.getAttribute('data-bs-element-container-id'); + + let inputContainer = document.getElementById(inputContainerId); + if (inputContainer.id === 'pdf-upload-input-container') { + inputContainer.querySelector('#dragAndDrop').innerHTML = window.fileInput.dragAndDropPDF; + } else if (inputContainer.id === 'image-upload-input-container') { + inputContainer.querySelector('#dragAndDrop').innerHTML = window.fileInput.dragAndDropImage; + } let allFiles = []; let overlay; let dragCounter = 0; + inputContainer.addEventListener('click', (e) => { + let inputBtn = document.getElementById(elementId); + inputBtn.click(); + }); + const dragenterListener = function () { dragCounter++; if (!overlay) { - overlay = document.createElement("div"); - overlay.style.position = "fixed"; - overlay.style.top = 0; - overlay.style.left = 0; - overlay.style.width = "100%"; - overlay.style.height = "100%"; - overlay.style.background = "rgba(0, 0, 0, 0.5)"; - overlay.style.color = "#fff"; - overlay.style.zIndex = "1000"; - overlay.style.display = "flex"; - overlay.style.alignItems = "center"; - overlay.style.justifyContent = "center"; - overlay.style.pointerEvents = "none"; - overlay.innerHTML = "

Drop files anywhere to upload

"; - document.getElementById("content-wrap").appendChild(overlay); + // Show overlay by removing display: none from pseudo elements (::before and ::after) + inputContainer.style.setProperty('--overlay-display', "''"); + overlay = true; } }; const dragleaveListener = function () { dragCounter--; if (dragCounter === 0) { - if (overlay) { - overlay.remove(); - overlay = null; - } + hideOverlay(); } }; + function hideOverlay() { + if (!overlay) return; + inputContainer.style.setProperty('--overlay-display', 'none'); + overlay = false; + } + const dropListener = function (e) { e.preventDefault(); + // Drag and Drop shall only affect the target file chooser + if (e.target !== inputContainer) { + hideOverlay(); + dragCounter = 0; + return; + } + const dt = e.dataTransfer; const files = dt.files; - for (let i = 0; i < files.length; i++) { - allFiles.push(files[i]); + const fileInput = document.getElementById(elementId); + if (fileInput?.hasAttribute('multiple')) { + pushFileListTo(files, allFiles); + } else if (fileInput) { + allFiles = [files[0]]; } const dataTransfer = new DataTransfer(); allFiles.forEach((file) => dataTransfer.items.add(file)); - const fileInput = document.getElementById(elementId); fileInput.files = dataTransfer.files; - if (overlay) { - overlay.remove(); - overlay = null; - } + hideOverlay(); dragCounter = 0; - fileInput.dispatchEvent(new Event("change", { bubbles: true })); + fileInput.dispatchEvent(new CustomEvent('change', {bubbles: true, detail: {source: 'drag-drop'}})); }; - ["dragenter", "dragover", "dragleave", "drop"].forEach((eventName) => { + function pushFileListTo(fileList, container) { + for (let file of fileList) { + container.push(file); + } + } + + ['dragenter', 'dragover', 'dragleave', 'drop'].forEach((eventName) => { document.body.addEventListener(eventName, preventDefaults, false); }); @@ -76,37 +101,278 @@ function setupFileInput(chooser) { e.stopPropagation(); } - document.body.addEventListener("dragenter", dragenterListener); - document.body.addEventListener("dragleave", dragleaveListener); - document.body.addEventListener("drop", dropListener); + document.body.addEventListener('dragenter', dragenterListener); + document.body.addEventListener('dragleave', dragleaveListener); + document.body.addEventListener('drop', dropListener); + + $('#' + elementId).on('change', async function (e) { + let element = e.target; + const isDragAndDrop = e.detail?.source == 'drag-drop'; + + if (element instanceof HTMLInputElement && element.hasAttribute('multiple')) { + allFiles = isDragAndDrop ? allFiles : [...allFiles, ...element.files]; + } else { + allFiles = Array.from(isDragAndDrop ? allFiles : [element.files[0]]); + } + allFiles = await Promise.all( + allFiles.map(async (file) => { + let decryptedFile = file; + try { + const decryptFile = new DecryptFile(); + const {isEncrypted, requiresPassword} = await decryptFile.checkFileEncrypted(file); + if (file.type === 'application/pdf' && isEncrypted) { + decryptedFile = await decryptFile.decryptFile(file, requiresPassword); + if (!decryptedFile) throw new Error('File decryption failed.'); + } + decryptedFile.uniqueId = UUID.uuidv4(); + return decryptedFile; + } catch (error) { + console.error(`Error decrypting file: ${file.name}`, error); + if (!file.uniqueId) file.uniqueId = UUID.uuidv4(); + return file; + } + }) + ); + if (!isDragAndDrop) { + let dataTransfer = toDataTransfer(allFiles); + element.files = dataTransfer.files; + } - $("#" + elementId).on("change", function (e) { - allFiles = Array.from(e.target.files); handleFileInputChange(this); + this.dispatchEvent(new CustomEvent('file-input-change', {bubbles: true, detail: {elementId, allFiles}})); }); + function toDataTransfer(files) { + let dataTransfer = new DataTransfer(); + files.forEach((file) => dataTransfer.items.add(file)); + return dataTransfer; + } function handleFileInputChange(inputElement) { const files = allFiles; - const fileNames = files.map((f) => f.name); - const selectedFilesContainer = $(inputElement).siblings(".selected-files"); + showOrHideSelectedFilesContainer(files); + + const filesInfo = files.map((f) => ({ + name: f.name, + size: f.size, + uniqueId: f.uniqueId, + type: f.type, + url: URL.createObjectURL(f), + })); + + const selectedFilesContainer = $(inputContainer).siblings('.selected-files'); selectedFilesContainer.empty(); - fileNames.forEach((fileName) => { - selectedFilesContainer.append("
" + fileName + "
"); + filesInfo.forEach((info) => { + let fileContainerClasses = 'small-file-container d-flex flex-column justify-content-center align-items-center'; + + let fileContainer = document.createElement('div'); + $(fileContainer).addClass(fileContainerClasses); + $(fileContainer).attr('id', info.uniqueId); + + let fileIconContainer = document.createElement('div'); + const isDragAndDropEnabled = + window.location.pathname.includes('add-image') || window.location.pathname.includes('sign'); + if (info.type.startsWith('image/')) { + let imgPreview = document.createElement('img'); + imgPreview.src = info.url; + imgPreview.alt = 'Preview'; + imgPreview.style.width = '50px'; + imgPreview.style.height = '50px'; + imgPreview.style.objectFit = 'cover'; + $(fileIconContainer).append(imgPreview); + + if (isDragAndDropEnabled) { + let dragIcon = document.createElement('div'); + dragIcon.classList.add('drag-icon'); + dragIcon.innerHTML = + ''; + fileContainer.appendChild(dragIcon); + + $(fileContainer).attr('draggable', 'true'); + $(fileContainer).on('dragstart', (e) => { + e.originalEvent.dataTransfer.setData('fileUrl', info.url); + e.originalEvent.dataTransfer.setData('uniqueId', info.uniqueId); + e.originalEvent.dataTransfer.setDragImage(imgPreview, imgPreview.width / 2, imgPreview.height / 2); + }); + enableImagePreviewOnClick(fileIconContainer); + } else { + $(fileContainer).removeAttr('draggable'); + } + } else { + fileIconContainer = createFileIconContainer(info); + } + + let fileInfoContainer = createFileInfoContainer(info); + + if (!isDragAndDropEnabled) { + let removeBtn = document.createElement('div'); + removeBtn.classList.add('remove-selected-file'); + + let removeBtnIconHTML = ``; + $(removeBtn).append(removeBtnIconHTML); + $(removeBtn).attr('data-file-id', info.uniqueId).click(removeFileListener); + $(fileContainer).append(removeBtn); + } + $(fileContainer).append(fileIconContainer, fileInfoContainer); + + selectedFilesContainer.append(fileContainer); + }); + const pageContainers = $('#box-drag-container'); + pageContainers.off('dragover').on('dragover', (e) => { + e.preventDefault(); + }); + + pageContainers.off('drop').on('drop', (e) => { + e.preventDefault(); + const fileUrl = e.originalEvent.dataTransfer.getData('fileUrl'); + + if (fileUrl) { + const existingImages = $(e.target).find(`img[src="${fileUrl}"]`); + if (existingImages.length === 0) { + DraggableUtils.createDraggableCanvasFromUrl(fileUrl); + } + } + const overlayElement = chooser.querySelector('.drag-drop-overlay'); + if (overlayElement) { + overlayElement.style.display = 'none'; + } + hasDroppedImage = true; }); - if (fileNames.length === 1) { - $(inputElement).siblings(".custom-file-label").addClass("selected").html(fileNames[0]); - } else if (fileNames.length > 1) { - $(inputElement) - .siblings(".custom-file-label") - .addClass("selected") - .html(fileNames.length + " " + filesSelected); + + showOrHideSelectedFilesContainer(files); + } + + function showOrHideSelectedFilesContainer(files) { + if (files && files.length > 0) { + chooser.style.setProperty('--selected-files-display', 'flex'); } else { - $(inputElement).siblings(".custom-file-label").addClass("selected").html(pdfPrompt); + chooser.style.setProperty('--selected-files-display', 'none'); } + const isDragAndDropEnabled = + (window.location.pathname.includes('add-image') || window.location.pathname.includes('sign')) && + files.some((file) => file.type.startsWith('image/')); + + if (!isDragAndDropEnabled) return; + + const selectedFilesContainer = chooser.querySelector('.selected-files'); + + let overlayElement = chooser.querySelector('.drag-drop-overlay'); + if (!overlayElement) { + selectedFilesContainer.style.position = 'relative'; + overlayElement = document.createElement('div'); + overlayElement.classList.add('draggable-image-overlay'); + + overlayElement.innerHTML = 'Drag images to add them to the page'; + selectedFilesContainer.appendChild(overlayElement); + } + if (hasDroppedImage) overlayElement.style.display = files && files.length > 0 ? 'flex' : 'none'; + + selectedFilesContainer.addEventListener('mouseenter', () => { + overlayElement.style.display = 'none'; + }); + + selectedFilesContainer.addEventListener('mouseleave', () => { + if (!hasDroppedImage) overlayElement.style.display = files && files.length > 0 ? 'flex' : 'none'; + }); + } + + function removeFileListener(e) { + const fileId = e.target.getAttribute('data-file-id'); + + let inputElement = document.getElementById(elementId); + removeFileById(fileId, inputElement); + + showOrHideSelectedFilesContainer(allFiles); + + inputElement.dispatchEvent(new CustomEvent('file-input-change', {bubbles: true})); + } + + function removeFileById(fileId, inputElement) { + let fileContainer = document.getElementById(fileId); + fileContainer.remove(); + + allFiles = allFiles.filter((v) => v.uniqueId != fileId); + let dataTransfer = toDataTransfer(allFiles); + + if (inputElement) inputElement.files = dataTransfer.files; } + + function createFileIconContainer(info) { + let fileIconContainer = document.createElement('div'); + fileIconContainer.classList.add('file-icon'); + + // Add icon based on the extension + let fileExtension = FileUtils.extractFileExtension(info.name); + let fileIcon = FileIconFactory.createFileIcon(fileExtension); + + $(fileIconContainer).append(fileIcon); + return fileIconContainer; + } + + function createFileInfoContainer(info) { + let fileInfoContainer = document.createElement('div'); + let fileInfoContainerClasses = 'file-info d-flex flex-column align-items-center justify-content-center'; + + $(fileInfoContainer).addClass(fileInfoContainerClasses); + + $(fileInfoContainer).append(`
${info.name}
`); + let fileSizeWithUnits = FileUtils.transformFileSize(info.size); + $(fileInfoContainer).append(`
${fileSizeWithUnits}
`); + return fileInfoContainer; + } + //Listen for event of file being removed and the filter it out of the allFiles array - document.addEventListener("fileRemoved", function (e) { - const fileName = e.detail; - allFiles = allFiles.filter(file => file.name !== fileName); + document.addEventListener('fileRemoved', function (e) { + const fileId = e.detail; + let inputElement = document.getElementById(elementId); + removeFileById(fileId, inputElement); + showOrHideSelectedFilesContainer(allFiles); }); + function enableImagePreviewOnClick(container) { + const imagePreviewModal = document.getElementById('imagePreviewModal') || createImagePreviewModal(); + + container.querySelectorAll('img').forEach((img) => { + if (!img.hasPreviewListener) { + img.addEventListener('mouseup', function () { + const imgElement = imagePreviewModal.querySelector('img'); + imgElement.src = this.src; + imagePreviewModal.style.display = 'flex'; + }); + img.hasPreviewListener = true; + } + }); + + function createImagePreviewModal() { + const modal = document.createElement('div'); + modal.id = 'imagePreviewModal'; + modal.style.position = 'fixed'; + modal.style.top = '0'; + modal.style.left = '0'; + modal.style.width = '100vw'; + modal.style.height = '100vh'; + modal.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; + modal.style.display = 'none'; + modal.style.justifyContent = 'center'; + modal.style.alignItems = 'center'; + modal.style.zIndex = '2000'; + + const imgElement = document.createElement('img'); + imgElement.style.maxWidth = '90%'; + imgElement.style.maxHeight = '90%'; + + modal.appendChild(imgElement); + document.body.appendChild(modal); + + modal.addEventListener('click', () => { + modal.style.display = 'none'; + }); + + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape' && modal.style.display === 'flex') { + modal.style.display = 'none'; + } + }); + + return modal; + } + } } diff --git a/src/main/resources/static/js/homecard.js b/src/main/resources/static/js/homecard.js index 6dddfa2bc2..9b5297f3cb 100644 --- a/src/main/resources/static/js/homecard.js +++ b/src/main/resources/static/js/homecard.js @@ -268,7 +268,7 @@ document.addEventListener("DOMContentLoaded", function () { const parent = header.parentNode; const container = header.parentNode.querySelector(".feature-group-container"); if (parent.id !== "groupFavorites") { - container.style.maxHeight = container.clientHeight + "px"; + container.style.maxHeight = container.scrollHeight + "px"; } header.onclick = () => { expandCollapseToggle(parent); diff --git a/src/main/resources/static/js/languageSelection.js b/src/main/resources/static/js/languageSelection.js index 383d23daf6..2c7e04063d 100644 --- a/src/main/resources/static/js/languageSelection.js +++ b/src/main/resources/static/js/languageSelection.js @@ -1,5 +1,5 @@ function getStoredOrDefaultLocale() { - const storedLocale = localStorage.getItem("languageCode"); + const storedLocale = localStorage.getItem('languageCode'); return storedLocale || getDetailedLanguageCode(); } @@ -7,10 +7,10 @@ function setLanguageForDropdown(dropdownClass) { const storedLocale = getStoredOrDefaultLocale(); const dropdownItems = document.querySelectorAll(dropdownClass); - dropdownItems.forEach(item => { - item.classList.toggle("active", item.dataset.bsLanguageCode === storedLocale); - item.removeEventListener("click", handleDropdownItemClick); - item.addEventListener("click", handleDropdownItemClick); + dropdownItems.forEach((item) => { + item.classList.toggle('active', item.dataset.bsLanguageCode === storedLocale); + item.removeEventListener('click', handleDropdownItemClick); + item.addEventListener('click', handleDropdownItemClick); }); } @@ -24,62 +24,46 @@ function handleDropdownItemClick(event) { event.preventDefault(); const languageCode = event.currentTarget.dataset.bsLanguageCode; if (languageCode) { - localStorage.setItem("languageCode", languageCode); - updateUrlWithLanguage(languageCode); + localStorage.setItem('languageCode', languageCode); + updateUrlWithLanguage(languageCode); } else { - console.error("Language code is not set for this item."); + console.error('Language code is not set for this item.'); } } function checkUserLanguage(defaultLocale) { - if (!localStorage.getItem("languageCode") || document.documentElement.getAttribute("data-language") != defaultLocale) { - localStorage.setItem("languageCode", defaultLocale); - updateUrlWithLanguage(defaultLocale); + if ( + !localStorage.getItem('languageCode') || + document.documentElement.getAttribute('data-language') != defaultLocale + ) { + localStorage.setItem('languageCode', defaultLocale); + updateUrlWithLanguage(defaultLocale); } } function initLanguageSettings() { - document.addEventListener("DOMContentLoaded", function () { - setLanguageForDropdown(".lang_dropdown-item"); + document.addEventListener('DOMContentLoaded', function () { + setLanguageForDropdown('.lang_dropdown-item'); - const defaultLocale = getStoredOrDefaultLocale(); - checkUserLanguage(defaultLocale); + const defaultLocale = getStoredOrDefaultLocale(); + checkUserLanguage(defaultLocale); - const dropdownItems = document.querySelectorAll(".lang_dropdown-item"); - dropdownItems.forEach(item => { - item.classList.toggle("active", item.dataset.bsLanguageCode === defaultLocale); - }); - }); -} - -function removeElements() { - document.addEventListener("DOMContentLoaded", function () { - document.querySelectorAll(".navbar-item").forEach((element) => { - const dropdownItems = element.querySelectorAll(".dropdown-item"); - const items = Array.from(dropdownItems).filter(item => !item.querySelector("hr.dropdown-divider")); - - if (items.length <= 2) { - if ( - element.previousElementSibling && - element.previousElementSibling.classList.contains("navbar-item") && - element.previousElementSibling.classList.contains("nav-item-separator") - ) { - element.previousElementSibling.remove(); - } - element.remove(); - } - }); + const dropdownItems = document.querySelectorAll('.lang_dropdown-item'); + dropdownItems.forEach((item) => { + item.classList.toggle('active', item.dataset.bsLanguageCode === defaultLocale); + }); }); } function sortLanguageDropdown() { - document.addEventListener("DOMContentLoaded", function () { - const dropdownMenu = document.querySelector('.dropdown-menu .dropdown-item.lang_dropdown-item').parentElement; - if (dropdownMenu) { - const items = Array.from(dropdownMenu.children).filter(child => child.matches('a')); - items.sort((a, b) => a.dataset.bsLanguageCode.localeCompare(b.dataset.bsLanguageCode)) - .forEach(node => dropdownMenu.appendChild(node)); - } + document.addEventListener('DOMContentLoaded', function () { + const dropdownMenu = document.querySelector('.dropdown-menu .dropdown-item.lang_dropdown-item').parentElement; + if (dropdownMenu) { + const items = Array.from(dropdownMenu.children).filter((child) => child.matches('a')); + items + .sort((a, b) => a.dataset.bsLanguageCode.localeCompare(b.dataset.bsLanguageCode)) + .forEach((node) => dropdownMenu.appendChild(node)); + } }); } diff --git a/src/main/resources/static/js/merge.js b/src/main/resources/static/js/merge.js index 8c263da637..9aa7c01136 100644 --- a/src/main/resources/static/js/merge.js +++ b/src/main/resources/static/js/merge.js @@ -3,7 +3,7 @@ let currentSort = { descending: false, }; -document.getElementById("fileInput-input").addEventListener("change", function () { +document.getElementById("fileInput-input").addEventListener("file-input-change", function () { var files = this.files; displayFiles(files); }); @@ -29,6 +29,7 @@ async function displayFiles(files) { // Create filename div and set textContent to sanitize const fileNameDiv = document.createElement("div"); fileNameDiv.className = "filename"; + fileNameDiv.setAttribute("data-file-id", files[i].uniqueId); fileNameDiv.textContent = files[i].name; // Create page info div and set textContent to sanitize @@ -110,11 +111,13 @@ function attachMoveButtons() { event.preventDefault(); var parent = this.closest(".list-group-item"); //Get name of removed file - var fileName = parent.querySelector(".filename").innerText; + let filenameNode = parent.querySelector(".filename"); + var fileName = filenameNode.innerText; + const fileId = filenameNode.getAttribute("data-file-id"); parent.remove(); updateFiles(); //Dispatch a custom event with the name of the removed file - var event = new CustomEvent("fileRemoved", { detail: fileName }); + var event = new CustomEvent("fileRemoved", { detail: fileId }); document.dispatchEvent(event); }); } diff --git a/src/main/resources/static/js/multitool/DragDropManager.js b/src/main/resources/static/js/multitool/DragDropManager.js index 969f2fc2c5..747a7a3db0 100644 --- a/src/main/resources/static/js/multitool/DragDropManager.js +++ b/src/main/resources/static/js/multitool/DragDropManager.js @@ -1,37 +1,32 @@ class DragDropManager { - dragContainer; - wrapper; - pageDirection; - movePageTo; - pageDragging; - draggelEl; - draggedImageEl; - hoveredEl; - endInsertionElement; - constructor(id, wrapperId) { this.dragContainer = document.getElementById(id); - this.pageDirection = document.documentElement.getAttribute("dir"); + this.pageDirection = document.documentElement.getAttribute('dir'); this.wrapper = document.getElementById(wrapperId); this.pageDragging = false; this.hoveredEl = undefined; - this.draggelEl = undefined; this.draggedImageEl = undefined; - - var styleElement = document.createElement("link"); - styleElement.rel = "stylesheet"; - styleElement.href = "css/dragdrop.css"; - + this.draggedEl = undefined; + this.selectedPageElements = []; // Store selected pages for multi-page mode + this.elementTimeouts = new Map(); + + // Add CSS dynamically + const styleElement = document.createElement('link'); + styleElement.rel = 'stylesheet'; + styleElement.href = 'css/dragdrop.css'; document.head.appendChild(styleElement); - const div = document.createElement("div"); - div.classList.add("drag-manager_endpoint"); + // Create the endpoint element + const div = document.createElement('div'); + div.classList.add('page-container'); + div.classList.add('drag-manager_endpoint'); div.innerHTML = ` `; this.endInsertionElement = div; + // Bind methods this.startDraggingPage = this.startDraggingPage.bind(this); this.onDragEl = this.onDragEl.bind(this); this.stopDraggingPage = this.stopDraggingPage.bind(this); @@ -40,58 +35,146 @@ class DragDropManager { } startDraggingPage(div) { - this.pageDragging = true; - this.draggedEl = div; - const img = div.querySelector("img"); - div.classList.add("drag-manager_dragging"); - const imageSrc = img.src; - - const imgEl = document.createElement("img"); - imgEl.classList.add("dragged-img"); - imgEl.src = imageSrc; - this.draggedImageEl = imgEl; - imgEl.style.visibility = "hidden"; - imgEl.style.transform = `rotate(${img.style.rotate === "" ? "0deg" : img.style.rotate}) translate(-50%, -50%)`; - this.dragContainer.appendChild(imgEl); - - window.addEventListener("mouseup", this.stopDraggingPage); - window.addEventListener("mousemove", this.onDragEl); - this.wrapper.classList.add("drag-manager_dragging-container"); + if (window.selectPage) { + // Multi-page drag logic + this.selectedPageElements = window.selectedPages + .map((index) => { + const pageEl = document.getElementById(`page-container-${index}`); + if (pageEl) { + pageEl.initialTransform = pageEl.style.transform || 'translate(0px, 0px)'; + pageEl.classList.add('drag-manager_dragging'); + } + return pageEl; + }) + .filter(Boolean); + + if (this.selectedPageElements.length === 0) return; + + this.pageDragging = true; + this.draggedImageEl = document.createElement('div'); + this.draggedImageEl.classList.add('multidrag'); + this.draggedImageEl.textContent = `${this.selectedPageElements.length} ${window.translations.dragDropMessage}`; + this.draggedImageEl.style.visibility = 'hidden'; + + this.dragContainer.appendChild(this.draggedImageEl); + } else { + // Single-page drag logic + this.pageDragging = true; + this.draggedEl = div; + const img = div.querySelector('img'); + div.classList.add('drag-manager_dragging'); + div.classList.remove('moved-element', 'remove'); + const imgEl = document.createElement('img'); + imgEl.classList.add('dragged-img'); + imgEl.src = img.src; + imgEl.style.visibility = 'hidden'; + imgEl.style.transform = `rotate(${img.style.rotate === '' ? '0deg' : img.style.rotate}) translate(-50%, -50%)`; + this.draggedImageEl = imgEl; + this.dragContainer.appendChild(imgEl); + } + + // Common setup for both modes + window.addEventListener('mouseup', this.stopDraggingPage); + window.addEventListener('mousemove', this.onDragEl); + this.wrapper.classList.add('drag-manager_dragging-container'); this.wrapper.appendChild(this.endInsertionElement); } onDragEl(mouseEvent) { - const { clientX, clientY } = mouseEvent; + const {clientX, clientY} = mouseEvent; if (this.draggedImageEl) { - this.draggedImageEl.style.visibility = "visible"; + this.draggedImageEl.style.visibility = 'visible'; this.draggedImageEl.style.left = `${clientX}px`; this.draggedImageEl.style.top = `${clientY}px`; } } stopDraggingPage() { - window.removeEventListener("mousemove", this.onDragEl); - this.wrapper.classList.remove("drag-manager_dragging-container"); + window.removeEventListener('mousemove', this.onDragEl); + this.wrapper.classList.remove('drag-manager_dragging-container'); this.wrapper.removeChild(this.endInsertionElement); - window.removeEventListener("mouseup", this.stopDraggingPage); - this.draggedImageEl = undefined; - this.pageDragging = false; - this.draggedEl.classList.remove("drag-manager_dragging"); - this.hoveredEl?.classList.remove("drag-manager_draghover"); - this.dragContainer.childNodes.forEach((dragChild) => { - this.dragContainer.removeChild(dragChild); - }); - if (!this.hoveredEl) { - return; + window.removeEventListener('mouseup', this.stopDraggingPage); + + if (this.draggedImageEl) { + this.dragContainer.removeChild(this.draggedImageEl); + this.draggedImageEl = undefined; + } + + if (window.selectPage) { + // Multi-page drop logic + if ( + !this.hoveredEl || + !this.hoveredEl.classList.contains('page-container') || + this.selectedPageElements.includes(this.hoveredEl) + ) { + this.selectedPageElements.forEach((pageEl) => { + pageEl.style.transform = pageEl.initialTransform || 'translate(0px, 0px)'; + pageEl.classList.remove('drag-manager_dragging'); + }); + } else { + this.selectedPageElements.forEach((pageEl) => { + pageEl.classList.remove('drag-manager_dragging'); + + if (this.hoveredEl === this.endInsertionElement) { + this.movePageTo(pageEl); + } else { + this.movePageTo(pageEl, this.hoveredEl); + } + + // Handle timeout for the current element + this.handleTimeoutForElement(pageEl); + }); + } + this.selectedPageElements = []; + window.resetPages(); + } else { + // Single-page drop logic + if ( + !this.hoveredEl || + !this.hoveredEl.classList.contains('page-container') || + this.hoveredEl === this.draggedEl + ) { + this.draggedEl.style.transform = this.draggedEl.initialTransform || 'translate(0px, 0px)'; + this.draggedEl.classList.remove('drag-manager_dragging'); + return; + } + + this.draggedEl.classList.remove('drag-manager_dragging'); + + if (this.hoveredEl === this.endInsertionElement) { + this.movePageTo(this.draggedEl); + } else { + this.movePageTo(this.draggedEl, this.hoveredEl); + } + + // Handle timeout for the current element + this.handleTimeoutForElement(this.draggedEl); } - if (this.hoveredEl === this.endInsertionElement) { - this.movePageTo(this.draggedEl); - return; + + this.pageDragging = false; + } + + // Helper function to manage independent timeouts + handleTimeoutForElement(element) { + // Clear existing timeout if present + if (this.elementTimeouts.has(element)) { + clearTimeout(this.elementTimeouts.get(element)); } - this.movePageTo(this.draggedEl, this.hoveredEl); + + // Add the moved-element class and set a new timeout + element.classList.remove('remove'); + element.classList.add('moved-element'); + + const timeoutId = setTimeout(() => { + element.classList.add('remove'); + this.elementTimeouts.delete(element); // Cleanup the timeout map + }, 2000); + + // Store the timeout ID for this element + this.elementTimeouts.set(element, timeoutId); } - setActions({ movePageTo }) { + setActions({movePageTo}) { this.movePageTo = movePageTo; } @@ -104,18 +187,18 @@ class DragDropManager { const onMouseEnter = () => { if (this.pageDragging) { this.hoveredEl = div; - div.classList.add("drag-manager_draghover"); + div.classList.add('drag-manager_draghover'); } }; const onMouseLeave = () => { this.hoveredEl = undefined; - div.classList.remove("drag-manager_draghover"); + div.classList.remove('drag-manager_draghover'); }; - div.addEventListener("dragstart", onDragStart); - div.addEventListener("mouseenter", onMouseEnter); - div.addEventListener("mouseleave", onMouseLeave); + div.addEventListener('dragstart', onDragStart); + div.addEventListener('mouseenter', onMouseEnter); + div.addEventListener('mouseleave', onMouseLeave); return div; } diff --git a/src/main/resources/static/js/multitool/PdfActionsManager.js b/src/main/resources/static/js/multitool/PdfActionsManager.js index b4da371839..17386fd793 100644 --- a/src/main/resources/static/js/multitool/PdfActionsManager.js +++ b/src/main/resources/static/js/multitool/PdfActionsManager.js @@ -1,12 +1,20 @@ +import { DeletePageCommand } from "./commands/delete-page.js"; +import { SelectPageCommand } from "./commands/select.js"; +import { SplitFileCommand } from "./commands/split.js"; +import { UndoManager } from "./UndoManager.js"; + class PdfActionsManager { pageDirection; pagesContainer; static selectedPages = []; // Static property shared across all instances + undoManager; - constructor(id) { + constructor(id, undoManager) { this.pagesContainer = document.getElementById(id); this.pageDirection = document.documentElement.getAttribute("dir"); + this.undoManager = undoManager || new UndoManager(); + var styleElement = document.createElement("link"); styleElement.rel = "stylesheet"; styleElement.href = "css/pdfActions.css"; @@ -27,7 +35,8 @@ class PdfActionsManager { const sibling = imgContainer.previousSibling; if (sibling) { - this.movePageTo(imgContainer, sibling, true); + let movePageCommand = this.movePageTo(imgContainer, sibling, true, true); + this._pushUndoClearRedo(movePageCommand); } } @@ -35,7 +44,12 @@ class PdfActionsManager { var imgContainer = this.getPageContainer(e.target); const sibling = imgContainer.nextSibling; if (sibling) { - this.movePageTo(imgContainer, sibling.nextSibling, true); + let movePageCommand = this.movePageTo( + imgContainer, + sibling.nextSibling, + true + ); + this._pushUndoClearRedo(movePageCommand); } } @@ -43,30 +57,27 @@ class PdfActionsManager { var imgContainer = this.getPageContainer(e.target); const img = imgContainer.querySelector("img"); - this.rotateElement(img, -90); + let rotateCommand = this.rotateElement(img, -90); + this._pushUndoClearRedo(rotateCommand); } rotateCWButtonCallback(e) { var imgContainer = this.getPageContainer(e.target); const img = imgContainer.querySelector("img"); - this.rotateElement(img, 90); + let rotateCommand = this.rotateElement(img, 90); + this._pushUndoClearRedo(rotateCommand); } deletePageButtonCallback(e) { - var imgContainer = this.getPageContainer(e.target); - this.pagesContainer.removeChild(imgContainer); - if (this.pagesContainer.childElementCount === 0) { - const filenameInput = document.getElementById("filename-input"); - const filenameParagraph = document.getElementById("filename"); - const downloadBtn = document.getElementById("export-button"); - - filenameInput.disabled = true; - filenameInput.value = ""; - filenameParagraph.innerText = ""; + let imgContainer = this.getPageContainer(e.target); + let deletePageCommand = new DeletePageCommand( + imgContainer, + this.pagesContainer + ); + deletePageCommand.execute(); - downloadBtn.disabled = true; - } + this._pushUndoClearRedo(deletePageCommand); } insertFileButtonCallback(e) { @@ -81,7 +92,15 @@ class PdfActionsManager { splitFileButtonCallback(e) { var imgContainer = this.getPageContainer(e.target); - imgContainer.classList.toggle("split-before"); + + let splitFileCommand = new SplitFileCommand(imgContainer, "split-before"); + splitFileCommand.execute(); + + this._pushUndoClearRedo(splitFileCommand); + } + + _pushUndoClearRedo(command) { + this.undoManager.pushUndoClearRedo(command); } setActions({ movePageTo, addFiles, rotateElement }) { @@ -110,31 +129,32 @@ class PdfActionsManager { const moveUp = document.createElement("button"); moveUp.classList.add("pdf-actions_move-left-button", "btn", "btn-secondary"); - moveUp.innerHTML = `arrow_${leftDirection}_alt`; + moveUp.innerHTML = `arrow_${leftDirection}_alt${window.translations.moveLeft}`; moveUp.onclick = this.moveUpButtonCallback; buttonContainer.appendChild(moveUp); const moveDown = document.createElement("button"); moveDown.classList.add("pdf-actions_move-right-button", "btn", "btn-secondary"); - moveDown.innerHTML = `arrow_${rightDirection}_alt`; + moveDown.innerHTML = `arrow_${rightDirection}_alt${window.translations.moveRight}`; moveDown.onclick = this.moveDownButtonCallback; buttonContainer.appendChild(moveDown); + const rotateCCW = document.createElement("button"); rotateCCW.classList.add("btn", "btn-secondary"); - rotateCCW.innerHTML = `rotate_left`; + rotateCCW.innerHTML = `rotate_left${window.translations.rotateLeft}`; rotateCCW.onclick = this.rotateCCWButtonCallback; buttonContainer.appendChild(rotateCCW); const rotateCW = document.createElement("button"); rotateCW.classList.add("btn", "btn-secondary"); - rotateCW.innerHTML = `rotate_right`; + rotateCW.innerHTML = `rotate_right${window.translations.rotateRight}`; rotateCW.onclick = this.rotateCWButtonCallback; buttonContainer.appendChild(rotateCW); const deletePage = document.createElement("button"); deletePage.classList.add("btn", "btn-danger"); - deletePage.innerHTML = `delete`; + deletePage.innerHTML = `delete${window.translations.delete}`; deletePage.onclick = this.deletePageButtonCallback; buttonContainer.appendChild(deletePage); @@ -158,25 +178,10 @@ class PdfActionsManager { selectCheckbox.onchange = () => { const pageNumber = Array.from(div.parentNode.children).indexOf(div) + 1; - if (selectCheckbox.checked) { - //adds to array of selected pages - window.selectedPages.push(pageNumber); - } else { - //remove page from selected pages array - const index = window.selectedPages.indexOf(pageNumber); - if (index !== -1) { - window.selectedPages.splice(index, 1); - } - } + let selectPageCommand = new SelectPageCommand(pageNumber, selectCheckbox); + selectPageCommand.execute(); - if (window.selectedPages.length > 0 && !window.selectPage) { - window.toggleSelectPageVisibility(); - } - if (window.selectedPages.length == 0 && window.selectPage) { - window.toggleSelectPageVisibility(); - } - - window.updateSelectedPagesDisplay(); + this._pushUndoClearRedo(selectPageCommand); }; const insertFileButtonContainer = document.createElement("div"); @@ -189,19 +194,19 @@ class PdfActionsManager { const insertFileButton = document.createElement("button"); insertFileButton.classList.add("btn", "btn-primary", "pdf-actions_insert-file-button"); - insertFileButton.innerHTML = `add`; + insertFileButton.innerHTML = `add${window.translations.addFile}`; insertFileButton.onclick = this.insertFileButtonCallback; insertFileButtonContainer.appendChild(insertFileButton); const splitFileButton = document.createElement("button"); splitFileButton.classList.add("btn", "btn-primary", "pdf-actions_split-file-button"); - splitFileButton.innerHTML = `cut`; + splitFileButton.innerHTML = `cut${window.translations.split}`; splitFileButton.onclick = this.splitFileButtonCallback; insertFileButtonContainer.appendChild(splitFileButton); const insertFileBlankButton = document.createElement("button"); insertFileBlankButton.classList.add("btn", "btn-primary", "pdf-actions_insert-file-blank-button"); - insertFileBlankButton.innerHTML = `insert_page_break`; + insertFileBlankButton.innerHTML = `insert_page_break${window.translations.insertPageBreak}`; insertFileBlankButton.onclick = this.insertFileBlankButtonCallback; insertFileButtonContainer.appendChild(insertFileBlankButton); diff --git a/src/main/resources/static/js/multitool/PdfContainer.js b/src/main/resources/static/js/multitool/PdfContainer.js index 809e853273..6154820000 100644 --- a/src/main/resources/static/js/multitool/PdfContainer.js +++ b/src/main/resources/static/js/multitool/PdfContainer.js @@ -1,11 +1,21 @@ +import {MovePageUpCommand, MovePageDownCommand} from './commands/move-page.js'; +import {RemoveSelectedCommand} from './commands/remove.js'; +import {RotateAllCommand, RotateElementCommand} from './commands/rotate.js'; +import {SplitAllCommand} from './commands/split.js'; +import {UndoManager} from './UndoManager.js'; +import {PageBreakCommand} from './commands/page-break.js'; +import {AddFilesCommand} from './commands/add-page.js'; +import {DecryptFile} from '../DecryptFiles.js'; + class PdfContainer { fileName; pagesContainer; pagesContainerWrapper; pdfAdapters; downloadLink; + undoManager; - constructor(id, wrapperId, pdfAdapters) { + constructor(id, wrapperId, pdfAdapters, undoManager) { this.pagesContainer = document.getElementById(id); this.pagesContainerWrapper = document.getElementById(wrapperId); this.downloadLink = null; @@ -27,8 +37,13 @@ class PdfContainer { this.updateSelectedPagesDisplay = this.updateSelectedPagesDisplay.bind(this); this.toggleSelectPageVisibility = this.toggleSelectPageVisibility.bind(this); this.updatePagesFromCSV = this.updatePagesFromCSV.bind(this); - this.addFilesBlankAll = this.addFilesBlankAll.bind(this) + this.addFilesBlankAll = this.addFilesBlankAll.bind(this); this.removeAllElements = this.removeAllElements.bind(this); + this.resetPages = this.resetPages.bind(this); + + this.decryptFile = new DecryptFile(); + + this.undoManager = undoManager || new UndoManager(); this.pdfAdapters = pdfAdapters; @@ -53,149 +68,214 @@ class PdfContainer { window.updatePagesFromCSV = this.updatePagesFromCSV; window.updateSelectedPagesDisplay = this.updateSelectedPagesDisplay; window.updatePageNumbersAndCheckboxes = this.updatePageNumbersAndCheckboxes; - window.addFilesBlankAll = this.addFilesBlankAll + window.addFilesBlankAll = this.addFilesBlankAll; window.removeAllElements = this.removeAllElements; + window.resetPages = this.resetPages; + + let undoBtn = document.getElementById('undo-btn'); + let redoBtn = document.getElementById('redo-btn'); + + document.addEventListener('undo-manager-update', (e) => { + let canUndo = e.detail.canUndo; + let canRedo = e.detail.canRedo; + + undoBtn.disabled = !canUndo; + redoBtn.disabled = !canRedo; + }); + + window.undo = () => { + if (undoManager.canUndo()) undoManager.undo(); + else { + undoBtn.disabled = !undoManager.canUndo(); + redoBtn.disabled = !undoManager.canRedo(); + } + }; + + window.redo = () => { + if (undoManager.canRedo()) undoManager.redo(); + else { + undoBtn.disabled = !undoManager.canUndo(); + redoBtn.disabled = !undoManager.canRedo(); + } + }; - const filenameInput = document.getElementById("filename-input"); - const downloadBtn = document.getElementById("export-button"); + const filenameInput = document.getElementById('filename-input'); + const downloadBtn = document.getElementById('export-button'); filenameInput.onkeyup = this.updateFilename; filenameInput.onkeydown = this.preventIllegalChars; filenameInput.disabled = false; - filenameInput.innerText = ""; + filenameInput.innerText = ''; downloadBtn.disabled = true; } - movePageTo(startElement, endElement, scrollTo = false) { - const childArray = Array.from(this.pagesContainer.childNodes); - const startIndex = childArray.indexOf(startElement); - const endIndex = childArray.indexOf(endElement); - - // Check & remove page number elements here too if they exist because Firefox doesn't fire the relevant event on page move. - const pageNumberElement = startElement.querySelector(".page-number"); - if (pageNumberElement) { - startElement.removeChild(pageNumberElement); - } - - this.pagesContainer.removeChild(startElement); - if (!endElement) { - this.pagesContainer.append(startElement); + movePageTo(startElement, endElement, scrollTo = false, moveUp = false) { + let movePageCommand; + if (moveUp) { + movePageCommand = new MovePageUpCommand( + startElement, + endElement, + this.pagesContainer, + this.pagesContainerWrapper, + scrollTo + ); } else { - this.pagesContainer.insertBefore(startElement, endElement); + movePageCommand = new MovePageDownCommand( + startElement, + endElement, + this.pagesContainer, + this.pagesContainerWrapper, + scrollTo + ); } - if (scrollTo) { - const { width } = startElement.getBoundingClientRect(); - const vector = endIndex !== -1 && startIndex > endIndex ? 0 - width : width; - - this.pagesContainerWrapper.scroll({ - left: this.pagesContainerWrapper.scrollLeft + vector, - }); - } + movePageCommand.execute(); + return movePageCommand; } - addFiles(nextSiblingElement, blank = false) { - if (blank) { + async addFiles(element) { + let addFilesCommand = new AddFilesCommand( + element, + window.selectedPages, + this.addFilesAction.bind(this), + this.pagesContainer + ); - this.addFilesBlank(nextSiblingElement); + await addFilesCommand.execute(); - } else { - var input = document.createElement("input"); - input.type = "file"; + this.undoManager.pushUndoClearRedo(addFilesCommand); + } + + async addFilesAction(nextSiblingElement) { + let pages = []; + return new Promise((resolve) => { + var input = document.createElement('input'); + input.type = 'file'; input.multiple = true; - input.setAttribute("accept", "application/pdf,image/*"); + input.setAttribute('accept', 'application/pdf,image/*'); + input.onchange = async (e) => { const files = e.target.files; - - this.addFilesFromFiles(files, nextSiblingElement); - this.updateFilename(files ? files[0].name : ""); - const selectAll = document.getElementById("select-pages-container"); - selectAll.classList.toggle("hidden", false); + if (files.length > 0) { + pages = await this.addFilesFromFiles(files, nextSiblingElement, pages); + this.updateFilename(files[0].name); + const selectAll = document.getElementById('select-pages-container'); + selectAll.classList.toggle('hidden', false); + } + resolve(pages); }; input.click(); + }); + } + + async handleDroppedFiles(files, nextSiblingElement = null) { + if (files.length > 0) { + const pages = await this.addFilesFromFiles(files, nextSiblingElement, []); + this.updateFilename(files[0]?.name || 'untitled'); + + const selectAll = document.getElementById('select-pages-container'); + if (selectAll) { + selectAll.classList.remove('hidden'); + } + + return pages; } } - async addFilesFromFiles(files, nextSiblingElement) { + async addFilesFromFiles(files, nextSiblingElement, pages) { this.fileName = files[0].name; for (var i = 0; i < files.length; i++) { - const file = files[i]; - if (file.type === "application/pdf") { - await this.addPdfFile(file, nextSiblingElement); - } else if (file.type.startsWith("image/")) { - await this.addImageFile(file, nextSiblingElement); + const startTime = Date.now(); + let processingTime, + errorMessage = null, + pageCount = 0; + + try { + let decryptedFile = files[i]; + let isEncrypted = false; + let requiresPassword = false; + await this.decryptFile + .checkFileEncrypted(decryptedFile) + .then((result) => { + isEncrypted = result.isEncrypted; + requiresPassword = result.requiresPassword; + }) + .catch((error) => { + console.error(error); + }); + if (decryptedFile.type === 'application/pdf' && isEncrypted) { + decryptedFile = await this.decryptFile.decryptFile(decryptedFile, requiresPassword); + if (!decryptedFile) { + throw new Error('File decryption failed.'); + } + } + + if (decryptedFile.type === 'application/pdf') { + const {renderer, pdfDocument} = await this.loadFile(decryptedFile); + pageCount = renderer.pageCount || 0; + pages = await this.addPdfFile(renderer, pdfDocument, nextSiblingElement, pages); + } else if (decryptedFile.type.startsWith('image/')) { + pages = await this.addImageFile(decryptedFile, nextSiblingElement, pages); + } + + processingTime = Date.now() - startTime; + this.captureFileProcessingEvent(true, decryptedFile, processingTime, null, pageCount); + } catch (error) { + processingTime = Date.now() - startTime; + errorMessage = error.message || 'Unknown error'; + this.captureFileProcessingEvent(false, files[i], processingTime, errorMessage, pageCount); } } - document.querySelectorAll(".enable-on-file").forEach((element) => { + document.querySelectorAll('.enable-on-file').forEach((element) => { element.disabled = false; }); - } - async addFilesBlank(nextSiblingElement) { - const pdfContent = ` - %PDF-1.4 - 1 0 obj - << /Type /Catalog /Pages 2 0 R >> - endobj - 2 0 obj - << /Type /Pages /Kids [3 0 R] /Count 1 >> - endobj - 3 0 obj - << /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Contents 5 0 R >> - endobj - 5 0 obj - << /Length 44 >> - stream - 0 0 0 595 0 842 re - W - n - endstream - endobj - xref - 0 6 - 0000000000 65535 f - 0000000010 00000 n - 0000000071 00000 n - 0000000121 00000 n - 0000000205 00000 n - 0000000400 00000 n - trailer - << /Size 6 /Root 1 0 R >> - startxref - 278 - %%EOF - `; - const blob = new Blob([pdfContent], { type: 'application/pdf' }); - const url = URL.createObjectURL(blob); - const file = new File([blob], "blank_page.pdf", { type: "application/pdf" }); - await this.addPdfFile(file, nextSiblingElement); + return pages; } + captureFileProcessingEvent(success, file, processingTime, errorMessage, pageCount) { + try { + if (analyticsEnabled) { + posthog.capture('file_processing', { + success, + file_type: file?.type || 'unknown', + file_size: file?.size || 0, + processing_time: processingTime, + error_message: errorMessage, + pdf_pages: pageCount, + }); + } + } catch {} + } - rotateElement(element, deg) { - var lastTransform = element.style.rotate; - if (!lastTransform) { - lastTransform = "0"; - } - const lastAngle = parseInt(lastTransform.replace(/[^\d-]/g, "")); - const newAngle = lastAngle + deg; + async addFilesBlank(nextSiblingElement, pages) { + let doc = await PDFLib.PDFDocument.create(); + let docBytes = await doc.save(); - element.style.rotate = newAngle + "deg"; + const url = URL.createObjectURL(new Blob([docBytes], {type: 'application/pdf'})); + const renderer = await this.toRenderer(url); + pages = await this.addPdfFile(renderer, doc, nextSiblingElement, pages); + return pages; } - async addPdfFile(file, nextSiblingElement) { - const { renderer, pdfDocument } = await this.loadFile(file); + rotateElement(element, deg) { + let rotateCommand = new RotateElementCommand(element, deg); + rotateCommand.execute(); + + return rotateCommand; + } + async addPdfFile(renderer, pdfDocument, nextSiblingElement, pages) { for (var i = 0; i < renderer.pageCount; i++) { - const div = document.createElement("div"); - - div.classList.add("page-container"); + const div = document.createElement('div'); - var img = document.createElement("img"); - img.classList.add("page-image"); + div.classList.add('page-container'); + div.id = 'page-container-' + (i + 1); + var img = document.createElement('img'); + img.classList.add('page-image'); const imageSrc = await renderer.renderPage(i); img.src = imageSrc; img.pageIdx = i; @@ -206,20 +286,25 @@ class PdfContainer { this.pdfAdapters.forEach((adapter) => { adapter.adapt?.(div); }); + if (nextSiblingElement) { this.pagesContainer.insertBefore(div, nextSiblingElement); } else { this.pagesContainer.appendChild(div); } + + pages.push(div); } + + return pages; } - async addImageFile(file, nextSiblingElement) { - const div = document.createElement("div"); - div.classList.add("page-container"); + async addImageFile(file, nextSiblingElement, pages) { + const div = document.createElement('div'); + div.classList.add('page-container'); - var img = document.createElement("img"); - img.classList.add("page-image"); + var img = document.createElement('img'); + img.classList.add('page-image'); img.src = URL.createObjectURL(file); div.appendChild(img); @@ -231,17 +316,19 @@ class PdfContainer { } else { this.pagesContainer.appendChild(div); } + pages.push(div); + return pages; } async loadFile(file) { var objectUrl = URL.createObjectURL(file); var pdfDocument = await this.toPdfLib(objectUrl); var renderer = await this.toRenderer(objectUrl); - return { renderer, pdfDocument }; + return {renderer, pdfDocument}; } async toRenderer(objectUrl) { - pdfjsLib.GlobalWorkerOptions.workerSrc = "./pdfjs-legacy/pdf.worker.mjs"; + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; const pdf = await pdfjsLib.getDocument(objectUrl).promise; return { document: pdf, @@ -249,7 +336,7 @@ class PdfContainer { renderPage: async function (pageIdx) { const page = await this.document.getPage(pageIdx + 1); - const canvas = document.createElement("canvas"); + const canvas = document.createElement('canvas'); // set the canvas size to the size of the page if (page.rotate == 90 || page.rotate == 270) { @@ -262,8 +349,8 @@ class PdfContainer { // render the page onto the canvas var renderContext = { - canvasContext: canvas.getContext("2d"), - viewport: page.getViewport({ scale: 1 }), + canvasContext: canvas.getContext('2d'), + viewport: page.getViewport({scale: 1}), }; await page.render(renderContext).promise; @@ -281,6 +368,7 @@ class PdfContainer { } rotateAll(deg) { + let elementsToRotate = []; for (let i = 0; i < this.pagesContainer.childNodes.length; i++) { const child = this.pagesContainer.children[i]; if (!child) continue; @@ -289,70 +377,53 @@ class PdfContainer { //if in page select mode is active rotate only selected pages if (window.selectPage && !window.selectedPages.includes(pageIndex)) continue; - const img = child.querySelector("img"); + const img = child.querySelector('img'); if (!img) continue; - this.rotateElement(img, deg); + elementsToRotate.push(img); } + + let rotateAllCommand = new RotateAllCommand(elementsToRotate, deg); + rotateAllCommand.execute(); + + this.undoManager.pushUndoClearRedo(rotateAllCommand); } - removeAllElements(){ - let pageContainerNodeList = document.querySelectorAll(".page-container"); + removeAllElements() { + let pageContainerNodeList = document.querySelectorAll('.page-container'); for (var i = 0; i < pageContainerNodeList.length; i++) { pageContainerNodeList[i].remove(); } - document.querySelectorAll(".enable-on-file").forEach((element) => { + document.querySelectorAll('.enable-on-file').forEach((element) => { element.disabled = true; }); } deleteSelected() { window.selectedPages.sort((a, b) => a - b); - let deletions = 0; - - window.selectedPages.forEach((pageIndex) => { - const adjustedIndex = pageIndex - 1 - deletions; - const child = this.pagesContainer.children[adjustedIndex]; - if (child) { - this.pagesContainer.removeChild(child); - deletions++; - } - }); - - if (this.pagesContainer.childElementCount === 0) { - const filenameInput = document.getElementById("filename-input"); - const filenameParagraph = document.getElementById("filename"); - const downloadBtn = document.getElementById("export-button"); - - if (filenameInput) - filenameInput.disabled = true; - filenameInput.value = ""; - if (filenameParagraph) - filenameParagraph.innerText = ""; - - downloadBtn.disabled = true; - } - - window.selectedPages = []; - this.updatePageNumbersAndCheckboxes(); - document.dispatchEvent(new Event("selectedPagesUpdated")); + let removeSelectedCommand = new RemoveSelectedCommand( + this.pagesContainer, + window.selectedPages, + this.updatePageNumbersAndCheckboxes + ); + removeSelectedCommand.execute(); + this.undoManager.pushUndoClearRedo(removeSelectedCommand); } toggleSelectAll() { - const checkboxes = document.querySelectorAll(".pdf-actions_checkbox"); + const checkboxes = document.querySelectorAll('.pdf-actions_checkbox'); window.selectAll = !window.selectAll; - const selectIcon = document.getElementById("select-icon"); - const deselectIcon = document.getElementById("deselect-icon"); + const selectIcon = document.getElementById('select-All-Container'); + const deselectIcon = document.getElementById('deselect-All-Container'); - if (selectIcon.style.display === "none") { - selectIcon.style.display = "inline"; - deselectIcon.style.display = "none"; + if (selectIcon.style.display === 'none') { + selectIcon.style.display = 'inline'; + deselectIcon.style.display = 'none'; } else { - selectIcon.style.display = "none"; - deselectIcon.style.display = "inline"; + selectIcon.style.display = 'none'; + deselectIcon.style.display = 'inline'; } checkboxes.forEach((checkbox) => { - checkbox.checked = window.selectAll; const pageNumber = Array.from(checkbox.parentNode.parentNode.children).indexOf(checkbox.parentNode) + 1; @@ -375,18 +446,20 @@ class PdfContainer { parseCSVInput(csvInput, maxPageIndex) { const pages = new Set(); - csvInput.split(",").forEach((item) => { - const range = item.split("-").map((p) => parseInt(p.trim())); + csvInput.split(',').forEach((item) => { + const range = item.split('-').map((p) => parseInt(p.trim())); if (range.length === 2) { const [start, end] = range; for (let i = start; i <= end && i <= maxPageIndex; i++) { - if (i > 0) { // Ensure the page number is greater than 0 + if (i > 0) { + // Ensure the page number is greater than 0 pages.add(i); } } } else if (range.length === 1 && Number.isInteger(range[0])) { const page = range[0]; - if (page > 0 && page <= maxPageIndex) { // Ensure page is within valid range + if (page > 0 && page <= maxPageIndex) { + // Ensure page is within valid range pages.add(page); } } @@ -396,24 +469,24 @@ class PdfContainer { } updatePagesFromCSV() { - const csvInput = document.getElementById("csv-input").value; + const csvInput = document.getElementById('csv-input').value; - const allPages = this.pagesContainer.querySelectorAll(".page-container"); + const allPages = this.pagesContainer.querySelectorAll('.page-container'); const maxPageIndex = allPages.length; window.selectedPages = this.parseCSVInput(csvInput, maxPageIndex); this.updateSelectedPagesDisplay(); - const allCheckboxes = document.querySelectorAll(".pdf-actions_checkbox"); + const allCheckboxes = document.querySelectorAll('.pdf-actions_checkbox'); allCheckboxes.forEach((checkbox) => { - const page = parseInt(checkbox.getAttribute("data-page-number")); + const page = parseInt(checkbox.getAttribute('data-page-number')); checkbox.checked = window.selectedPages.includes(page); }); } formatSelectedPages(pages) { - if (pages.length === 0) return ""; + if (pages.length === 0) return ''; pages.sort((a, b) => a - b); // Sort the page numbers in ascending order const ranges = []; @@ -434,27 +507,27 @@ class PdfContainer { // Add the last range ranges.push(start === end ? `${start}` : `${start}-${end}`); - return ranges.join(", "); + return ranges.join(', '); } updateSelectedPagesDisplay() { - const selectedPagesList = document.getElementById("selected-pages-list"); - const selectedPagesInput = document.getElementById("csv-input"); - selectedPagesList.innerHTML = ""; // Clear the list - + const selectedPagesList = document.getElementById('selected-pages-list'); + const selectedPagesInput = document.getElementById('csv-input'); + selectedPagesList.innerHTML = ''; // Clear the list + window.selectedPages.sort((a, b) => a - b); window.selectedPages.forEach((page) => { - const pageItem = document.createElement("div"); - pageItem.className = "page-item"; + const pageItem = document.createElement('div'); + pageItem.className = 'page-item'; - const pageNumber = document.createElement("span"); + const pageNumber = document.createElement('span'); const pagelabel = /*[[#{multiTool.page}]]*/ 'Page'; - pageNumber.className = "selected-page-number"; + pageNumber.className = 'selected-page-number'; pageNumber.innerText = `${pagelabel} ${page}`; pageItem.appendChild(pageNumber); - const removeBtn = document.createElement("span"); - removeBtn.className = "remove-btn"; - removeBtn.innerHTML = "✕"; + const removeBtn = document.createElement('span'); + removeBtn.className = 'remove-btn'; + removeBtn.innerHTML = '✕'; // Remove page from selected pages list and update display and checkbox removeBtn.onclick = () => { @@ -478,7 +551,7 @@ class PdfContainer { parsePageRanges(ranges) { const pages = new Set(); - ranges.split(',').forEach(range => { + ranges.split(',').forEach((range) => { const [start, end] = range.split('-').map(Number); if (end) { for (let i = start; i <= end; i++) { @@ -492,50 +565,35 @@ class PdfContainer { return Array.from(pages).sort((a, b) => a - b); } - addFilesBlankAll() { - const allPages = this.pagesContainer.querySelectorAll(".page-container"); - allPages.forEach((page, index) => { - if (index !== 0) { - this.addFiles(page, true) - } - }); - } - - splitAll() { - const allPages = this.pagesContainer.querySelectorAll(".page-container"); + async addFilesBlankAll() { + const allPages = this.pagesContainer.querySelectorAll('.page-container'); - if (!window.selectPage) { - const hasSplit = this.pagesContainer.querySelectorAll(".split-before").length > 0; - if (hasSplit) { - allPages.forEach(page => { - page.classList.remove("split-before"); - }); - } else { - allPages.forEach(page => { - page.classList.add("split-before"); - }); - } - return; - } + let pageBreakCommand = new PageBreakCommand( + allPages, + window.selectPage, + window.selectedPages, + this.addFilesBlank.bind(this), + this.pagesContainer + ); - allPages.forEach((page, index) => { - const pageIndex = index; - if (window.selectPage && !window.selectedPages.includes(pageIndex)) return; + await pageBreakCommand.execute(); - if (page.classList.contains("split-before")) { - page.classList.remove("split-before"); - } else { - page.classList.add("split-before"); - } - }); + this.undoManager.pushUndoClearRedo(pageBreakCommand); } + splitAll() { + const allPages = this.pagesContainer.querySelectorAll('.page-container'); + let splitAllCommand = new SplitAllCommand(allPages, window.selectPage, window.selectedPages, 'split-before'); + splitAllCommand.execute(); + + this.undoManager.pushUndoClearRedo(splitAllCommand); + } async splitPDF(baseDocBytes, splitters) { const baseDocument = await PDFLib.PDFDocument.load(baseDocBytes); const pageNum = baseDocument.getPages().length; - splitters.sort((a, b) => a - b);; // We'll sort the separator indexes just in case querySelectorAll does something funny. + splitters.sort((a, b) => a - b); // We'll sort the separator indexes just in case querySelectorAll does something funny. splitters.push(pageNum); // We'll also add a faux separator at the end in order to get the pages after the last separator. const splitDocuments = []; @@ -546,18 +604,18 @@ class PdfContainer { let firstPage = splitterIndex === 0 ? 0 : splitters[splitterIndex - 1]; - const pageIndices = Array.from({ length: splitterPosition - firstPage }, (value, key) => firstPage + key); + const pageIndices = Array.from({length: splitterPosition - firstPage}, (value, key) => firstPage + key); const copiedPages = await subDocument.copyPages(baseDocument, pageIndices); - copiedPages.forEach(copiedPage => { + copiedPages.forEach((copiedPage) => { subDocument.addPage(copiedPage); }); const subDocumentBytes = await subDocument.save(); splitDocuments.push(subDocumentBytes); - }; + } return splitDocuments; } @@ -566,8 +624,10 @@ class PdfContainer { const zip = new JSZip(); for (let i = 0; i < pdfBytesArray.length; i++) { - const documentBlob = new Blob([pdfBytesArray[i]], { type: "application/pdf" }); - zip.file(baseNameString + "-" + (i + 1) + ".pdf", documentBlob); + const documentBlob = new Blob([pdfBytesArray[i]], { + type: 'application/pdf', + }); + zip.file(baseNameString + '-' + (i + 1) + '.pdf', documentBlob); } return zip; @@ -575,10 +635,10 @@ class PdfContainer { async exportPdf(selected) { const pdfDoc = await PDFLib.PDFDocument.create(); - const pageContainers = this.pagesContainer.querySelectorAll(".page-container"); // Select all .page-container elements + const pageContainers = this.pagesContainer.querySelectorAll('.page-container'); // Select all .page-container elements for (var i = 0; i < pageContainers.length; i++) { if (!selected || window.selectedPages.includes(i + 1)) { - const img = pageContainers[i].querySelector("img"); // Find the img element within each .page-container + const img = pageContainers[i].querySelector('img'); // Find the img element within each .page-container if (!img) continue; let page; if (img.doc) { @@ -618,7 +678,7 @@ class PdfContainer { } const rotation = img.style.rotate; if (rotation) { - const rotationAngle = parseInt(rotation.replace(/[^\d-]/g, "")); + const rotationAngle = parseInt(rotation.replace(/[^\d-]/g, '')); page.setRotation(PDFLib.degrees(page.getRotation().angle + rotationAngle)); } } @@ -627,11 +687,11 @@ class PdfContainer { pdfDoc.setProducer(stirlingPDFLabel); const pdfBytes = await pdfDoc.save(); - const pdfBlob = new Blob([pdfBytes], { type: "application/pdf" }); + const pdfBlob = new Blob([pdfBytes], {type: 'application/pdf'}); - const filenameInput = document.getElementById("filename-input"); + const filenameInput = document.getElementById('filename-input'); - let inputArr = filenameInput.value.split("."); + let inputArr = filenameInput.value.split('.'); if (inputArr !== null && inputArr !== undefined && inputArr.length > 0) { inputArr = inputArr.filter((n) => n); // remove all empty strings, nulls or undefined @@ -640,17 +700,18 @@ class PdfContainer { inputArr.pop(); // remove right part after last dot } - filenameInput.value = inputArr.join(""); + filenameInput.value = inputArr.join(''); this.fileName = filenameInput.value; } - const separators = this.pagesContainer.querySelectorAll(".split-before"); - if (separators.length !== 0) { // Split the pdf if there are separators. - const baseName = this.fileName ? this.fileName : "managed"; + const separators = this.pagesContainer.querySelectorAll('.split-before'); + if (separators.length !== 0) { + // Split the pdf if there are separators. + const baseName = this.fileName ? this.fileName : 'managed'; const pagesArray = Array.from(this.pagesContainer.children); const splitters = []; - separators.forEach(page => { + separators.forEach((page) => { const pageIndex = pagesArray.indexOf(page); if (pageIndex !== 0) { splitters.push(pageIndex); @@ -661,55 +722,80 @@ class PdfContainer { const archivedDocuments = await this.nameAndArchiveFiles(splitDocuments, baseName); const self = this; - archivedDocuments.generateAsync({ type: "base64" }).then(function (base64) { - const url = "data:application/zip;base64," + base64; - self.downloadLink = document.createElement("a"); + archivedDocuments.generateAsync({type: 'base64'}).then(function (base64) { + const url = 'data:application/zip;base64,' + base64; + self.downloadLink = document.createElement('a'); self.downloadLink.href = url; - self.downloadLink.setAttribute("download", baseName + ".zip"); - self.downloadLink.setAttribute("target", "_blank"); + self.downloadLink.setAttribute('download', baseName + '.zip'); + self.downloadLink.setAttribute('target', '_blank'); self.downloadLink.click(); }); - - } else { // Continue normally if there are no separators + } else { + // Continue normally if there are no separators const url = URL.createObjectURL(pdfBlob); - const downloadOption = localStorage.getItem("downloadOption"); + const downloadOption = localStorage.getItem('downloadOption'); - if (!filenameInput.value.includes(".pdf")) { - filenameInput.value = filenameInput.value + ".pdf"; + if (!filenameInput.value.includes('.pdf')) { + filenameInput.value = filenameInput.value + '.pdf'; this.fileName = filenameInput.value; } - if (downloadOption === "sameWindow") { + if (downloadOption === 'sameWindow') { // Open the file in the same window window.location.href = url; - } else if (downloadOption === "newWindow") { + } else if (downloadOption === 'newWindow') { // Open the file in a new window - window.open(url, "_blank"); + window.open(url, '_blank'); } else { // Download the file - this.downloadLink = document.createElement("a"); - this.downloadLink.id = "download-link"; + this.downloadLink = document.createElement('a'); + this.downloadLink.id = 'download-link'; this.downloadLink.href = url; // downloadLink.download = this.fileName ? this.fileName : 'managed.pdf'; // downloadLink.download = this.fileName; - this.downloadLink.setAttribute("download", this.fileName ? this.fileName : "managed.pdf"); - this.downloadLink.setAttribute("target", "_blank"); + this.downloadLink.setAttribute('download', this.fileName ? this.fileName : 'managed.pdf'); + this.downloadLink.setAttribute('target', '_blank'); this.downloadLink.onclick = this.setDownloadAttribute; this.downloadLink.click(); } } } + resetPages() { + const pageContainers = this.pagesContainer.querySelectorAll('.page-container'); + + pageContainers.forEach((container, index) => { + container.id = 'page-container-' + (index + 1); + }); + + const checkboxes = document.querySelectorAll('.pdf-actions_checkbox'); + window.selectAll = false; + const selectIcon = document.getElementById('select-All-Container'); + const deselectIcon = document.getElementById('deselect-All-Container'); + + selectIcon.style.display = 'inline'; + deselectIcon.style.display = 'none'; + + checkboxes.forEach((checkbox) => { + const pageNumber = Array.from(checkbox.parentNode.parentNode.children).indexOf(checkbox.parentNode) + 1; + + const index = window.selectedPages.indexOf(pageNumber); + if (index !== -1) { + window.selectedPages.splice(index, 1); + } + }); + window.toggleSelectPageVisibility(); + } setDownloadAttribute() { - this.downloadLink.setAttribute("download", this.fileName ? this.fileName : "managed.pdf"); + this.downloadLink.setAttribute('download', this.fileName ? this.fileName : 'managed.pdf'); } - updateFilename(fileName = "") { - const filenameInput = document.getElementById("filename-input"); - const pagesContainer = document.getElementById("pages-container"); - const downloadBtn = document.getElementById("export-button"); + updateFilename(fileName = '') { + const filenameInput = document.getElementById('filename-input'); + const pagesContainer = document.getElementById('pages-container'); + const downloadBtn = document.getElementById('export-button'); downloadBtn.disabled = pagesContainer.childElementCount === 0; @@ -733,38 +819,36 @@ class PdfContainer { // } } - toggleSelectPageVisibility() { window.selectPage = !window.selectPage; - const checkboxes = document.querySelectorAll(".pdf-actions_checkbox"); - checkboxes.forEach(checkbox => { - checkbox.classList.toggle("hidden", !window.selectPage); + const checkboxes = document.querySelectorAll('.pdf-actions_checkbox'); + checkboxes.forEach((checkbox) => { + checkbox.classList.toggle('hidden', !window.selectPage); }); - const deleteButton = document.getElementById("delete-button"); - deleteButton.classList.toggle("hidden", !window.selectPage); - const selectedPages = document.getElementById("selected-pages-display"); - selectedPages.classList.toggle("hidden", !window.selectPage); - const selectAll = document.getElementById("select-All-Container"); - selectedPages.classList.toggle("hidden", !window.selectPage); - const exportSelected = document.getElementById("export-selected-button"); - exportSelected.classList.toggle("hidden", !window.selectPage); - const selectPagesButton = document.getElementById("select-pages-button"); - selectPagesButton.style.opacity = window.selectPage ? "1" : "0.5"; + const deleteButton = document.getElementById('delete-button'); + deleteButton.classList.toggle('hidden', !window.selectPage); + const selectedPages = document.getElementById('selected-pages-display'); + selectedPages.classList.toggle('hidden', !window.selectPage); + const selectAll = document.getElementById('select-All-Container'); + selectAll.classList.toggle('hidden', !window.selectPage); + const exportSelected = document.getElementById('export-selected-button'); + exportSelected.classList.toggle('hidden', !window.selectPage); + const selectPagesButton = document.getElementById('select-pages-button'); + selectPagesButton.style.opacity = window.selectPage ? '1' : '0.5'; if (window.selectPage) { this.updatePageNumbersAndCheckboxes(); } } - updatePageNumbersAndCheckboxes() { - const pageDivs = document.querySelectorAll(".pdf-actions_container"); + const pageDivs = document.querySelectorAll('.pdf-actions_container'); pageDivs.forEach((div, index) => { const pageNumber = index + 1; - const checkbox = div.querySelector(".pdf-actions_checkbox"); + const checkbox = div.querySelector('.pdf-actions_checkbox'); checkbox.id = `selectPageCheckbox-${pageNumber}`; - checkbox.setAttribute("data-page-number", pageNumber); + checkbox.setAttribute('data-page-number', pageNumber); checkbox.checked = window.selectedPages.includes(pageNumber); }); } @@ -782,8 +866,10 @@ function detectImageType(uint8Array) { } // Check for TIFF signature (little-endian and big-endian) - if ((uint8Array[0] === 73 && uint8Array[1] === 73 && uint8Array[2] === 42 && uint8Array[3] === 0) || - (uint8Array[0] === 77 && uint8Array[1] === 77 && uint8Array[2] === 0 && uint8Array[3] === 42)) { + if ( + (uint8Array[0] === 73 && uint8Array[1] === 73 && uint8Array[2] === 42 && uint8Array[3] === 0) || + (uint8Array[0] === 77 && uint8Array[1] === 77 && uint8Array[2] === 0 && uint8Array[3] === 42) + ) { return 'TIFF'; } @@ -795,6 +881,4 @@ function detectImageType(uint8Array) { return 'UNKNOWN'; } - - export default PdfContainer; diff --git a/src/main/resources/static/js/multitool/UndoManager.js b/src/main/resources/static/js/multitool/UndoManager.js new file mode 100644 index 0000000000..39202f3f65 --- /dev/null +++ b/src/main/resources/static/js/multitool/UndoManager.js @@ -0,0 +1,65 @@ +export class UndoManager { + _undoStack; + _redoStack; + + constructor() { + this._undoStack = []; + this._redoStack = []; + } + + pushUndo(command) { + this._undoStack.push(command); + this._dispatchStateChange(); + } + + pushRedo(command) { + this._redoStack.push(command); + this._dispatchStateChange(); + } + + pushUndoClearRedo(command) { + this._undoStack.push(command); + this._redoStack = []; + this._dispatchStateChange(); + } + + undo() { + if (!this.canUndo()) return; + + let cmd = this._undoStack.pop(); + cmd.undo(); + + this._redoStack.push(cmd); + this._dispatchStateChange(); + } + + canUndo() { + return this._undoStack && this._undoStack.length > 0; + } + + redo() { + if (!this.canRedo()) return; + + let cmd = this._redoStack.pop(); + cmd.redo(); + + this._undoStack.push(cmd); + this._dispatchStateChange(); + } + + canRedo() { + return this._redoStack && this._redoStack.length > 0; + } + + _dispatchStateChange() { + document.dispatchEvent( + new CustomEvent("undo-manager-update", { + bubbles: true, + detail: { + canUndo: this.canUndo(), + canRedo: this.canRedo(), + }, + }) + ); + } +} diff --git a/src/main/resources/static/js/multitool/commands/add-page.js b/src/main/resources/static/js/multitool/commands/add-page.js new file mode 100644 index 0000000000..cd67eba3ad --- /dev/null +++ b/src/main/resources/static/js/multitool/commands/add-page.js @@ -0,0 +1,53 @@ +import {Command} from './command.js'; + +export class AddFilesCommand extends Command { + constructor(element, selectedPages, addFilesAction, pagesContainer) { + super(); + this.element = element; + this.selectedPages = selectedPages; + this.addFilesAction = addFilesAction; + this.pagesContainer = pagesContainer; + this.addedElements = []; + } + + async execute() { + const undoBtn = document.getElementById('undo-btn'); + undoBtn.disabled = true; + if (this.element) { + const newElement = await this.addFilesAction(this.element); + if (newElement) { + this.addedElements = newElement; + } + } else { + const newElement = await this.addFilesAction(false); + if (newElement) { + this.addedElements = newElement; + } + } + undoBtn.disabled = false; + } + + undo() { + this.addedElements.forEach((element) => { + const nextSibling = element.nextSibling; + this.pagesContainer.removeChild(element); + + if (this.pagesContainer.childElementCount === 0) { + const filenameInput = document.getElementById('filename-input'); + const filenameParagraph = document.getElementById('filename'); + const downloadBtn = document.getElementById('export-button'); + + filenameInput.disabled = true; + filenameInput.value = ''; + filenameParagraph.innerText = ''; + downloadBtn.disabled = true; + } + + element._nextSibling = nextSibling; + }); + this.addedElements = []; + } + redo() { + this.execute(); + } +} diff --git a/src/main/resources/static/js/multitool/commands/command.js b/src/main/resources/static/js/multitool/commands/command.js new file mode 100644 index 0000000000..a4ae5fdf0d --- /dev/null +++ b/src/main/resources/static/js/multitool/commands/command.js @@ -0,0 +1,5 @@ +export class Command { + execute() {} + undo() {} + redo() {} +} diff --git a/src/main/resources/static/js/multitool/commands/delete-page.js b/src/main/resources/static/js/multitool/commands/delete-page.js new file mode 100644 index 0000000000..89fbe8a249 --- /dev/null +++ b/src/main/resources/static/js/multitool/commands/delete-page.js @@ -0,0 +1,76 @@ +import { Command } from "./command.js"; + +export class DeletePageCommand extends Command { + constructor(element, pagesContainer) { + super(); + + this.element = element; + this.pagesContainer = pagesContainer; + + this.filenameInputValue = document.getElementById("filename-input").value; + + const filenameParagraph = document.getElementById("filename"); + this.filenameParagraphText = filenameParagraph + ? filenameParagraph.innerText + : ""; + } + + execute() { + this.nextSibling = this.element.nextSibling; + + this.pagesContainer.removeChild(this.element); + if (this.pagesContainer.childElementCount === 0) { + const filenameInput = document.getElementById("filename-input"); + const filenameParagraph = document.getElementById("filename"); + const downloadBtn = document.getElementById("export-button"); + + filenameInput.disabled = true; + filenameInput.value = ""; + filenameParagraph.innerText = ""; + + downloadBtn.disabled = true; + } + } + + undo() { + let node = this.nextSibling; + if (node) this.pagesContainer.insertBefore(this.element, node); + else this.pagesContainer.appendChild(this.element); + + const pageNumberElement = this.element.querySelector(".page-number"); + if (pageNumberElement) { + this.element.removeChild(pageNumberElement); + } + + const filenameInput = document.getElementById("filename-input"); + const filenameParagraph = document.getElementById("filename"); + const downloadBtn = document.getElementById("export-button"); + + filenameInput.disabled = false; + filenameInput.value = this.filenameInputValue; + if (this.filenameParagraph) + filenameParagraph.innerText = this.filenameParagraphText; + + downloadBtn.disabled = false; + } + + redo() { + const pageNumberElement = this.element.querySelector(".page-number"); + if (pageNumberElement) { + this.element.removeChild(pageNumberElement); + } + + this.pagesContainer.removeChild(this.element); + if (this.pagesContainer.childElementCount === 0) { + const filenameInput = document.getElementById("filename-input"); + const filenameParagraph = document.getElementById("filename"); + const downloadBtn = document.getElementById("export-button"); + + filenameInput.disabled = true; + filenameInput.value = ""; + filenameParagraph.innerText = ""; + + downloadBtn.disabled = true; + } + } +} diff --git a/src/main/resources/static/js/multitool/commands/move-page.js b/src/main/resources/static/js/multitool/commands/move-page.js new file mode 100644 index 0000000000..738af95029 --- /dev/null +++ b/src/main/resources/static/js/multitool/commands/move-page.js @@ -0,0 +1,105 @@ +import {Command} from './command.js'; + +export class AbstractMovePageCommand extends Command { + constructor(startElement, endElement, pagesContainer, pagesContainerWrapper, scrollTo = false) { + super(); + + this.pagesContainer = pagesContainer; + const childArray = Array.from(this.pagesContainer.childNodes); + + this.startIndex = childArray.indexOf(startElement); + this.endIndex = childArray.indexOf(endElement); + + this.startElement = startElement; + this.endElement = endElement; + + this.scrollTo = scrollTo; + this.pagesContainerWrapper = pagesContainerWrapper; + } + + execute() { + // Check & remove page number elements here too if they exist because Firefox doesn't fire the relevant event on page move. + const pageNumberElement = this.startElement.querySelector('.page-number'); + if (pageNumberElement) { + this.startElement.removeChild(pageNumberElement); + } + + this.pagesContainer.removeChild(this.startElement); + if (!this.endElement) { + this.pagesContainer.append(this.startElement); + } else { + this.pagesContainer.insertBefore(this.startElement, this.endElement); + } + + if (this.scrollTo) { + const {width} = this.startElement.getBoundingClientRect(); + const vector = this.endIndex !== -1 && this.startIndex > this.endIndex ? 0 - width : width; + + this.pagesContainerWrapper.scroll({ + left: this.pagesContainerWrapper.scrollLeft + vector, + }); + } + } + + undo() { + // Requires overriding in child classes + } + + redo() { + this.execute(); + } +} + +export class MovePageUpCommand extends AbstractMovePageCommand { + constructor(startElement, endElement, pagesContainer, pagesContainerWrapper, scrollTo = false) { + super(startElement, endElement, pagesContainer, pagesContainerWrapper, scrollTo); + } + + undo() { + if (this.endElement) { + this.pagesContainer.removeChild(this.endElement); + this.startElement.insertAdjacentElement('beforebegin', this.endElement); + } + + if (this.scrollTo) { + const {width} = this.startElement.getBoundingClientRect(); + const vector = this.endIndex === -1 || this.startIndex <= this.endIndex ? 0 - width : width; + + this.pagesContainerWrapper.scroll({ + left: this.pagesContainerWrapper.scrollLeft - vector, + }); + } + } + + redo() { + this.execute(); + } +} + +export class MovePageDownCommand extends AbstractMovePageCommand { + constructor(startElement, endElement, pagesContainer, pagesContainerWrapper, scrollTo = false) { + super(startElement, endElement, pagesContainer, pagesContainerWrapper, scrollTo); + } + + undo() { + let previousElement = this.startElement.previousSibling; + + if (this.startElement) { + this.pagesContainer.removeChild(this.startElement); + previousElement.insertAdjacentElement('beforebegin', this.startElement); + } + + if (this.scrollTo) { + const {width} = this.startElement.getBoundingClientRect(); + const vector = this.endIndex === -1 || this.startIndex <= this.endIndex ? 0 - width : width; + + this.pagesContainerWrapper.scroll({ + left: this.pagesContainerWrapper.scrollLeft - vector, + }); + } + } + + redo() { + this.execute(); + } +} diff --git a/src/main/resources/static/js/multitool/commands/page-break.js b/src/main/resources/static/js/multitool/commands/page-break.js new file mode 100644 index 0000000000..2321a5e0b8 --- /dev/null +++ b/src/main/resources/static/js/multitool/commands/page-break.js @@ -0,0 +1,59 @@ +import {Command} from './command.js'; + +export class PageBreakCommand extends Command { + constructor(elements, isSelectedInWindow, selectedPages, pageBreakCallback, pagesContainer) { + super(); + this.elements = elements; + this.isSelectedInWindow = isSelectedInWindow; + this.selectedPages = selectedPages; + this.pageBreakCallback = pageBreakCallback; + this.pagesContainer = pagesContainer; + this.addedElements = []; + this.originalStates = Array.from(elements, (element) => ({ + element, + hasContent: element.innerHTML.trim() !== '', + })); + } + + async execute() { + const undoBtn = document.getElementById('undo-btn'); + undoBtn.disabled = true; + for (const [index, element] of this.elements.entries()) { + if (!this.isSelectedInWindow || this.selectedPages.includes(index)) { + if (index !== 0) { + const newElement = await this.pageBreakCallback(element, this.addedElements); + + if (newElement) { + this.addedElements = newElement; + } + } + } + } + undoBtn.disabled = false; + } + + undo() { + this.addedElements.forEach((element) => { + const nextSibling = element.nextSibling; + + this.pagesContainer.removeChild(element); + + if (this.pagesContainer.childElementCount === 0) { + const filenameInput = document.getElementById('filename-input'); + const filenameParagraph = document.getElementById('filename'); + const downloadBtn = document.getElementById('export-button'); + + filenameInput.disabled = true; + filenameInput.value = ''; + filenameParagraph.innerText = ''; + downloadBtn.disabled = true; + } + + element._nextSibling = nextSibling; + }); + } + + redo() { + this.execute(); + } +} diff --git a/src/main/resources/static/js/multitool/commands/remove.js b/src/main/resources/static/js/multitool/commands/remove.js new file mode 100644 index 0000000000..0c2dc14e1a --- /dev/null +++ b/src/main/resources/static/js/multitool/commands/remove.js @@ -0,0 +1,101 @@ +import { Command } from "./command.js"; + +export class RemoveSelectedCommand extends Command { + constructor(pagesContainer, selectedPages, updatePageNumbersAndCheckboxes) { + super(); + this.pagesContainer = pagesContainer; + this.selectedPages = selectedPages; + + this.deletedChildren = []; + + if (updatePageNumbersAndCheckboxes) { + this.updatePageNumbersAndCheckboxes = updatePageNumbersAndCheckboxes; + } else { + const pageDivs = document.querySelectorAll(".pdf-actions_container"); + + pageDivs.forEach((div, index) => { + const pageNumber = index + 1; + const checkbox = div.querySelector(".pdf-actions_checkbox"); + checkbox.id = `selectPageCheckbox-${pageNumber}`; + checkbox.setAttribute("data-page-number", pageNumber); + checkbox.checked = window.selectedPages.includes(pageNumber); + }); + } + + const filenameInput = document.getElementById("filename-input"); + const filenameParagraph = document.getElementById("filename"); + + this.originalFilenameInputValue = filenameInput ? filenameInput.value : ""; + if (filenameParagraph) + this.originalFilenameParagraphText = filenameParagraph.innerText; + } + + execute() { + let deletions = 0; + + this.selectedPages.forEach((pageIndex) => { + const adjustedIndex = pageIndex - 1 - deletions; + const child = this.pagesContainer.children[adjustedIndex]; + if (child) { + this.pagesContainer.removeChild(child); + deletions++; + + this.deletedChildren.push({ + idx: adjustedIndex, + childNode: child, + }); + } + }); + + if (this.pagesContainer.childElementCount === 0) { + const filenameInput = document.getElementById("filename-input"); + const filenameParagraph = document.getElementById("filename"); + const downloadBtn = document.getElementById("export-button"); + + if (filenameInput) filenameInput.disabled = true; + filenameInput.value = ""; + if (filenameParagraph) filenameParagraph.innerText = ""; + + downloadBtn.disabled = true; + } + + window.selectedPages = []; + this.updatePageNumbersAndCheckboxes(); + document.dispatchEvent(new Event("selectedPagesUpdated")); + } + + undo() { + while (this.deletedChildren.length > 0) { + let deletedChild = this.deletedChildren.pop(); + if (this.pagesContainer.children.length <= deletedChild.idx) + this.pagesContainer.appendChild(deletedChild.childNode); + else { + this.pagesContainer.insertBefore( + deletedChild.childNode, + this.pagesContainer.children[deletedChild.idx] + ); + } + } + + if (this.pagesContainer.childElementCount > 0) { + const filenameInput = document.getElementById("filename-input"); + const filenameParagraph = document.getElementById("filename"); + const downloadBtn = document.getElementById("export-button"); + + if (filenameInput) filenameInput.disabled = false; + filenameInput.value = this.originalFilenameInputValue; + if (filenameParagraph) + filenameParagraph.innerText = this.originalFilenameParagraphText; + + downloadBtn.disabled = false; + } + + window.selectedPages = this.selectedPages; + this.updatePageNumbersAndCheckboxes(); + document.dispatchEvent(new Event("selectedPagesUpdated")); + } + + redo() { + this.execute(); + } +} diff --git a/src/main/resources/static/js/multitool/commands/rotate.js b/src/main/resources/static/js/multitool/commands/rotate.js new file mode 100644 index 0000000000..6fb08cb941 --- /dev/null +++ b/src/main/resources/static/js/multitool/commands/rotate.js @@ -0,0 +1,74 @@ +import { Command } from "./command.js"; + +export class RotateElementCommand extends Command { + constructor(element, degree) { + super(); + this.element = element; + this.degree = degree; + } + + execute() { + let lastTransform = this.element.style.rotate; + if (!lastTransform) { + lastTransform = "0"; + } + const lastAngle = parseInt(lastTransform.replace(/[^\d-]/g, "")); + const newAngle = lastAngle + parseInt(this.degree); + + this.element.style.rotate = newAngle + "deg"; + } + + undo() { + let lastTransform = this.element.style.rotate; + if (!lastTransform) { + lastTransform = "0"; + } + + const currentAngle = parseInt(lastTransform.replace(/[^\d-]/g, "")); + const undoAngle = currentAngle + -parseInt(this.degree); + + this.element.style.rotate = undoAngle + "deg"; + } + + redo() { + this.execute(); + } +} + +export class RotateAllCommand extends Command { + constructor(elements, degree) { + super(); + this.elements = elements; + this.degree = degree; + } + + execute() { + for (let element of this.elements) { + let lastTransform = element.style.rotate; + if (!lastTransform) { + lastTransform = "0"; + } + const lastAngle = parseInt(lastTransform.replace(/[^\d-]/g, "")); + const newAngle = lastAngle + this.degree; + + element.style.rotate = newAngle + "deg"; + } + } + + undo() { + for (let element of this.elements) { + let lastTransform = element.style.rotate; + if (!lastTransform) { + lastTransform = "0"; + } + const currentAngle = parseInt(lastTransform.replace(/[^\d-]/g, "")); + const undoAngle = currentAngle + -this.degree; + + element.style.rotate = undoAngle + "deg"; + } + } + + redo() { + this.execute(); + } +} diff --git a/src/main/resources/static/js/multitool/commands/select.js b/src/main/resources/static/js/multitool/commands/select.js new file mode 100644 index 0000000000..b76a25ca14 --- /dev/null +++ b/src/main/resources/static/js/multitool/commands/select.js @@ -0,0 +1,59 @@ +import { Command } from "./command.js"; + +export class SelectPageCommand extends Command { + constructor(pageNumber, checkbox) { + super(); + this.pageNumber = pageNumber; + this.selectCheckbox = checkbox; + } + + execute() { + if (this.selectCheckbox.checked) { + //adds to array of selected pages + window.selectedPages.push(this.pageNumber); + } else { + //remove page from selected pages array + const index = window.selectedPages.indexOf(this.pageNumber); + if (index !== -1) { + window.selectedPages.splice(index, 1); + } + } + + if (window.selectedPages.length > 0 && !window.selectPage) { + window.toggleSelectPageVisibility(); + } + if (window.selectedPages.length == 0 && window.selectPage) { + window.toggleSelectPageVisibility(); + } + + window.updateSelectedPagesDisplay(); + } + + undo() { + this.selectCheckbox.checked = !this.selectCheckbox.checked; + if (this.selectCheckbox.checked) { + //adds to array of selected pages + window.selectedPages.push(this.pageNumber); + } else { + //remove page from selected pages array + const index = window.selectedPages.indexOf(this.pageNumber); + if (index !== -1) { + window.selectedPages.splice(index, 1); + } + } + + if (window.selectedPages.length > 0 && !window.selectPage) { + window.toggleSelectPageVisibility(); + } + if (window.selectedPages.length == 0 && window.selectPage) { + window.toggleSelectPageVisibility(); + } + + window.updateSelectedPagesDisplay(); + } + + redo() { + this.selectCheckbox.checked = !this.selectCheckbox.checked; + this.execute(); + } +} diff --git a/src/main/resources/static/js/multitool/commands/split.js b/src/main/resources/static/js/multitool/commands/split.js new file mode 100644 index 0000000000..3cbc32cdec --- /dev/null +++ b/src/main/resources/static/js/multitool/commands/split.js @@ -0,0 +1,101 @@ +import { Command } from "./command.js"; + +export class SplitFileCommand extends Command { + constructor(element, splitClass) { + super(); + this.element = element; + this.splitClass = splitClass; + } + + execute() { + this.element.classList.toggle(this.splitClass); + } + + undo() { + this.element.classList.toggle(this.splitClass); + } + + redo() { + this.execute(); + } +} + +export class SplitAllCommand extends Command { + constructor(elements, isSelectedInWindow, selectedPages, splitClass) { + super(); + this.elements = elements; + this.isSelectedInWindow = isSelectedInWindow; + this.selectedPages = selectedPages; + this.splitClass = splitClass; + } + + execute() { + if (!this.isSelectedInWindow) { + const hasSplit = this._hasSplit(this.elements, this.splitClass); + if (hasSplit) { + this.elements.forEach((page) => { + page.classList.remove(this.splitClass); + }); + } else { + this.elements.forEach((page) => { + page.classList.add(this.splitClass); + }); + } + return; + } + + this.elements.forEach((page, index) => { + const pageIndex = index; + if (this.isSelectedInWindow && !this.selectedPages.includes(pageIndex)) + return; + + if (page.classList.contains(this.splitClass)) { + page.classList.remove(this.splitClass); + } else { + page.classList.add(this.splitClass); + } + }); + } + + _hasSplit() { + if (!this.elements || this.elements.length == 0) return false; + + for (const node of this.elements) { + if (node.classList.contains(this.splitClass)) return true; + } + + return false; + } + + undo() { + if (!this.isSelectedInWindow) { + const hasSplit = this._hasSplit(this.elements, this.splitClass); + if (hasSplit) { + this.elements.forEach((page) => { + page.classList.remove(this.splitClass); + }); + } else { + this.elements.forEach((page) => { + page.classList.add(this.splitClass); + }); + } + return; + } + + this.elements.forEach((page, index) => { + const pageIndex = index; + if (this.isSelectedInWindow && !this.selectedPages.includes(pageIndex)) + return; + + if (page.classList.contains(this.splitClass)) { + page.classList.remove(this.splitClass); + } else { + page.classList.add(this.splitClass); + } + }); + } + + redo() { + this.execute(); + } +} diff --git a/src/main/resources/static/js/multitool/fileInput.js b/src/main/resources/static/js/multitool/fileInput.js index 9efa8eb2a9..ec7fa4c1e3 100644 --- a/src/main/resources/static/js/multitool/fileInput.js +++ b/src/main/resources/static/js/multitool/fileInput.js @@ -8,7 +8,7 @@ class FileDragManager { this.setCallback(cb); // Prevent default behavior for drag events - ["dragenter", "dragover", "dragleave", "drop"].forEach((eventName) => { + ['dragenter', 'dragover', 'dragleave', 'drop'].forEach((eventName) => { document.body.addEventListener(eventName, preventDefaults, false); }); @@ -21,13 +21,13 @@ class FileDragManager { this.dragleaveListener = this.dragleaveListener.bind(this); this.dropListener = this.dropListener.bind(this); - document.body.addEventListener("dragenter", this.dragenterListener); - document.body.addEventListener("dragleave", this.dragleaveListener); + document.body.addEventListener('dragenter', this.dragenterListener); + document.body.addEventListener('dragleave', this.dragleaveListener); // Add drop event listener - document.body.addEventListener("drop", this.dropListener); + document.body.addEventListener('drop', this.dropListener); } - setActions({ updateFilename }) { + setActions({updateFilename}) { this.updateFilename = updateFilename; } @@ -35,7 +35,7 @@ class FileDragManager { if (cb) { this.callback = cb; } else { - this.callback = (files) => console.warn("FileDragManager not set"); + this.callback = (files) => console.warn('FileDragManager not set'); } } @@ -43,21 +43,21 @@ class FileDragManager { this.dragCounter++; if (!this.overlay) { // Create and show the overlay - this.overlay = document.createElement("div"); - this.overlay.style.position = "fixed"; + this.overlay = document.createElement('div'); + this.overlay.style.position = 'fixed'; this.overlay.style.top = 0; this.overlay.style.left = 0; - this.overlay.style.width = "100%"; - this.overlay.style.height = "100%"; - this.overlay.style.background = "rgba(0, 0, 0, 0.5)"; - this.overlay.style.color = "#fff"; - this.overlay.style.zIndex = "1000"; - this.overlay.style.display = "flex"; - this.overlay.style.alignItems = "center"; - this.overlay.style.justifyContent = "center"; - this.overlay.style.pointerEvents = "none"; - this.overlay.innerHTML = "

Drop files anywhere to upload

"; - document.getElementById("content-wrap").appendChild(this.overlay); + this.overlay.style.width = '100%'; + this.overlay.style.height = '100%'; + this.overlay.style.background = 'rgba(0, 0, 0, 0.5)'; + this.overlay.style.color = '#fff'; + this.overlay.style.zIndex = '1000'; + this.overlay.style.display = 'flex'; + this.overlay.style.alignItems = 'center'; + this.overlay.style.justifyContent = 'center'; + this.overlay.style.pointerEvents = 'none'; + this.overlay.innerHTML = '

Drop files anywhere to upload

'; + document.getElementById('content-wrap').appendChild(this.overlay); } } @@ -87,16 +87,16 @@ class FileDragManager { this.overlay = null; } - this.updateFilename(files ? files[0].name : ""); + this.updateFilename(files ? files[0].name : ''); }); } async addImageFile(file, nextSiblingElement) { - const div = document.createElement("div"); - div.classList.add("page-container"); + const div = document.createElement('div'); + div.classList.add('page-container'); - var img = document.createElement("img"); - img.classList.add("page-image"); + var img = document.createElement('img'); + img.classList.add('page-image'); img.src = URL.createObjectURL(file); div.appendChild(img); diff --git a/src/main/resources/static/js/navbar.js b/src/main/resources/static/js/navbar.js new file mode 100644 index 0000000000..97272a5b01 --- /dev/null +++ b/src/main/resources/static/js/navbar.js @@ -0,0 +1,46 @@ +function toolsManager() { + document.addEventListener('DOMContentLoaded', function () { + const stackedContainer = document.getElementById('stacked'); + + if (stackedContainer) { + const convertToPDF = stackedContainer.querySelector('.navbar-item:first-child'); + const convertFromPDF = stackedContainer.querySelector('.navbar-item:nth-child(2)'); + + if (convertToPDF && convertFromPDF) { + const dropdownItemsTo = convertToPDF.querySelectorAll('.dropdown-item'); + const dropdownItemsFrom = convertFromPDF.querySelectorAll('.dropdown-item'); + + const itemsTo = Array.from(dropdownItemsTo).filter((item) => !item.querySelector('hr.dropdown-divider')); + const itemsFrom = Array.from(dropdownItemsFrom).filter((item) => !item.querySelector('hr.dropdown-divider')); + + const totalItems = itemsTo.length + itemsFrom.length; + + if (totalItems > 12) { + stackedContainer.style.flexDirection = 'row'; + stackedContainer.classList.remove('col-lg-2'); + stackedContainer.classList.add('col-lg-4'); + convertToPDF.style.flex = '1 1 50%'; + convertFromPDF.style.flex = '1 1 50%'; + } + } + } + + document.querySelectorAll('.navbar-item').forEach((element) => { + if (!element.closest('#stacked')) { + const dropdownItems = element.querySelectorAll('.dropdown-item'); + const items = Array.from(dropdownItems).filter((item) => !item.querySelector('hr.dropdown-divider')); + + if (items.length === 0) { + if ( + element.previousElementSibling && + element.previousElementSibling.classList.contains('navbar-item') && + element.previousElementSibling.classList.contains('nav-item-separator') + ) { + element.previousElementSibling.remove(); + } + element.remove(); + } + } + }); + }); +} diff --git a/src/main/resources/static/js/pages/add-image.js b/src/main/resources/static/js/pages/add-image.js new file mode 100644 index 0000000000..2bafd86ecc --- /dev/null +++ b/src/main/resources/static/js/pages/add-image.js @@ -0,0 +1,76 @@ +window.goToFirstOrLastPage = goToFirstOrLastPage; + +document.getElementById('download-pdf').addEventListener('click', async () => { + const downloadButton = document.getElementById('download-pdf'); + const originalContent = downloadButton.innerHTML; + + downloadButton.disabled = true; + downloadButton.innerHTML = ` + + `; + + try { + const modifiedPdf = await DraggableUtils.getOverlayedPdfDocument(); + const modifiedPdfBytes = await modifiedPdf.save(); + const blob = new Blob([modifiedPdfBytes], { type: 'application/pdf' }); + const link = document.createElement('a'); + link.href = URL.createObjectURL(blob); + link.download = originalFileName + '_addedImage.pdf'; + link.click(); + } finally { + downloadButton.disabled = false; + downloadButton.innerHTML = originalContent; + } +}); +let originalFileName = ''; +document.querySelector('input[name=pdf-upload]').addEventListener('change', async (event) => { + const fileInput = event.target; + fileInput.addEventListener('file-input-change', async (e) => { + const { allFiles } = e.detail; + if (allFiles && allFiles.length > 0) { + const file = allFiles[0]; + originalFileName = file.name.replace(/\.[^/.]+$/, ''); + const pdfData = await file.arrayBuffer(); + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + const pdfDoc = await pdfjsLib.getDocument({ data: pdfData }).promise; + await DraggableUtils.renderPage(pdfDoc, 0); + + document.querySelectorAll('.show-on-file-selected').forEach((el) => { + el.style.cssText = ''; + }); + } + }); +}); +document.addEventListener('DOMContentLoaded', () => { + document.querySelectorAll('.show-on-file-selected').forEach((el) => { + el.style.cssText = 'display:none !important'; + }); + document.addEventListener('keydown', (e) => { + if (e.key === 'Delete') { + DraggableUtils.deleteDraggableCanvas(DraggableUtils.getLastInteracted()); + } + }); +}); + +const imageUpload = document.querySelector('input[name=image-upload]'); +imageUpload.addEventListener('change', (e) => { + if (!e.target.files) { + return; + } + for (const imageFile of e.target.files) { + var reader = new FileReader(); + reader.readAsDataURL(imageFile); + reader.onloadend = function (e) { + DraggableUtils.createDraggableCanvasFromUrl(e.target.result); + }; + } +}); + +async function goToFirstOrLastPage(page) { + if (page) { + const lastPage = DraggableUtils.pdfDoc.numPages; + await DraggableUtils.goToPage(lastPage - 1); + } else { + await DraggableUtils.goToPage(0); + } +} diff --git a/src/main/resources/static/js/pages/adjust-contrast.js b/src/main/resources/static/js/pages/adjust-contrast.js new file mode 100644 index 0000000000..a9692d2bc4 --- /dev/null +++ b/src/main/resources/static/js/pages/adjust-contrast.js @@ -0,0 +1,253 @@ +var canvas = document.getElementById('contrast-pdf-canvas'); +var context = canvas.getContext('2d'); +var originalImageData = null; +var allPages = []; +var pdfDoc = null; +var pdf = null; // This is the current PDF document + +async function renderPDFAndSaveOriginalImageData(file) { + var fileReader = new FileReader(); + fileReader.onload = async function () { + var data = new Uint8Array(this.result); + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + pdf = await pdfjsLib.getDocument({data: data}).promise; + + // Get the number of pages in the PDF + var numPages = pdf.numPages; + allPages = Array.from({length: numPages}, (_, i) => i + 1); + + // Create a new PDF document + pdfDoc = await PDFLib.PDFDocument.create(); + // Render the first page in the viewer + await renderPageAndAdjustImageProperties(1); + document.getElementById('sliders-container').style.display = 'block'; + }; + fileReader.readAsArrayBuffer(file); +} + +// This function is now async and returns a promise +function renderPageAndAdjustImageProperties(pageNum) { + return new Promise(async function (resolve, reject) { + var page = await pdf.getPage(pageNum); + var scale = 1.5; + var viewport = page.getViewport({scale: scale}); + + canvas.height = viewport.height; + canvas.width = viewport.width; + + var renderContext = { + canvasContext: context, + viewport: viewport, + }; + + var renderTask = page.render(renderContext); + renderTask.promise.then(function () { + originalImageData = context.getImageData(0, 0, canvas.width, canvas.height); + adjustImageProperties(); + resolve(); + }); + canvas.classList.add('fixed-shadow-canvas'); + }); +} + +function adjustImageProperties() { + var contrast = parseFloat(document.getElementById('contrast-slider').value); + var brightness = parseFloat(document.getElementById('brightness-slider').value); + var saturation = parseFloat(document.getElementById('saturation-slider').value); + + contrast /= 100; // normalize to range [0, 2] + brightness /= 100; // normalize to range [0, 2] + saturation /= 100; // normalize to range [0, 2] + + if (originalImageData) { + var newImageData = context.createImageData(originalImageData.width, originalImageData.height); + newImageData.data.set(originalImageData.data); + + for (var i = 0; i < newImageData.data.length; i += 4) { + var r = newImageData.data[i]; + var g = newImageData.data[i + 1]; + var b = newImageData.data[i + 2]; + // Adjust contrast + r = adjustContrastForPixel(r, contrast); + g = adjustContrastForPixel(g, contrast); + b = adjustContrastForPixel(b, contrast); + // Adjust brightness + r = adjustBrightnessForPixel(r, brightness); + g = adjustBrightnessForPixel(g, brightness); + b = adjustBrightnessForPixel(b, brightness); + // Adjust saturation + var rgb = adjustSaturationForPixel(r, g, b, saturation); + newImageData.data[i] = rgb[0]; + newImageData.data[i + 1] = rgb[1]; + newImageData.data[i + 2] = rgb[2]; + } + context.putImageData(newImageData, 0, 0); + } +} + +function rgbToHsl(r, g, b) { + (r /= 255), (g /= 255), (b /= 255); + + var max = Math.max(r, g, b), + min = Math.min(r, g, b); + var h, + s, + l = (max + min) / 2; + + if (max === min) { + h = s = 0; // achromatic + } else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + } + + h /= 6; + } + + return [h, s, l]; +} + +function hslToRgb(h, s, l) { + var r, g, b; + + if (s === 0) { + r = g = b = l; // achromatic + } else { + var hue2rgb = function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + }; + + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + + return [r * 255, g * 255, b * 255]; +} + +function adjustContrastForPixel(pixel, contrast) { + // Normalize to range [-0.5, 0.5] + var normalized = pixel / 255 - 0.5; + + // Apply contrast + normalized *= contrast; + + // Denormalize back to [0, 255] + return (normalized + 0.5) * 255; +} + +function clamp(value, min, max) { + return Math.min(Math.max(value, min), max); +} + +function adjustSaturationForPixel(r, g, b, saturation) { + var hsl = rgbToHsl(r, g, b); + + // Adjust saturation + hsl[1] = clamp(hsl[1] * saturation, 0, 1); + + // Convert back to RGB + var rgb = hslToRgb(hsl[0], hsl[1], hsl[2]); + + // Return adjusted RGB values + return rgb; +} + +function adjustBrightnessForPixel(pixel, brightness) { + return Math.max(0, Math.min(255, pixel * brightness)); +} +let inputFileName = ''; +async function downloadPDF() { + for (var i = 0; i < allPages.length; i++) { + await renderPageAndAdjustImageProperties(allPages[i]); + const pngImageBytes = canvas.toDataURL('image/png'); + const pngImage = await pdfDoc.embedPng(pngImageBytes); + const pngDims = pngImage.scale(1); + + // Create a blank page matching the dimensions of the image + const page = pdfDoc.addPage([pngDims.width, pngDims.height]); + + // Draw the PNG image + page.drawImage(pngImage, { + x: 0, + y: 0, + width: pngDims.width, + height: pngDims.height, + }); + } + + // Serialize the PDFDocument to bytes (a Uint8Array) + const pdfBytes = await pdfDoc.save(); + + // Create a Blob + const blob = new Blob([pdfBytes.buffer], {type: 'application/pdf'}); + + // Create download link + const downloadLink = document.createElement('a'); + downloadLink.href = URL.createObjectURL(blob); + let newFileName = inputFileName ? inputFileName.replace('.pdf', '') : 'download'; + newFileName += '_adjusted_color.pdf'; + + downloadLink.download = newFileName; + downloadLink.click(); + + // After download, reset the viewer and clear stored data + allPages = []; // Clear the pages + originalImageData = null; // Clear the image data + + // Go back to page 1 and render it in the viewer + if (pdf !== null) { + renderPageAndAdjustImageProperties(1); + } +} + +// Event listeners +document.getElementById('fileInput-input').addEventListener('change', function (e) { + const fileInput = e.target; + fileInput.addEventListener('file-input-change', async (e) => { + const {allFiles} = e.detail; + if (allFiles && allFiles.length > 0) { + const file = allFiles[0]; + inputFileName = file.name; + renderPDFAndSaveOriginalImageData(file); + } + }); +}); + +document.getElementById('contrast-slider').addEventListener('input', function () { + document.getElementById('contrast-val').textContent = this.value; + adjustImageProperties(); +}); + +document.getElementById('brightness-slider').addEventListener('input', function () { + document.getElementById('brightness-val').textContent = this.value; + adjustImageProperties(); +}); + +document.getElementById('saturation-slider').addEventListener('input', function () { + document.getElementById('saturation-val').textContent = this.value; + adjustImageProperties(); +}); + +document.getElementById('download-button').addEventListener('click', function () { + downloadPDF(); +}); diff --git a/src/main/resources/static/js/pages/change-metadata.js b/src/main/resources/static/js/pages/change-metadata.js new file mode 100644 index 0000000000..bdc5426b71 --- /dev/null +++ b/src/main/resources/static/js/pages/change-metadata.js @@ -0,0 +1,150 @@ +const deleteAllCheckbox = document.querySelector('#deleteAll'); +let inputs = document.querySelectorAll('input'); +const customMetadataDiv = document.getElementById('customMetadata'); +const otherMetadataEntriesDiv = document.getElementById('otherMetadataEntries'); + +deleteAllCheckbox.addEventListener('change', function (event) { + inputs.forEach((input) => { + // If it's the deleteAllCheckbox or any file input, skip + if (input === deleteAllCheckbox || input.type === 'file') { + return; + } + // Disable or enable based on the checkbox state + input.disabled = deleteAllCheckbox.checked; + }); +}); + +const customModeCheckbox = document.getElementById('customModeCheckbox'); +const addMetadataBtn = document.getElementById('addMetadataBtn'); +const customMetadataFormContainer = document.getElementById('customMetadataEntries'); +var count = 1; +const fileInput = document.querySelector('#fileInput-input'); +const authorInput = document.querySelector('#author'); +const creationDateInput = document.querySelector('#creationDate'); +const creatorInput = document.querySelector('#creator'); +const keywordsInput = document.querySelector('#keywords'); +const modificationDateInput = document.querySelector('#modificationDate'); +const producerInput = document.querySelector('#producer'); +const subjectInput = document.querySelector('#subject'); +const titleInput = document.querySelector('#title'); +const trappedInput = document.querySelector('#trapped'); +var lastPDFFileMeta = null; +var lastPDFFile = null; + +fileInput.addEventListener('change', async function () { + fileInput.addEventListener('file-input-change', async (e) => { + const {allFiles} = e.detail; + if (allFiles && allFiles.length > 0) { + const file = allFiles[0]; + while (otherMetadataEntriesDiv.firstChild) { + otherMetadataEntriesDiv.removeChild(otherMetadataEntriesDiv.firstChild); + } + while (customMetadataFormContainer.firstChild) { + customMetadataFormContainer.removeChild(customMetadataFormContainer.firstChild); + } + var url = URL.createObjectURL(file); + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + const pdf = await pdfjsLib.getDocument(url).promise; + const pdfMetadata = await pdf.getMetadata(); + lastPDFFile = pdfMetadata?.info; + console.log(pdfMetadata); + if (!pdfMetadata?.info?.Custom || pdfMetadata?.info?.Custom.size == 0) { + customModeCheckbox.disabled = true; + customModeCheckbox.checked = false; + } else { + customModeCheckbox.disabled = false; + } + authorInput.value = pdfMetadata?.info?.Author; + creationDateInput.value = convertDateFormat(pdfMetadata?.info?.CreationDate); + creatorInput.value = pdfMetadata?.info?.Creator; + keywordsInput.value = pdfMetadata?.info?.Keywords; + modificationDateInput.value = convertDateFormat(pdfMetadata?.info?.ModDate); + producerInput.value = pdfMetadata?.info?.Producer; + subjectInput.value = pdfMetadata?.info?.Subject; + titleInput.value = pdfMetadata?.info?.Title; + console.log(pdfMetadata?.info); + const trappedValue = pdfMetadata?.info?.Trapped; + // Get all options in the select element + const options = trappedInput.options; + // Loop through all options to find the one with a matching value + for (let i = 0; i < options.length; i++) { + if (options[i].value === trappedValue) { + options[i].selected = true; + break; + } + } + addExtra(); + } + }); +}); + +addMetadataBtn.addEventListener('click', () => { + const keyInput = document.createElement('input'); + keyInput.type = 'text'; + keyInput.placeholder = 'Key'; + keyInput.className = 'form-control'; + keyInput.name = `allRequestParams[customKey${count}]`; + + const valueInput = document.createElement('input'); + valueInput.type = 'text'; + valueInput.placeholder = 'Value'; + valueInput.className = 'form-control'; + valueInput.name = `allRequestParams[customValue${count}]`; + count = count + 1; + + const formGroup = document.createElement('div'); + formGroup.className = 'mb-3'; + formGroup.appendChild(keyInput); + formGroup.appendChild(valueInput); + + customMetadataFormContainer.appendChild(formGroup); +}); +function convertDateFormat(dateTimeString) { + if (!dateTimeString || dateTimeString.length < 17) { + return dateTimeString; + } + + const year = dateTimeString.substring(2, 6); + const month = dateTimeString.substring(6, 8); + const day = dateTimeString.substring(8, 10); + const hour = dateTimeString.substring(10, 12); + const minute = dateTimeString.substring(12, 14); + const second = dateTimeString.substring(14, 16); + + return year + '/' + month + '/' + day + ' ' + hour + ':' + minute + ':' + second; +} + +function addExtra() { + const event = document.getElementById('customModeCheckbox'); + if (event.checked && lastPDFFile.Custom != null) { + customMetadataDiv.style.display = 'block'; + for (const [key, value] of Object.entries(lastPDFFile.Custom)) { + if ( + key === 'Author' || + key === 'CreationDate' || + key === 'Creator' || + key === 'Keywords' || + key === 'ModDate' || + key === 'Producer' || + key === 'Subject' || + key === 'Title' || + key === 'Trapped' + ) { + continue; + } + const entryDiv = document.createElement('div'); + entryDiv.className = 'mb-3'; + entryDiv.innerHTML = `
`; + otherMetadataEntriesDiv.appendChild(entryDiv); + } + } else { + customMetadataDiv.style.display = 'none'; + while (otherMetadataEntriesDiv.firstChild) { + otherMetadataEntriesDiv.removeChild(otherMetadataEntriesDiv.firstChild); + } + } +} + +customModeCheckbox.addEventListener('change', (event) => { + addExtra(); +}); diff --git a/src/main/resources/static/js/pages/crop.js b/src/main/resources/static/js/pages/crop.js new file mode 100644 index 0000000000..1854023a07 --- /dev/null +++ b/src/main/resources/static/js/pages/crop.js @@ -0,0 +1,159 @@ +let pdfCanvas = document.getElementById('cropPdfCanvas'); +let overlayCanvas = document.getElementById('overlayCanvas'); +let canvasesContainer = document.getElementById('canvasesContainer'); +canvasesContainer.style.display = 'none'; +let containerRect = canvasesContainer.getBoundingClientRect(); + +let context = pdfCanvas.getContext('2d'); +let overlayContext = overlayCanvas.getContext('2d'); + +overlayCanvas.width = pdfCanvas.width; +overlayCanvas.height = pdfCanvas.height; + +let isDrawing = false; // New flag to check if drawing is ongoing + +let cropForm = document.getElementById('cropForm'); +let fileInput = document.getElementById('fileInput-input'); +let xInput = document.getElementById('x'); +let yInput = document.getElementById('y'); +let widthInput = document.getElementById('width'); +let heightInput = document.getElementById('height'); + +let pdfDoc = null; +let currentPage = 1; +let totalPages = 0; + +let startX = 0; +let startY = 0; +let rectWidth = 0; +let rectHeight = 0; + +let pageScale = 1; // The scale which the pdf page renders +let timeId = null; // timeout id for resizing canvases event + +function renderPageFromFile(file) { + if (file.type === 'application/pdf') { + let reader = new FileReader(); + reader.onload = function (ev) { + let typedArray = new Uint8Array(reader.result); + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + pdfjsLib.getDocument(typedArray).promise.then(function (pdf) { + pdfDoc = pdf; + totalPages = pdf.numPages; + renderPage(currentPage); + }); + }; + reader.readAsArrayBuffer(file); + } +} + +window.addEventListener('resize', function () { + clearTimeout(timeId); + + timeId = setTimeout(function () { + if (fileInput.files.length == 0) return; + let canvasesContainer = document.getElementById('canvasesContainer'); + let containerRect = canvasesContainer.getBoundingClientRect(); + + context.clearRect(0, 0, pdfCanvas.width, pdfCanvas.height); + + overlayContext.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height); + + pdfCanvas.width = containerRect.width; + pdfCanvas.height = containerRect.height; + + overlayCanvas.width = containerRect.width; + overlayCanvas.height = containerRect.height; + + let file = fileInput.files[0]; + renderPageFromFile(file); + }, 1000); +}); + +fileInput.addEventListener('change', function (e) { + fileInput.addEventListener('file-input-change', async (e) => { + const {allFiles} = e.detail; + if (allFiles && allFiles.length > 0) { + canvasesContainer.style.display = 'block'; // set for visual purposes + let file = allFiles[0]; + renderPageFromFile(file); + } + }); +}); + +cropForm.addEventListener('submit', function (e) { + if (xInput.value == '' && yInput.value == '' && widthInput.value == '' && heightInput.value == '') { + // ÎŸĪÎ¯ĪƒĪ„Îĩ ĪƒĪ…ÎŊĪ„ÎĩĪ„ÎąÎŗÎŧέÎŊÎĩĪ‚ ÎŗÎšÎą ÎŋÎģΌÎēÎģÎˇĪÎˇ Ī„ÎˇÎŊ ÎĩĪ€ÎšĪ†ÎŦÎŊÎĩΚι Ī„ÎŋĪ… PDF + xInput.value = 0; + yInput.value = 0; + widthInput.value = containerRect.width; + heightInput.value = containerRect.height; + } +}); + +overlayCanvas.addEventListener('mousedown', function (e) { + // Clear previously drawn rectangle on the main canvas + context.clearRect(0, 0, pdfCanvas.width, pdfCanvas.height); + renderPage(currentPage); // Re-render the PDF + + // Clear the overlay canvas to ensure old drawings are removed + overlayContext.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height); + + startX = e.offsetX; + startY = e.offsetY; + isDrawing = true; +}); + +overlayCanvas.addEventListener('mousemove', function (e) { + if (!isDrawing) return; + overlayContext.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height); // Clear previous rectangle + + rectWidth = e.offsetX - startX; + rectHeight = e.offsetY - startY; + overlayContext.strokeStyle = 'red'; + overlayContext.strokeRect(startX, startY, rectWidth, rectHeight); +}); + +overlayCanvas.addEventListener('mouseup', function (e) { + isDrawing = false; + + rectWidth = e.offsetX - startX; + rectHeight = e.offsetY - startY; + + let flippedY = pdfCanvas.height - e.offsetY; + + xInput.value = startX / pageScale; + yInput.value = flippedY / pageScale; + widthInput.value = rectWidth / pageScale; + heightInput.value = rectHeight / pageScale; + + // Draw the final rectangle on the main canvas + context.strokeStyle = 'red'; + context.strokeRect(startX, startY, rectWidth, rectHeight); + + overlayContext.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height); // Clear the overlay +}); + +function renderPage(pageNumber) { + pdfDoc.getPage(pageNumber).then(function (page) { + let canvasesContainer = document.getElementById('canvasesContainer'); + let containerRect = canvasesContainer.getBoundingClientRect(); + + pageScale = containerRect.width / page.getViewport({scale: 1}).width; // The new scale + + let viewport = page.getViewport({scale: containerRect.width / page.getViewport({scale: 1}).width}); + + canvasesContainer.width = viewport.width; + canvasesContainer.height = viewport.height; + + pdfCanvas.width = viewport.width; + pdfCanvas.height = viewport.height; + + overlayCanvas.width = viewport.width; // Match overlay canvas size with PDF canvas + overlayCanvas.height = viewport.height; + + let renderContext = {canvasContext: context, viewport: viewport}; + page.render(renderContext); + pdfCanvas.classList.add('shadow-canvas'); + }); +} diff --git a/src/main/resources/static/js/pages/pdf-to-csv.js b/src/main/resources/static/js/pages/pdf-to-csv.js new file mode 100644 index 0000000000..6be3c2ed64 --- /dev/null +++ b/src/main/resources/static/js/pages/pdf-to-csv.js @@ -0,0 +1,138 @@ +let pdfCanvas = document.getElementById('cropPdfCanvas'); +let overlayCanvas = document.getElementById('overlayCanvas'); +let canvasesContainer = document.getElementById('canvasesContainer'); +canvasesContainer.style.display = 'none'; +// let paginationBtnContainer = ; + +let context = pdfCanvas.getContext('2d'); +let overlayContext = overlayCanvas.getContext('2d'); + +let btn1Object = document.getElementById('previous-page-btn'); +let btn2Object = document.getElementById('next-page-btn'); +overlayCanvas.width = pdfCanvas.width; +overlayCanvas.height = pdfCanvas.height; + +let fileInput = document.getElementById('fileInput-input'); + +let file; + +let pdfDoc = null; +let pageId = document.getElementById('pageId'); +let currentPage = 1; +let totalPages = 0; + +let startX = 0; +let startY = 0; +let rectWidth = 0; +let rectHeight = 0; + +let timeId = null; // timeout id for resizing canvases event + +btn1Object.addEventListener('click', function (e) { + if (currentPage !== 1) { + currentPage = currentPage - 1; + pageId.value = currentPage; + + if (file.type === 'application/pdf') { + let reader = new FileReader(); + reader.onload = function (ev) { + let typedArray = new Uint8Array(reader.result); + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + pdfjsLib.getDocument(typedArray).promise.then(function (pdf) { + pdfDoc = pdf; + totalPages = pdf.numPages; + renderPage(currentPage); + }); + }; + reader.readAsArrayBuffer(file); + } + } +}); + +btn2Object.addEventListener('click', function (e) { + if (currentPage !== totalPages) { + currentPage = currentPage + 1; + pageId.value = currentPage; + + if (file.type === 'application/pdf') { + let reader = new FileReader(); + reader.onload = function (ev) { + let typedArray = new Uint8Array(reader.result); + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + pdfjsLib.getDocument(typedArray).promise.then(function (pdf) { + pdfDoc = pdf; + totalPages = pdf.numPages; + renderPage(currentPage); + }); + }; + reader.readAsArrayBuffer(file); + } + } +}); + +function renderPageFromFile(file) { + if (file.type === 'application/pdf') { + let reader = new FileReader(); + reader.onload = function (ev) { + let typedArray = new Uint8Array(reader.result); + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + pdfjsLib.getDocument(typedArray).promise.then(function (pdf) { + pdfDoc = pdf; + totalPages = pdf.numPages; + renderPage(currentPage); + }); + pageId.value = currentPage; + }; + reader.readAsArrayBuffer(file); + document.getElementById('pagination-button-container').style.display = 'flex'; + document.getElementById('instruction-text').style.display = 'block'; + } +} + +window.addEventListener('resize', function () { + clearTimeout(timeId); + timeId = setTimeout(function () { + if (fileInput.files.length == 0) return; + let canvasesContainer = document.getElementById('canvasesContainer'); + let containerRect = canvasesContainer.getBoundingClientRect(); + + context.clearRect(0, 0, pdfCanvas.width, pdfCanvas.height); + + overlayContext.clearRect(0, 0, overlayCanvas.width, overlayCanvas.height); + + pdfCanvas.width = containerRect.width; + pdfCanvas.height = containerRect.height; + + overlayCanvas.width = containerRect.width; + overlayCanvas.height = containerRect.height; + + let file = fileInput.files[0]; + renderPageFromFile(file); + }, 1000); +}); + +fileInput.addEventListener('change', function (e) { + fileInput.addEventListener('file-input-change', async (e) => { + const {allFiles} = e.detail; + if (allFiles && allFiles.length > 0) { + canvasesContainer.style.display = 'block'; // set for visual purposes + file = e.target.files[0]; + renderPageFromFile(file); + } + }); +}); + +function renderPage(pageNumber) { + pdfDoc.getPage(pageNumber).then(function (page) { + let viewport = page.getViewport({scale: 1.0}); + pdfCanvas.width = viewport.width; + pdfCanvas.height = viewport.height; + + overlayCanvas.width = viewport.width; // Match overlay canvas size with PDF canvas + overlayCanvas.height = viewport.height; + + let renderContext = {canvasContext: context, viewport: viewport}; + page.render(renderContext); + pdfCanvas.classList.add('shadow-canvas'); + }); +} diff --git a/src/main/resources/static/js/pages/sign.js b/src/main/resources/static/js/pages/sign.js new file mode 100644 index 0000000000..736ca1cd5c --- /dev/null +++ b/src/main/resources/static/js/pages/sign.js @@ -0,0 +1,238 @@ +window.toggleSignatureView = toggleSignatureView; +window.previewSignature = previewSignature; +window.addSignatureFromPreview = addSignatureFromPreview; +window.addDraggableFromPad = addDraggableFromPad; +window.addDraggableFromText = addDraggableFromText; +window.goToFirstOrLastPage = goToFirstOrLastPage; + +let currentPreviewSrc = null; + +function toggleSignatureView() { + const gridView = document.getElementById('gridView'); + const listView = document.getElementById('listView'); + const gridText = document.querySelector('.grid-view-text'); + const listText = document.querySelector('.list-view-text'); + + if (gridView.style.display !== 'none') { + gridView.style.display = 'none'; + listView.style.display = 'block'; + gridText.style.display = 'none'; + listText.style.display = 'inline'; + } else { + gridView.style.display = 'block'; + listView.style.display = 'none'; + gridText.style.display = 'inline'; + listText.style.display = 'none'; + } +} + +function previewSignature(element) { + const src = element.dataset.src; + currentPreviewSrc = src; + + const filename = element.querySelector('.signature-list-name').textContent; + + const previewImage = document.getElementById('previewImage'); + const previewFileName = document.getElementById('previewFileName'); + + previewImage.src = src; + previewFileName.textContent = filename; + + const modal = new bootstrap.Modal(document.getElementById('signaturePreview')); + modal.show(); +} + +function addSignatureFromPreview() { + if (currentPreviewSrc) { + DraggableUtils.createDraggableCanvasFromUrl(currentPreviewSrc); + bootstrap.Modal.getInstance(document.getElementById('signaturePreview')).hide(); + } +} + +let originalFileName = ''; +document.querySelector('input[name=pdf-upload]').addEventListener('change', async (event) => { + const fileInput = event.target; + fileInput.addEventListener('file-input-change', async (e) => { + const {allFiles} = e.detail; + if (allFiles && allFiles.length > 0) { + const file = allFiles[0]; + originalFileName = file.name.replace(/\.[^/.]+$/, ''); + const pdfData = await file.arrayBuffer(); + pdfjsLib.GlobalWorkerOptions.workerSrc = './pdfjs-legacy/pdf.worker.mjs'; + const pdfDoc = await pdfjsLib.getDocument({data: pdfData}).promise; + await DraggableUtils.renderPage(pdfDoc, 0); + + document.querySelectorAll('.show-on-file-selected').forEach((el) => { + el.style.cssText = ''; + }); + } + }); +}); + +document.addEventListener('DOMContentLoaded', () => { + document.querySelectorAll('.show-on-file-selected').forEach((el) => { + el.style.cssText = 'display:none !important'; + }); + document.querySelectorAll('.small-file-container-saved img ').forEach((img) => { + img.addEventListener('dragstart', (e) => { + e.dataTransfer.setData('fileUrl', img.src); + }); + }); + document.addEventListener('keydown', (e) => { + if (e.key === 'Delete') { + DraggableUtils.deleteDraggableCanvas(DraggableUtils.getLastInteracted()); + } + }); +}); + +const imageUpload = document.querySelector('input[name=image-upload]'); +imageUpload.addEventListener('change', (e) => { + if (!e.target.files) return; + for (const imageFile of e.target.files) { + var reader = new FileReader(); + reader.readAsDataURL(imageFile); + reader.onloadend = function (e) { + DraggableUtils.createDraggableCanvasFromUrl(e.target.result); + }; + } +}); + +const signaturePadCanvas = document.getElementById('drawing-pad-canvas'); +const signaturePad = new SignaturePad(signaturePadCanvas, { + minWidth: 1, + maxWidth: 2, + penColor: 'black', +}); + +function addDraggableFromPad() { + if (signaturePad.isEmpty()) return; + const startTime = Date.now(); + const croppedDataUrl = getCroppedCanvasDataUrl(signaturePadCanvas); + console.log(Date.now() - startTime); + DraggableUtils.createDraggableCanvasFromUrl(croppedDataUrl); +} + +function getCroppedCanvasDataUrl(canvas) { + let originalCtx = canvas.getContext('2d'); + let originalWidth = canvas.width; + let originalHeight = canvas.height; + let imageData = originalCtx.getImageData(0, 0, originalWidth, originalHeight); + + let minX = originalWidth + 1, + maxX = -1, + minY = originalHeight + 1, + maxY = -1, + x = 0, + y = 0, + currentPixelColorValueIndex; + + for (y = 0; y < originalHeight; y++) { + for (x = 0; x < originalWidth; x++) { + currentPixelColorValueIndex = (y * originalWidth + x) * 4; + let currentPixelAlphaValue = imageData.data[currentPixelColorValueIndex + 3]; + if (currentPixelAlphaValue > 0) { + if (minX > x) minX = x; + if (maxX < x) maxX = x; + if (minY > y) minY = y; + if (maxY < y) maxY = y; + } + } + } + + let croppedWidth = maxX - minX; + let croppedHeight = maxY - minY; + if (croppedWidth < 0 || croppedHeight < 0) return null; + let cuttedImageData = originalCtx.getImageData(minX, minY, croppedWidth, croppedHeight); + + let croppedCanvas = document.createElement('canvas'), + croppedCtx = croppedCanvas.getContext('2d'); + + croppedCanvas.width = croppedWidth; + croppedCanvas.height = croppedHeight; + croppedCtx.putImageData(cuttedImageData, 0, 0); + + return croppedCanvas.toDataURL(); +} + +function resizeCanvas() { + var ratio = Math.max(window.devicePixelRatio || 1, 1); + var additionalFactor = 10; + + signaturePadCanvas.width = signaturePadCanvas.offsetWidth * ratio * additionalFactor; + signaturePadCanvas.height = signaturePadCanvas.offsetHeight * ratio * additionalFactor; + signaturePadCanvas.getContext('2d').scale(ratio * additionalFactor, ratio * additionalFactor); + + signaturePad.clear(); +} + +new IntersectionObserver((entries, observer) => { + if (entries.some((entry) => entry.intersectionRatio > 0)) { + resizeCanvas(); + } +}).observe(signaturePadCanvas); + +new ResizeObserver(resizeCanvas).observe(signaturePadCanvas); + +function addDraggableFromText() { + const sigText = document.getElementById('sigText').value; + const font = document.querySelector('select[name=font]').value; + const fontSize = 100; + + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + ctx.font = `${fontSize}px ${font}`; + const textWidth = ctx.measureText(sigText).width; + const textHeight = fontSize; + + let paragraphs = sigText.split(/\r?\n/); + + canvas.width = textWidth; + canvas.height = paragraphs.length * textHeight * 1.35; // for tails + ctx.font = `${fontSize}px ${font}`; + + ctx.textBaseline = 'top'; + + let y = 0; + + paragraphs.forEach((paragraph) => { + ctx.fillText(paragraph, 0, y); + y += fontSize; + }); + + const dataURL = canvas.toDataURL(); + DraggableUtils.createDraggableCanvasFromUrl(dataURL); +} + +async function goToFirstOrLastPage(page) { + if (page) { + const lastPage = DraggableUtils.pdfDoc.numPages; + await DraggableUtils.goToPage(lastPage - 1); + } else { + await DraggableUtils.goToPage(0); + } +} + +document.getElementById('download-pdf').addEventListener('click', async () => { + const downloadButton = document.getElementById('download-pdf'); + const originalContent = downloadButton.innerHTML; + + downloadButton.disabled = true; + downloadButton.innerHTML = ` + + `; + + try { + const modifiedPdf = await DraggableUtils.getOverlayedPdfDocument(); + const modifiedPdfBytes = await modifiedPdf.save(); + const blob = new Blob([modifiedPdfBytes], {type: 'application/pdf'}); + const link = document.createElement('a'); + link.href = URL.createObjectURL(blob); + link.download = originalFileName + '_signed.pdf'; + link.click(); + } catch (error) { + console.error('Error downloading PDF:', error); + } finally { + downloadButton.disabled = false; + downloadButton.innerHTML = originalContent; + } +}); diff --git a/src/main/resources/static/js/redact.js b/src/main/resources/static/js/redact.js new file mode 100644 index 0000000000..3fdc4c3fca --- /dev/null +++ b/src/main/resources/static/js/redact.js @@ -0,0 +1,1206 @@ +import { PDFViewerApplication } from "../pdfjs-legacy/js/viewer.mjs"; +import UUID from "./uuid.js"; + +let zoomScaleValue = 1.0; + +let activeOverlay; +let drawingLayer = null; + +const doNothing = () => {}; + +function addRedactedPagePreview(pagesSelector) { + document.querySelectorAll(pagesSelector).forEach((page) => { + let textLayer = page.querySelector(".textLayer"); + if (textLayer) textLayer.classList.add("redacted-page-preview"); + }); +} + +function addRedactedThumbnailPreview(sidebarPagesSelector) { + document.querySelectorAll(sidebarPagesSelector).forEach((thumbnail) => { + thumbnail.classList.add("redacted-thumbnail-preview"); + let thumbnailImage = thumbnail.querySelector(".thumbnailImage"); + if (thumbnailImage) + thumbnailImage.classList.add("redacted-thumbnail-image-preview"); + }); +} + +function removeRedactedPagePreview() { + document + .querySelectorAll(".textLayer") + .forEach((textLayer) => + textLayer.classList.remove("redacted-page-preview") + ); + document + .querySelectorAll("#thumbnailView > a > div.thumbnail") + .forEach((thumbnail) => { + thumbnail.classList.remove("redacted-thumbnail-preview"); + let thumbnailImage = thumbnail.querySelector(".thumbnailImage"); + if (thumbnailImage) + thumbnailImage.classList.remove("redacted-thumbnail-image-preview"); + }); +} + +function extractPagesDetailed(pagesInput, totalPageCount) { + let parts = pagesInput.split(",").filter((s) => s); + let pagesDetailed = { + numbers: new Set(), + functions: new Set(), + ranges: new Set(), + all: false, + }; + for (let part of parts) { + let trimmedPart = part.trim(); + if ("all" == trimmedPart) { + pagesDetailed.all = true; + return pagesDetailed; + } else if (isValidFunction(trimmedPart)) { + pagesDetailed.functions.add(formatNFunction(trimmedPart)); + } else if (trimmedPart.includes("-")) { + let range = trimmedPart + .replaceAll(" ", "") + .split("-") + .filter((s) => s); + if ( + range && + range.length == 2 && + range[0].trim() > 0 && + range[1].trim() > 0 + ) + pagesDetailed.ranges.add({ + low: range[0].trim(), + high: range[1].trim(), + }); + } else if (isPageNumber(trimmedPart)) { + pagesDetailed.numbers.add( + trimmedPart <= totalPageCount ? trimmedPart : totalPageCount + ); + } + } + + return pagesDetailed; +} + +function formatNFunction(expression) { + let result = insertMultiplicationBeforeN(expression.replaceAll(" ", "")); + let multiplyByOpeningRoundBracketPattern = /([0-9n)])\(/g; // example: n(n-1), 9(n-1), (n-1)(n-2) + result = result.replaceAll(multiplyByOpeningRoundBracketPattern, "$1*("); + + let multiplyByClosingRoundBracketPattern = /\)([0-9n)])/g; // example: (n-1)n, (n-1)9, (n-1)(n-2) + result = result.replaceAll(multiplyByClosingRoundBracketPattern, ")*$1"); + return result; +} + +function insertMultiplicationBeforeN(expression) { + let result = expression.replaceAll(/(\d)n/g, "$1*n"); + while (result.match(/nn/)) { + result = result.replaceAll(/nn/g, "n*n"); // From nn -> n*n + } + return result; +} + +function validatePages(pages) { + let parts = pages.split(",").filter((s) => s); + let errors = []; + for (let part of parts) { + let trimmedPart = part.trim(); + if ("all" == trimmedPart) continue; + else if (trimmedPart.includes("n")) { + if (!isValidFunction(trimmedPart)) + errors.push( + `${trimmedPart} is an invalid function, it should consist of digits 0-9, n, *, -, /, (, ), \\.` + ); + } else if (trimmedPart.includes("-")) { + let range = trimmedPart.split("-").filter((s) => s); + if (!range || range.length != 2) + errors.push( + `${trimmedPart} is an invalid range, it should consist of from-to, example: 1-5` + ); + else if (range[0].trim() <= 0 || range[1].trim() <= 0) + errors.push( + `${trimmedPart} has invalid range(s), page numbers should be positive.` + ); + } else if (!isPageNumber(trimmedPart)) { + errors.push( + `${trimmedPart} is invalid, it should either be a function, page number or a range.` + ); + } + } + + return { errors }; +} + +function isPageNumber(page) { + return /^[0-9]*$/.test(page); +} + +function isValidFunction(part) { + return part.includes("n") && /[0-9n+\-*/() ]+$/.test(part); +} + +function hideContainer(container) { + container?.classList.add("d-none"); +} + +const RedactionModes = Object.freeze({ + DRAWING: Symbol("drawing"), + TEXT: Symbol("text"), + NONE: Symbol("none"), +}); + +function removePDFJSButtons() { + document.getElementById("print")?.remove(); + document.getElementById("download")?.remove(); + document.getElementById("editorStamp")?.remove(); + document.getElementById("editorFreeText")?.remove(); + document.getElementById("editorInk")?.remove(); + document.getElementById("secondaryToolbarToggle")?.remove(); + document.getElementById("openFile")?.remove(); +} + +function hideInitialPage() { + document.body.style.overflowY = "hidden"; + let redactionsFormContainer = document.getElementById( + "redactionFormContainer" + ); + for ( + let el = redactionsFormContainer.previousElementSibling; + el && el instanceof HTMLBRElement; + el = el.previousElementSibling + ) { + el.classList.add("d-none"); + } + redactionsFormContainer.classList.add("d-none"); + document.getElementsByTagName("footer")[0].classList.add("d-none"); +} + +window.addEventListener("load", (e) => { + let isChromium = + !!window.chrome || + (!!navigator.userAgentData && + navigator.userAgentData.brands.some((data) => data.brand == "Chromium")); + + let isSafari = + /constructor/i.test(window.HTMLElement) || + (function (p) { + return p.toString() === "[object SafariRemoteNotification]"; + })( + !window["safari"] || + (typeof safari !== "undefined" && window["safari"].pushNotification) + ); + let isWebkit = navigator.userAgent.search(/webkit/i) > 0; + let isGecko = navigator.userAgent.search(/gecko/i) > 0; + let isFirefox = typeof InstallTrigger !== "undefined"; + + let hiddenInput = document.getElementById("fileInput"); + let outerContainer = document.getElementById("outerContainer"); + let printContainer = document.getElementById("printContainer"); + + let toolbarViewerRight = document.getElementById("toolbarViewerRight"); + let showMoreBtn = document.getElementById("showMoreBtn"); + + window.onresize = (e) => { + if (window.innerWidth > 1125 && showMoreBtn.classList.contains("toggled")) { + showMoreBtn.click(); + } else if ( + window.innerWidth > 1125 && + toolbarViewerRight.hasAttribute("style") + ) { + toolbarViewerRight.style.removeProperty("display"); + } + }; + + showMoreBtn.onclick = (e) => { + if (showMoreBtn.classList.contains("toggled")) { + toolbarViewerRight.style.display = "none"; + showMoreBtn.classList.remove("toggled"); + } else { + toolbarViewerRight.style.display = "flex"; + showMoreBtn.classList.add("toggled"); + } + }; + + let viewer = document.getElementById("viewer"); + + hiddenInput.files = undefined; + let redactionMode = RedactionModes.NONE; + + let redactions = []; + + let redactionsInput = document.getElementById("redactions-input"); + + let redactionsPalette = document.getElementById("redactions-palette"); + let redactionsPaletteInput = redactionsPalette.querySelector("input"); + + let redactionsPaletteContainer = document.getElementById( + "redactionsPaletteContainer" + ); + + let applyRedactionBtn = document.getElementById("apply-redaction"); + + let redactedPagesDetails = { + numbers: new Set(), + ranges: new Set(), + functions: new Set(), + all: false, + }; + let pageBasedRedactionBtn = document.getElementById("pageBasedRedactionBtn"); + let pageBasedRedactionOverlay = document.getElementById( + "pageBasedRedactionOverlay" + ); + pageBasedRedactionBtn.onclick = (e) => + pageBasedRedactionOverlay.classList.remove("d-none"); + + pageBasedRedactionOverlay.querySelector("input[type=text]").onchange = ( + e + ) => { + let input = e.target; + let parentElement = input.parentElement; + + resetFieldFeedbackMessages(input, parentElement); + + let value = input.value.trim(); + let { errors } = validatePages(value); + if (errors && errors.length > 0) { + applyPageRedactionBtn.disabled = "true"; + displayFieldErrorMessages(input, errors); + } else { + applyPageRedactionBtn.removeAttribute("disabled"); + input.classList.add("is-valid"); + } + }; + + let applyPageRedactionBtn = document.getElementById("applyPageRedactionBtn"); + applyPageRedactionBtn.onclick = (e) => { + pageBasedRedactionOverlay.querySelectorAll("input").forEach((input) => { + const id = input.getAttribute("data-for"); + if (id == "pageNumbers") { + let { errors } = validatePages(input.value); + + resetFieldFeedbackMessages(input, input.parentElement); + + if (errors?.length > 0) { + applyPageRedactionBtn.disabled = true; + displayFieldErrorMessages(input, errors); + } else { + pageBasedRedactionOverlay.classList.add("d-none"); + applyRedactionBtn.removeAttribute("disabled"); + input.classList.remove("is-valid"); + + let totalPagesCount = PDFViewerApplication.pdfViewer.pagesCount; + let pagesDetailed = extractPagesDetailed( + input.value, + totalPagesCount + ); + redactedPagesDetails = pagesDetailed; + addPageRedactionPreviewToPages(pagesDetailed, totalPagesCount); + } + } else if (id == "pageRedactColor") setPageRedactionColor(input.value); + let formInput = document.getElementById(id); + if (formInput) formInput.value = input.value; + }); + }; + + let closePageRedactionBtn = document.getElementById("closePageRedactionBtn"); + closePageRedactionBtn.onclick = (e) => { + pageBasedRedactionOverlay.classList.add("d-none"); + pageBasedRedactionOverlay.querySelectorAll("input").forEach((input) => { + const id = input.getAttribute("data-for"); + if (id == "pageNumbers") { + resetFieldFeedbackMessages(input, input.parentElement); + } + let formInput = document.getElementById(id); + if (formInput) input.value = formInput.value; + }); + }; + + let pdfToImageCheckbox = document.getElementById("convertPDFToImage"); + + let pdfToImageBtn = document.getElementById("pdfToImageBtn"); + pdfToImageBtn.onclick = (e) => { + pdfToImageBtn.classList.toggle("btn-success"); + pdfToImageBtn.classList.toggle("btn-danger"); + pdfToImageCheckbox.checked = !pdfToImageCheckbox.checked; + }; + + let fileChooser = document.getElementsByClassName("custom-file-chooser")[0]; + let fileChooserInput = fileChooser.querySelector( + `#${fileChooser.getAttribute("data-bs-element-id")}` + ); + + let uploadButton = document.getElementById("uploadBtn"); + uploadButton.onclick = (e) => fileChooserInput.click(); + + document.addEventListener("file-input-change", (e) => { + redactions = []; + _setRedactionsInput(redactions); + }); + + let submitBtn = document.getElementById("submitBtn"); + + let downloadBtn = document.getElementById("downloadBtn"); + let downloadBtnIcon = document.getElementById("downloadBtnIcon"); + + downloadBtn.onclick = (e) => { + submitBtn.click(); + setTimeout(_showOrHideLoadingSpinner, 100); // wait 100 milliseconds so that submitBtn would be disabled + }; + + function _showOrHideLoadingSpinner() { + if (!submitBtn.disabled) { + downloadBtnIcon.innerHTML = "download"; + downloadBtnIcon.classList.remove("spin-animation"); + return; + } + + downloadBtnIcon.innerHTML = "progress_activity"; + downloadBtnIcon.classList.add("spin-animation"); + setTimeout(_showOrHideLoadingSpinner, 500); + } + + redactionsPaletteContainer.onclick = (e) => redactionsPalette.click(); + + viewer.onmouseup = (e) => { + if (redactionMode !== RedactionModes.TEXT) return; + const containsText = + window.getSelection() && window.getSelection().toString() != ""; + applyRedactionBtn.disabled = !containsText; + }; + + applyRedactionBtn.onclick = (e) => { + if (redactionMode !== RedactionModes.TEXT) { + applyRedactionBtn.disabled = true; + return; + } + redactTextSelection(); + applyRedactionBtn.disabled = true; + }; + + redactionsPaletteInput.onchange = (e) => { + let color = e.target.value; + redactionsPalette.style.setProperty("--palette-color", color); + }; + + document.addEventListener("file-input-change", (e) => { + let fileChooser = document.getElementsByClassName("custom-file-chooser")[0]; + let fileChooserInput = fileChooser.querySelector( + `#${fileChooser.getAttribute("data-bs-element-id")}` + ); + + hiddenInput.files = fileChooserInput.files; + if (!hiddenInput.files || hiddenInput.files.length === 0) { + hideContainer(outerContainer); + hideContainer(printContainer); + } else { + outerContainer?.classList.remove("d-none"); + printContainer?.classList.remove("d-none"); + hideInitialPage(); + } + + hiddenInput.dispatchEvent(new Event("change", { bubbles: true })); + }); + + PDFViewerApplication.downloadOrSave = doNothing; + PDFViewerApplication.triggerPrinting = doNothing; + + let redactionContainersDivs = {}; + PDFViewerApplication.eventBus.on("pagerendered", (e) => { + removePDFJSButtons(); + + let textSelectionRedactionBtn = document.getElementById( + "man-text-select-redact" + ); + let drawRedactionBtn = document.getElementById("man-shape-redact"); + + textSelectionRedactionBtn.onclick = _handleTextSelectionRedactionBtnClick; + drawRedactionBtn.onclick = _handleDrawRedactionBtnClick; + + let layer = e.source.textLayer.div; + layer.setAttribute("data-page", e.pageNumber); + if ( + redactedPagesDetails.all || + redactedPagesDetails.numbers.has(e.pageNumber) + ) { + layer.classList.add("redacted-page-preview"); + } else { + layer.classList.remove("redacted-page-preview"); + } + + zoomScaleValue = e.source.scale ? e.source.scale : e.source.pageScale; + document.documentElement.style.setProperty("--zoom-scale", zoomScaleValue); + + let redactionsContainer = document.getElementById( + `redactions-container-${e.pageNumber}` + ); + if (!redactionsContainer && !redactionContainersDivs[`${e.pageNumber}`]) { + redactionsContainer = document.createElement("div"); + redactionsContainer.style.position = "relative"; + redactionsContainer.style.height = "100%"; + redactionsContainer.style.width = "100%"; + redactionsContainer.id = `redactions-container-${e.pageNumber}`; + redactionsContainer.style.setProperty("z-index", "unset"); + + layer.appendChild(redactionsContainer); + redactionContainersDivs[`${e.pageNumber}`] = redactionsContainer; + } else if ( + !redactionsContainer && + redactionContainersDivs[`${e.pageNumber}`] + ) { + redactionsContainer = redactionContainersDivs[`${e.pageNumber}`]; + + layer.appendChild(redactionsContainer); + // Dispatch event to update text layer references for elements' events + redactionsContainer + .querySelectorAll(".selected-wrapper") + .forEach((area) => + area.dispatchEvent( + new CustomEvent("textLayer-reference-changed", { + bubbles: true, + detail: { textLayer: layer }, + }) + ) + ); + } + + document.onpointerup = (e) => { + if (drawingLayer && e.target != drawingLayer && e.button == 0) + drawingLayer.dispatchEvent(new Event("external-pointerup")); + }; + + initDraw(layer, redactionsContainer); + + function _handleTextSelectionRedactionBtnClick(e) { + if (textSelectionRedactionBtn.classList.contains("toggled")) { + resetTextSelection(); + } else { + resetDrawRedactions(); + textSelectionRedactionBtn.classList.add("toggled"); + redactionMode = RedactionModes.TEXT; + const containsText = + window.getSelection() && window.getSelection().toString() != ""; + applyRedactionBtn.disabled = !containsText; + applyRedactionBtn.classList.remove("d-none"); + } + } + + function resetTextSelection() { + textSelectionRedactionBtn.classList.remove("toggled"); + redactionMode = RedactionModes.NONE; + clearSelection(); + applyRedactionBtn.disabled = true; + applyRedactionBtn.classList.add("d-none"); + } + + function clearSelection() { + if (window.getSelection) { + if (window.getSelection().empty) { + // Chrome + window.getSelection().empty(); + } else if (window.getSelection().removeAllRanges) { + // Firefox + window.getSelection().removeAllRanges(); + } + } else if (document.selection) { + // IE? + document.selection.empty(); + } + } + + function _handleDrawRedactionBtnClick(e) { + if (drawRedactionBtn.classList.contains("toggled")) { + resetDrawRedactions(); + } else { + resetTextSelection(); + drawRedactionBtn.classList.add("toggled"); + document.documentElement.style.setProperty( + "--textLayer-pointer-events", + "none" + ); + document.documentElement.style.setProperty( + "--textLayer-user-select", + "none" + ); + redactionMode = RedactionModes.DRAWING; + } + } + + function resetDrawRedactions() { + redactionMode = RedactionModes.NONE; + drawRedactionBtn.classList.remove("toggled"); + document.documentElement.style.setProperty( + "--textLayer-pointer-events", + "auto" + ); + document.documentElement.style.setProperty( + "--textLayer-user-select", + "auto" + ); + window.dispatchEvent(new CustomEvent("reset-drawing", { bubbles: true })); + } + + function initDraw(canvas, redactionsContainer) { + let mouse = { + x: 0, + y: 0, + startX: 0, + startY: 0, + }; + let element = null; + let drawnRedaction = null; + + window.addEventListener("reset-drawing", (e) => { + _clearDrawing(); + canvas.style.cursor = "default"; + document.documentElement.style.setProperty( + "--textLayer-pointer-events", + "auto" + ); + document.documentElement.style.setProperty( + "--textLayer-user-select", + "auto" + ); + }); + + window.addEventListener("drawing-entered", (e) => { + let target = e.detail?.target; + if (canvas === target) return; + _clearDrawing(); + }); + + window.addEventListener("cancel-drawing", (e) => { + _clearDrawing(); + canvas.style.cursor = "default"; + }); + + function setMousePosition(e) { + if (isChromium || isSafari || isWebkit) { + mouse.x = e.offsetX; + mouse.y = e.offsetY; + } else if (isFirefox || isGecko) { + mouse.x = e.layerX; + mouse.y = e.layerY; + } else { + let rect = (e.target || e.srcElement).getBoundingClientRect(); + mouse.x = e.clientX - rect.left; + mouse.y = e.clientY - rect.top; + } + } + + window.onkeydown = (e) => { + if (e.key === "Escape" && redactionMode === RedactionModes.DRAWING) { + window.dispatchEvent( + new CustomEvent("cancel-drawing", { bubbles: true }) + ); + } + }; + + canvas.onpointerenter = (e) => { + window.dispatchEvent( + new CustomEvent("drawing-entered", { + bubbles: true, + detail: { target: canvas }, + }) + ); + }; + + canvas.onpointerup = (e) => { + let isLeftClick = e.button == 0; + if (!isLeftClick) return; + + if (element !== null) { + _saveAndResetDrawnRedaction(); + console.log("finished."); + } + }; + + canvas.addEventListener("external-pointerup", (e) => { + if (element != null) { + _saveAndResetDrawnRedaction(); + } + }); + + canvas.onpointerleave = (e) => { + let ev = copyEvent(e, "pointerleave"); + let { left, top } = calculateMouseCoordinateToRotatedBox(canvas, e); + + ev.layerX = left; + ev.offsetX = left; + + ev.layerY = top; + ev.offsetY = top; + + setMousePosition(ev); + if (element !== null) { + draw(); + } + }; + + canvas.onpointerdown = (e) => { + let isLeftClick = e.button == 0; + if (!isLeftClick) return; + + if (element == null) { + if (redactionMode !== RedactionModes.DRAWING) { + console.warn( + "Drawing attempt when redaction mode is", + redactionMode.description + ); + return; + } + console.log("begun."); + _captureAndDrawStartingPointOfDrawnRedaction(); + } + }; + + canvas.onpointermove = function (e) { + setMousePosition(e); + if (element !== null) { + draw(); + } + }; + + function draw() { + let scaleFactor = _getScaleFactor(); + + let width = Math.abs(mouse.x - mouse.startX); + element.style.width = _toCalcZoomPx(_scaleToDisplay(width)); + + let height = Math.abs(mouse.y - mouse.startY); + element.style.height = _toCalcZoomPx(_scaleToDisplay(height)); + + let left = mouse.x - mouse.startX < 0 ? mouse.x : mouse.startX; + element.style.left = _toCalcZoomPx(_scaleToDisplay(left)); + + let top = mouse.y - mouse.startY < 0 ? mouse.y : mouse.startY; + element.style.top = _toCalcZoomPx(_scaleToDisplay(top)); + + if (drawnRedaction) { + drawnRedaction.left = _scaleToPDF(left, scaleFactor); + drawnRedaction.top = _scaleToPDF(top, scaleFactor); + drawnRedaction.width = _scaleToPDF(width, scaleFactor); + drawnRedaction.height = _scaleToPDF(height, scaleFactor); + } + } + + function _clearDrawing() { + if (element) element.remove(); + if (drawingLayer == canvas) drawingLayer = null; + element = null; + drawnRedaction = null; + } + + function _saveAndResetDrawnRedaction() { + if (!element) return; + if ( + !element.style.height || + element.style.height.includes("(0px * var") || + !element.style.width || + element.style.width.includes("(0px * var") + ) { + element.remove(); + } else { + element.classList.add("selected-wrapper"); + element.classList.remove("rectangle"); + + addRedactionOverlay(element, drawnRedaction, canvas); + redactions.push(drawnRedaction); + _setRedactionsInput(redactions); + } + drawingLayer = null; + element = null; + drawnRedaction = null; + canvas.style.cursor = "default"; + } + + function _captureAndDrawStartingPointOfDrawnRedaction() { + mouse.startX = mouse.x; + mouse.startY = mouse.y; + + element = document.createElement("div"); + element.className = "rectangle"; + drawingLayer = canvas; + + let left = mouse.x; + let top = mouse.y; + + element.style.left = _toCalcZoomPx(_scaleToDisplay(left)); + element.style.top = _toCalcZoomPx(_scaleToDisplay(top)); + + let scaleFactor = _getScaleFactor(); + let color = redactionsPalette.style.getPropertyValue("--palette-color"); + + element.style.setProperty("--palette-color", color); + + drawnRedaction = { + left: _scaleToPDF(left, scaleFactor), + top: _scaleToPDF(top, scaleFactor), + width: 0.0, + height: 0.0, + color: color, + pageNumber: parseInt(canvas.getAttribute("data-page")), + element: element, + id: UUID.uuidv4(), + }; + + redactionsContainer.appendChild(element); + canvas.style.cursor = "crosshair"; + } + } + }); + + PDFViewerApplication.eventBus.on("rotationchanging", (e) => { + if (!activeOverlay) return; + hideOverlay(); + }); + + function _getScaleFactor() { + return parseFloat(viewer.style.getPropertyValue("--scale-factor")); + } + + function getTextLayer(element) { + let current = element; + while (current) { + if ( + current instanceof HTMLDivElement && + current.classList.contains("textLayer") + ) + return current; + current = current.parentElement; + } + + return current; + } + + document.onclick = (e) => { + if ( + (e.target && + e.target.classList.contains("selected-wrapper") && + e.target.firstChild == activeOverlay) || + e.target == activeOverlay + ) + return; + if (activeOverlay) hideOverlay(); + }; + + document.addEventListener("keydown", (e) => { + if (e.key === "Delete" && activeOverlay) { + activeOverlay + .querySelector(".delete-icon") + ?.dispatchEvent(new Event("click", { bubbles: true })); + return; + } + const isRedactionShortcut = + e.ctrlKey && (e.key == "s" || e.key == "S" || e.code == "KeyS"); + if (!isRedactionShortcut || redactionMode !== RedactionModes.TEXT) return; + + redactTextSelection(); + }); + + function rotateTextBox(rect, textLayerRect, angle) { + let left, top, width, height; + if (!angle || angle == 0) { + left = rect.left - textLayerRect.left; + top = rect.top - textLayerRect.top; + width = rect.width; + height = rect.height; + } else if (angle == 90) { + left = rect.top - textLayerRect.top; + top = textLayerRect.right - rect.right; + width = rect.height; + height = rect.width; + } else if (angle == 180) { + left = textLayerRect.right - rect.right; + top = textLayerRect.bottom - rect.bottom; + width = rect.width; + height = rect.height; + } else if (angle == 270) { + left = textLayerRect.bottom - rect.bottom; + top = rect.left - textLayerRect.left; + width = rect.height; + height = rect.width; + } + + return { left, top, width, height }; + } + + function redactTextSelection() { + let selection = window.getSelection(); + if (!selection || selection.rangeCount <= 0) return; + let range = selection.getRangeAt(0); + + let textLayer = getTextLayer(range.startContainer); + if (!textLayer) return; + + const pageNumber = textLayer.getAttribute("data-page"); + let redactionsArea = textLayer.querySelector( + `#redactions-container-${pageNumber}` + ); + let textLayerRect = textLayer.getBoundingClientRect(); + + let rects = range.getClientRects(); + let scaleFactor = _getScaleFactor(); + + let color = redactionsPalette.style.getPropertyValue("--palette-color"); + + let angle = textLayer.getAttribute("data-main-rotation"); + for (const rect of rects) { + if (!rect || !rect.width || !rect.height) continue; + let redactionElement = document.createElement("div"); + redactionElement.classList.add("selected-wrapper"); + + let { left, top, width, height } = rotateTextBox( + rect, + textLayerRect, + angle + ); + + let leftDisplayScaled = _scaleToDisplay(left); + let topDisplayScaled = _scaleToDisplay(top); + let widthDisplayScaled = _scaleToDisplay(width); + let heightDisplayScaled = _scaleToDisplay(height); + + let redactionInfo = { + left: _scaleToPDF(left, scaleFactor), + top: _scaleToPDF(top, scaleFactor), + width: _scaleToPDF(width, scaleFactor), + height: _scaleToPDF(height, scaleFactor), + pageNumber: parseInt(pageNumber), + color: color, + element: redactionElement, + id: UUID.uuidv4(), + }; + + redactions.push(redactionInfo); + + redactionElement.style.left = _toCalcZoomPx(leftDisplayScaled); + redactionElement.style.top = _toCalcZoomPx(topDisplayScaled); + + redactionElement.style.width = _toCalcZoomPx(widthDisplayScaled); + redactionElement.style.height = _toCalcZoomPx(heightDisplayScaled); + redactionElement.style.setProperty("--palette-color", color); + + redactionsArea.appendChild(redactionElement); + + addRedactionOverlay(redactionElement, redactionInfo, textLayer); + } + + _setRedactionsInput(redactions); + applyRedactionBtn.disabled = true; + } + + function _scaleToDisplay(value) { + return value / zoomScaleValue; + } + + function _scaleToPDF(value, scaleFactor) { + if (!scaleFactor) + scaleFactor = document.documentElement.getPropertyValue("--scale-factor"); + return value / scaleFactor; + } + + function _toCalcZoomPx(val) { + return `calc(${val}px * var(--zoom-scale))`; + } + + function _setRedactionsInput(redactions) { + let stringifiedRedactions = JSON.stringify( + redactions.filter(_nonEmptyRedaction).map((red) => ({ + x: red.left, + y: red.top, + width: red.width, + height: red.height, + color: red.color, + page: red.pageNumber, + })) + ); + redactionsInput.value = stringifiedRedactions; + } + + function addRedactionOverlay(redactionElement, redactionInfo, textLayer) { + let redactionOverlay = document.createElement("div"); + + let deleteBtn = $( + `` + )[0]; + + deleteBtn.onclick = (e) => { + redactions = redactions.filter((red) => redactionInfo.id != red.id); + redactionElement.remove(); + _setRedactionsInput(redactions); + activeOverlay = null; + }; + + let colorPaletteLabel = $( + `` + )[0]; + + let colorPaletteInput = $(` + + `)[0]; + + colorPaletteLabel.appendChild(colorPaletteInput); + + colorPaletteLabel.onclick = (e) => { + if (colorPaletteLabel === e.target) { + e.stopPropagation(); + } + }; + + colorPaletteInput.onchange = (e) => { + let color = e.target.value; + redactionElement.style.setProperty("--palette-color", color); + let redactionIdx = redactions.findIndex( + (red) => redactionInfo.id === red.id + ); + if (redactionIdx < 0) return; + redactions[redactionIdx].color = color; + _setRedactionsInput(redactions); + }; + + redactionOverlay.appendChild(deleteBtn); + redactionOverlay.appendChild(colorPaletteLabel); + + redactionOverlay.classList.add("redaction-overlay"); + redactionOverlay.style.display = "none"; + + redactionElement.addEventListener("textLayer-reference-changed", (e) => { + textLayer = e.detail.textLayer; + }); + + redactionElement.onclick = (e) => { + if (e.target != redactionElement) return; + if (activeOverlay) hideOverlay(); + redactionElement.classList.add("active-redaction"); + activeOverlay = redactionOverlay; + _adjustActiveOverlayCoordinates(); + }; + + redactionElement.appendChild(redactionOverlay); + + // Adjust active overlay coordinates to avoid placing the overlay out of page bounds + function _adjustActiveOverlayCoordinates() { + activeOverlay.style.visibility = "hidden"; + activeOverlay.style.display = "flex"; + textLayer = textLayer || getTextLayer(redactionElement); + let angle = parseInt(textLayer.getAttribute("data-main-rotation")); + if (textLayer) + redactionOverlay.style.transform = `rotate(${angle * -1}deg)`; + + activeOverlay.style.removeProperty("left"); + activeOverlay.style.removeProperty("top"); + + let textRect = textLayer.getBoundingClientRect(); + let overlayRect = redactionOverlay.getBoundingClientRect(); + + let leftOffset = 0, + topOffset = 0; + if (overlayRect.right > textRect.right) { + leftOffset = textRect.right - overlayRect.right; + } else if (overlayRect.left < textRect.left) { + leftOffset = textRect.left - overlayRect.left; + } + + if (overlayRect.top < textRect.top) { + topOffset = textRect.top - overlayRect.top; + } else if (overlayRect.bottom > textRect.bottom) { + topOffset = textRect.bottom - overlayRect.bottom; + } + + switch (angle) { + case 90: + [leftOffset, topOffset] = [topOffset, -leftOffset]; + break; + case 180: + [leftOffset, topOffset] = [-leftOffset, -topOffset]; + break; + case 270: + [leftOffset, topOffset] = [-topOffset, leftOffset]; + break; + } + + if (leftOffset != 0) + activeOverlay.style.left = `calc(50% + ${leftOffset}px`; + if (topOffset != 0) + activeOverlay.style.top = `calc(100% + ${topOffset}px`; + activeOverlay.style.visibility = "unset"; + } + } +}); + +function calculateMouseCoordinateToRotatedBox(canvas, e) { + let textRect = canvas.getBoundingClientRect(); + let left, + top = 0; + let angle = parseInt(canvas.getAttribute("data-main-rotation")); + switch (angle) { + case 0: + left = clamp(e.pageX - textRect.left, 0, textRect.width); + top = clamp(e.pageY - textRect.top, 0, textRect.height); + break; + + case 90: + left = clamp(e.pageY - textRect.top, 0, textRect.height); + top = clamp(textRect.right - e.pageX, 0, textRect.width); + break; + case 180: + left = clamp(textRect.right - e.pageX, 0, textRect.width); + top = clamp(textRect.bottom - e.pageY, 0, textRect.width); + break; + case 270: + left = clamp(textRect.bottom - e.pageY, 0, textRect.height); + top = clamp(e.pageX - textRect.left, 0, textRect.width); + break; + } + return { left, top }; +} + +function clamp(value, min, max) { + return Math.max(min, Math.min(value, max)); +} + +function addPageRedactionPreviewToPages(pagesDetailed, totalPagesCount) { + if (pagesDetailed.all) { + addRedactedPagePreview("#viewer > .page"); + addRedactedThumbnailPreview("#thumbnailView > a > div.thumbnail"); + } else { + removeRedactedPagePreview(); + + setPageNumbersFromRange(pagesDetailed, totalPagesCount); + setPageNumbersFromNFunctions(pagesDetailed, totalPagesCount); + + let pageNumbers = Array.from(pagesDetailed.numbers); + if (pageNumbers?.length > 0) { + let pagesSelector = pageNumbers + .map((number) => `#viewer > .page[data-page-number="${number}"]`) + .join(","); + addRedactedPagePreview(pagesSelector); + let thumbnailSelector = pageNumbers + .map( + (number) => + `#thumbnailView > a > div.thumbnail[data-page-number="${number}"]` + ) + .join(","); + addRedactedThumbnailPreview(thumbnailSelector); + } + } +} + +function resetFieldFeedbackMessages(input, parentElement) { + if (parentElement) + parentElement + .querySelectorAll(".invalid-feedback") + .forEach((feedback) => feedback.remove()); + if (input) { + input.classList.remove("is-invalid"); + input.classList.remove("is-valid"); + } +} + +function displayFieldErrorMessages(input, errors) { + input.classList.add("is-invalid"); + errors.forEach((error) => { + let element = document.createElement("div"); + element.classList.add("invalid-feedback"); + element.classList.add("list-styling"); + element.textContent = error; + input.parentElement.appendChild(element); + }); +} + +function setPageRedactionColor(color) { + document.documentElement.style.setProperty("--page-redaction-color", color); +} + +function setPageNumbersFromNFunctions(pagesDetailed, totalPagesCount) { + pagesDetailed.functions.forEach((fun) => { + if (!isValidFunction(fun)) return; + for (let n = 1; n <= totalPagesCount; n++) { + let pageNumber = eval(fun); + if (!pageNumber || pageNumber <= 0 || pageNumber > totalPagesCount) + continue; + pagesDetailed.numbers.add(pageNumber); + } + }); +} + +function setPageNumbersFromRange(pagesDetailed, totalPagesCount) { + pagesDetailed.ranges.forEach((range) => { + for (let i = range.low; i <= range.high && i <= totalPagesCount; i++) { + pagesDetailed.numbers.add(i); + } + }); +} + +function hideOverlay() { + activeOverlay.style.display = "none"; + activeOverlay.parentElement.classList.remove("active-redaction"); + activeOverlay = null; +} + +function _isEmptyRedaction(redaction) { + return ( + redaction.left == null || + redaction.top == null || + redaction.width == null || + redaction.height == null || + redaction.pageNumber == null + ); +} + +function _nonEmptyRedaction(redaction) { + return !_isEmptyRedaction(redaction); +} + +function copyEvent(e, type) { + if (type == "pointerleave") + return { + layerX: e.layerX, + layerY: e.layerY, + pageX: e.pageX, + pageY: e.pageY, + clientX: e.clientX, + clientY: e.clientY, + button: e.button, + height: e.height, + width: e.width, + offsetX: e.offsetX, + offsetY: e.offsetY, + pointerId: e.pointerId, + pointerType: e.pointerType, + type: e.type, + screenX: e.screenX, + screenY: e.screenY, + tiltX: e.tiltX, + tiltY: e.tiltY, + x: e.x, + y: e.y, + altKey: e.altKey, + ctrlKey: e.ctrlKey, + isPrimary: e.isPrimary, + isTrusted: e.isTrusted, + metaKey: e.metaKey, + pressure: e.pressure, + returnValue: e.returnValue, + shiftKey: e.shiftKey, + timeStamp: e.timeStamp, + which: e.which, + twist: e.twist, + tangentialPressure: e.tangentialPressure, + target: e.target, + srcElement: e.srcElement, + relatedTarget: e.relatedTarget, + rangeOffset: e.rangeOffset, + rangeParent: e.rangeParent, + explicitOriginalTarget: e.explicitOriginalTarget, + eventPhase: e.eventPhase, + detail: e.detail, + defaultPrevented: e.defaultPrevented, + currentTarget: e.currentTarget, + buttons: e.buttons, + azimuthAngle: e.azimuthAngle, + altitudeAngle: e.altitudeAngle, + }; + + return {}; +} diff --git a/src/main/resources/static/js/search.js b/src/main/resources/static/js/search.js index a4d292ea4f..85d69f8460 100644 --- a/src/main/resources/static/js/search.js +++ b/src/main/resources/static/js/search.js @@ -28,7 +28,7 @@ window.onload = function () { // Show search results as user types in search box document.querySelector("#navbarSearchInput").addEventListener("input", function (e) { var searchText = e.target.value.trim().toLowerCase(); // Trim whitespace and convert to lowercase - var items = document.querySelectorAll(".dropdown-item, .nav-link"); + var items = document.querySelectorAll('a.dropdown-item[data-bs-tags]'); var resultsBox = document.querySelector("#searchResults"); // Clear any previous results @@ -83,7 +83,7 @@ searchDropdown.addEventListener('shown.bs.dropdown', function () { searchDropdown.addEventListener('mouseenter', function () { const dropdownInstance = new bootstrap.Dropdown(searchDropdown); dropdownInstance.show(); - + setTimeout(() => { searchInput.focus(); }, 100); diff --git a/src/main/resources/static/js/sign/signature-canvas.js b/src/main/resources/static/js/sign/signature-canvas.js new file mode 100644 index 0000000000..03052d9ce4 --- /dev/null +++ b/src/main/resources/static/js/sign/signature-canvas.js @@ -0,0 +1,85 @@ +const signaturePadCanvas = document.getElementById('drawing-pad-canvas'); +const signaturePad = new SignaturePad(signaturePadCanvas, { + minWidth: 1, + maxWidth: 2, + penColor: 'black', +}); + +function addDraggableFromPad() { + if (signaturePad.isEmpty()) return; + const startTime = Date.now(); + const croppedDataUrl = getCroppedCanvasDataUrl(signaturePadCanvas); + console.log(Date.now() - startTime); + DraggableUtils.createDraggableCanvasFromUrl(croppedDataUrl); +} + +function getCroppedCanvasDataUrl(canvas) { + let originalCtx = canvas.getContext('2d'); + let originalWidth = canvas.width; + let originalHeight = canvas.height; + let imageData = originalCtx.getImageData(0, 0, originalWidth, originalHeight); + + let minX = originalWidth + 1, + maxX = -1, + minY = originalHeight + 1, + maxY = -1, + x = 0, + y = 0, + currentPixelColorValueIndex; + + for (y = 0; y < originalHeight; y++) { + for (x = 0; x < originalWidth; x++) { + currentPixelColorValueIndex = (y * originalWidth + x) * 4; + let currentPixelAlphaValue = imageData.data[currentPixelColorValueIndex + 3]; + if (currentPixelAlphaValue > 0) { + if (minX > x) minX = x; + if (maxX < x) maxX = x; + if (minY > y) minY = y; + if (maxY < y) maxY = y; + } + } + } + + let croppedWidth = maxX - minX; + let croppedHeight = maxY - minY; + if (croppedWidth < 0 || croppedHeight < 0) return null; + let cuttedImageData = originalCtx.getImageData(minX, minY, croppedWidth, croppedHeight); + + let croppedCanvas = document.createElement('canvas'), + croppedCtx = croppedCanvas.getContext('2d'); + + croppedCanvas.width = croppedWidth; + croppedCanvas.height = croppedHeight; + croppedCtx.putImageData(cuttedImageData, 0, 0); + + return croppedCanvas.toDataURL(); +} + +function isMobile() { + const userAgentCheck = /Mobi|Android|iPhone|iPad|iPod|Windows Phone|Opera Mini/i.test(navigator.userAgent); + const viewportCheck = window.matchMedia('(max-width: 768px)').matches; + return userAgentCheck || viewportCheck; +} + +function getDeviceScalingFactor() { + return isMobile() ? 3 : 10; +} + +function resizeCanvas() { + const ratio = Math.max(window.devicePixelRatio || 1, 1); + const additionalFactor = getDeviceScalingFactor(); + + signaturePadCanvas.width = signaturePadCanvas.offsetWidth * ratio * additionalFactor; + signaturePadCanvas.height = signaturePadCanvas.offsetHeight * ratio * additionalFactor; + signaturePadCanvas.getContext('2d').scale(ratio * additionalFactor, ratio * additionalFactor); + + signaturePad.clear(); +} + +new IntersectionObserver((entries, observer) => { + if (entries.some((entry) => entry.intersectionRatio > 0)) { + resizeCanvas(); + } +}).observe(signaturePadCanvas); + +new ResizeObserver(resizeCanvas).observe(signaturePadCanvas); diff --git a/src/main/resources/static/js/uuid.js b/src/main/resources/static/js/uuid.js new file mode 100644 index 0000000000..a68c1922c4 --- /dev/null +++ b/src/main/resources/static/js/uuid.js @@ -0,0 +1,9 @@ +class UUID { + static uuidv4() { + return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, c => + (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16) + ); + } +} + +export default UUID; diff --git a/src/main/resources/static/pdfjs-legacy/css/viewer-redact.css b/src/main/resources/static/pdfjs-legacy/css/viewer-redact.css new file mode 100644 index 0000000000..c8ba631ffa --- /dev/null +++ b/src/main/resources/static/pdfjs-legacy/css/viewer-redact.css @@ -0,0 +1,5084 @@ +/* Copyright 2014 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.dialog { + --dialog-bg-color: white; + --dialog-border-color: white; + --dialog-shadow: 0 2px 14px 0 rgb(58 57 68 / 0.2); + --text-primary-color: #15141a; + --text-secondary-color: #5b5b66; + --hover-filter: brightness(0.9); + --focus-ring-color: #0060df; + --focus-ring-outline: 2px solid var(--focus-ring-color); + + --textarea-border-color: #8f8f9d; + --textarea-bg-color: white; + --textarea-fg-color: var(--text-secondary-color); + + --radio-bg-color: #f0f0f4; + --radio-checked-bg-color: #fbfbfe; + --radio-border-color: #8f8f9d; + --radio-checked-border-color: #0060df; + + --button-secondary-bg-color: #f0f0f4; + --button-secondary-fg-color: var(--text-primary-color); + --button-secondary-border-color: var(--button-secondary-bg-color); + --button-secondary-hover-bg-color: var(--button-secondary-bg-color); + --button-secondary-hover-fg-color: var(--button-secondary-fg-color); + --button-secondary-hover-border-color: var(--button-secondary-hover-bg-color); + + --button-primary-bg-color: #0060df; + --button-primary-fg-color: #fbfbfe; + --button-primary-hover-bg-color: var(--button-primary-bg-color); + --button-primary-hover-fg-color: var(--button-primary-fg-color); + --button-primary-hover-border-color: var(--button-primary-hover-bg-color); + + font: message-box; + font-size: 13px; + font-weight: 400; + line-height: 150%; + border-radius: 4px; + padding: 12px 16px; + border: 1px solid var(--dialog-border-color); + background: var(--dialog-bg-color); + color: var(--text-primary-color); + box-shadow: var(--dialog-shadow); +} + +@media (prefers-color-scheme: dark) { + :where(html:not(.is-light)) .dialog { + --dialog-bg-color: #1c1b22; + --dialog-border-color: #1c1b22; + --dialog-shadow: 0 2px 14px 0 #15141a; + --text-primary-color: #fbfbfe; + --text-secondary-color: #cfcfd8; + --focus-ring-color: #0df; + --hover-filter: brightness(1.4); + + --textarea-bg-color: #42414d; + + --radio-bg-color: #2b2a33; + --radio-checked-bg-color: #15141a; + --radio-checked-border-color: #0df; + + --button-secondary-bg-color: #2b2a33; + --button-primary-bg-color: #0df; + --button-primary-fg-color: #15141a; + } +} + +:where(html.is-dark) .dialog { + --dialog-bg-color: #1c1b22; + --dialog-border-color: #1c1b22; + --dialog-shadow: 0 2px 14px 0 #15141a; + --text-primary-color: #fbfbfe; + --text-secondary-color: #cfcfd8; + --focus-ring-color: #0df; + --hover-filter: brightness(1.4); + + --textarea-bg-color: #42414d; + + --radio-bg-color: #2b2a33; + --radio-checked-bg-color: #15141a; + --radio-checked-border-color: #0df; + + --button-secondary-bg-color: #2b2a33; + --button-primary-bg-color: #0df; + --button-primary-fg-color: #15141a; +} + +@media screen and (forced-colors: active) { + .dialog { + --dialog-bg-color: Canvas; + --dialog-border-color: CanvasText; + --dialog-shadow: none; + --text-primary-color: CanvasText; + --text-secondary-color: CanvasText; + --hover-filter: none; + --focus-ring-color: ButtonBorder; + + --textarea-border-color: ButtonBorder; + --textarea-bg-color: Field; + --textarea-fg-color: ButtonText; + + --radio-bg-color: ButtonFace; + --radio-checked-bg-color: ButtonFace; + --radio-border-color: ButtonText; + --radio-checked-border-color: ButtonText; + + --button-secondary-bg-color: ButtonFace; + --button-secondary-fg-color: ButtonText; + --button-secondary-border-color: ButtonText; + --button-secondary-hover-bg-color: AccentColor; + --button-secondary-hover-fg-color: AccentColorText; + + --button-primary-bg-color: ButtonText; + --button-primary-fg-color: ButtonFace; + --button-primary-hover-bg-color: AccentColor; + --button-primary-hover-fg-color: AccentColorText; + } +} + +.dialog .mainContainer *:focus-visible { + outline: var(--focus-ring-outline); + outline-offset: 2px; +} + +.dialog .mainContainer .radio { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 4px; +} + +.dialog .mainContainer .radio > .radioButton { + display: flex; + gap: 8px; + align-self: stretch; + align-items: center; +} + +.dialog .mainContainer .radio > .radioButton input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + box-sizing: border-box; + width: 16px; + height: 16px; + border-radius: 50%; + background-color: var(--radio-bg-color); + border: 1px solid var(--radio-border-color); +} + +.dialog .mainContainer .radio > .radioButton input:hover { + filter: var(--hover-filter); +} + +.dialog .mainContainer .radio > .radioButton input:checked { + background-color: var(--radio-checked-bg-color); + border: 4px solid var(--radio-checked-border-color); +} + +.dialog .mainContainer .radio > .radioLabel { + display: flex; + padding-inline-start: 24px; + align-items: flex-start; + gap: 10px; + align-self: stretch; +} + +.dialog .mainContainer .radio > .radioLabel > span { + flex: 1 0 0; + font-size: 11px; + color: var(--text-secondary-color); +} + +.dialog .mainContainer button { + border-radius: 4px; + border: 1px solid; + font: menu; + font-weight: 600; + padding: 4px 16px; + width: auto; + height: 32px; +} + +.dialog .mainContainer button:hover { + cursor: pointer; + filter: var(--hover-filter); +} + +.dialog .mainContainer button.secondaryButton { + color: var(--button-secondary-fg-color); + background-color: var(--button-secondary-bg-color); + border-color: var(--button-secondary-border-color); +} + +.dialog .mainContainer button.secondaryButton:hover { + color: var(--button-secondary-hover-fg-color); + background-color: var(--button-secondary-hover-bg-color); + border-color: var(--button-secondary-hover-border-color); +} + +.dialog .mainContainer button.primaryButton { + color: var(--button-primary-hover-fg-color); + background-color: var(--button-primary-hover-bg-color); + border-color: var(--button-primary-hover-border-color); + opacity: 1; +} + +.dialog .mainContainer button.primaryButton:hover { + color: var(--button-primary-hover-fg-color); + background-color: var(--button-primary-hover-bg-color); + border-color: var(--button-primary-hover-border-color); +} + +.dialog .mainContainer textarea { + font: inherit; + padding: 8px; + resize: none; + margin: 0; + box-sizing: border-box; + border-radius: 4px; + border: 1px solid var(--textarea-border-color); + background: var(--textarea-bg-color); + color: var(--textarea-fg-color); +} + +.dialog .mainContainer textarea:focus { + outline-offset: 0; + border-color: transparent; +} + +.dialog .mainContainer textarea:disabled { + pointer-events: none; + opacity: 0.4; +} + +.textLayer { + position: absolute; + text-align: initial; + inset: 0; + overflow: clip; + opacity: 1; + line-height: 1; + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + text-size-adjust: none; + forced-color-adjust: none; + transform-origin: 0 0; + caret-color: CanvasText; + z-index: 0; +} + +.textLayer.highlighting { + touch-action: none; +} + +.textLayer :is(span, br) { + color: transparent; + position: absolute; + white-space: pre; + cursor: text; + transform-origin: 0% 0%; +} + +.textLayer > :not(.markedContent), +.textLayer .markedContent span:not(.markedContent) { + z-index: 1; +} + +.textLayer span.markedContent { + top: 0; + height: 0; +} + +.textLayer .highlight { + --highlight-bg-color: rgb(180 0 170 / 0.25); + --highlight-selected-bg-color: rgb(0 100 0 / 0.25); + --highlight-backdrop-filter: none; + --highlight-selected-backdrop-filter: none; + + margin: -1px; + padding: 1px; + background-color: var(--highlight-bg-color); + -webkit-backdrop-filter: var(--highlight-backdrop-filter); + backdrop-filter: var(--highlight-backdrop-filter); + border-radius: 4px; +} + +@media screen and (forced-colors: active) { + .textLayer .highlight { + --highlight-bg-color: transparent; + --highlight-selected-bg-color: transparent; + --highlight-backdrop-filter: var(--hcm-highlight-filter); + --highlight-selected-backdrop-filter: var(--hcm-highlight-selected-filter); + } +} + +.textLayer .highlight.appended { + position: initial; +} + +.textLayer .highlight.begin { + border-radius: 4px 0 0 4px; +} + +.textLayer .highlight.end { + border-radius: 0 4px 4px 0; +} + +.textLayer .highlight.middle { + border-radius: 0; +} + +.textLayer .highlight.selected { + background-color: var(--highlight-selected-bg-color); + -webkit-backdrop-filter: var(--highlight-selected-backdrop-filter); + backdrop-filter: var(--highlight-selected-backdrop-filter); +} + +.textLayer ::-moz-selection { + background: rgba(0 0 255 / 0.25); + background: color-mix(in srgb, AccentColor, transparent 75%); +} + +.textLayer ::selection { + background: rgba(0 0 255 / 0.25); + background: color-mix(in srgb, AccentColor, transparent 75%); +} + +.textLayer br::-moz-selection { + background: transparent; +} + +.textLayer br::selection { + background: transparent; +} + +.textLayer .endOfContent { + display: block; + position: absolute; + inset: 100% 0 0; + z-index: 0; + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.textLayer .endOfContent.active { + top: 0; +} + +.annotationLayer { + --annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); + --input-focus-border-color: Highlight; + --input-focus-outline: 1px solid Canvas; + --input-unfocused-border-color: transparent; + --input-disabled-border-color: transparent; + --input-hover-border-color: black; + --link-outline: none; + + position: absolute; + top: 0; + left: 0; + pointer-events: none; + transform-origin: 0 0; +} + +@media screen and (forced-colors: active) { + .annotationLayer { + --input-focus-border-color: CanvasText; + --input-unfocused-border-color: ActiveText; + --input-disabled-border-color: GrayText; + --input-hover-border-color: Highlight; + --link-outline: 1.5px solid LinkText; + } + + .annotationLayer .textWidgetAnnotation :is(input, textarea):required, + .annotationLayer .choiceWidgetAnnotation select:required, + .annotationLayer + .buttonWidgetAnnotation:is(.checkBox, .radioButton) + input:required { + outline: 1.5px solid selectedItem; + } + + .annotationLayer .linkAnnotation { + outline: var(--link-outline); + } + + .annotationLayer .linkAnnotation:hover { + -webkit-backdrop-filter: var(--hcm-highlight-filter); + backdrop-filter: var(--hcm-highlight-filter); + } + + .annotationLayer .linkAnnotation > a:hover { + opacity: 0 !important; + background: none !important; + box-shadow: none; + } + + .annotationLayer .popupAnnotation .popup { + outline: calc(1.5px * var(--scale-factor)) solid CanvasText !important; + background-color: ButtonFace !important; + color: ButtonText !important; + } + + .annotationLayer .highlightArea:hover::after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + -webkit-backdrop-filter: var(--hcm-highlight-filter); + backdrop-filter: var(--hcm-highlight-filter); + content: ""; + pointer-events: none; + } + + .annotationLayer .popupAnnotation.focused .popup { + outline: calc(3px * var(--scale-factor)) solid Highlight !important; + } +} + +.annotationLayer[data-main-rotation="90"] .norotate { + transform: rotate(270deg) translateX(-100%); +} + +.annotationLayer[data-main-rotation="180"] .norotate { + transform: rotate(180deg) translate(-100%, -100%); +} + +.annotationLayer[data-main-rotation="270"] .norotate { + transform: rotate(90deg) translateY(-100%); +} + +.annotationLayer.disabled section, +.annotationLayer.disabled .popup { + pointer-events: none; +} + +.annotationLayer .annotationContent { + position: absolute; + width: 100%; + height: 100%; + pointer-events: none; +} + +.annotationLayer .annotationContent.freetext { + background: transparent; + border: none; + inset: 0; + overflow: visible; + white-space: nowrap; + font: 10px sans-serif; + line-height: 1.35; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.annotationLayer section { + position: absolute; + text-align: initial; + pointer-events: auto; + box-sizing: border-box; + transform-origin: 0 0; +} + +.annotationLayer section:has(div.annotationContent) canvas.annotationContent { + display: none; +} + +.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a { + position: absolute; + font-size: 1em; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationLayer + :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton):not(.hasBorder) + > a:hover { + opacity: 0.2; + background-color: rgb(255 255 0); + box-shadow: 0 2px 10px rgb(255 255 0); +} + +.annotationLayer .linkAnnotation.hasBorder:hover { + background-color: rgb(255 255 0 / 0.2); +} + +.annotationLayer .hasBorder { + background-size: 100% 100%; +} + +.annotationLayer .textAnnotation img { + position: absolute; + cursor: pointer; + width: 100%; + height: 100%; + top: 0; + left: 0; +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea), +.annotationLayer .choiceWidgetAnnotation select, +.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input { + background-image: var(--annotation-unfocused-field-background); + border: 2px solid var(--input-unfocused-border-color); + box-sizing: border-box; + font: calc(9px * var(--scale-factor)) sans-serif; + height: 100%; + margin: 0; + vertical-align: top; + width: 100%; +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea):required, +.annotationLayer .choiceWidgetAnnotation select:required, +.annotationLayer + .buttonWidgetAnnotation:is(.checkBox, .radioButton) + input:required { + outline: 1.5px solid red; +} + +.annotationLayer .choiceWidgetAnnotation select option { + padding: 0; +} + +.annotationLayer .buttonWidgetAnnotation.radioButton input { + border-radius: 50%; +} + +.annotationLayer .textWidgetAnnotation textarea { + resize: none; +} + +.annotationLayer .textWidgetAnnotation [disabled]:is(input, textarea), +.annotationLayer .choiceWidgetAnnotation select[disabled], +.annotationLayer + .buttonWidgetAnnotation:is(.checkBox, .radioButton) + input[disabled] { + background: none; + border: 2px solid var(--input-disabled-border-color); + cursor: not-allowed; +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea):hover, +.annotationLayer .choiceWidgetAnnotation select:hover, +.annotationLayer + .buttonWidgetAnnotation:is(.checkBox, .radioButton) + input:hover { + border: 2px solid var(--input-hover-border-color); +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea):hover, +.annotationLayer .choiceWidgetAnnotation select:hover, +.annotationLayer .buttonWidgetAnnotation.checkBox input:hover { + border-radius: 2px; +} + +.annotationLayer .textWidgetAnnotation :is(input, textarea):focus, +.annotationLayer .choiceWidgetAnnotation select:focus { + background: none; + border: 2px solid var(--input-focus-border-color); + border-radius: 2px; + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) :focus { + background-image: none; + background-color: transparent; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox :focus { + border: 2px solid var(--input-focus-border-color); + border-radius: 2px; + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.radioButton :focus { + border: 2px solid var(--input-focus-border-color); + outline: var(--input-focus-outline); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before, +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after, +.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before { + background-color: CanvasText; + content: ""; + display: block; + position: absolute; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before, +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after { + height: 80%; + left: 45%; + width: 1px; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before { + transform: rotate(45deg); +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after { + transform: rotate(-45deg); +} + +.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before { + border-radius: 50%; + height: 50%; + left: 25%; + top: 25%; + width: 50%; +} + +.annotationLayer .textWidgetAnnotation input.comb { + font-family: monospace; + padding-left: 2px; + padding-right: 0; +} + +.annotationLayer .textWidgetAnnotation input.comb:focus { + width: 103%; +} + +.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.annotationLayer .fileAttachmentAnnotation .popupTriggerArea { + height: 100%; + width: 100%; +} + +.annotationLayer .popupAnnotation { + position: absolute; + font-size: calc(9px * var(--scale-factor)); + pointer-events: none; + width: -moz-max-content; + width: max-content; + max-width: 45%; + height: auto; +} + +.annotationLayer .popup { + background-color: rgb(255 255 153); + box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) + rgb(136 136 136); + border-radius: calc(2px * var(--scale-factor)); + outline: 1.5px solid rgb(255 255 74); + padding: calc(6px * var(--scale-factor)); + cursor: pointer; + font: message-box; + white-space: normal; + word-wrap: break-word; + pointer-events: auto; +} + +.annotationLayer .popupAnnotation.focused .popup { + outline-width: 3px; +} + +.annotationLayer .popup * { + font-size: calc(9px * var(--scale-factor)); +} + +.annotationLayer .popup > .header { + display: inline-block; +} + +.annotationLayer .popup > .header h1 { + display: inline; +} + +.annotationLayer .popup > .header .popupDate { + display: inline-block; + margin-left: calc(5px * var(--scale-factor)); + width: -moz-fit-content; + width: fit-content; +} + +.annotationLayer .popupContent { + border-top: 1px solid rgb(51 51 51); + margin-top: calc(2px * var(--scale-factor)); + padding-top: calc(2px * var(--scale-factor)); +} + +.annotationLayer .richText > * { + white-space: pre-wrap; + font-size: calc(9px * var(--scale-factor)); +} + +.annotationLayer .popupTriggerArea { + cursor: pointer; +} + +.annotationLayer section svg { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; +} + +.annotationLayer .annotationTextContent { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + color: transparent; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + pointer-events: none; +} + +.annotationLayer .annotationTextContent span { + width: 100%; + display: inline-block; +} + +.annotationLayer svg.quadrilateralsContainer { + contain: strict; + width: 0; + height: 0; + position: absolute; + top: 0; + left: 0; + z-index: -1; +} + +:root { + --xfa-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,"); + --xfa-focus-outline: auto; +} + +@media screen and (forced-colors: active) { + :root { + --xfa-focus-outline: 2px solid CanvasText; + } + .xfaLayer *:required { + outline: 1.5px solid selectedItem; + } +} + +.xfaLayer { + background-color: transparent; +} + +.xfaLayer .highlight { + margin: -1px; + padding: 1px; + background-color: rgb(239 203 237); + border-radius: 4px; +} + +.xfaLayer .highlight.appended { + position: initial; +} + +.xfaLayer .highlight.begin { + border-radius: 4px 0 0 4px; +} + +.xfaLayer .highlight.end { + border-radius: 0 4px 4px 0; +} + +.xfaLayer .highlight.middle { + border-radius: 0; +} + +.xfaLayer .highlight.selected { + background-color: rgb(203 223 203); +} + +.xfaPage { + overflow: hidden; + position: relative; +} + +.xfaContentarea { + position: absolute; +} + +.xfaPrintOnly { + display: none; +} + +.xfaLayer { + position: absolute; + text-align: initial; + top: 0; + left: 0; + transform-origin: 0 0; + line-height: 1.2; +} + +.xfaLayer * { + color: inherit; + font: inherit; + font-style: inherit; + font-weight: inherit; + font-kerning: inherit; + letter-spacing: -0.01px; + text-align: inherit; + text-decoration: inherit; + box-sizing: border-box; + background-color: transparent; + padding: 0; + margin: 0; + pointer-events: auto; + line-height: inherit; +} + +.xfaLayer *:required { + outline: 1.5px solid red; +} + +.xfaLayer div, +.xfaLayer svg, +.xfaLayer svg * { + pointer-events: none; +} + +.xfaLayer a { + color: blue; +} + +.xfaRich li { + margin-left: 3em; +} + +.xfaFont { + color: black; + font-weight: normal; + font-kerning: none; + font-size: 10px; + font-style: normal; + letter-spacing: 0; + text-decoration: none; + vertical-align: 0; +} + +.xfaCaption { + overflow: hidden; + flex: 0 0 auto; +} + +.xfaCaptionForCheckButton { + overflow: hidden; + flex: 1 1 auto; +} + +.xfaLabel { + height: 100%; + width: 100%; +} + +.xfaLeft { + display: flex; + flex-direction: row; + align-items: center; +} + +.xfaRight { + display: flex; + flex-direction: row-reverse; + align-items: center; +} + +:is(.xfaLeft, .xfaRight) > :is(.xfaCaption, .xfaCaptionForCheckButton) { + max-height: 100%; +} + +.xfaTop { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.xfaBottom { + display: flex; + flex-direction: column-reverse; + align-items: flex-start; +} + +:is(.xfaTop, .xfaBottom) > :is(.xfaCaption, .xfaCaptionForCheckButton) { + width: 100%; +} + +.xfaBorder { + background-color: transparent; + position: absolute; + pointer-events: none; +} + +.xfaWrapped { + width: 100%; + height: 100%; +} + +:is(.xfaTextfield, .xfaSelect):focus { + background-image: none; + background-color: transparent; + outline: var(--xfa-focus-outline); + outline-offset: -1px; +} + +:is(.xfaCheckbox, .xfaRadio):focus { + outline: var(--xfa-focus-outline); +} + +.xfaTextfield, +.xfaSelect { + height: 100%; + width: 100%; + flex: 1 1 auto; + border: none; + resize: none; + background-image: var(--xfa-unfocused-field-background); +} + +.xfaSelect { + padding-inline: 2px; +} + +:is(.xfaTop, .xfaBottom) > :is(.xfaTextfield, .xfaSelect) { + flex: 0 1 auto; +} + +.xfaButton { + cursor: pointer; + width: 100%; + height: 100%; + border: none; + text-align: center; +} + +.xfaLink { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} + +.xfaCheckbox, +.xfaRadio { + width: 100%; + height: 100%; + flex: 0 0 auto; + border: none; +} + +.xfaRich { + white-space: pre-wrap; + width: 100%; + height: 100%; +} + +.xfaImage { + -o-object-position: left top; + object-position: left top; + -o-object-fit: contain; + object-fit: contain; + width: 100%; + height: 100%; +} + +.xfaLrTb, +.xfaRlTb, +.xfaTb { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaLr { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaRl { + display: flex; + flex-direction: row-reverse; + align-items: stretch; +} + +.xfaTb > div { + justify-content: left; +} + +.xfaPosition { + position: relative; +} + +.xfaArea { + position: relative; +} + +.xfaValignMiddle { + display: flex; + align-items: center; +} + +.xfaTable { + display: flex; + flex-direction: column; + align-items: stretch; +} + +.xfaTable .xfaRow { + display: flex; + flex-direction: row; + align-items: stretch; +} + +.xfaTable .xfaRlRow { + display: flex; + flex-direction: row-reverse; + align-items: stretch; + flex: 1; +} + +.xfaTable .xfaRlRow > div { + flex: 1; +} + +:is(.xfaNonInteractive, .xfaDisabled, .xfaReadOnly) :is(input, textarea) { + background: initial; +} + +@media print { + .xfaTextfield, + .xfaSelect { + background: transparent; + } + + .xfaSelect { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + text-indent: 1px; + text-overflow: ""; + } +} + +.canvasWrapper svg { + transform: none; +} + +.canvasWrapper svg[data-main-rotation="90"] mask, +.canvasWrapper svg[data-main-rotation="90"] use:not(.clip, .mask) { + transform: matrix(0, 1, -1, 0, 1, 0); +} + +.canvasWrapper svg[data-main-rotation="180"] mask, +.canvasWrapper svg[data-main-rotation="180"] use:not(.clip, .mask) { + transform: matrix(-1, 0, 0, -1, 1, 1); +} + +.canvasWrapper svg[data-main-rotation="270"] mask, +.canvasWrapper svg[data-main-rotation="270"] use:not(.clip, .mask) { + transform: matrix(0, -1, 1, 0, 0, 1); +} + +.canvasWrapper svg.highlight { + --blend-mode: multiply; + + position: absolute; + mix-blend-mode: var(--blend-mode); +} + +@media screen and (forced-colors: active) { + .canvasWrapper svg.highlight { + --blend-mode: difference; + } +} + +.canvasWrapper svg.highlight:not(.free) { + fill-rule: evenodd; +} + +.canvasWrapper svg.highlightOutline { + position: absolute; + mix-blend-mode: normal; + fill-rule: evenodd; + fill: none; +} + +.canvasWrapper svg.highlightOutline.hovered:not(.free):not(.selected) { + stroke: var(--hover-outline-color); + stroke-width: var(--outline-width); +} + +.canvasWrapper svg.highlightOutline.selected:not(.free) .mainOutline { + stroke: var(--outline-around-color); + stroke-width: calc(var(--outline-width) + 2 * var(--outline-around-width)); +} + +.canvasWrapper svg.highlightOutline.selected:not(.free) .secondaryOutline { + stroke: var(--outline-color); + stroke-width: var(--outline-width); +} + +.canvasWrapper svg.highlightOutline.free.hovered:not(.selected) { + stroke: var(--hover-outline-color); + stroke-width: calc(2 * var(--outline-width)); +} + +.canvasWrapper svg.highlightOutline.free.selected .mainOutline { + stroke: var(--outline-around-color); + stroke-width: calc(2 * (var(--outline-width) + var(--outline-around-width))); +} + +.canvasWrapper svg.highlightOutline.free.selected .secondaryOutline { + stroke: var(--outline-color); + stroke-width: calc(2 * var(--outline-width)); +} + +.toggle-button { + --button-background-color: #f0f0f4; + --button-background-color-hover: #e0e0e6; + --button-background-color-active: #cfcfd8; + --color-accent-primary: #0060df; + --color-accent-primary-hover: #0250bb; + --color-accent-primary-active: #054096; + --border-interactive-color: #8f8f9d; + --border-radius-circle: 9999px; + --border-width: 1px; + --size-item-small: 16px; + --size-item-large: 32px; + --color-canvas: white; + + --toggle-background-color: var(--button-background-color); + --toggle-background-color-hover: var(--button-background-color-hover); + --toggle-background-color-active: var(--button-background-color-active); + --toggle-background-color-pressed: var(--color-accent-primary); + --toggle-background-color-pressed-hover: var(--color-accent-primary-hover); + --toggle-background-color-pressed-active: var(--color-accent-primary-active); + --toggle-border-color: var(--border-interactive-color); + --toggle-border-color-hover: var(--toggle-border-color); + --toggle-border-color-active: var(--toggle-border-color); + --toggle-border-radius: var(--border-radius-circle); + --toggle-border-width: var(--border-width); + --toggle-height: var(--size-item-small); + --toggle-width: var(--size-item-large); + --toggle-dot-background-color: var(--toggle-border-color); + --toggle-dot-background-color-hover: var(--toggle-dot-background-color); + --toggle-dot-background-color-active: var(--toggle-dot-background-color); + --toggle-dot-background-color-on-pressed: var(--color-canvas); + --toggle-dot-margin: 1px; + --toggle-dot-height: calc( + var(--toggle-height) - 2 * var(--toggle-dot-margin) - 2 * + var(--toggle-border-width) + ); + --toggle-dot-width: var(--toggle-dot-height); + --toggle-dot-transform-x: calc( + var(--toggle-width) - 4 * var(--toggle-dot-margin) - var(--toggle-dot-width) + ); + + -webkit-appearance: none; + + -moz-appearance: none; + + appearance: none; + padding: 0; + margin: 0; + border: var(--toggle-border-width) solid var(--toggle-border-color); + height: var(--toggle-height); + width: var(--toggle-width); + border-radius: var(--toggle-border-radius); + background: var(--toggle-background-color); + box-sizing: border-box; + flex-shrink: 0; +} + +@media (prefers-color-scheme: dark) { + :where(html:not(.is-light)) .toggle-button { + --button-background-color: color-mix(in srgb, currentColor 7%, transparent); + --button-background-color-hover: color-mix( + in srgb, + currentColor 14%, + transparent + ); + --button-background-color-active: color-mix( + in srgb, + currentColor 21%, + transparent + ); + --color-accent-primary: #0df; + --color-accent-primary-hover: #80ebff; + --color-accent-primary-active: #aaf2ff; + --border-interactive-color: #bfbfc9; + --color-canvas: #1c1b22; + } +} + +:where(html.is-dark) .toggle-button { + --button-background-color: color-mix(in srgb, currentColor 7%, transparent); + --button-background-color-hover: color-mix( + in srgb, + currentColor 14%, + transparent + ); + --button-background-color-active: color-mix( + in srgb, + currentColor 21%, + transparent + ); + --color-accent-primary: #0df; + --color-accent-primary-hover: #80ebff; + --color-accent-primary-active: #aaf2ff; + --border-interactive-color: #bfbfc9; + --color-canvas: #1c1b22; +} + +@media (forced-colors: active) { + .toggle-button { + --color-accent-primary: ButtonText; + --color-accent-primary-hover: SelectedItem; + --color-accent-primary-active: SelectedItem; + --border-interactive-color: ButtonText; + --button-background-color: ButtonFace; + --border-interactive-color-hover: SelectedItem; + --border-interactive-color-active: SelectedItem; + --border-interactive-color-disabled: GrayText; + --color-canvas: ButtonText; + } +} + +.toggle-button:focus-visible { + outline: var(--focus-outline); + outline-offset: var(--focus-outline-offset); +} + +.toggle-button:enabled:hover { + background: var(--toggle-background-color-hover); + border-color: var(--toggle-border-color); +} + +.toggle-button:enabled:active { + background: var(--toggle-background-color-active); + border-color: var(--toggle-border-color); +} + +.toggle-button[aria-pressed="true"] { + background: var(--toggle-background-color-pressed); + border-color: transparent; +} + +.toggle-button[aria-pressed="true"]:enabled:hover { + background: var(--toggle-background-color-pressed-hover); + border-color: transparent; +} + +.toggle-button[aria-pressed="true"]:enabled:active { + background: var(--toggle-background-color-pressed-active); + border-color: transparent; +} + +.toggle-button::before { + display: block; + content: ""; + background-color: var(--toggle-dot-background-color); + height: var(--toggle-dot-height); + width: var(--toggle-dot-width); + margin: var(--toggle-dot-margin); + border-radius: var(--toggle-border-radius); + translate: 0; +} + +.toggle-button[aria-pressed="true"]::before { + translate: var(--toggle-dot-transform-x); + background-color: var(--toggle-dot-background-color-on-pressed); +} + +.toggle-button[aria-pressed="true"]:enabled:hover::before, +.toggle-button[aria-pressed="true"]:enabled:active::before { + background-color: var(--toggle-dot-background-color-on-pressed); +} + +[dir="rtl"] .toggle-button[aria-pressed="true"]::before { + translate: calc(-1 * var(--toggle-dot-transform-x)); +} + +@media (prefers-reduced-motion: no-preference) { + .toggle-button::before { + transition: translate 100ms; + } +} + +@media (prefers-contrast) { + .toggle-button:enabled:hover { + border-color: var(--toggle-border-color-hover); + } + + .toggle-button:enabled:active { + border-color: var(--toggle-border-color-active); + } + + .toggle-button[aria-pressed="true"]:enabled { + border-color: var(--toggle-border-color); + position: relative; + } + + .toggle-button[aria-pressed="true"]:enabled:hover, + .toggle-button[aria-pressed="true"]:enabled:hover:active { + border-color: var(--toggle-border-color-hover); + } + + .toggle-button[aria-pressed="true"]:enabled:active { + background-color: var(--toggle-dot-background-color-active); + border-color: var(--toggle-dot-background-color-hover); + } + + .toggle-button:hover::before, + .toggle-button:active::before { + background-color: var(--toggle-dot-background-color-hover); + } +} + +@media (forced-colors) { + .toggle-button { + --toggle-dot-background-color: var(--color-accent-primary); + --toggle-dot-background-color-hover: var(--color-accent-primary-hover); + --toggle-dot-background-color-active: var(--color-accent-primary-active); + --toggle-dot-background-color-on-pressed: var(--button-background-color); + --toggle-background-color-disabled: var(--button-background-color-disabled); + --toggle-border-color-hover: var(--border-interactive-color-hover); + --toggle-border-color-active: var(--border-interactive-color-active); + --toggle-border-color-disabled: var(--border-interactive-color-disabled); + } + + .toggle-button[aria-pressed="true"]:enabled::after { + border: 1px solid var(--button-background-color); + content: ""; + position: absolute; + height: var(--toggle-height); + width: var(--toggle-width); + display: block; + border-radius: var(--toggle-border-radius); + inset: -2px; + } + + .toggle-button[aria-pressed="true"]:enabled:active::after { + border-color: var(--toggle-border-color-active); + } +} + +:root { + --navbar-height: 64px; + --outline-width: 2px; + --outline-color: #0060df; + --outline-around-width: 1px; + --outline-around-color: #f0f0f4; + --hover-outline-around-color: var(--outline-around-color); + --focus-outline: solid var(--outline-width) var(--outline-color); + --unfocus-outline: solid var(--outline-width) transparent; + --focus-outline-around: solid var(--outline-around-width) + var(--outline-around-color); + --hover-outline-color: #8f8f9d; + --hover-outline: solid var(--outline-width) var(--hover-outline-color); + --hover-outline-around: solid var(--outline-around-width) + var(--hover-outline-around-color); + --freetext-line-height: 1.35; + --freetext-padding: 2px; + --resizer-bg-color: var(--outline-color); + --resizer-size: 6px; + --resizer-shift: calc( + 0px - (var(--outline-width) + var(--resizer-size)) / 2 - + var(--outline-around-width) + ); + --editorFreeText-editing-cursor: text; + --editorInk-editing-cursor: url(../images/cursor-editorInk.svg) 0 16, pointer; + --editorHighlight-editing-cursor: url(../images/cursor-editorTextHighlight.svg) + 24 24, + text; + --editorFreeHighlight-editing-cursor: url(../images/cursor-editorFreeHighlight.svg) + 1 18, + pointer; +} +.visuallyHidden { + position: absolute; + top: 0; + left: 0; + border: 0; + margin: 0; + padding: 0; + width: 0; + height: 0; + overflow: hidden; + white-space: nowrap; + font-size: 0; +} + +.textLayer.highlighting { + cursor: var(--editorFreeHighlight-editing-cursor); +} + +.textLayer.highlighting:not(.free) span { + cursor: var(--editorHighlight-editing-cursor); +} + +.textLayer.highlighting.free span { + cursor: var(--editorFreeHighlight-editing-cursor); +} + +@media (min-resolution: 1.1dppx) { + :root { + --editorFreeText-editing-cursor: url(../images/cursor-editorFreeText.svg) 0 + 16, + text; + } +} + +@media screen and (forced-colors: active) { + :root { + --outline-color: CanvasText; + --outline-around-color: ButtonFace; + --resizer-bg-color: ButtonText; + --hover-outline-color: Highlight; + --hover-outline-around-color: SelectedItemText; + } +} + +[data-editor-rotation="90"] { + transform: rotate(90deg); +} + +[data-editor-rotation="180"] { + transform: rotate(180deg); +} + +[data-editor-rotation="270"] { + transform: rotate(270deg); +} + +.annotationEditorLayer { + background: transparent; + position: absolute; + inset: 0; + font-size: calc(100px * var(--scale-factor)); + transform-origin: 0 0; + cursor: auto; +} + +.annotationEditorLayer.waiting { + content: ""; + cursor: wait; + position: absolute; + inset: 0; + width: 100%; + height: 100%; +} + +.annotationEditorLayer.disabled { + pointer-events: none; +} + +.annotationEditorLayer.freetextEditing { + cursor: var(--editorFreeText-editing-cursor); +} + +.annotationEditorLayer.inkEditing { + cursor: var(--editorInk-editing-cursor); +} + +.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) { + position: absolute; + background: transparent; + z-index: 1; + transform-origin: 0 0; + cursor: auto; + max-width: 100%; + max-height: 100%; + border: var(--unfocus-outline); +} + +.annotationEditorLayer + .draggable.selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor) { + cursor: move; +} + +.annotationEditorLayer .moving:is(.freeTextEditor, .inkEditor, .stampEditor) { + touch-action: none; +} + +.annotationEditorLayer + .selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor) { + border: var(--focus-outline); + outline: var(--focus-outline-around); +} + +.annotationEditorLayer + .selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor)::before { + content: ""; + position: absolute; + inset: 0; + border: var(--focus-outline-around); + pointer-events: none; +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor):hover:not(.selectedEditor) { + border: var(--hover-outline); + outline: var(--hover-outline-around); +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor):hover:not( + .selectedEditor + )::before { + content: ""; + position: absolute; + inset: 0; + border: var(--focus-outline-around); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar { + --editor-toolbar-delete-image: url(../images/editor-toolbar-delete.svg); + --editor-toolbar-bg-color: #f0f0f4; + --editor-toolbar-highlight-image: url(../images/toolbarButton-editorHighlight.svg); + --editor-toolbar-fg-color: #2e2e56; + --editor-toolbar-border-color: #8f8f9d; + --editor-toolbar-hover-border-color: var(--editor-toolbar-border-color); + --editor-toolbar-hover-bg-color: #e0e0e6; + --editor-toolbar-hover-fg-color: var(--editor-toolbar-fg-color); + --editor-toolbar-hover-outline: none; + --editor-toolbar-focus-outline-color: #0060df; + --editor-toolbar-shadow: 0 2px 6px 0 rgb(58 57 68 / 0.2); + --editor-toolbar-vert-offset: 6px; + --editor-toolbar-height: 28px; + --editor-toolbar-padding: 2px; + + display: flex; + width: -moz-fit-content; + width: fit-content; + height: var(--editor-toolbar-height); + flex-direction: column; + justify-content: center; + align-items: center; + cursor: default; + pointer-events: auto; + box-sizing: content-box; + padding: var(--editor-toolbar-padding); + + position: absolute; + inset-inline-end: 0; + inset-block-start: calc(100% + var(--editor-toolbar-vert-offset)); + + border-radius: 6px; + background-color: var(--editor-toolbar-bg-color); + border: 1px solid var(--editor-toolbar-border-color); + box-shadow: var(--editor-toolbar-shadow); +} + +@media (prefers-color-scheme: dark) { + :where(html:not(.is-light)) + :is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar { + --editor-toolbar-bg-color: #2b2a33; + --editor-toolbar-fg-color: #fbfbfe; + --editor-toolbar-hover-bg-color: #52525e; + --editor-toolbar-focus-outline-color: #0df; + } +} + +:where(html.is-dark) + :is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar { + --editor-toolbar-bg-color: #2b2a33; + --editor-toolbar-fg-color: #fbfbfe; + --editor-toolbar-hover-bg-color: #52525e; + --editor-toolbar-focus-outline-color: #0df; +} + +@media screen and (forced-colors: active) { + :is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar { + --editor-toolbar-bg-color: ButtonFace; + --editor-toolbar-fg-color: ButtonText; + --editor-toolbar-border-color: ButtonText; + --editor-toolbar-hover-border-color: AccentColor; + --editor-toolbar-hover-bg-color: ButtonFace; + --editor-toolbar-hover-fg-color: AccentColor; + --editor-toolbar-hover-outline: 2px solid + var(--editor-toolbar-hover-border-color); + --editor-toolbar-focus-outline-color: ButtonBorder; + --editor-toolbar-shadow: none; + } +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar.hidden { + display: none; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar:has(:focus-visible) { + border-color: transparent; +} + +[dir="ltr"] + :is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar { + transform-origin: 100% 0; +} + +[dir="rtl"] + :is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar { + transform-origin: 0 0; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons { + display: flex; + justify-content: center; + align-items: center; + gap: 0; + height: 100%; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .divider { + width: 1px; + height: calc( + 2 * var(--editor-toolbar-padding) + var(--editor-toolbar-height) + ); + background-color: var(--editor-toolbar-border-color); + display: inline-block; + margin-inline: 2px; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .highlightButton { + width: var(--editor-toolbar-height); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .highlightButton::before { + content: ""; + -webkit-mask-image: var(--editor-toolbar-highlight-image); + mask-image: var(--editor-toolbar-highlight-image); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + display: inline-block; + background-color: var(--editor-toolbar-fg-color); + width: 100%; + height: 100%; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .highlightButton:hover::before { + background-color: var(--editor-toolbar-hover-fg-color); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .delete { + width: var(--editor-toolbar-height); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .delete::before { + content: ""; + -webkit-mask-image: var(--editor-toolbar-delete-image); + mask-image: var(--editor-toolbar-delete-image); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + display: inline-block; + background-color: var(--editor-toolbar-fg-color); + width: 100%; + height: 100%; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .delete:hover::before { + background-color: var(--editor-toolbar-hover-fg-color); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + > * { + height: var(--editor-toolbar-height); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + > :not(.divider) { + border: none; + background-color: transparent; + cursor: pointer; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + > :not(.divider):hover { + border-radius: 2px; + background-color: var(--editor-toolbar-hover-bg-color); + color: var(--editor-toolbar-hover-fg-color); + outline: var(--editor-toolbar-hover-outline); + outline-offset: 1px; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + > :not(.divider):hover:active { + outline: none; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + > :not(.divider):focus-visible { + border-radius: 2px; + outline: 2px solid var(--editor-toolbar-focus-outline-color); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText { + --alt-text-add-image: url(../images/altText_add.svg); + --alt-text-done-image: url(../images/altText_done.svg); + + display: flex; + align-items: center; + justify-content: center; + width: -moz-max-content; + width: max-content; + padding-inline: 8px; + pointer-events: all; + font: menu; + font-weight: 590; + font-size: 12px; + color: var(--editor-toolbar-fg-color); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText:disabled { + pointer-events: none; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText::before { + content: ""; + -webkit-mask-image: var(--alt-text-add-image); + mask-image: var(--alt-text-add-image); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + display: inline-block; + width: 12px; + height: 13px; + background-color: var(--editor-toolbar-fg-color); + margin-inline-end: 4px; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText:hover::before { + background-color: var(--editor-toolbar-hover-fg-color); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText.done::before { + -webkit-mask-image: var(--alt-text-done-image); + mask-image: var(--alt-text-done-image); +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText + .tooltip { + display: none; +} + +:is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText + .tooltip.show { + --alt-text-tooltip-bg: #f0f0f4; + --alt-text-tooltip-fg: #15141a; + --alt-text-tooltip-border: #8f8f9d; + --alt-text-tooltip-shadow: 0px 2px 6px 0px rgb(58 57 68 / 0.2); + + display: inline-flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: absolute; + top: calc(100% + 2px); + inset-inline-start: 0; + padding-block: 2px 3px; + padding-inline: 3px; + max-width: 300px; + width: -moz-max-content; + width: max-content; + height: auto; + font-size: 12px; + + border: 0.5px solid var(--alt-text-tooltip-border); + background: var(--alt-text-tooltip-bg); + box-shadow: var(--alt-text-tooltip-shadow); + color: var(--alt-text-tooltip-fg); + + pointer-events: none; +} + +@media (prefers-color-scheme: dark) { + :where(html:not(.is-light)) + :is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText + .tooltip.show { + --alt-text-tooltip-bg: #1c1b22; + --alt-text-tooltip-fg: #fbfbfe; + --alt-text-tooltip-shadow: 0px 2px 6px 0px #15141a; + } +} + +:where(html.is-dark) + :is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText + .tooltip.show { + --alt-text-tooltip-bg: #1c1b22; + --alt-text-tooltip-fg: #fbfbfe; + --alt-text-tooltip-shadow: 0px 2px 6px 0px #15141a; +} + +@media screen and (forced-colors: active) { + :is( + .annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + .textLayer + ) + .editToolbar + .buttons + .altText + .tooltip.show { + --alt-text-tooltip-bg: Canvas; + --alt-text-tooltip-fg: CanvasText; + --alt-text-tooltip-border: CanvasText; + --alt-text-tooltip-shadow: none; + } +} + +.annotationEditorLayer .freeTextEditor { + padding: calc(var(--freetext-padding) * var(--scale-factor)); + width: auto; + height: auto; + touch-action: none; +} + +.annotationEditorLayer .freeTextEditor .internal { + background: transparent; + border: none; + inset: 0; + overflow: visible; + white-space: nowrap; + font: 10px sans-serif; + line-height: var(--freetext-line-height); + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.annotationEditorLayer .freeTextEditor .overlay { + position: absolute; + display: none; + background: transparent; + inset: 0; + width: 100%; + height: 100%; +} + +.annotationEditorLayer freeTextEditor .overlay.enabled { + display: block; +} + +.annotationEditorLayer .freeTextEditor .internal:empty::before { + content: attr(default-content); + color: gray; +} + +.annotationEditorLayer .freeTextEditor .internal:focus { + outline: none; + -webkit-user-select: auto; + -moz-user-select: auto; + user-select: auto; +} + +.annotationEditorLayer .inkEditor { + width: 100%; + height: 100%; +} + +.annotationEditorLayer .inkEditor.editing { + cursor: inherit; +} + +.annotationEditorLayer .inkEditor .inkEditorCanvas { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + touch-action: none; +} + +.annotationEditorLayer .stampEditor { + width: auto; + height: auto; +} + +.annotationEditorLayer .stampEditor canvas { + position: absolute; + width: 100%; + height: 100%; + margin: 0; +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers { + position: absolute; + inset: 0; +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers.hidden { + display: none; +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers + > .resizer { + width: var(--resizer-size); + height: var(--resizer-size); + background: content-box var(--resizer-bg-color); + border: var(--focus-outline-around); + border-radius: 2px; + position: absolute; +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers + > .resizer.topLeft { + top: var(--resizer-shift); + left: var(--resizer-shift); +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers + > .resizer.topMiddle { + top: var(--resizer-shift); + left: calc(50% + var(--resizer-shift)); +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers + > .resizer.topRight { + top: var(--resizer-shift); + right: var(--resizer-shift); +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers + > .resizer.middleRight { + top: calc(50% + var(--resizer-shift)); + right: var(--resizer-shift); +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers + > .resizer.bottomRight { + bottom: var(--resizer-shift); + right: var(--resizer-shift); +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers + > .resizer.bottomMiddle { + bottom: var(--resizer-shift); + left: calc(50% + var(--resizer-shift)); +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers + > .resizer.bottomLeft { + bottom: var(--resizer-shift); + left: var(--resizer-shift); +} + +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor) + > .resizers + > .resizer.middleLeft { + top: calc(50% + var(--resizer-shift)); + left: var(--resizer-shift); +} + +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.topLeft, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.topLeft, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.topLeft, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.topLeft, +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.bottomRight, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.bottomRight, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.bottomRight, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.bottomRight { + cursor: nwse-resize; +} + +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.topMiddle, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.topMiddle, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.topMiddle, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.topMiddle, +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.bottomMiddle, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.bottomMiddle, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.bottomMiddle, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.bottomMiddle { + cursor: ns-resize; +} + +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.topRight, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.topRight, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.topRight, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.topRight, +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.bottomLeft, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.bottomLeft, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.bottomLeft, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.bottomLeft { + cursor: nesw-resize; +} + +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.middleRight, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.middleRight, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.middleRight, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.middleRight, +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.middleLeft, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.middleLeft, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.middleLeft, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.middleLeft { + cursor: ew-resize; +} + +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.topLeft, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.topLeft, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.topLeft, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.topLeft, +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.bottomRight, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.bottomRight, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.bottomRight, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.bottomRight { + cursor: nesw-resize; +} + +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.topMiddle, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.topMiddle, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.topMiddle, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.topMiddle, +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.bottomMiddle, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.bottomMiddle, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.bottomMiddle, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.bottomMiddle { + cursor: ew-resize; +} + +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.topRight, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.topRight, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.topRight, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.topRight, +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.bottomLeft, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.bottomLeft, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.bottomLeft, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.bottomLeft { + cursor: nwse-resize; +} + +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.middleRight, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.middleRight, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.middleRight, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.middleRight, +.annotationEditorLayer[data-main-rotation="0"] + :is([data-editor-rotation="90"], [data-editor-rotation="270"]) + > .resizers + > .resizer.middleLeft, +.annotationEditorLayer[data-main-rotation="90"] + :is([data-editor-rotation="0"], [data-editor-rotation="180"]) + > .resizers + > .resizer.middleLeft, +.annotationEditorLayer[data-main-rotation="180"] + :is([data-editor-rotation="270"], [data-editor-rotation="90"]) + > .resizers + > .resizer.middleLeft, +.annotationEditorLayer[data-main-rotation="270"] + :is([data-editor-rotation="180"], [data-editor-rotation="0"]) + > .resizers + > .resizer.middleLeft { + cursor: ns-resize; +} + +.annotationEditorLayer + :is( + [data-main-rotation="0"] [data-editor-rotation="90"], + [data-main-rotation="90"] [data-editor-rotation="0"], + [data-main-rotation="180"] [data-editor-rotation="270"], + [data-main-rotation="270"] [data-editor-rotation="180"] + ) + .editToolbar { + rotate: 270deg; +} + +[dir="ltr"] + .annotationEditorLayer + :is( + [data-main-rotation="0"] [data-editor-rotation="90"], + [data-main-rotation="90"] [data-editor-rotation="0"], + [data-main-rotation="180"] [data-editor-rotation="270"], + [data-main-rotation="270"] [data-editor-rotation="180"] + ) + .editToolbar { + inset-inline-end: calc(0px - var(--editor-toolbar-vert-offset)); + inset-block-start: 0; +} + +[dir="rtl"] + .annotationEditorLayer + :is( + [data-main-rotation="0"] [data-editor-rotation="90"], + [data-main-rotation="90"] [data-editor-rotation="0"], + [data-main-rotation="180"] [data-editor-rotation="270"], + [data-main-rotation="270"] [data-editor-rotation="180"] + ) + .editToolbar { + inset-inline-end: calc(100% + var(--editor-toolbar-vert-offset)); + inset-block-start: 0; +} + +.annotationEditorLayer + :is( + [data-main-rotation="0"] [data-editor-rotation="180"], + [data-main-rotation="90"] [data-editor-rotation="90"], + [data-main-rotation="180"] [data-editor-rotation="0"], + [data-main-rotation="270"] [data-editor-rotation="270"] + ) + .editToolbar { + rotate: 180deg; + inset-inline-end: 100%; + inset-block-start: calc(0pc - var(--editor-toolbar-vert-offset)); +} + +.annotationEditorLayer + :is( + [data-main-rotation="0"] [data-editor-rotation="270"], + [data-main-rotation="90"] [data-editor-rotation="180"], + [data-main-rotation="180"] [data-editor-rotation="90"], + [data-main-rotation="270"] [data-editor-rotation="0"] + ) + .editToolbar { + rotate: 90deg; +} + +[dir="ltr"] + .annotationEditorLayer + :is( + [data-main-rotation="0"] [data-editor-rotation="270"], + [data-main-rotation="90"] [data-editor-rotation="180"], + [data-main-rotation="180"] [data-editor-rotation="90"], + [data-main-rotation="270"] [data-editor-rotation="0"] + ) + .editToolbar { + inset-inline-end: calc(100% + var(--editor-toolbar-vert-offset)); + inset-block-start: 100%; +} + +[dir="rtl"] + .annotationEditorLayer + :is( + [data-main-rotation="0"] [data-editor-rotation="270"], + [data-main-rotation="90"] [data-editor-rotation="180"], + [data-main-rotation="180"] [data-editor-rotation="90"], + [data-main-rotation="270"] [data-editor-rotation="0"] + ) + .editToolbar { + inset-inline-start: calc(0px - var(--editor-toolbar-vert-offset)); + inset-block-start: 0; +} + +.dialog.altText::backdrop { + -webkit-mask: url(#alttext-manager-mask); + mask: url(#alttext-manager-mask); +} + +.dialog.altText.positioned { + margin: 0; +} + +.dialog.altText #altTextContainer { + width: 300px; + height: -moz-fit-content; + height: fit-content; + display: inline-flex; + flex-direction: column; + align-items: flex-start; + gap: 16px; +} + +.dialog.altText #altTextContainer #overallDescription { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 4px; + align-self: stretch; +} + +.dialog.altText #altTextContainer #overallDescription span { + align-self: stretch; +} + +.dialog.altText #altTextContainer #overallDescription .title { + font-size: 13px; + font-style: normal; + font-weight: 590; +} + +.dialog.altText #altTextContainer #addDescription { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 8px; +} + +.dialog.altText #altTextContainer #addDescription .descriptionArea { + flex: 1; + padding-inline: 24px 10px; +} + +.dialog.altText #altTextContainer #addDescription .descriptionArea textarea { + width: 100%; + min-height: 75px; +} + +.dialog.altText #altTextContainer #buttons { + display: flex; + justify-content: flex-end; + align-items: flex-start; + gap: 8px; + align-self: stretch; +} + +.colorPicker { + --hover-outline-color: #0250bb; + --selected-outline-color: #0060df; + --swatch-border-color: #cfcfd8; +} + +@media (prefers-color-scheme: dark) { + :where(html:not(.is-light)) .colorPicker { + --hover-outline-color: #80ebff; + --selected-outline-color: #aaf2ff; + --swatch-border-color: #52525e; + } +} + +:where(html.is-dark) .colorPicker { + --hover-outline-color: #80ebff; + --selected-outline-color: #aaf2ff; + --swatch-border-color: #52525e; +} + +@media screen and (forced-colors: active) { + .colorPicker { + --hover-outline-color: Highlight; + --selected-outline-color: var(--hover-outline-color); + --swatch-border-color: ButtonText; + } +} + +.colorPicker .swatch { + width: 16px; + height: 16px; + border: 1px solid var(--swatch-border-color); + border-radius: 100%; + outline-offset: 2px; + box-sizing: border-box; + forced-color-adjust: none; +} + +.colorPicker button:is(:hover, .selected) > .swatch { + border: none; +} + +.annotationEditorLayer[data-main-rotation="0"] + .highlightEditor:not(.free) + > .editToolbar { + rotate: 0deg; +} + +.annotationEditorLayer[data-main-rotation="90"] + .highlightEditor:not(.free) + > .editToolbar { + rotate: 270deg; +} + +.annotationEditorLayer[data-main-rotation="180"] + .highlightEditor:not(.free) + > .editToolbar { + rotate: 180deg; +} + +.annotationEditorLayer[data-main-rotation="270"] + .highlightEditor:not(.free) + > .editToolbar { + rotate: 90deg; +} + +.annotationEditorLayer .highlightEditor { + position: absolute; + background: transparent; + z-index: 1; + cursor: auto; + max-width: 100%; + max-height: 100%; + border: none; + outline: none; + pointer-events: none; + transform-origin: 0 0; +} + +.annotationEditorLayer .highlightEditor:not(.free) { + transform: none; +} + +.annotationEditorLayer .highlightEditor .internal { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: auto; +} + +.annotationEditorLayer .highlightEditor.disabled .internal { + pointer-events: none; +} + +.annotationEditorLayer .highlightEditor.selectedEditor .internal { + cursor: pointer; +} + +.annotationEditorLayer .highlightEditor .editToolbar { + --editor-toolbar-colorpicker-arrow-image: url(../images/toolbarButton-menuArrow.svg); + + transform-origin: center !important; +} + +.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker { + position: relative; + width: auto; + display: flex; + justify-content: center; + align-items: center; + gap: 4px; + padding: 4px; +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker::after { + content: ""; + -webkit-mask-image: var(--editor-toolbar-colorpicker-arrow-image); + mask-image: var(--editor-toolbar-colorpicker-arrow-image); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + display: inline-block; + background-color: var(--editor-toolbar-fg-color); + width: 12px; + height: 12px; +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker:hover::after { + background-color: var(--editor-toolbar-hover-fg-color); +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker:has(.dropdown:not(.hidden)) { + background-color: var(--editor-toolbar-hover-bg-color); +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker:has(.dropdown:not(.hidden))::after { + scale: -1; +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker + .dropdown { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + gap: 11px; + padding-block: 8px; + border-radius: 6px; + background-color: var(--editor-toolbar-bg-color); + border: 1px solid var(--editor-toolbar-border-color); + box-shadow: var(--editor-toolbar-shadow); + inset-block-start: calc(100% + 4px); + width: calc(100% + 2 * var(--editor-toolbar-padding)); +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker + .dropdown + button { + width: 100%; + height: auto; + border: none; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + background: none; +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker + .dropdown + button:is(:active, :focus-visible) { + outline: none; +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker + .dropdown + button + > .swatch { + outline-offset: 2px; +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker + .dropdown + button[aria-selected="true"] + > .swatch { + outline: 2px solid var(--selected-outline-color); +} + +.annotationEditorLayer + .highlightEditor + .editToolbar + .buttons + .colorPicker + .dropdown + button:is(:hover, :active, :focus-visible) + > .swatch { + outline: 2px solid var(--hover-outline-color); +} + +.editorParamsToolbar:has(#highlightParamsToolbarContainer) { + padding: unset; +} + +#highlightParamsToolbarContainer { + height: auto; + padding-inline: 10px; + padding-block: 10px 16px; + gap: 16px; + display: flex; + flex-direction: column; + box-sizing: border-box; +} + +#highlightParamsToolbarContainer .editorParamsLabel { + width: -moz-fit-content; + width: fit-content; + inset-inline-start: 0; +} + +#highlightParamsToolbarContainer .colorPicker { + display: flex; + flex-direction: column; + gap: 8px; +} + +#highlightParamsToolbarContainer .colorPicker .dropdown { + display: flex; + justify-content: space-between; + align-items: center; + flex-direction: row; + height: auto; +} + +#highlightParamsToolbarContainer .colorPicker .dropdown button { + width: auto; + height: auto; + border: none; + cursor: pointer; + display: flex; + justify-content: center; + align-items: center; + background: none; + flex: 0 0 auto; +} + +#highlightParamsToolbarContainer .colorPicker .dropdown button .swatch { + width: 24px; + height: 24px; +} + +#highlightParamsToolbarContainer + .colorPicker + .dropdown + button:is(:active, :focus-visible) { + outline: none; +} + +#highlightParamsToolbarContainer + .colorPicker + .dropdown + button[aria-selected="true"] + > .swatch { + outline: 2px solid var(--selected-outline-color); +} + +#highlightParamsToolbarContainer + .colorPicker + .dropdown + button:is(:hover, :active, :focus-visible) + > .swatch { + outline: 2px solid var(--hover-outline-color); +} + +#highlightParamsToolbarContainer #editorHighlightThickness { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; + align-self: stretch; +} + +#highlightParamsToolbarContainer #editorHighlightThickness .editorParamsLabel { + width: 100%; + height: auto; + align-self: stretch; +} + +#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker { + display: flex; + justify-content: space-between; + align-items: center; + align-self: stretch; + + --example-color: #bfbfc9; +} + +@media (prefers-color-scheme: dark) { + :where(html:not(.is-light)) + #highlightParamsToolbarContainer + #editorHighlightThickness + .thicknessPicker { + --example-color: #80808e; + } +} + +:where(html.is-dark) + #highlightParamsToolbarContainer + #editorHighlightThickness + .thicknessPicker { + --example-color: #80808e; +} + +@media screen and (forced-colors: active) { + #highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker { + --example-color: CanvasText; + } +} + +:is( + #highlightParamsToolbarContainer + #editorHighlightThickness + .thicknessPicker + > .editorParamsSlider[disabled] + ) { + opacity: 0.4; +} + +#highlightParamsToolbarContainer + #editorHighlightThickness + .thicknessPicker::before, +#highlightParamsToolbarContainer + #editorHighlightThickness + .thicknessPicker::after { + content: ""; + width: 8px; + aspect-ratio: 1; + display: block; + border-radius: 100%; + background-color: var(--example-color); +} + +#highlightParamsToolbarContainer + #editorHighlightThickness + .thicknessPicker::after { + width: 24px; +} + +#highlightParamsToolbarContainer + #editorHighlightThickness + .thicknessPicker + .editorParamsSlider { + width: unset; + height: 14px; +} + +#highlightParamsToolbarContainer #editorHighlightVisibility { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 8px; + align-self: stretch; +} + +#highlightParamsToolbarContainer #editorHighlightVisibility .divider { + --divider-color: #d7d7db; + + margin-block: 4px; + width: 100%; + height: 1px; + background-color: var(--divider-color); +} + +@media (prefers-color-scheme: dark) { + :where(html:not(.is-light)) + #highlightParamsToolbarContainer + #editorHighlightVisibility + .divider { + --divider-color: #8f8f9d; + } +} + +:where(html.is-dark) + #highlightParamsToolbarContainer + #editorHighlightVisibility + .divider { + --divider-color: #8f8f9d; +} + +@media screen and (forced-colors: active) { + #highlightParamsToolbarContainer #editorHighlightVisibility .divider { + --divider-color: CanvasText; + } +} + +#highlightParamsToolbarContainer #editorHighlightVisibility .toggler { + display: flex; + justify-content: space-between; + align-items: center; + align-self: stretch; +} + +:root { + --viewer-container-height: 0; + --pdfViewer-padding-bottom: 0; + --page-margin: 10px auto; + --page-border: 9px solid transparent; + --spreadHorizontalWrapped-margin-LR: -3.5px; + --loading-icon-delay: 400ms; +} + +@media screen and (forced-colors: active) { + :root { + --pdfViewer-padding-bottom: 9px; + --page-margin: 10px auto; + --page-border: 1px solid CanvasText; + --spreadHorizontalWrapped-margin-LR: 3.5px; + } +} + +[data-main-rotation="90"] { + transform: rotate(90deg) translateY(-100%); +} +[data-main-rotation="180"] { + transform: rotate(180deg) translate(-100%, -100%); +} +[data-main-rotation="270"] { + transform: rotate(270deg) translateX(-100%); +} + +#hiddenCopyElement, +.hiddenCanvasElement { + position: absolute; + top: 0; + left: 0; + width: 0; + height: 0; + display: none; +} + +.pdfViewer { + --scale-factor: 1; + + padding-bottom: var(--pdfViewer-padding-bottom); + + --hcm-highlight-filter: none; + --hcm-highlight-selected-filter: none; +} + +@media screen and (forced-colors: active) { + .pdfViewer { + --hcm-highlight-filter: invert(100%); + } +} + +.pdfViewer .canvasWrapper { + width: 100%; + height: 100%; +} + +.pdfViewer .canvasWrapper canvas { + margin: 0; + display: block; +} + +.pdfViewer .canvasWrapper canvas[hidden] { + display: none; +} + +.pdfViewer .canvasWrapper canvas[zooming] { + width: 100%; + height: 100%; +} + +.pdfViewer .canvasWrapper canvas .structTree { + contain: strict; +} + +.pdfViewer .page { + direction: ltr; + width: 816px; + height: 1056px; + margin: var(--page-margin); + position: relative; + overflow: visible; + border: var(--page-border); + background-clip: content-box; + background-color: rgb(255 255 255); +} + +.pdfViewer .dummyPage { + position: relative; + width: 0; + height: var(--viewer-container-height); +} + +.pdfViewer.noUserSelect { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.pdfViewer.removePageBorders .page { + margin: 0 auto 10px; + border: none; +} + +.pdfViewer:is(.scrollHorizontal, .scrollWrapped), +.spread { + margin-inline: 3.5px; + text-align: center; +} + +.pdfViewer.scrollHorizontal, +.spread { + white-space: nowrap; +} + +.pdfViewer.removePageBorders, +.pdfViewer:is(.scrollHorizontal, .scrollWrapped) .spread { + margin-inline: 0; +} + +.spread :is(.page, .dummyPage), +.pdfViewer:is(.scrollHorizontal, .scrollWrapped) :is(.page, .spread) { + display: inline-block; + vertical-align: middle; +} + +.spread .page, +.pdfViewer:is(.scrollHorizontal, .scrollWrapped) .page { + margin-inline: var(--spreadHorizontalWrapped-margin-LR); +} + +.pdfViewer.removePageBorders .spread .page, +.pdfViewer.removePageBorders:is(.scrollHorizontal, .scrollWrapped) .page { + margin-inline: 5px; +} + +.pdfViewer .page.loadingIcon::after { + position: absolute; + top: 0; + left: 0; + content: ""; + width: 100%; + height: 100%; + background: url("../images/loading-icon.gif") center no-repeat; + display: none; + transition-property: display; + transition-delay: var(--loading-icon-delay); + z-index: 5; + contain: strict; +} + +.pdfViewer .page.loading::after { + display: block; +} + +.pdfViewer .page:not(.loading)::after { + transition-property: none; + display: none; +} + +.pdfPresentationMode .pdfViewer { + padding-bottom: 0; +} + +.pdfPresentationMode .spread { + margin: 0; +} + +.pdfPresentationMode .pdfViewer .page { + margin: 0 auto; + border: 2px solid transparent; +} + +html[data-toolbar-density="compact"] { + --toolbar-height: 1.875rem; +} + +html[data-toolbar-density="touch"] { + --toolbar-height: 2.75rem; +} + +:root { + --dir-factor: 1; + --inline-start: left; + --inline-end: right; + + --sidebar-width: 200px; + --sidebar-transition-duration: 200ms; + --sidebar-transition-timing-function: ease; + + --toolbar-height: 3.75rem; + --toolButton-height: 3rem; + --toolButton-width: 3rem; + --toolButton-icon-font-size: 2.5rem; + --toolButton-border-radius: 15px; + + --toolbar-icon-opacity: 0.7; + --doorhanger-icon-opacity: 0.9; + --editor-toolbar-base-offset: 105px; + + --main-color: rgb(12 12 13); + --body-bg-color: rgb(212 212 215); + --progressBar-color: rgb(10 132 255); + --progressBar-bg-color: rgb(221 221 222); + --progressBar-blend-color: rgb(116 177 239); + --scrollbar-color: auto; + --scrollbar-bg-color: auto; + --toolbar-icon-bg-color: rgb(0 0 0); + --toolbar-icon-hover-bg-color: rgb(0 0 0); + + --sidebar-narrow-bg-color: rgb(212 212 215 / 0.9); + --sidebar-toolbar-bg-color: rgb(245 246 247); + --toolbar-bg-color: rgb(249 249 250); + --toolbar-border-color: rgb(184 184 184); + --toolbar-box-shadow: 0 1px 0 var(--toolbar-border-color); + --toolbar-border-bottom: none; + --toolbarSidebar-box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 + rgb(0 0 0 / 0.25), + 0 1px 0 rgb(0 0 0 / 0.15), 0 0 1px rgb(0 0 0 / 0.1); + --toolbarSidebar-border-bottom: none; + --button-hover-color: rgb(221 222 223); + --toggled-btn-color: rgb(0 0 0); + --toggled-btn-bg-color: rgb(0 0 0 / 0.3); + --toggled-hover-active-btn-color: rgb(0 0 0 / 0.4); + --toggled-hover-btn-outline: none; + --dropdown-btn-bg-color: rgb(215 215 219); + --dropdown-btn-border: none; + --separator-color: rgb(0 0 0 / 0.3); + --field-color: rgb(6 6 6); + --field-bg-color: rgb(255 255 255); + --field-border-color: rgb(187 187 188); + --treeitem-color: rgb(0 0 0 / 0.8); + --treeitem-bg-color: rgb(0 0 0 / 0.15); + --treeitem-hover-color: rgb(0 0 0 / 0.9); + --treeitem-selected-color: rgb(0 0 0 / 0.9); + --treeitem-selected-bg-color: rgb(0 0 0 / 0.25); + --thumbnail-hover-color: rgb(0 0 0 / 0.1); + --thumbnail-selected-color: rgb(0 0 0 / 0.2); + --doorhanger-bg-color: rgb(255 255 255); + --doorhanger-border-color: rgb(12 12 13 / 0.2); + --doorhanger-hover-color: rgb(12 12 13); + --doorhanger-hover-bg-color: rgb(237 237 237); + --doorhanger-separator-color: rgb(222 222 222); + --dialog-button-border: none; + --dialog-button-bg-color: rgb(12 12 13 / 0.1); + --dialog-button-hover-bg-color: rgb(12 12 13 / 0.3); + + --loading-icon: url(../images/loading.svg); + --treeitem-expanded-icon: url(../images/treeitem-expanded.svg); + --treeitem-collapsed-icon: url(../images/treeitem-collapsed.svg); + --toolbarButton-editorFreeText-icon: url(../images/toolbarButton-editorFreeText.svg); + --toolbarButton-editorHighlight-icon: url(../images/toolbarButton-editorHighlight.svg); + --toolbarButton-editorInk-icon: url(../images/toolbarButton-editorInk.svg); + --toolbarButton-editorStamp-icon: url(../images/toolbarButton-editorStamp.svg); + --toolbarButton-menuArrow-icon: url(../images/toolbarButton-menuArrow.svg); + --toolbarButton-sidebarToggle-icon: url(../images/toolbarButton-sidebarToggle.svg); + --toolbarButton-secondaryToolbarToggle-icon: url(../images/toolbarButton-secondaryToolbarToggle.svg); + --toolbarButton-pageUp-icon: url(../images/toolbarButton-pageUp.svg); + --toolbarButton-pageDown-icon: url(../images/toolbarButton-pageDown.svg); + --toolbarButton-zoomOut-icon: url(../images/toolbarButton-zoomOut.svg); + --toolbarButton-zoomIn-icon: url(../images/toolbarButton-zoomIn.svg); + --toolbarButton-presentationMode-icon: url(../images/toolbarButton-presentationMode.svg); + --toolbarButton-print-icon: url(../images/toolbarButton-print.svg); + --toolbarButton-openFile-icon: url(../images/toolbarButton-openFile.svg); + --toolbarButton-download-icon: url(../images/toolbarButton-download.svg); + --toolbarButton-bookmark-icon: url(../images/toolbarButton-bookmark.svg); + --toolbarButton-viewThumbnail-icon: url(../images/toolbarButton-viewThumbnail.svg); + --toolbarButton-viewOutline-icon: url(../images/toolbarButton-viewOutline.svg); + --toolbarButton-viewAttachments-icon: url(../images/toolbarButton-viewAttachments.svg); + --toolbarButton-viewLayers-icon: url(../images/toolbarButton-viewLayers.svg); + --toolbarButton-currentOutlineItem-icon: url(../images/toolbarButton-currentOutlineItem.svg); + --toolbarButton-search-icon: url(../images/toolbarButton-search.svg); + --toolbarButton-backToHome-icon: url(../images/toolbarButton-home.svg); + --findbarButton-previous-icon: url(../images/findbarButton-previous.svg); + --findbarButton-next-icon: url(../images/findbarButton-next.svg); + --secondaryToolbarButton-firstPage-icon: url(../images/secondaryToolbarButton-firstPage.svg); + --secondaryToolbarButton-lastPage-icon: url(../images/secondaryToolbarButton-lastPage.svg); + --secondaryToolbarButton-rotateCcw-icon: url(../images/secondaryToolbarButton-rotateCcw.svg); + --secondaryToolbarButton-rotateCw-icon: url(../images/secondaryToolbarButton-rotateCw.svg); + --secondaryToolbarButton-selectTool-icon: url(../images/secondaryToolbarButton-selectTool.svg); + --secondaryToolbarButton-handTool-icon: url(../images/secondaryToolbarButton-handTool.svg); + --secondaryToolbarButton-scrollPage-icon: url(../images/secondaryToolbarButton-scrollPage.svg); + --secondaryToolbarButton-scrollVertical-icon: url(../images/secondaryToolbarButton-scrollVertical.svg); + --secondaryToolbarButton-scrollHorizontal-icon: url(../images/secondaryToolbarButton-scrollHorizontal.svg); + --secondaryToolbarButton-scrollWrapped-icon: url(../images/secondaryToolbarButton-scrollWrapped.svg); + --secondaryToolbarButton-spreadNone-icon: url(../images/secondaryToolbarButton-spreadNone.svg); + --secondaryToolbarButton-spreadOdd-icon: url(../images/secondaryToolbarButton-spreadOdd.svg); + --secondaryToolbarButton-spreadEven-icon: url(../images/secondaryToolbarButton-spreadEven.svg); + --secondaryToolbarButton-documentProperties-icon: url(../images/secondaryToolbarButton-documentProperties.svg); + --editorParams-stampAddImage-icon: url(../images/toolbarButton-zoomIn.svg); +} + +[dir="rtl"]:root { + --dir-factor: -1; + --inline-start: right; + --inline-end: left; +} + +@media (prefers-color-scheme: dark) { + :root:where(:not(.is-light)) { + --main-color: rgb(249 249 250); + --body-bg-color: rgb(42 42 46); + --progressBar-color: rgb(0 96 223); + --progressBar-bg-color: rgb(40 40 43); + --progressBar-blend-color: rgb(20 68 133); + --scrollbar-color: rgb(121 121 123); + --scrollbar-bg-color: rgb(35 35 39); + --toolbar-icon-bg-color: rgb(255 255 255); + --toolbar-icon-hover-bg-color: rgb(255 255 255); + + --sidebar-narrow-bg-color: rgb(42 42 46 / 0.9); + --sidebar-toolbar-bg-color: rgb(50 50 52); + --toolbar-bg-color: rgb(56 56 61); + --toolbar-border-color: rgb(12 12 13); + --button-hover-color: rgb(102 102 103); + --toggled-btn-color: rgb(255 255 255); + --toggled-btn-bg-color: rgb(0 0 0 / 0.3); + --toggled-hover-active-btn-color: rgb(0 0 0 / 0.4); + --dropdown-btn-bg-color: rgb(74 74 79); + --separator-color: rgb(0 0 0 / 0.3); + --field-color: rgb(250 250 250); + --field-bg-color: rgb(64 64 68); + --field-border-color: rgb(115 115 115); + --treeitem-color: rgb(255 255 255 / 0.8); + --treeitem-bg-color: rgb(255 255 255 / 0.15); + --treeitem-hover-color: rgb(255 255 255 / 0.9); + --treeitem-selected-color: rgb(255 255 255 / 0.9); + --treeitem-selected-bg-color: rgb(255 255 255 / 0.25); + --thumbnail-hover-color: rgb(255 255 255 / 0.1); + --thumbnail-selected-color: rgb(255 255 255 / 0.2); + --doorhanger-bg-color: rgb(74 74 79); + --doorhanger-border-color: rgb(39 39 43); + --doorhanger-hover-color: rgb(249 249 250); + --doorhanger-hover-bg-color: rgb(93 94 98); + --doorhanger-separator-color: rgb(92 92 97); + --dialog-button-bg-color: rgb(92 92 97); + --dialog-button-hover-bg-color: rgb(115 115 115); + } +} + +:root:where(.is-dark) { + --main-color: rgb(249 249 250); + --body-bg-color: rgb(42 42 46); + --progressBar-color: rgb(0 96 223); + --progressBar-bg-color: rgb(40 40 43); + --progressBar-blend-color: rgb(20 68 133); + --scrollbar-color: rgb(121 121 123); + --scrollbar-bg-color: rgb(35 35 39); + --toolbar-icon-bg-color: rgb(255 255 255); + --toolbar-icon-hover-bg-color: rgb(255 255 255); + + --sidebar-narrow-bg-color: rgb(42 42 46 / 0.9); + --sidebar-toolbar-bg-color: rgb(50 50 52); + --toolbar-bg-color: rgb(56 56 61); + --toolbar-border-color: rgb(12 12 13); + --button-hover-color: rgb(102 102 103); + --toggled-btn-color: rgb(255 255 255); + --toggled-btn-bg-color: rgb(0 0 0 / 0.3); + --toggled-hover-active-btn-color: rgb(0 0 0 / 0.4); + --dropdown-btn-bg-color: rgb(74 74 79); + --separator-color: rgb(0 0 0 / 0.3); + --field-color: rgb(250 250 250); + --field-bg-color: rgb(64 64 68); + --field-border-color: rgb(115 115 115); + --treeitem-color: rgb(255 255 255 / 0.8); + --treeitem-bg-color: rgb(255 255 255 / 0.15); + --treeitem-hover-color: rgb(255 255 255 / 0.9); + --treeitem-selected-color: rgb(255 255 255 / 0.9); + --treeitem-selected-bg-color: rgb(255 255 255 / 0.25); + --thumbnail-hover-color: rgb(255 255 255 / 0.1); + --thumbnail-selected-color: rgb(255 255 255 / 0.2); + --doorhanger-bg-color: rgb(74 74 79); + --doorhanger-border-color: rgb(39 39 43); + --doorhanger-hover-color: rgb(249 249 250); + --doorhanger-hover-bg-color: rgb(93 94 98); + --doorhanger-separator-color: rgb(92 92 97); + --dialog-button-bg-color: rgb(92 92 97); + --dialog-button-hover-bg-color: rgb(115 115 115); +} + +@media screen and (forced-colors: active) { + :root { + --button-hover-color: Highlight; + --doorhanger-hover-bg-color: Highlight; + --toolbar-icon-opacity: 1; + --toolbar-icon-bg-color: ButtonText; + --toolbar-icon-hover-bg-color: ButtonFace; + --toggled-hover-active-btn-color: ButtonText; + --toggled-hover-btn-outline: 2px solid ButtonBorder; + --toolbar-border-color: CanvasText; + --toolbar-border-bottom: 1px solid var(--toolbar-border-color); + --toolbar-box-shadow: none; + --toggled-btn-color: HighlightText; + --toggled-btn-bg-color: LinkText; + --doorhanger-hover-color: ButtonFace; + --doorhanger-border-color-whcm: 1px solid ButtonText; + --doorhanger-triangle-opacity-whcm: 0; + --dialog-button-border: 1px solid Highlight; + --dialog-button-hover-bg-color: Highlight; + --dialog-button-hover-color: ButtonFace; + --dropdown-btn-border: 1px solid ButtonText; + --field-border-color: ButtonText; + --main-color: CanvasText; + --separator-color: GrayText; + --doorhanger-separator-color: GrayText; + --toolbarSidebar-box-shadow: none; + --toolbarSidebar-border-bottom: 1px solid var(--toolbar-border-color); + } +} + +@media screen and (prefers-reduced-motion: reduce) { + :root { + --sidebar-transition-duration: 0; + } +} + +* { + padding: 0; + margin: 0; +} + +html, +body { + height: 100%; + width: 100%; +} + +.hidden, +[hidden] { + display: none !important; +} + +#viewerContainer.pdfPresentationMode:fullscreen { + top: 0; + background-color: rgb(0 0 0); + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.pdfPresentationMode:fullscreen section:not([data-internal-link]) { + pointer-events: none; +} + +.pdfPresentationMode:fullscreen .textLayer span { + cursor: none; +} + +.pdfPresentationMode.pdfPresentationModeControls > *, +.pdfPresentationMode.pdfPresentationModeControls .textLayer span { + cursor: default; +} + +#outerContainer { + width: 100%; + height: calc(100% - var(--navbar-height)); + position: relative; +} + +#sidebarContainer { + position: absolute; + inset-block: var(--toolbar-height) 0; + inset-inline-start: calc(-1 * var(--sidebar-width)); + width: var(--sidebar-width); + visibility: hidden; + z-index: 100; + font: message-box; + border-top: 1px solid rgb(51 51 51); + border-inline-end: var(--doorhanger-border-color-whcm); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer:is(.sidebarMoving, .sidebarOpen) #sidebarContainer { + visibility: visible; +} +#outerContainer.sidebarOpen #sidebarContainer { + inset-inline-start: 0; +} + +#mainContainer { + position: absolute; + inset: 0; + min-width: 350px; +} + +#sidebarContent { + inset-block: var(--toolbar-height) 0; + inset-inline-start: 0; + overflow: auto; + position: absolute; + width: 100%; + box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 rgb(0 0 0 / 0.25); +} + +#viewerContainer { + overflow: auto; + position: absolute; + inset: var(--toolbar-height) 0 0; + outline: none; +} +#viewerContainer:not(.pdfPresentationMode) { + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { + inset-inline-start: var(--sidebar-width); + transition-property: inset-inline-start; +} + +.toolbar { + position: relative; + inset-inline: 0; + z-index: 20; + cursor: default; + font: message-box; +} + +:is(.toolbar, .editorParamsToolbar, .findbar, #sidebarContainer) + :is(input, button, select), +.secondaryToolbar :is(input, button, a, select) { + outline: none; + font: message-box; +} + +#toolbarContainer { + width: 100%; + border-radius: 5px; +} + +#toolbarSidebar { + width: 100%; + height: var(--toolbar-height); + background-color: var(--sidebar-toolbar-bg-color); + box-shadow: var(--toolbarSidebar-box-shadow); + border-bottom: var(--toolbarSidebar-border-bottom); +} + +#sidebarResizer { + position: absolute; + inset-block: 0; + inset-inline-end: -6px; + width: 6px; + z-index: 200; + cursor: ew-resize; +} + +#toolbarContainer, +.findbar, +.secondaryToolbar, +.editorParamsToolbar { + position: relative; + height: var(--toolbar-height); + /* background-color:var(--toolbar-bg-color); */ + background-color: var(--md-sys-color-surface-5); + box-shadow: var(--toolbar-box-shadow); + border-bottom: var(--toolbar-border-bottom); +} + +#toolbarViewer { + height: var(--toolbar-height); + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} + +#loadingBar { + --progressBar-percent: 0%; + --progressBar-end-offset: 0; + + position: absolute; + inset-inline: 0 var(--progressBar-end-offset); + height: 4px; + background-color: var(--progressBar-bg-color); + border-bottom: 1px solid var(--toolbar-border-color); + transition-property: inset-inline-start; + transition-duration: var(--sidebar-transition-duration); + transition-timing-function: var(--sidebar-transition-timing-function); +} + +#outerContainer.sidebarOpen #loadingBar { + inset-inline-start: var(--sidebar-width); +} + +#loadingBar .progress { + position: absolute; + top: 0; + inset-inline-start: 0; + width: 100%; + transform: scaleX(var(--progressBar-percent)); + transform-origin: calc(50% - 50% * var(--dir-factor)) 0; + height: 100%; + background-color: var(--progressBar-color); + overflow: hidden; + transition: transform 200ms; +} + +@keyframes progressIndeterminate { + 0% { + transform: translateX(calc(-142px * var(--dir-factor))); + } + 100% { + transform: translateX(0); + } +} + +#loadingBar.indeterminate .progress { + transform: none; + background-color: var(--progressBar-bg-color); + transition: none; +} + +#loadingBar.indeterminate .progress .glimmer { + position: absolute; + top: 0; + inset-inline-start: 0; + height: 100%; + width: calc(100% + 150px); + background: repeating-linear-gradient( + 135deg, + var(--progressBar-blend-color) 0, + var(--progressBar-bg-color) 5px, + var(--progressBar-bg-color) 45px, + var(--progressBar-color) 55px, + var(--progressBar-color) 95px, + var(--progressBar-blend-color) 100px + ); + animation: progressIndeterminate 1s linear infinite; +} + +#outerContainer.sidebarResizing + :is(#sidebarContainer, #viewerContainer, #loadingBar) { + transition-duration: 0s; +} + +.findbar, +.secondaryToolbar, +.editorParamsToolbar { + top: 32px; + position: absolute; + z-index: 30000; + height: auto; + padding: 0 4px; + margin: 4px 2px; + font: message-box; + font-size: 12px; + line-height: 14px; + text-align: left; + cursor: default; +} + +.findbar { + inset-inline-start: 64px; + min-width: 300px; + background-color: var(--toolbar-bg-color); +} +.findbar > div { + /* height:32px; */ + height: var(--toolbar-height); +} +.findbar > div#findbarInputContainer { + margin-inline-end: 4px; +} +.findbar.wrapContainers > div, +.findbar.wrapContainers > div#findbarMessageContainer > * { + clear: both; +} +.findbar.wrapContainers > div#findbarMessageContainer { + height: auto; +} + +.findbar input[type="checkbox"] { + pointer-events: none; +} + +.findbar label { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.findbar label:hover, +.findbar input:focus-visible + label { + color: var(--toggled-btn-color); + background-color: var(--button-hover-color); +} + +.findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel { + background-color: var(--toggled-btn-bg-color) !important; + color: var(--toggled-btn-color); +} + +#findInput { + width: 200px; +} + +#findInput::-moz-placeholder { + font-style: normal; +} + +#findInput::placeholder { + font-style: normal; +} + +.loadingInput:has(> #findInput[data-status="pending"])::after { + display: block; + visibility: visible; +} + +#findInput[data-status="notFound"] { + background-color: rgb(255 102 102); +} + +.secondaryToolbar, +.editorParamsToolbar { + padding: 6px 0 10px; + inset-inline-end: 4px; + height: auto; + background-color: var(--doorhanger-bg-color); +} + +.editorParamsToolbarContainer { + width: 220px; + margin-bottom: -4px; +} + +.editorParamsToolbarContainer > .editorParamsSetter { + min-height: 26px; + display: flex; + align-items: center; + justify-content: space-between; + padding-inline: 10px; +} + +.editorParamsToolbarContainer .editorParamsLabel { + padding-inline-end: 10px; + flex: none; + font: menu; + font-size: 13px; + font-style: normal; + font-weight: 400; + line-height: 150%; + color: var(--main-color); +} + +.editorParamsToolbarContainer .editorParamsColor { + width: 32px; + height: 32px; + flex: none; +} + +.editorParamsToolbarContainer .editorParamsSlider { + background-color: transparent; + width: 90px; + flex: 0 1 0; +} + +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-progress { + background-color: black; +} + +.editorParamsToolbarContainer + .editorParamsSlider::-webkit-slider-runnable-track, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-track { + background-color: black; +} + +.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-thumb, +.editorParamsToolbarContainer .editorParamsSlider::-moz-range-thumb { + background-color: white; +} + +#secondaryToolbarButtonContainer { + max-width: 220px; + min-height: 26px; + max-height: calc(var(--viewer-container-height) - 40px); + overflow-y: auto; + margin-bottom: -4px; +} + +#editorStampParamsToolbar { + inset-inline-end: calc(var(--editor-toolbar-base-offset) + 0px); +} + +#editorInkParamsToolbar { + inset-inline-end: calc(var(--editor-toolbar-base-offset) + 28px); +} + +#editorFreeTextParamsToolbar { + inset-inline-end: calc(var(--editor-toolbar-base-offset) + 56px); +} + +#editorHighlightParamsToolbar { + inset-inline-end: calc(var(--editor-toolbar-base-offset) + 84px); +} + +#editorStampAddImage::before { + -webkit-mask-image: var(--editorParams-stampAddImage-icon); + mask-image: var(--editorParams-stampAddImage-icon); +} + +.doorHanger, +.doorHangerRight { + border-radius: 2px; + box-shadow: 0 1px 5px var(--doorhanger-border-color), + 0 0 0 1px var(--doorhanger-border-color); + border: var(--doorhanger-border-color-whcm); +} +:is(.doorHanger, .doorHangerRight)::after, +:is(.doorHanger, .doorHangerRight)::before { + bottom: 100%; + border: 8px solid rgb(0 0 0 / 0); + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + opacity: var(--doorhanger-triangle-opacity-whcm); +} +.doorHanger::after { + inset-inline-start: 10px; + margin-inline-start: -8px; + border-bottom-color: var(--toolbar-bg-color); +} +.doorHangerRight::after { + inset-inline-end: 10px; + margin-inline-end: -8px; + border-bottom-color: var(--doorhanger-bg-color); +} +:is(.doorHanger, .doorHangerRight)::before { + border-bottom-color: var(--doorhanger-border-color); + border-width: 9px; +} +.doorHanger::before { + inset-inline-start: 10px; + margin-inline-start: -9px; +} +.doorHangerRight::before { + inset-inline-end: 10px; + margin-inline-end: -9px; +} + +#findResultsCount { + background-color: rgb(217 217 217); + color: rgb(82 82 82); + text-align: center; + padding: 4px 5px; + margin: 5px; +} + +#findMsg[data-status="notFound"] { + font-weight: bold; +} + +:is(#findResultsCount, #findMsg):empty { + display: none; +} + +#toolbarViewerMiddle { + display: flex; + flex-wrap: wrap; + order: 2; +} + +#toolbarViewerLeft, +#toolbarSidebarLeft { + float: var(--inline-start); +} +#toolbarViewerRight, +#toolbarSidebarRight { + float: var(--inline-end); +} + +#toolbarViewerLeft > *, +#toolbarViewerMiddle > *, +#toolbarViewerRight > *, +#toolbarSidebarLeft *, +#toolbarSidebarRight *, +.findbar * { + position: relative; + float: var(--inline-start); +} + +#redactionsToolbarViewer { + order: 3; + column-gap: 3px; +} + +#toolbarViewerLeft { + order: 1; + margin-right: auto; + padding-inline-start: 1px; +} +#toolbarViewerRight { + display: flex; + margin-left: auto; + column-gap: 3px; + order: 4; + padding-inline-end: 1px; +} +#toolbarSidebarRight { + padding-inline-end: 2px; +} + +.splitToolbarButton { + margin: 2px; + display: inline-block; + padding-top: 5px; +} +.splitToolbarButton > .toolbarButton { + float: var(--inline-start); +} + +.toolbarButton, +.secondaryToolbarButton, +.dialogButton { + border: none; + background: none; + width: 28px; + height: 28px; + outline: none; + + background-color: var(--md-sys-color-secondary); + color: var(--md-sys-color-on-secondary); + border-color: var(--md-sys-color-secondary); + box-shadow: var(--md-sys-elevation-3) !important; +} + +.toolbarButton { + height: var(--toolButton-height); + width: var(--toolButton-width); + border-radius: var(--toolButton-border-radius) !important; +} + +.dialogButton:is(:hover, :focus-visible) { + background-color: var(--dialog-button-hover-bg-color); +} + +.dialogButton:is(:hover, :focus-visible) > span { + color: var(--dialog-button-hover-color); +} + +.toolbarButton > span { + display: inline-block; + width: 0; + height: 0; + overflow: hidden; +} + +:is(.toolbarButton, .secondaryToolbarButton, .dialogButton)[disabled] { + opacity: 0.5; +} + +.splitToolbarButton > .toolbarButton:is(:hover, :focus-visible), +.dropdownToolbarButton:hover { + background-color: var(--button-hover-color); +} +.splitToolbarButton > .toolbarButton { + position: relative; + margin: 0; + height: var(--toolButton-height); + width: var(--toolButton-width); +} +#toolbarSidebar .splitToolbarButton > .toolbarButton { + margin-inline-end: 2px; +} + +.splitToolbarButtonSeparator { + float: var(--inline-start); + margin: 4px 3px; + width: 1px; + height: 20px; + background-color: var(--separator-color); + height: var(--toolButton-height); +} + +#scaleSelectContainer { + height: 3.125rem; + inset: 4px 0 0 0; + border-radius: var(--toolButton-border-radius); +} + +#scaleSelectContainer::after { + width: 1.875rem; + height: 1.875rem; +} + +#scaleSelect { + font-size: 1.25rem !important; + height: 100%; + border-radius: inherit; +} + +.toolbarButton, +.dropdownToolbarButton, +.secondaryToolbarButton, +.dialogButton { + min-width: 16px; + margin: 2px 3px; + padding: 2px 6px 0; + border: none; + border-radius: 2px; + color: var(--main-color); + font-size: 12px; + line-height: 14px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + cursor: default; + box-sizing: border-box; +} + +.toolbarButton:is(:hover, :focus-visible) { + background-color: var(--button-hover-color); +} +.secondaryToolbarButton:is(:hover, :focus-visible) { + background-color: var(--doorhanger-hover-bg-color); + color: var(--doorhanger-hover-color); +} + +:is(.toolbarButton, .secondaryToolbarButton).toggled, +.splitToolbarButton.toggled > .toolbarButton.toggled { + background-color: var(--toggled-btn-bg-color); + color: var(--toggled-btn-color); +} + +:is(.toolbarButton, .secondaryToolbarButton).toggled:hover, +.splitToolbarButton.toggled > .toolbarButton.toggled:hover { + outline: var(--toggled-hover-btn-outline) !important; +} + +:is(.toolbarButton, .secondaryToolbarButton).toggled::before { + background-color: var(--toggled-btn-color); +} + +:is(.toolbarButton, .secondaryToolbarButton).toggled:hover:active, +.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active { + background-color: var(--toggled-hover-active-btn-color); +} + +.dropdownToolbarButton { + display: flex; + width: -moz-fit-content; + width: fit-content; + min-width: 140px; + padding: 0; + background-color: var(--dropdown-btn-bg-color); + border: var(--dropdown-btn-border); +} +.dropdownToolbarButton::after { + top: 10px; + inset-inline-end: 6px; + pointer-events: none; + -webkit-mask-image: var(--toolbarButton-menuArrow-icon); + mask-image: var(--toolbarButton-menuArrow-icon); +} + +.dropdownToolbarButton > select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: inherit; + min-width: inherit; + height: 28px; + font-size: 12px; + color: var(--main-color); + margin: 0; + padding-block: 1px 2px; + padding-inline: 6px 38px; + border: none; + background-color: var(--dropdown-btn-bg-color); +} +.dropdownToolbarButton > select:is(:hover, :focus-visible) { + background-color: var(--button-hover-color); + color: var(--toggled-btn-color); +} +.dropdownToolbarButton > select > option { + background: var(--doorhanger-bg-color); + color: var(--main-color); +} + +.toolbarButtonSpacer { + width: 30px; + display: inline-block; + height: 1px; +} + +:is(.toolbarButton, .secondaryToolbarButton, .treeItemToggler)::before, +.dropdownToolbarButton::after { + position: absolute; + display: inline-block; + width: 16px; + height: 16px; + + content: ""; + background-color: var(--toolbar-icon-bg-color); + -webkit-mask-size: cover; + mask-size: cover; +} + +.dropdownToolbarButton:is(:hover, :focus-visible, :active)::after { + background-color: var(--toolbar-icon-hover-bg-color); +} + +.toolbarButton::before { + opacity: var(--toolbar-icon-opacity); + top: 8px; + left: 10px; + height: 1.875rem; + width: 1.875rem; + background-color: var(--md-sys-color-on-secondary); +} + +.toolbarButton:is(:hover, :focus-visible)::before, +.secondaryToolbarButton:is(:hover, :focus-visible)::before { + background-color: var(--toolbar-icon-hover-bg-color); +} + +.secondaryToolbarButton::before { + opacity: var(--doorhanger-icon-opacity); + top: 5px; + inset-inline-start: 12px; +} + +#sidebarToggle { + height: var(--toolButton-height); + width: var(--toolButton-width); +} + +#sidebarToggle::before { + -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon); + mask-image: var(--toolbarButton-sidebarToggle-icon); + transform: scaleX(var(--dir-factor)); + + height: 1.875rem; + width: 1.875rem; +} + +#secondaryToolbarToggle::before { + -webkit-mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); + mask-image: var(--toolbarButton-secondaryToolbarToggle-icon); + transform: scaleX(var(--dir-factor)); +} + +#backToHome::before { + -webkit-mask-image: var(--toolbarButton-backToHome-icon); + mask-image: var(--toolbarButton-backToHome-icon); + transform: scaleX(var(--dir-factor)); +} + +#findPrevious::before { + -webkit-mask-image: var(--findbarButton-previous-icon); + mask-image: var(--findbarButton-previous-icon); +} + +#findNext::before { + -webkit-mask-image: var(--findbarButton-next-icon); + mask-image: var(--findbarButton-next-icon); +} + +#previous::before { + -webkit-mask-image: var(--toolbarButton-pageUp-icon); + mask-image: var(--toolbarButton-pageUp-icon); +} + +#next::before { + -webkit-mask-image: var(--toolbarButton-pageDown-icon); + mask-image: var(--toolbarButton-pageDown-icon); +} + +#zoomOut::before { + -webkit-mask-image: var(--toolbarButton-zoomOut-icon); + mask-image: var(--toolbarButton-zoomOut-icon); +} + +#zoomIn::before { + -webkit-mask-image: var(--toolbarButton-zoomIn-icon); + mask-image: var(--toolbarButton-zoomIn-icon); +} + +#presentationMode::before { + -webkit-mask-image: var(--toolbarButton-presentationMode-icon); + mask-image: var(--toolbarButton-presentationMode-icon); +} + +#editorFreeText::before { + -webkit-mask-image: var(--toolbarButton-editorFreeText-icon); + mask-image: var(--toolbarButton-editorFreeText-icon); +} + +#editorHighlight::before { + -webkit-mask-image: var(--toolbarButton-editorHighlight-icon); + mask-image: var(--toolbarButton-editorHighlight-icon); +} + +#editorInk::before { + -webkit-mask-image: var(--toolbarButton-editorInk-icon); + mask-image: var(--toolbarButton-editorInk-icon); +} + +#editorStamp::before { + -webkit-mask-image: var(--toolbarButton-editorStamp-icon); + mask-image: var(--toolbarButton-editorStamp-icon); +} + +:is(#print, #secondaryPrint)::before { + -webkit-mask-image: var(--toolbarButton-print-icon); + mask-image: var(--toolbarButton-print-icon); +} + +#secondaryOpenFile::before, +#openFile::before { + -webkit-mask-image: var(--toolbarButton-openFile-icon); + mask-image: var(--toolbarButton-openFile-icon); +} + +:is(#download, #secondaryDownload)::before { + -webkit-mask-image: var(--toolbarButton-download-icon); + mask-image: var(--toolbarButton-download-icon); +} + +a.secondaryToolbarButton { + padding-top: 5px; + text-decoration: none; +} +a:is(.toolbarButton, .secondaryToolbarButton)[href="#"] { + opacity: 0.5; + pointer-events: none; +} + +#viewBookmark::before { + -webkit-mask-image: var(--toolbarButton-bookmark-icon); + mask-image: var(--toolbarButton-bookmark-icon); +} + +#viewThumbnail::before { + -webkit-mask-image: var(--toolbarButton-viewThumbnail-icon); + mask-image: var(--toolbarButton-viewThumbnail-icon); +} + +#viewOutline::before { + -webkit-mask-image: var(--toolbarButton-viewOutline-icon); + mask-image: var(--toolbarButton-viewOutline-icon); + transform: scaleX(var(--dir-factor)); +} + +#viewAttachments::before { + -webkit-mask-image: var(--toolbarButton-viewAttachments-icon); + mask-image: var(--toolbarButton-viewAttachments-icon); +} + +#viewLayers::before { + -webkit-mask-image: var(--toolbarButton-viewLayers-icon); + mask-image: var(--toolbarButton-viewLayers-icon); +} + +#currentOutlineItem::before { + -webkit-mask-image: var(--toolbarButton-currentOutlineItem-icon); + mask-image: var(--toolbarButton-currentOutlineItem-icon); + transform: scaleX(var(--dir-factor)); +} + +#viewFind::before { + -webkit-mask-image: var(--toolbarButton-search-icon); + mask-image: var(--toolbarButton-search-icon); +} + +.pdfSidebarNotification::after { + position: absolute; + display: inline-block; + top: 2px; + inset-inline-end: 2px; + content: ""; + background-color: rgb(112 219 85); + height: 9px; + width: 9px; + border-radius: 50%; +} + +.secondaryToolbarButton { + position: relative; + margin: 0; + padding: 0 0 1px; + padding-inline-start: 36px; + height: auto; + min-height: 26px; + width: auto; + min-width: 100%; + text-align: start; + white-space: normal; + border-radius: 0; + box-sizing: border-box; + display: inline-block; +} +.secondaryToolbarButton > span { + padding-inline-end: 4px; +} + +#firstPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon); + mask-image: var(--secondaryToolbarButton-firstPage-icon); +} + +#lastPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon); + mask-image: var(--secondaryToolbarButton-lastPage-icon); +} + +#pageRotateCcw::before { + -webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon); + mask-image: var(--secondaryToolbarButton-rotateCcw-icon); +} + +#pageRotateCw::before { + -webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon); + mask-image: var(--secondaryToolbarButton-rotateCw-icon); +} + +#cursorSelectTool::before { + -webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon); + mask-image: var(--secondaryToolbarButton-selectTool-icon); +} + +#cursorHandTool::before { + -webkit-mask-image: var(--secondaryToolbarButton-handTool-icon); + mask-image: var(--secondaryToolbarButton-handTool-icon); +} + +#scrollPage::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollPage-icon); + mask-image: var(--secondaryToolbarButton-scrollPage-icon); +} + +#scrollVertical::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon); + mask-image: var(--secondaryToolbarButton-scrollVertical-icon); +} + +#scrollHorizontal::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); + mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon); +} + +#scrollWrapped::before { + -webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); + mask-image: var(--secondaryToolbarButton-scrollWrapped-icon); +} + +#spreadNone::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon); + mask-image: var(--secondaryToolbarButton-spreadNone-icon); +} + +#spreadOdd::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon); + mask-image: var(--secondaryToolbarButton-spreadOdd-icon); +} + +#spreadEven::before { + -webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon); + mask-image: var(--secondaryToolbarButton-spreadEven-icon); +} + +#documentProperties::before { + -webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon); + mask-image: var(--secondaryToolbarButton-documentProperties-icon); +} + +.verticalToolbarSeparator { + display: block; + margin: 5px 2px; + width: 1px; + height: 22px; + background-color: var(--separator-color); +} +.horizontalToolbarSeparator { + display: block; + margin: 6px 0; + height: 1px; + width: 100%; + background-color: var(--doorhanger-separator-color); +} + +.toolbarField { + padding: 4px 7px; + margin: 3px 0; + border-radius: 2px; + background-color: var(--field-bg-color); + background-clip: padding-box; + border: 1px solid var(--field-border-color); + box-shadow: none; + color: var(--field-color); + font-size: 12px; + line-height: 16px; + outline: none; +} + +.toolbarField[type="checkbox"] { + opacity: 0; + position: absolute !important; + left: 0; + margin: 10px 0 3px; + margin-inline-start: 7px; +} + +#pageNumber { + -moz-appearance: textfield; + text-align: end; + width: var(--toolButton-width); + height: var(--toolButton-height); + font-size: 1.25rem !important; + background-size: 0 0; + transition-property: none; + border-radius: 10px; +} + +#pageNumber::-webkit-inner-spin-button { + -webkit-appearance: none; +} + +.loadingInput:has(> #pageNumber.loading)::after { + display: block; + visibility: visible; + + transition-property: visibility; + transition-delay: var(--loading-icon-delay); +} + +.loadingInput::after { + position: absolute; + visibility: hidden; + display: none; + top: calc(50% - 12px); + width: 16px; + height: 16px; + + content: ""; + background-color: var(--toolbar-icon-bg-color); + -webkit-mask-size: cover; + mask-size: cover; + -webkit-mask-image: var(--loading-icon); + mask-image: var(--loading-icon); +} + +.loadingInput.start { + height: var(--toolButton-height); + width: var(--toolButton-width); + padding-top: 5px; +} + +.loadingInput.start::after { + inset-inline-start: 4px; +} + +.loadingInput.end::after { + inset-inline-end: 4px; +} + +.toolbarField:focus { + border-color: #0a84ff; +} + +.toolbarLabel { + min-width: 16px; + padding: 7px; + margin: 2px; + border-radius: 2px; + color: var(--md-sys-color-on-surface); + font-size: 12px; + line-height: 14px; + text-align: left; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + cursor: default; +} + +#numPages { + font-size: 1.25rem; + line-height: 2.812rem; +} + +#numPages.toolbarLabel { + padding-inline-start: 3px; +} + +#thumbnailView, +#outlineView, +#attachmentsView, +#layersView { + position: absolute; + width: calc(100% - 12px); + inset-block: 0; + padding: 4px 4px 0; + overflow: auto; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +#thumbnailView { + width: calc(100% - 60px); + padding: 10px 30px 0; +} + +#thumbnailView > a:is(:active, :focus) { + outline: 0; +} + +.thumbnail { + --thumbnail-width: 0; + --thumbnail-height: 0; + + float: var(--inline-start); + width: var(--thumbnail-width); + height: var(--thumbnail-height); + margin: 0 10px 5px; + padding: 1px; + border: 7px solid transparent; + border-radius: 2px; +} + +#thumbnailView > a:last-of-type > .thumbnail { + margin-bottom: 10px; +} + +a:focus > .thumbnail, +.thumbnail:hover { + border-color: var(--thumbnail-hover-color); +} +.thumbnail.selected { + border-color: var(--thumbnail-selected-color) !important; +} + +.thumbnailImage { + width: var(--thumbnail-width); + height: var(--thumbnail-height); + opacity: 0.9; +} +a:focus > .thumbnail > .thumbnailImage, +.thumbnail:hover > .thumbnailImage { + opacity: 0.95; +} +.thumbnail.selected > .thumbnailImage { + opacity: 1 !important; +} + +.thumbnail:not([data-loaded]) > .thumbnailImage { + width: calc(var(--thumbnail-width) - 2px); + height: calc(var(--thumbnail-height) - 2px); + border: 1px dashed rgb(132 132 132); +} + +.treeWithDeepNesting > .treeItem, +.treeItem > .treeItems { + margin-inline-start: 20px; +} + +.treeItem > a { + text-decoration: none; + display: inline-block; + min-width: calc(100% - 4px); + height: auto; + margin-bottom: 1px; + padding: 2px 0 5px; + padding-inline-start: 4px; + border-radius: 2px; + color: var(--treeitem-color); + font-size: 13px; + line-height: 15px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + white-space: normal; + cursor: pointer; +} + +#layersView .treeItem > a * { + cursor: pointer; +} +#layersView .treeItem > a > label { + padding-inline-start: 4px; +} +#layersView .treeItem > a > label > input { + float: var(--inline-start); + margin-top: 1px; +} + +.treeItemToggler { + position: relative; + float: var(--inline-start); + height: 0; + width: 0; + color: rgb(255 255 255 / 0.5); +} +.treeItemToggler::before { + inset-inline-end: 4px; + -webkit-mask-image: var(--treeitem-expanded-icon); + mask-image: var(--treeitem-expanded-icon); +} +.treeItemToggler.treeItemsHidden::before { + -webkit-mask-image: var(--treeitem-collapsed-icon); + mask-image: var(--treeitem-collapsed-icon); + transform: scaleX(var(--dir-factor)); +} +.treeItemToggler.treeItemsHidden ~ .treeItems { + display: none; +} + +.treeItem.selected > a { + background-color: var(--treeitem-selected-bg-color); + color: var(--treeitem-selected-color); +} + +.treeItemToggler:hover, +.treeItemToggler:hover + a, +.treeItemToggler:hover ~ .treeItems, +.treeItem > a:hover { + background-color: var(--treeitem-bg-color); + background-clip: padding-box; + border-radius: 2px; + color: var(--treeitem-hover-color); +} + +#outlineOptionsContainer { + display: none; +} + +#sidebarContainer:has(#outlineView:not(.hidden)) #outlineOptionsContainer { + display: inherit; +} + +.dialogButton { + width: auto; + margin: 3px 4px 2px !important; + padding: 2px 11px; + color: var(--main-color); + background-color: var(--dialog-button-bg-color); + border: var(--dialog-button-border) !important; +} + +dialog { + margin: auto; + padding: 15px; + border-spacing: 4px; + color: var(--main-color); + font: message-box; + font-size: 12px; + line-height: 14px; + background-color: var(--doorhanger-bg-color); + border: 1px solid rgb(0 0 0 / 0.5); + border-radius: 4px; + box-shadow: 0 1px 4px rgb(0 0 0 / 0.3); +} +dialog::backdrop { + background-color: rgb(0 0 0 / 0.2); +} + +dialog > .row { + display: table-row; +} + +dialog > .row > * { + display: table-cell; +} + +dialog .toolbarField { + margin: 5px 0; +} + +dialog .separator { + display: block; + margin: 4px 0; + height: 1px; + width: 100%; + background-color: var(--separator-color); +} + +dialog .buttonRow { + text-align: center; + vertical-align: middle; +} + +dialog :link { + color: rgb(255 255 255); +} + +#passwordDialog { + text-align: center; +} +#passwordDialog .toolbarField { + width: 200px; +} + +#documentPropertiesDialog { + text-align: left; +} +#documentPropertiesDialog .row > * { + min-width: 100px; + text-align: start; +} +#documentPropertiesDialog .row > span { + width: 125px; + word-wrap: break-word; +} +#documentPropertiesDialog .row > p { + max-width: 225px; + word-wrap: break-word; +} +#documentPropertiesDialog .buttonRow { + margin-top: 10px; +} + +.grab-to-pan-grab { + cursor: grab !important; +} +.grab-to-pan-grab + *:not(input):not(textarea):not(button):not(select):not(:link) { + cursor: inherit !important; +} +.grab-to-pan-grab:active, +.grab-to-pan-grabbing { + cursor: grabbing !important; +} +.grab-to-pan-grabbing { + position: fixed; + background: rgb(0 0 0 / 0); + display: block; + inset: 0; + overflow: hidden; + z-index: 50000; +} + +@page { + margin: 0; +} + +#printContainer { + display: none; +} + +@media print { + body { + background: rgb(0 0 0 / 0) none; + } + body[data-pdfjsprinting] #outerContainer { + display: none; + } + body[data-pdfjsprinting] #printContainer { + display: block; + } + #printContainer { + height: 100%; + } + #printContainer > .printedPage { + page-break-after: always; + page-break-inside: avoid; + height: 100%; + width: 100%; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + + #printContainer > .xfaPrintedPage .xfaPage { + position: absolute; + } + + #printContainer > .xfaPrintedPage { + page-break-after: always; + page-break-inside: avoid; + width: 100%; + height: 100%; + position: relative; + } + + #printContainer > .printedPage :is(canvas, img) { + max-width: 100%; + max-height: 100%; + + direction: ltr; + display: block; + } +} + +.visibleMediumView { + display: none; +} + +@media all and (max-width: 840px) { + #sidebarContainer { + background-color: var(--sidebar-narrow-bg-color); + } + #outerContainer.sidebarOpen #viewerContainer { + inset-inline-start: 0 !important; + } +} + +@media all and (max-width: 750px) { + :root { + --editor-toolbar-base-offset: 40px; + } + #outerContainer .hiddenMediumView { + display: none; + } + #outerContainer .visibleMediumView { + display: inherit; + } +} + +@media all and (max-width: 690px) { + .hiddenSmallView, + .hiddenSmallView * { + display: none; + } + .toolbarButtonSpacer { + width: 0; + } + .findbar { + inset-inline-start: 34px; + } +} +/* +@media all and (max-width: 560px){ + #scaleSelectContainer{ + display:none; + } +} */ + +#showMoreBtnContainer { + display: none; +} +.toolbar img.main-icon { + height: 3.375rem; + width: 3.375rem; + inset: 5px; +} + +@media (max-width: 1125px) { + #showMoreBtnContainer { + display: flex; + } + + #toolbarViewerMiddle > .splitToolbarButton { + display: flex; + } + + #toolbarViewerRight { + display: none; + margin-left: 0; + } + + #toolbarViewerRight > div.splitToolbarButton { + display: flex; + flex-direction: column; + align-items: center; + row-gap: 3px; + + position: absolute; + left: 3px; + top: var(--toolbar-height); + } +} + +@media (max-width: 885px) { + #toolbarViewerMiddle { + order: 3; + position: fixed; + display: flex; + flex-wrap: nowrap; + bottom: 15px; + left: 50%; + transform: translate(-50%); + } + + #toolbarViewerMiddle .splitToolbarButton .splitToolbarButtonSeparator { + display: none; + } + + #redactionsToolbarViewer { + order: 2; + } + + + #pageBasedRedactionOverlay > .bg-card { + padding: 1.5rem; + } + + #pageBasedRedactionOverlay > .bg-card > div.tool-header { + display: flex; + column-gap: 10px; + } + + #pageBasedRedactionOverlay > .bg-card > div.tool-header > span:nth-child(1) { + margin: auto; + height: 3.5rem; + width: 3.5rem; + border-radius: 15px; + font-size: 2.5rem; + } + + #pageBasedRedactionOverlay > .bg-card > div.tool-header > span:nth-child(2) { + font-size: 1.5rem; + } + + #pageBasedRedactionOverlay > .bg-card > div:nth-child(3) { + flex-direction: column; + row-gap: 3px; + } + + #pageBasedRedactionOverlay > .bg-card > div:nth-child(3) > input { + width: 100%; + height: 30px; + margin-left: 0 !important; + flex: none; + } +} + +@media (max-width: 510px) { + .toolbar img.main-icon { + display: none; + } +} + +@media (max-width: 450px) { + :root { + --toolButton-height: 2.5rem; + --toolButton-width: 2.5rem; + --toolButton-icon-font-size: 1.8rem; + } + + #pageNumber { + font-size: 1rem !important; + } + + #numPages { + font-size: 1rem; + line-height: 2.512rem; + } + + .toolbarButton::before { + left: 5px; + top: 5px; + } + + #redactionsToolbarViewer { + order: 2; + } + + #toolbarViewerMiddle { + position: fixed; + display: flex; + flex-wrap: nowrap; + order: 3; + bottom: 15px; + left: 50%; + transform: translate(-50%); + } + + #scaleSelectContainer { + height: 2.825rem; + } + + html, + body { + overflow: hidden !important; + } + + .splitToolbarButton { + display: flex !important; + } + + .toolbar img.main-icon { + height: var(--toolButton-height); + width: var(--toolButton-width); + inset: 10px 0 0 0; + } +} + +@media (max-width: 390px) { + #toolbarViewerLeft { + display: grid; + } + + #toolbarViewerLeft #showMoreBtnContainer { + grid-row: 1; + grid-column: 1; + } + + #sidebarToggle { + grid-row: 1; + grid-column: 2; + } + + #toolbarViewerLeft .loadingInput.start { + grid-row: 1; + grid-column: 3; + + margin-bottom: auto; + margin-top: -2px + } + + #pageNumber { + height: 1.9rem; + } + + #numPages { + grid-row: 1; + grid-column: 3; + + line-height: 0; + + margin-top: auto; + margin-bottom: -4px + } + +} diff --git a/src/main/resources/static/pdfjs-legacy/pdf.mjs b/src/main/resources/static/pdfjs-legacy/pdf.mjs index e38f4c38a5..da8e401480 100644 --- a/src/main/resources/static/pdfjs-legacy/pdf.mjs +++ b/src/main/resources/static/pdfjs-legacy/pdf.mjs @@ -4630,7 +4630,7 @@ if (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) { /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; -/******/ +/******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache @@ -4644,14 +4644,14 @@ if (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) { /******/ // no module.loaded needed /******/ exports: {} /******/ }; -/******/ +/******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ +/******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } -/******/ +/******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { @@ -4664,12 +4664,12 @@ if (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) { /******/ } /******/ }; /******/ })(); -/******/ +/******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); -/******/ +/******/ /************************************************************************/ var __webpack_exports__ = globalThis.pdfjsLib = {}; // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. @@ -6385,8 +6385,8 @@ function setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) const useRound = util_FeatureTest.isCSSRoundSupported; const w = `var(--scale-factor) * ${pageWidth}px`, h = `var(--scale-factor) * ${pageHeight}px`; - const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`, - heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`; + const widthStr = useRound ? `round(up, ${w}, 1px)` : `calc(${w})`, + heightStr = useRound ? `round(up, ${h}, 1px)` : `calc(${h})`; if (!mustFlip || viewport.rotation % 180 === 0) { style.width = widthStr; style.height = heightStr; @@ -24317,4 +24317,4 @@ var __webpack_exports__updateTextLayer = __webpack_exports__.updateTextLayer; var __webpack_exports__version = __webpack_exports__.version; export { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__CMapCompressionType as CMapCompressionType, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__Outliner as Outliner, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__renderTextLayer as renderTextLayer, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__updateTextLayer as updateTextLayer, __webpack_exports__version as version }; -//# sourceMappingURL=pdf.mjs.map \ No newline at end of file +//# sourceMappingURL=pdf.mjs.map diff --git a/src/main/resources/templates/account.html b/src/main/resources/templates/account.html index c9d087236b..1e61db9d7b 100644 --- a/src/main/resources/templates/account.html +++ b/src/main/resources/templates/account.html @@ -196,7 +196,7 @@

API Key

/**/ - let response = await fetch(urlGetApiKey, { method: 'POST' }); + let response = await window.fetchWithCsrf(urlGetApiKey, { method: 'POST' }); if (response.status === 200) { let apiKey = await response.text(); manageUIState(apiKey); @@ -213,7 +213,7 @@

API Key

/**/ - let response = await fetch(urlUpdateApiKey, { method: 'POST' }); + let response = await window.fetchWithCsrf(urlUpdateApiKey, { method: 'POST' }); if (response.status === 200) { let apiKey = await response.text(); manageUIState(apiKey); diff --git a/src/main/resources/templates/addUsers.html b/src/main/resources/templates/addUsers.html index ba020c4f64..144113406a 100644 --- a/src/main/resources/templates/addUsers.html +++ b/src/main/resources/templates/addUsers.html @@ -89,10 +89,10 @@
- + @@ -41,10 +41,12 @@
- -
@@ -189,7 +189,7 @@
+
DB-Version
+ Create Backup File
-
+

diff --git a/src/main/resources/templates/error.html b/src/main/resources/templates/error.html index 314d28b399..00f22c27b0 100644 --- a/src/main/resources/templates/error.html +++ b/src/main/resources/templates/error.html @@ -19,7 +19,7 @@

- +
diff --git a/src/main/resources/templates/fragments/common.html b/src/main/resources/templates/fragments/common.html index ac94030a48..1cd908a699 100644 --- a/src/main/resources/templates/fragments/common.html +++ b/src/main/resources/templates/fragments/common.html @@ -24,7 +24,8 @@ - + + @@ -59,8 +60,7 @@ - - + @@ -203,12 +203,31 @@ - -
-
- + +
+
+ +
+
+
-
+
- + diff --git a/src/main/resources/templates/fragments/errorBanner.html b/src/main/resources/templates/fragments/errorBanner.html index 32fb9019c5..d682dcb922 100644 --- a/src/main/resources/templates/fragments/errorBanner.html +++ b/src/main/resources/templates/fragments/errorBanner.html @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/src/main/resources/templates/fragments/navbar.html b/src/main/resources/templates/fragments/navbar.html index d9dfa69bdc..b89f60a0de 100644 --- a/src/main/resources/templates/fragments/navbar.html +++ b/src/main/resources/templates/fragments/navbar.html @@ -1,10 +1,11 @@
+ +