|
1 | 1 | # |
2 | | -# Copyright 2020 Venafi, Inc. |
| 2 | +# Copyright 2020-2025 Venafi, Inc. |
3 | 3 | # |
4 | 4 | # Licensed under the Apache License, Version 2.0 (the "License"); |
5 | 5 | # you may not use this file except in compliance with the License. |
@@ -52,6 +52,7 @@ class URLS: |
52 | 52 | REVOKE_TOKEN = API_TOKEN_URL + "revoke/token" # type: str |
53 | 53 |
|
54 | 54 | AUTHORIZE = API_BASE_URL + "authorize/" |
| 55 | + VERSION = API_BASE_URL + "systemstatus/version" |
55 | 56 | CERTIFICATE_REQUESTS = API_BASE_URL + "certificates/request" |
56 | 57 | CERTIFICATE_RETRIEVE = API_BASE_URL + "certificates/retrieve" |
57 | 58 | FIND_POLICY = API_BASE_URL + "config/findpolicy" |
@@ -99,6 +100,13 @@ def __init__(self): |
99 | 100 | def auth(self): |
100 | 101 | raise NotImplementedError |
101 | 102 |
|
| 103 | + def get_version(self): |
| 104 | + args = { self.ARG_URL: URLS.VERSION } |
| 105 | + status, data = self.get(args=args) |
| 106 | + if status != HTTPStatus.OK: |
| 107 | + raise ServerUnexptedBehavior(f"Server returns {status} status on get version") |
| 108 | + return data['Version'] |
| 109 | + |
102 | 110 | def request_cert(self, request, zone): |
103 | 111 | request_data = { |
104 | 112 | 'PolicyDN': self._normalize_zone(zone), |
@@ -591,14 +599,35 @@ def set_policy(self, zone, policy_spec): |
591 | 599 | self._set_policy_attr(name, SPA.TPP_STATE, [tpp_policy.state.value], tpp_policy.state.locked) |
592 | 600 | if tpp_policy.country: |
593 | 601 | self._set_policy_attr(name, SPA.TPP_COUNTRY, [tpp_policy.country.value], tpp_policy.state.locked) |
594 | | - if tpp_policy.key_algo: |
595 | | - self._set_policy_attr(name, SPA.TPP_KEY_ALGORITHM, [tpp_policy.key_algo.value], tpp_policy.key_algo.locked) |
596 | | - if tpp_policy.key_bit_str: |
597 | | - self._set_policy_attr(name, SPA.TPP_KEY_BIT_STR, [tpp_policy.key_bit_str.value], |
598 | | - tpp_policy.key_bit_str.locked) |
599 | | - if tpp_policy.elliptic_curve: |
600 | | - self._set_policy_attr(name, SPA.TPP_ELLIPTIC_CURVE, [tpp_policy.elliptic_curve.value], |
601 | | - tpp_policy.elliptic_curve.locked) |
| 602 | + |
| 603 | + # Check the TPP version is 25.x or greater |
| 604 | + tpp_version_number = -1 |
| 605 | + tpp_version = self.get_version() |
| 606 | + if tpp_version and "." in tpp_version: |
| 607 | + tpp_version_number = int(tpp_version.split(".")[0]) |
| 608 | + if tpp_version_number >= 25: |
| 609 | + # Create "PKIX Parameter Set" attributes |
| 610 | + if tpp_policy.pkix_parameter_set: |
| 611 | + self._set_policy_attr(name, SPA.TPP_PKIX_PARAMETER_SET_POLICY, [tpp_policy.pkix_parameter_set.value], tpp_policy.pkix_parameter_set.locked) |
| 612 | + else: |
| 613 | + # For backward compatibility, if the "PKIX Parameter Set" is not set, we need to set it using the "Key Algorithm", |
| 614 | + # "Key Bit Strength" and "Elliptic Curve" attribute values |
| 615 | + pkixOid = tpp_policy.pkix_parameter_set_from_old_key_attributes() |
| 616 | + if pkixOid: |
| 617 | + self._set_policy_attr(name, SPA.TPP_PKIX_PARAMETER_SET_POLICY, [pkixOid], tpp_policy.key_algo.locked) |
| 618 | + self._set_policy_attr(name, SPA.TPP_PKIX_PARAMETER_SET_POLICY_DEFAULT, [pkixOid], tpp_policy.key_algo.locked) |
| 619 | + if tpp_policy.pkix_parameter_set_default: |
| 620 | + self._set_policy_attr(name, SPA.TPP_PKIX_PARAMETER_SET_POLICY_DEFAULT, [tpp_policy.pkix_parameter_set_default.value], tpp_policy.pkix_parameter_set_default.locked) |
| 621 | + else: |
| 622 | + if tpp_policy.key_algo: |
| 623 | + self._set_policy_attr(name, SPA.TPP_KEY_ALGORITHM, [tpp_policy.key_algo.value], tpp_policy.key_algo.locked) |
| 624 | + if tpp_policy.key_bit_str: |
| 625 | + self._set_policy_attr(name, SPA.TPP_KEY_BIT_STR, [tpp_policy.key_bit_str.value], |
| 626 | + tpp_policy.key_bit_str.locked) |
| 627 | + if tpp_policy.elliptic_curve: |
| 628 | + self._set_policy_attr(name, SPA.TPP_ELLIPTIC_CURVE, [tpp_policy.elliptic_curve.value], |
| 629 | + tpp_policy.elliptic_curve.locked) |
| 630 | + |
602 | 631 | if tpp_policy.management_type: |
603 | 632 | self._set_policy_attr(name, SPA.TPP_MANAGEMENT_TYPE, [tpp_policy.management_type.value], |
604 | 633 | tpp_policy.management_type.locked) |
|
0 commit comments