Skip to content

Commit 169ed0f

Browse files
committed
- Updated code to remove dependency on Cryptodome, which has not been active for a lot of time. Using Cryptography instead.
1 parent 655ec63 commit 169ed0f

4 files changed

Lines changed: 3 additions & 66 deletions

File tree

requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,3 @@ enum34;python_version<'3.4'
77
future
88
ruamel.yaml<0.17
99
pynacl>=1.4.0
10-
pycryptodome>=3.11.0

tests/test_vaas.py

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -27,43 +27,9 @@
2727
from test_env import CLOUD_ZONE, CLOUD_APIKEY, CLOUD_URL, RANDOM_DOMAIN
2828
from test_utils import random_word, enroll, renew, renew_by_thumbprint, renew_without_key_reuse, simple_enroll
2929
from vcert import CloudConnection, KeyType, CertificateRequest, CustomField, logger, CSR_ORIGIN_SERVICE
30-
from vcert.pem import pkcs8_to_pem_private_key
3130

3231
log = logger.get_child("test-vaas")
3332

34-
p8_key = """
35-
-----BEGIN ENCRYPTED PRIVATE KEY-----
36-
MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIPLsOsD8egf4CAicQ
37-
MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBCGU0yCgxPiFpL/l+F5/wmzBIIE
38-
0B2QHY6GoIj204ovABzvhgu6DPt3qvMtxWUhparQoOirf6IWpgPs5yIEVYzm33vb
39-
I0yWb4DTTLQc0k+s1e1whDkhEDyeZ0GGHzHu2LHnsLLUKbUW9wsod9GlQ61IACnr
40-
i8ehxgAAyYAB/PIcwpuF+nzyRHx9bud/916DYQ7Y/DWmCpSHB1/O9vkY1RZJjOqc
41-
XrmzVqL+FBWjPzXk5FfWkRoVIUWsB/yWaP4ZYb5o8xgcAvvyXeofhum9vmiRlRB+
42-
ii6SH7lgFE7BL1qZPnNCjFeBbDv9OryR1h3FbGnNaKJGOrlA1sirg0lMyi2zsaBe
43-
M0B8y8AVnU8q5JnToIFFo4BnimK7jXPspQ/opu9IaZDWKf3wbwUiC+IfytlelVpT
44-
lMTLvYPPypsjqhInDRrPbdlmx1WN9bfHdkwzRm3x4UuAKTcQKX/5s8AdNDTRx4Kv
45-
UZ2wLylEQcCWYWm3m+YL0PcsnUX301dmKHGG0ub/CwIFO1GYI9+Eb1azsS3h+fx7
46-
Ec4rOzZ4Q5h1HWnV3P7CVqyq4hSqJ3f7DMThCgW0up2woCMZnZqQcg4+VUYH1oFg
47-
YvrCV0N4W9woHWS6v0HDhMAR9HadUAvDetljrp1ygiPGAe+giNF9AZ+7+MTVwT/M
48-
YEcDzxCrKWQ57KdxnZL2cVELx0pihmqEs0jvh++YShszE39S/Pk58BqFLaS+/eAy
49-
42fXlih2FE+Pj5dTrxY3wY759SOZy+AlHytd3PkYHvCd7qgYTCUo+y8Gd2tIVW2g
50-
pwx59953QhCoyPFMvm97pkHi9IMLLoBobdngV2FKzj3lch1V8iujqNdA8W0Zny0S
51-
6KQgSn6GvW/EVVVIckS41uoKxTJVnCNsI8jpBa4/bUvZzx8s6gDHSZqTFgh+jssu
52-
8rI8nGRsFa3+ynoR3rFcaRFi733BjPHdCYlEYLxfPwhpQ5wYAU2NCMJbCkiakPSR
53-
ywNbIhxJhdmhD8zbNifLaXUB/iFhbW4e+QcZZNo8im/ty0J3OSj9OqNIAAP8k7CV
54-
MdQbI4yu09hDPKIw7YBS+R5pmOjiuQOL4mzeOb8MN4i4AHCUiH/K63pVDqkT1yNM
55-
rIIFjljg1loosubHTU59vWKE/OPuY+BFviK49rw0xGyPdHECgkpS6/CPfzIEkr8U
56-
RsNxRVW/fjTdSw3YaqlrTNEN6tLuddq2R/rMvyXlzhcGB2H81V8ZgJ4bqTgfUdH4
57-
iAv49PCCIClPQYD4W1HzuSFlNwT4Cy29QgSjw0bHFmvmNvfInidBH5DoJeMovMsy
58-
OROtIuCG0QZjfIcsreU7gcbUvwPNB+nQaDA3IA7fkYmE1xvj38YMIimDRWFKN5Q6
59-
f67kAGgkFcBlKGh6J+iGNIMscGkRbPRlNHtefE/vaAMHNUBfNxuVk6ylf2Hj2YC9
60-
gXSp4S0pq5RUvt8KPzeba0mtNlmuFSK9ZfOOu/eBIGvHwA7+HWG4ogTpER1IXbnE
61-
ZzcdVwYponiGL/dtKZIyibxxEUOHjoM9XyoopE9wFq/kQXEgVDCFLdyPAxFS7WA+
62-
NRqtgX8X41i/zQ72ZvM+bHrq2gk2OnDJ4jyDTBLBQezdOX4rLrWvzIcqh7hmWC1L
63-
KrcsYl3EZcK4zmMgSTTCgEJGKJsgClqUh6TS7atxgIjr
64-
-----END ENCRYPTED PRIVATE KEY-----
65-
"""
66-
6733

6834
class TestCloudMethods(unittest.TestCase):
6935
def __init__(self, *args, **kwargs):
@@ -198,9 +164,4 @@ def test_cloud_enroll_service_generated_csr(self):
198164
assert t1 == t2
199165

200166
output = cert_object.as_pkcs12('FooBarPass123')
201-
log.info("PKCS12 created successfully:\n%s" % output)
202-
203-
def test_cloud_parse_key_p8_to_p12(self):
204-
passphrase = 'FooBarPass123'
205-
pem_pk = pkcs8_to_pem_private_key(self.p8_key, passphrase)
206-
log.info("PEM Private Key is: %s" % pem_pk)
167+
log.info("PKCS12 created successfully for certificate with CN: %s" % cn)

vcert/connection_cloud.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
CertificateRenewError, VenafiError, RetrieveCertificateTimeoutError)
3434
from .http import HTTPStatus
3535
from .logger import get_child
36-
from .pem import parse_pem, pkcs8_to_pem_private_key, Certificate
36+
from .pem import parse_pem, Certificate
3737
from .policy import PolicySpecification
3838
from .policy.pm_cloud import (build_policy_spec, validate_policy_spec, AccountDetails, build_cit_request, build_user,
3939
UserDetails, build_company, build_apikey, build_app_update_request, get_ca_info,
@@ -864,5 +864,4 @@ def _retrieve_service_generated_cert(self, request, dek_info):
864864
raise VenafiError
865865

866866
cert, chain, private_key = zip_to_pem(data, request.chain_option)
867-
pem_private_key = pkcs8_to_pem_private_key(private_key=private_key, passphrase=request.key_password)
868-
return Certificate(cert=cert, chain=chain, key=pem_private_key)
867+
return Certificate(cert=cert, chain=chain, key=private_key)

vcert/pem.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import string
2222
import random
2323

24-
from Crypto.IO import PKCS8, PEM
2524
from cryptography import x509
2625
from cryptography.hazmat.backends import default_backend
2726
from cryptography.hazmat.primitives import serialization
@@ -122,27 +121,6 @@ def as_pkcs12(self, passphrase=None):
122121
return output
123122

124123

125-
def pkcs8_to_pem_private_key(private_key, passphrase):
126-
"""
127-
128-
:param str private_key:
129-
:param str passphrase:
130-
:rtype: str
131-
"""
132-
b_passphrase = passphrase.encode()
133-
134-
b_pem, marker, decrypted = PEM.decode(private_key.encode(), b_passphrase)
135-
oid, private_key_der, _ = PKCS8.unwrap(b_pem, b_passphrase)
136-
key = serialization.load_der_private_key(data=private_key_der, password=None, backend=default_backend())
137-
encryption = serialization.BestAvailableEncryption(b_passphrase)
138-
private_key_pem = key.private_bytes(
139-
encoding=serialization.Encoding.PEM,
140-
format=serialization.PrivateFormat.TraditionalOpenSSL,
141-
encryption_algorithm=encryption
142-
)
143-
return private_key_pem.decode()
144-
145-
146124
def random_word(length):
147125
letters = string.ascii_lowercase
148126
return ''.join(random.choice(letters) for _ in range(length)) # nosec

0 commit comments

Comments
 (0)