Skip to content

Commit 745d3ec

Browse files
authored
Merge pull request #9409 from aws/crt-cryptography-ec2instanceconnect
Use awscrt for cryptographic functionality in EC2 Instance Connect
2 parents 95d2176 + 680b21b commit 745d3ec

File tree

9 files changed

+237
-223
lines changed

9 files changed

+237
-223
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"type": "enhancement",
3+
"category": "awscrt",
4+
"description": "Update awscrt version requirement to 0.25.4"
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"type": "enhancement",
3+
"category": "``ec2instanceconnect``",
4+
"description": "Replace cryptographic functions from ``cryptography`` with ``awscrt`` for the ``ssh`` command."
5+
}

awscli/customizations/ec2instanceconnect/ssh.py

+21-17
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,7 @@
1818
import sys
1919
import tempfile
2020

21-
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
22-
from cryptography.hazmat.primitives.serialization import (
23-
Encoding,
24-
NoEncryption,
25-
PrivateFormat,
26-
PublicFormat,
27-
)
21+
from awscrt.crypto import ED25519, ED25519ExportFormat
2822

2923
from awscli.compat import compat_shell_quote
3024
from awscli.customizations.commands import BasicCommand
@@ -147,7 +141,7 @@ class SshCommand(BasicCommand):
147141
DESCRIPTION = 'Connect to your EC2 instance using your OpenSSH client.'
148142

149143
def __init__(self, session, key_manager=None):
150-
super(SshCommand, self).__init__(session)
144+
super().__init__(session)
151145
self._key_manager = (
152146
KeyManager() if (key_manager is None) else key_manager
153147
)
@@ -448,19 +442,29 @@ def _ssh(
448442
class KeyManager:
449443
def generate_key(self):
450444
logger.debug('Generate Ed25519 Key')
451-
return Ed25519PrivateKey.generate()
445+
return ED25519.new_generate()
446+
447+
def _get_public_key(self, private_key):
448+
public_key_bytes = ED25519.export_public_key(
449+
private_key, export_format=ED25519ExportFormat.OPENSSH_B64
450+
)
451+
return f"ssh-ed25519 {public_key_bytes.decode()}"
452452

453453
def get_public_key(self, private_key):
454-
return private_key.public_key().public_bytes(
455-
encoding=Encoding.OpenSSH, format=PublicFormat.OpenSSH
454+
return self._get_public_key(private_key)
455+
456+
def _get_private_pem(self, private_key):
457+
private_key_bytes = ED25519.export_private_key(
458+
private_key, export_format=ED25519ExportFormat.OPENSSH_B64
456459
)
460+
return (
461+
'-----BEGIN OPENSSH PRIVATE KEY-----\n'
462+
f'{private_key_bytes.decode()}\n'
463+
'-----END OPENSSH PRIVATE KEY-----\n'
464+
).encode()
457465

458466
def get_private_pem(self, private_key):
459-
return private_key.private_bytes(
460-
encoding=Encoding.PEM,
461-
format=PrivateFormat.OpenSSH,
462-
encryption_algorithm=NoEncryption(),
463-
)
467+
return self._get_private_pem(private_key=private_key)
464468

465469
def upload_public_key(
466470
self, ec2_instance_connect_client, instance_id, os_user, public_key
@@ -469,5 +473,5 @@ def upload_public_key(
469473
ec2_instance_connect_client.send_ssh_public_key(
470474
InstanceId=instance_id,
471475
InstanceOSUser=os_user,
472-
SSHPublicKey=public_key.decode(),
476+
SSHPublicKey=public_key,
473477
)

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ dependencies = [
4141
"ruamel.yaml.clib>=0.2.0,<=0.2.8",
4242
"prompt-toolkit>=3.0.24,<3.0.39",
4343
"distro>=1.5.0,<1.9.0",
44-
"awscrt==0.23.8",
44+
"awscrt==0.25.4",
4545
"python-dateutil>=2.1,<=2.9.0",
4646
"jmespath>=0.7.1,<1.1.0",
4747
"urllib3>=1.25.4,<1.27",

requirements-docs-lock.txt

+41-41
Original file line numberDiff line numberDiff line change
@@ -8,47 +8,47 @@ alabaster==0.7.13 \
88
--hash=sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3 \
99
--hash=sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2
1010
# via sphinx
11-
awscrt==0.23.8 \
12-
--hash=sha256:10625c49efc19068e3308c4def129a578cdab4d1a99e15df60a4b189d79fb7fa \
13-
--hash=sha256:12e10e5c225ea7a4c629b659c0949f594d670882b8c7c2b30236d49873ed8ee1 \
14-
--hash=sha256:2749d818559cb3398849a1ffd046591829211a76f34907c1e99088fe655e93d3 \
15-
--hash=sha256:2f03fabc8a3bf50ac2481c57b107d511079b94513ae507f706c715a77fa7b0a6 \
16-
--hash=sha256:3b2eab6b665d0fe0455d6f7c1b88c64bca3d89a584f09f2b48a543770108f994 \
17-
--hash=sha256:44709321abfaaf076884a0c2503d24dafc0c3b319467d298f3d12537cd6cc806 \
18-
--hash=sha256:4a21ea6eea206559abfc495bfbacbf7a40479d73059db1dfb6d6874aec8b6779 \
19-
--hash=sha256:4b0dac43a8c3681db601e5faccbaf89084b4b0c006a8358fd13a42c2a1239c6d \
20-
--hash=sha256:4bd1de3cab6cc7846baceb6ce4e47659b6e612f44d11d479e71d15fbceadefab \
21-
--hash=sha256:57277496ac2cebf766ffc92b8a4407b73fe846cb740c702ec87adf03c6535069 \
22-
--hash=sha256:5a2bb5786bcce5bb568a53b89d7a8e87f847b2c939e587377344603a62314a04 \
23-
--hash=sha256:62860061d589d602d30d4a7c025d8973f8745db60630531cf8797d88891134c5 \
24-
--hash=sha256:6369377eead537f43ecedf78f836fd46e7eb579b13bf41c6b238fb088fb3e192 \
25-
--hash=sha256:6910484446a0ab7d7eb3852f686c697953d90067de4f77cbaf1b153b5ebeedec \
26-
--hash=sha256:6e69a761180c13ea8d2695cedbcab4c2cc1652085ff41a3c46892955245f598f \
27-
--hash=sha256:7729fba89b056c4e90b6a166762d09b4dbfa72933f48777585f3944047835903 \
28-
--hash=sha256:811c7cfba4607bb0bf7c077a88e7443aa3a4c0f03030ec8708fba83b37acd138 \
29-
--hash=sha256:8245516211aa20e7d887f268b05d36e76cfefeec6bd8fc229ea852210f3f887c \
30-
--hash=sha256:92897489a7c8fc2cb9e0ca9dde4dafe7494c71df90cdec1b7b0c0adecd0e52b1 \
31-
--hash=sha256:9dcbdb360b50d36c3f082211a7f518c910bf076041b0a7b06e5ea3157fcd4637 \
32-
--hash=sha256:a04770276fb458bddfb3ef22e71a46cd10fb94b21cea1a38aba69d1358049af0 \
33-
--hash=sha256:a06d51d0b120869e1bf401e08e18bc66e93ae79cbda86bfc2c8c6345c36646c9 \
34-
--hash=sha256:b2a2e86a7b3e1e68ac02906735319088838362ffd6dd108aaf06ab083e856a6c \
35-
--hash=sha256:b4fbce3f3a87ceacfff16c8ddf9fae32a23e14eee2b6529b4ed16d6f9a26c98d \
36-
--hash=sha256:b5fb68dd666bcc46311afaf98f00090fc6abc3c2cdcd993e70dd09224bedf967 \
37-
--hash=sha256:c439cc0f57d8ecd0e33073deb0060ba2e48c80077d1989c0dcabb21a75f6f9c9 \
38-
--hash=sha256:cba55f3ee80ea3192a0a24e84caad778570250800a59d29ef9efbcd4d1612f2f \
39-
--hash=sha256:cc5f29ab4523ccc2f832012aa3ff2611c3204d46e23e2c670a46bd729fde885a \
40-
--hash=sha256:cd8c71e17b031665c128fd7397d661c971541efcc8b3098aa074982e76c5c411 \
41-
--hash=sha256:cf05a3d5e114f67ba063d3c62b2e447dcaa1dc3aa50e4aaf4f133c35fe3d0698 \
42-
--hash=sha256:d0c8d52c06e43c956395d8f381c559b39db9a1911ac2e120e272c14ba9bb5525 \
43-
--hash=sha256:d3086634636503460cb804a811cbbf87586965c7a1938d9fa74f044425257a03 \
44-
--hash=sha256:dacc836db77cbed2caac1af1b4d0ff924d8fadd1ce5f2ae59c24973d45c3870b \
45-
--hash=sha256:dbc16e8a7873dc2aa8b57e7fd014e9bcc3c2f53cddf87e7ef72d937566b9e56d \
46-
--hash=sha256:e4da3894d43909f25b25362898ff6f923355771c46708a9b61216d2a9481892e \
47-
--hash=sha256:e50f81cbcdc6e20c60250c7586d8093bedc6d8670a9fb0bc46e06e7e5032d312 \
48-
--hash=sha256:ebc6fafbee55bb0251176334802ba2937914872439aef9cb3b1d08d80545e079 \
49-
--hash=sha256:ef00ee94d0dda9a940bbb19056ab0a2ef38f3a715004c6572a79bb045fcdd42a \
50-
--hash=sha256:f352f6e3876a774aa9b99b0e5c879eba404026d85f99c407ac60b0413d508366 \
51-
--hash=sha256:f435ad7572c015d02764a35450372385f075b26e4274d87b7e175f6ba9367724
11+
awscrt==0.25.4 \
12+
--hash=sha256:003c1d45e2c0cb97aa72ba53d83abbe4248d810e5223c6a08b9649ccbfc6e8d2 \
13+
--hash=sha256:089356308c116945d23e0ffda5a1cd0a84635917b04748d9903cdb2cdc4df958 \
14+
--hash=sha256:09bcc85ad53f3f63c7b7cfb397e07758e6f28e7f748a3c5213813fd9dbe432b5 \
15+
--hash=sha256:1360048e97bd16926c085fe65d9876c956e8ed7b64a6b45546f41fb27632a8b9 \
16+
--hash=sha256:179e9607a69650d554799181a09c1fa30db05eb35752d39e68eeca99c5818c9a \
17+
--hash=sha256:2eb668285c88151130ff61a29df5f9018966c68faefe93ed8ee861c1e6e19cb0 \
18+
--hash=sha256:2fbcfcdf8282f889df7005fdde4ff7377745f892f8b68d56d67a09e547b08140 \
19+
--hash=sha256:412485719ae1b9e598ae3ce763bb7cc09602c9af1e5611058a6b6c98c8181d44 \
20+
--hash=sha256:4310d739ef20282cd2e8b580c4e98055557b7fe883f076ad633bfcce0fcd0f44 \
21+
--hash=sha256:550fe7f9adb78cd0ba0728dced9fb0e898eee7dbeb0847b2d7626756605badc1 \
22+
--hash=sha256:5fe9df85c02167e646290952f9ebfdd134d06522f6c6b4d8d0b327efbe38e00a \
23+
--hash=sha256:65fe545b725e2695444a25e1aec9c7cc6c220f450edad7758e4505fd66e556c6 \
24+
--hash=sha256:6737695ec451bab90da98df360f16389d08214bac9dbee28b1fe4d85a7e3d85e \
25+
--hash=sha256:806a6d970200dc1818d4750d602f75b68c0016406e00fa77296b76ca0feb9b55 \
26+
--hash=sha256:8cd641d245e9e85315d76bfe8bfb1fb38e1e6f39474b137efff611c30f6a0885 \
27+
--hash=sha256:99cd32512e69a98c9e38ce175e76dea2c080f5f7c8a51fa0495908faf44ea716 \
28+
--hash=sha256:9fbb858bceb7818a93ff10009c9a17e0e5e8884702e5e0b4365f326c318e9da5 \
29+
--hash=sha256:a0a76ab5b9cef3b99567e3af95180f65b52dab4c516ca063b613aee8e5fdbc6a \
30+
--hash=sha256:adbc313db008f17863979acf01d74fea835c1a3ac0bddae39dec30c9cadd669a \
31+
--hash=sha256:ade8fcb7b64f089482f5c5985628666ff6534fa9f6b48e6388c6475d416f04c7 \
32+
--hash=sha256:bfea85e4240184137fe94ac9294e52bfd0b22e93b10748d9907c86ab86005f42 \
33+
--hash=sha256:c222356cd31f26123a59c3eb0656223e5a21d3460eb4d65f94fa898b991adb5b \
34+
--hash=sha256:c5657464c4d2b4ada908c1e4fcab0fa572d53198e4e54f9bc260617e8f2a13f8 \
35+
--hash=sha256:c777247278b68681353e14d471e7c78d949391ad1b0f6e975b39a97caf9c45cf \
36+
--hash=sha256:d103d116d04a8ad8e6fef21c0cc0de72ac30509f186c0e42eb4fd5e9bab4c12f \
37+
--hash=sha256:d956d02caa329f89e904d07619868dd6a964481bb4db928e7df37cf9fbc54e41 \
38+
--hash=sha256:dbb18a1372773e3404e39baf80a3aa31220f53ca3aebf14c8fa62a77b3c32927 \
39+
--hash=sha256:ddf0b9892d030db1cd79030fe1e822e8e52d9ac2ada07765aa6b72eeaaaaf502 \
40+
--hash=sha256:de865fcb01f8a6b2ccf71bdd856c0affcc68a8baaae7321535e1005759a2ea4b \
41+
--hash=sha256:df8add4acbcb56f5b55a4951d3956dc2d79e2634c07911053fcf39411e51aba6 \
42+
--hash=sha256:dfaf54c26bebe1f64862aab3394e2f7e148f8494ca1f399c430ec2705b7fe0e0 \
43+
--hash=sha256:e1cf18df745d9717a4c54204db833663512c52aa0d138a0fabb0872f2734e858 \
44+
--hash=sha256:e310923b1ec7f52bf97ac49e7711c9774eb986172db543318a5c495fc78a428f \
45+
--hash=sha256:e3ee6659472baec95d96a4ebecac7a46985c1db0ed97dbe1eb8361ef2d6cb28c \
46+
--hash=sha256:e43ee8dd07ce45c71a16d839d1b9908178226de0833c1efbfd5cc6952bf299c2 \
47+
--hash=sha256:ee2aee4c04ee09af310048b3a1a1ed631dc9b7e9c5a1a5488fe28e03e1dbccaa \
48+
--hash=sha256:ef2e6dbb56727690faca36f82d76d140c263c5b33783c7e9cfb935fa2135eaf9 \
49+
--hash=sha256:f29fa3bc29804a78e51d6205cd812b105d64c9d7515086fdbce4b75468a230f5 \
50+
--hash=sha256:f38c2b35c687fa67af6eea89394597eb617b743ae0a289f354392a7dc52331a7 \
51+
--hash=sha256:faa184336f41878b1f49de3ac377e5c93f631cbd16e387aeae03a550cf9fdc53
5252
# via awscli (pyproject.toml)
5353
babel==2.17.0 \
5454
--hash=sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d \

requirements/download-deps/portable-exe-lock.txt

+41-41
Original file line numberDiff line numberDiff line change
@@ -10,47 +10,47 @@ altgraph==0.17.4 \
1010
# via
1111
# macholib
1212
# pyinstaller
13-
awscrt==0.23.8 \
14-
--hash=sha256:10625c49efc19068e3308c4def129a578cdab4d1a99e15df60a4b189d79fb7fa \
15-
--hash=sha256:12e10e5c225ea7a4c629b659c0949f594d670882b8c7c2b30236d49873ed8ee1 \
16-
--hash=sha256:2749d818559cb3398849a1ffd046591829211a76f34907c1e99088fe655e93d3 \
17-
--hash=sha256:2f03fabc8a3bf50ac2481c57b107d511079b94513ae507f706c715a77fa7b0a6 \
18-
--hash=sha256:3b2eab6b665d0fe0455d6f7c1b88c64bca3d89a584f09f2b48a543770108f994 \
19-
--hash=sha256:44709321abfaaf076884a0c2503d24dafc0c3b319467d298f3d12537cd6cc806 \
20-
--hash=sha256:4a21ea6eea206559abfc495bfbacbf7a40479d73059db1dfb6d6874aec8b6779 \
21-
--hash=sha256:4b0dac43a8c3681db601e5faccbaf89084b4b0c006a8358fd13a42c2a1239c6d \
22-
--hash=sha256:4bd1de3cab6cc7846baceb6ce4e47659b6e612f44d11d479e71d15fbceadefab \
23-
--hash=sha256:57277496ac2cebf766ffc92b8a4407b73fe846cb740c702ec87adf03c6535069 \
24-
--hash=sha256:5a2bb5786bcce5bb568a53b89d7a8e87f847b2c939e587377344603a62314a04 \
25-
--hash=sha256:62860061d589d602d30d4a7c025d8973f8745db60630531cf8797d88891134c5 \
26-
--hash=sha256:6369377eead537f43ecedf78f836fd46e7eb579b13bf41c6b238fb088fb3e192 \
27-
--hash=sha256:6910484446a0ab7d7eb3852f686c697953d90067de4f77cbaf1b153b5ebeedec \
28-
--hash=sha256:6e69a761180c13ea8d2695cedbcab4c2cc1652085ff41a3c46892955245f598f \
29-
--hash=sha256:7729fba89b056c4e90b6a166762d09b4dbfa72933f48777585f3944047835903 \
30-
--hash=sha256:811c7cfba4607bb0bf7c077a88e7443aa3a4c0f03030ec8708fba83b37acd138 \
31-
--hash=sha256:8245516211aa20e7d887f268b05d36e76cfefeec6bd8fc229ea852210f3f887c \
32-
--hash=sha256:92897489a7c8fc2cb9e0ca9dde4dafe7494c71df90cdec1b7b0c0adecd0e52b1 \
33-
--hash=sha256:9dcbdb360b50d36c3f082211a7f518c910bf076041b0a7b06e5ea3157fcd4637 \
34-
--hash=sha256:a04770276fb458bddfb3ef22e71a46cd10fb94b21cea1a38aba69d1358049af0 \
35-
--hash=sha256:a06d51d0b120869e1bf401e08e18bc66e93ae79cbda86bfc2c8c6345c36646c9 \
36-
--hash=sha256:b2a2e86a7b3e1e68ac02906735319088838362ffd6dd108aaf06ab083e856a6c \
37-
--hash=sha256:b4fbce3f3a87ceacfff16c8ddf9fae32a23e14eee2b6529b4ed16d6f9a26c98d \
38-
--hash=sha256:b5fb68dd666bcc46311afaf98f00090fc6abc3c2cdcd993e70dd09224bedf967 \
39-
--hash=sha256:c439cc0f57d8ecd0e33073deb0060ba2e48c80077d1989c0dcabb21a75f6f9c9 \
40-
--hash=sha256:cba55f3ee80ea3192a0a24e84caad778570250800a59d29ef9efbcd4d1612f2f \
41-
--hash=sha256:cc5f29ab4523ccc2f832012aa3ff2611c3204d46e23e2c670a46bd729fde885a \
42-
--hash=sha256:cd8c71e17b031665c128fd7397d661c971541efcc8b3098aa074982e76c5c411 \
43-
--hash=sha256:cf05a3d5e114f67ba063d3c62b2e447dcaa1dc3aa50e4aaf4f133c35fe3d0698 \
44-
--hash=sha256:d0c8d52c06e43c956395d8f381c559b39db9a1911ac2e120e272c14ba9bb5525 \
45-
--hash=sha256:d3086634636503460cb804a811cbbf87586965c7a1938d9fa74f044425257a03 \
46-
--hash=sha256:dacc836db77cbed2caac1af1b4d0ff924d8fadd1ce5f2ae59c24973d45c3870b \
47-
--hash=sha256:dbc16e8a7873dc2aa8b57e7fd014e9bcc3c2f53cddf87e7ef72d937566b9e56d \
48-
--hash=sha256:e4da3894d43909f25b25362898ff6f923355771c46708a9b61216d2a9481892e \
49-
--hash=sha256:e50f81cbcdc6e20c60250c7586d8093bedc6d8670a9fb0bc46e06e7e5032d312 \
50-
--hash=sha256:ebc6fafbee55bb0251176334802ba2937914872439aef9cb3b1d08d80545e079 \
51-
--hash=sha256:ef00ee94d0dda9a940bbb19056ab0a2ef38f3a715004c6572a79bb045fcdd42a \
52-
--hash=sha256:f352f6e3876a774aa9b99b0e5c879eba404026d85f99c407ac60b0413d508366 \
53-
--hash=sha256:f435ad7572c015d02764a35450372385f075b26e4274d87b7e175f6ba9367724
13+
awscrt==0.25.4 \
14+
--hash=sha256:003c1d45e2c0cb97aa72ba53d83abbe4248d810e5223c6a08b9649ccbfc6e8d2 \
15+
--hash=sha256:089356308c116945d23e0ffda5a1cd0a84635917b04748d9903cdb2cdc4df958 \
16+
--hash=sha256:09bcc85ad53f3f63c7b7cfb397e07758e6f28e7f748a3c5213813fd9dbe432b5 \
17+
--hash=sha256:1360048e97bd16926c085fe65d9876c956e8ed7b64a6b45546f41fb27632a8b9 \
18+
--hash=sha256:179e9607a69650d554799181a09c1fa30db05eb35752d39e68eeca99c5818c9a \
19+
--hash=sha256:2eb668285c88151130ff61a29df5f9018966c68faefe93ed8ee861c1e6e19cb0 \
20+
--hash=sha256:2fbcfcdf8282f889df7005fdde4ff7377745f892f8b68d56d67a09e547b08140 \
21+
--hash=sha256:412485719ae1b9e598ae3ce763bb7cc09602c9af1e5611058a6b6c98c8181d44 \
22+
--hash=sha256:4310d739ef20282cd2e8b580c4e98055557b7fe883f076ad633bfcce0fcd0f44 \
23+
--hash=sha256:550fe7f9adb78cd0ba0728dced9fb0e898eee7dbeb0847b2d7626756605badc1 \
24+
--hash=sha256:5fe9df85c02167e646290952f9ebfdd134d06522f6c6b4d8d0b327efbe38e00a \
25+
--hash=sha256:65fe545b725e2695444a25e1aec9c7cc6c220f450edad7758e4505fd66e556c6 \
26+
--hash=sha256:6737695ec451bab90da98df360f16389d08214bac9dbee28b1fe4d85a7e3d85e \
27+
--hash=sha256:806a6d970200dc1818d4750d602f75b68c0016406e00fa77296b76ca0feb9b55 \
28+
--hash=sha256:8cd641d245e9e85315d76bfe8bfb1fb38e1e6f39474b137efff611c30f6a0885 \
29+
--hash=sha256:99cd32512e69a98c9e38ce175e76dea2c080f5f7c8a51fa0495908faf44ea716 \
30+
--hash=sha256:9fbb858bceb7818a93ff10009c9a17e0e5e8884702e5e0b4365f326c318e9da5 \
31+
--hash=sha256:a0a76ab5b9cef3b99567e3af95180f65b52dab4c516ca063b613aee8e5fdbc6a \
32+
--hash=sha256:adbc313db008f17863979acf01d74fea835c1a3ac0bddae39dec30c9cadd669a \
33+
--hash=sha256:ade8fcb7b64f089482f5c5985628666ff6534fa9f6b48e6388c6475d416f04c7 \
34+
--hash=sha256:bfea85e4240184137fe94ac9294e52bfd0b22e93b10748d9907c86ab86005f42 \
35+
--hash=sha256:c222356cd31f26123a59c3eb0656223e5a21d3460eb4d65f94fa898b991adb5b \
36+
--hash=sha256:c5657464c4d2b4ada908c1e4fcab0fa572d53198e4e54f9bc260617e8f2a13f8 \
37+
--hash=sha256:c777247278b68681353e14d471e7c78d949391ad1b0f6e975b39a97caf9c45cf \
38+
--hash=sha256:d103d116d04a8ad8e6fef21c0cc0de72ac30509f186c0e42eb4fd5e9bab4c12f \
39+
--hash=sha256:d956d02caa329f89e904d07619868dd6a964481bb4db928e7df37cf9fbc54e41 \
40+
--hash=sha256:dbb18a1372773e3404e39baf80a3aa31220f53ca3aebf14c8fa62a77b3c32927 \
41+
--hash=sha256:ddf0b9892d030db1cd79030fe1e822e8e52d9ac2ada07765aa6b72eeaaaaf502 \
42+
--hash=sha256:de865fcb01f8a6b2ccf71bdd856c0affcc68a8baaae7321535e1005759a2ea4b \
43+
--hash=sha256:df8add4acbcb56f5b55a4951d3956dc2d79e2634c07911053fcf39411e51aba6 \
44+
--hash=sha256:dfaf54c26bebe1f64862aab3394e2f7e148f8494ca1f399c430ec2705b7fe0e0 \
45+
--hash=sha256:e1cf18df745d9717a4c54204db833663512c52aa0d138a0fabb0872f2734e858 \
46+
--hash=sha256:e310923b1ec7f52bf97ac49e7711c9774eb986172db543318a5c495fc78a428f \
47+
--hash=sha256:e3ee6659472baec95d96a4ebecac7a46985c1db0ed97dbe1eb8361ef2d6cb28c \
48+
--hash=sha256:e43ee8dd07ce45c71a16d839d1b9908178226de0833c1efbfd5cc6952bf299c2 \
49+
--hash=sha256:ee2aee4c04ee09af310048b3a1a1ed631dc9b7e9c5a1a5488fe28e03e1dbccaa \
50+
--hash=sha256:ef2e6dbb56727690faca36f82d76d140c263c5b33783c7e9cfb935fa2135eaf9 \
51+
--hash=sha256:f29fa3bc29804a78e51d6205cd812b105d64c9d7515086fdbce4b75468a230f5 \
52+
--hash=sha256:f38c2b35c687fa67af6eea89394597eb617b743ae0a289f354392a7dc52331a7 \
53+
--hash=sha256:faa184336f41878b1f49de3ac377e5c93f631cbd16e387aeae03a550cf9fdc53
5454
# via awscli (pyproject.toml)
5555
cffi==1.17.1 \
5656
--hash=sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8 \

0 commit comments

Comments
 (0)