Skip to content

Commit 8f2e922

Browse files
committed
Update tests to not require Azure CLI
1 parent 5f5877b commit 8f2e922

File tree

10 files changed

+835
-38
lines changed

10 files changed

+835
-38
lines changed

sdk/keyvault/.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@
22
*.key
33
*.pfx
44
*security-domain.json
5-
*.pem
5+
*.pem
6+
!azure-keyvault-securitydomain/tests/resources/*.cer
7+
!azure-keyvault-securitydomain/tests/resources/*.pem
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDazCCAlOgAwIBAgIUL64HRUwrpwVMKzJX1XdEyodb/3kwDQYJKoZIhvcNAQEL
3+
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
4+
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDA4MjgwNzUwNTFaFw0yMTA4
5+
MjgwNzUwNTFaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
6+
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
7+
AQUAA4IBDwAwggEKAoIBAQC8MyC1/rn0VCTvnvYOZylgELFeg+BuMWd6EofCcnwd
8+
//d2XZQcGIB8ZqYDP1HWGzzVlDHzOaWDT7i0CAXfx1Y6H77506z6FhvhoaL/L4xU
9+
TRtg2lztaLXScdjx/zSSjCcwJ4e9cltDZcjFERl+j3U+aeEY58EFMZjp/RQdPNYS
10+
HRzU7YISUrSlX4QZciZiFQSqDZd0cq181VmFyIGEgUx/4j3nynWVKE5+jC/N8RL+
11+
t0qxomnMSiebXj1OS1veB099LIv9cG1/14RQ1Yk5m4s/8dZPF0IvBtBh5He7wMUS
12+
5LifkGyZjcASWOXPZC3eO1ztfrvHZdxAlkjXHKetEYUDAgMBAAGjUzBRMB0GA1Ud
13+
DgQWBBSG1CSg9b3N8Vgxy9TC4g5Nl+PRsTAfBgNVHSMEGDAWgBSG1CSg9b3N8Vgx
14+
y9TC4g5Nl+PRsTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCh
15+
IfFOwwmyUzOqbghjJUcdMnGNQGCujd9BOdh8XBRrRF4WKv9YBrBNEn07UYh7WRTt
16+
Nn/5PFzdtJJ1GY08gGJ0iQd0n10YF9eP+eUag93k3P5RGxs5LsyxTlSWUyhqCCn9
17+
TLE4FIPGVvhBsKTs5GcsQi6D1gDwmmDxwLO/f2oDEnm+2sxYwSYdOjImfZXD1oje
18+
iOJ35Ue9K+9gH23ASndMx5ZmMqLn+W1eZfDGZAyjNGhZXyKGG3u0rF1YU90AmG9K
19+
xsSSrObS4IzBhdWNi9SU7ZHi+ip2211AKY9bMyLhcL8FiHY/R/Ag7WXU4IHY8sIf
20+
P+0eCLYIj959Y2T7MN+l
21+
-----END CERTIFICATE-----
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC8MyC1/rn0VCTv
3+
nvYOZylgELFeg+BuMWd6EofCcnwd//d2XZQcGIB8ZqYDP1HWGzzVlDHzOaWDT7i0
4+
CAXfx1Y6H77506z6FhvhoaL/L4xUTRtg2lztaLXScdjx/zSSjCcwJ4e9cltDZcjF
5+
ERl+j3U+aeEY58EFMZjp/RQdPNYSHRzU7YISUrSlX4QZciZiFQSqDZd0cq181VmF
6+
yIGEgUx/4j3nynWVKE5+jC/N8RL+t0qxomnMSiebXj1OS1veB099LIv9cG1/14RQ
7+
1Yk5m4s/8dZPF0IvBtBh5He7wMUS5LifkGyZjcASWOXPZC3eO1ztfrvHZdxAlkjX
8+
HKetEYUDAgMBAAECggEBAIOLeSG8ml2dMvQKOBJ5KQJsqI1XwFdFUP6SVTIks3yE
9+
nYOuhQfeWHCbjw5WA+2TvEHNA9zuPjI6Vu//a5uuySZ3ahVVT2K+cV6UjEmyAnQq
10+
MSjReIK43d3qlakQqL6GGB4gg1B3zjKdwmd8PEWqIFkvyJaP5uqqcCedLaICE980
11+
Jl5LrDtilz4PyrKKWv9OY6k49BEgo361x9IBG891H1yi+395IiZwO7DwjyxlHlub
12+
Lmt/Z0/iur1h16ZcIZJ1E5KtvYjPng2dldF2mDAZg3MW9jVJiiQ6S63yR9hYhJyS
13+
f1y5E/csjpj7fxLQ0IPd8URbjt67Y4g95lODwSxtW4ECgYEA7S8JEddpVBRkweh+
14+
BILCL8A5B6N++ixJGmtUAHqM52jZ6s7NM+lgk0kkO6wdToeJr/jjgsIgXq7oYQzG
15+
sm3hP7/Hl1VidmZ8F1AaAtZ1jSYMTOSgmOzrDdGvSlec/wqljMfqBEB7CVlaBsfb
16+
xYVhO2S7pZS3z3KWap1IY1/rZF0CgYEAyyFGpgT//CXRqtcmqqA7ejPL/jCDGVe9
17+
HvWQxZ5KsEeSm1UkDeaxRppJ/5gw4SoMMif+A9X6J+IyUpkJOPWzN3ymOoswWjAu
18+
yaTVC1AA9EjIPt0B+b7oywMHuKSbbhtuftNPlIS0nXnmgT2hbPh4MOaq1jUgT9jP
19+
l0+AR0BH+N8CgYEA3Eshe2a9t5AxfUC5OutP/RXmYkfiue3EADvLi55HnO9v530o
20+
bpzGTEZU1u+nULbmlYDvnxU7B3Yg83LwYe1YluNDODXf++R4QRbu8c/K4syCBDEd
21+
UKxMLUuiKcRyVxfGZ5mOq2BQZoCM81tRroWRp56KAuK8Tns5ZdCr2VDPyykCgYEA
22+
vQ7yl3DN5Jw6ghyP030g/oMZGTODwWGlFxyNqzDB6UIkVMiwrvOJCeJufyLiU590
23+
DHameGF+3AIuvivLpqUgMcOlX5XO4hI4adstosLKsJLRNZkzzoP+XX0rgZJLS/bi
24+
J857IgtFo9AiVyXKigbUrwbx+D8oHMj5paYMCcTtd9cCgYEAheyWHEr0dawGSa+J
25+
f1FnDBF+POBvxWTTZF/PVY3xlvedRl1Z7Q8ochX/H0X07sMbrWEf38h2WPY/Eq4P
26+
VmuxONhGvXTxAg8iPqDb4Kv3m8UTDVV5wuJELQ5t5axhIaHjAMqlEOrNnM78PcSh
27+
5LbSznYcYXpicjzzDUhIrFSCPwA=
28+
-----END PRIVATE KEY-----
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDazCCAlOgAwIBAgIUUVhLOoCiGJOnb6jGT1yOPYdzHcEwDQYJKoZIhvcNAQEL
3+
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
4+
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDA4MjgwNzUxMzlaFw0yMTA4
5+
MjgwNzUxMzlaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
6+
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
7+
AQUAA4IBDwAwggEKAoIBAQC5KAwMbiaEjW9vmo3TnDvR6gNc2NRoLmQSzdwawsbJ
8+
QVo2GYjx/KJQL3Utk6UlEuPaM/3itrF3bhMmD9esIrE4gUjZWOtfh5ZwVObmj7sH
9+
sqFrJss+ikMr4maIsjjD4fwzF+O90ZRUjvijun5YmW8SRJaaYMeGNHpVKWfJjvG9
10+
zfgo2BV+yadUc5hbbcVH0Y4x4MTQplTlKm5h4fqHFxvcJGIx3vf3byPW9NJTrLEH
11+
wSq3oYH6ToelREHbDI9gz7Ntn2NvRFW06Kl19KBXTTqivE069Q+ugiZmgL+Lt0y9
12+
MU5F8vUOEhlB3/n1hqEk2DzL2Qzyq7MkeszkIeU3MdZVAgMBAAGjUzBRMB0GA1Ud
13+
DgQWBBQlCko1w7dZ6u3HgBpu+aRKHyDOcjAfBgNVHSMEGDAWgBQlCko1w7dZ6u3H
14+
gBpu+aRKHyDOcjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQA9
15+
zvN23q+TT4p6qF59jT3Hn2IRkIlj+WHSkdeB4zS0X0Bs2PP047AloePuVADHrYxW
16+
Rq4lDMaRrM6L9+h7mtGd4UqwRhBbgFnodeC7LqxSN0nv4uaWTl2HkUlFSe6naJnp
17+
QyqyZ68JndIzqdy9tvFYlqOpNUGFL4NVL1rxkyYqr1xwQS1YuQ70qmQICzSOgKRT
18+
N/8uQyUYUPPiSmaXuqF6tAKgAaJ6jmi/sKNg2kDjUZvYrLBDhLoUHmnRC47uxSOw
19+
JjaUXjbfgAvou5LyG9Ie26fos6hH5XSaD3VpdmTq2hNofVJahtJ02lvvcJgENROv
20+
AAkPC/IzaLj19DnZGl3g
21+
-----END CERTIFICATE-----
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC5KAwMbiaEjW9v
3+
mo3TnDvR6gNc2NRoLmQSzdwawsbJQVo2GYjx/KJQL3Utk6UlEuPaM/3itrF3bhMm
4+
D9esIrE4gUjZWOtfh5ZwVObmj7sHsqFrJss+ikMr4maIsjjD4fwzF+O90ZRUjvij
5+
un5YmW8SRJaaYMeGNHpVKWfJjvG9zfgo2BV+yadUc5hbbcVH0Y4x4MTQplTlKm5h
6+
4fqHFxvcJGIx3vf3byPW9NJTrLEHwSq3oYH6ToelREHbDI9gz7Ntn2NvRFW06Kl1
7+
9KBXTTqivE069Q+ugiZmgL+Lt0y9MU5F8vUOEhlB3/n1hqEk2DzL2Qzyq7Mkeszk
8+
IeU3MdZVAgMBAAECggEAZ+ikkllCvoLNNfmrfEUigRRuHK4Gzgyy1qa2zkHe41UM
9+
tm2wH/WidZOclB5WwK6QNoWVBqV2hMq+bk7Xv1+cy1QquOcg+HSUJahQCLZCxPgn
10+
hIW56/gV6EvfNPmnx65MJbRTd9RlBOtTeDcR7tD0t3DMgAiuEI/k02QwPbo9ykEX
11+
hYL2RrW/VU2tepJ9o4hc37T964Pgo+oqNl3zzVPDC8UL0pImhavHLMkgosiQD3RR
12+
UXRImYQTpg0ZmjR4TnUNWRCLevMMgxgu/dTeYvP1xf3uDAkfVPw1dU4/zIr64cvZ
13+
17i2Dbdu0h8jiao1TzMQRzBgCgEZYE8DZvmp8XXOIQKBgQDenQgHMe6G2p0vfmO/
14+
OQ3iqThHY0ZzdtjBESFvtwG0oGaG82DZAyz0e8+pXhON3Xx3orOemISzdGtY9Stw
15+
f+de99cEHgxGq0AHMPr0cIZUGnCcMq1VCh8jJk85gqZBjOkh9HMCP30F/5dIRa4o
16+
UCyuKI6wQoG7oHofqUtBDomkyQKBgQDU7Oa6SEoq1TGmN+wrK72pCp5UiaucE/kj
17+
fnQdZhz1snH7oIKxfNljjIHCbMnOZKS1C9Pj8LJQr3CGkKByde3g+IP0L1McaGg2
18+
we5YYj1iSlJNwUu/6t1uR1gKzuuO+SLDUoFVzZcuNoq5RKtwElSfzsEUIuLFtBjR
19+
U7jEcptnLQKBgQCbdMGUdLQDjErUTcjOUsN1k4Jvp84c99OqD5Jv9zbDsnemqfLp
20+
2SPdn1CHD+FL4m33BbG1gQC6aQRF3P/20fr7AMwwXeNovlI6M2Qsqx/DP6uACIuu
21+
pSDVZP1SRgBgKkzrn09pNHjUZYZ5u99A26w3+q6aO/do1UozLgAVcFeCsQKBgQCj
22+
o5nDKpGNj6GDrFDd8NTnGFkMgW2ZGySK6cFVYsf47/Z3uykWPOxZfH+xK6iA7YpD
23+
9d4XvUFdjyd806Prs8Ro9LV8se4+0+LbynliBcZFRvcv+NE9osQg38XDMLmKfOAB
24+
muP5THLWumYs8qCLFhthYiWzUwhThxDXt2810xqp1QKBgGcqCaMdIQwZTvc+bAXA
25+
lJ9m/REjYdYqnb3wlCN/YpUWXiaOPOoIqsGgkx3aiwcJzTY6Gyq9G81NMs+qNB8q
26+
QWml4Tp9S26GQ4vv06x6MEJpQJQuIl9/k6Zz+Fu4lIXTcqMIVPLyDupjxJziipxE
27+
H49fDakx4elXpxc0T9icBNJo
28+
-----END PRIVATE KEY-----
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDazCCAlOgAwIBAgIUSe4eg3V7VCvSFWhi8a0Gie3DcRowDQYJKoZIhvcNAQEL
3+
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
4+
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDA4MjgwNzUxNDdaFw0yMTA4
5+
MjgwNzUxNDdaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
6+
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
7+
AQUAA4IBDwAwggEKAoIBAQDJAdv6EoFTJdfENOgN5PDzHhKM/Ugf3Pkg6YVRjrY0
8+
pFRssA+cxwVC8FzRoGqIqaif8+oD7W7QCb1iF9kBKoohI2a4Fimv59+YkuZPZgJf
9+
A2SYwP6B8KgrpcERcnlADtgZOcopo9uGN9TxBDJOnUx5wCBsktERxh6/1LrAW9ft
10+
xa/c6OsOraBgoeOb3CxyQ3DjSwbAMM0xkc17RNoTPNnz+0LoeK6ON+pDXprOrb+Z
11+
/WkcHYE11/OrROxGEPGdm/dXsieIEaT31U0fwGg/fuuaEpF9nCF6fy4tqcoAOPHE
12+
TJ8tXXuS5thGa4AfvA7hpMl+jTAhbn3jtJkkuXE5a4lJAgMBAAGjUzBRMB0GA1Ud
13+
DgQWBBSCf/tSyM12qLYIXBqX8nUZQMro+DAfBgNVHSMEGDAWgBSCf/tSyM12qLYI
14+
XBqX8nUZQMro+DAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQDE
15+
aWDU8kD3o6EJPJCTpBYff3Ir/aNkY4SZs6pXRKSyb8OWRGG7M1l6RBf6+puOJ+6N
16+
C4VY6qjTk5wmQFxynAha6qsWgbVaHE9RMBdmfwoL9hi9neVbHd2IaIIplXOclahT
17+
/C4SY1afbU5BhVnut4xQa7Mty7vMdjdxIgIgO121ER2bEPld8Al+epbk91vLBT87
18+
IpTtj+yURE+eT/ZcFnE1eAJQvF2kdstz4b6/Bi5giwoUynQZELXsQnoHwd6nPoI/
19+
oEw9A22+pAenIE+AlzJAVaZFuZxTDj/lCvjx00fL8HbN78KjtY0qfiIbf7PXrpS8
20+
yYsq00OgM+quZ77UgoUR
21+
-----END CERTIFICATE-----
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDJAdv6EoFTJdfE
3+
NOgN5PDzHhKM/Ugf3Pkg6YVRjrY0pFRssA+cxwVC8FzRoGqIqaif8+oD7W7QCb1i
4+
F9kBKoohI2a4Fimv59+YkuZPZgJfA2SYwP6B8KgrpcERcnlADtgZOcopo9uGN9Tx
5+
BDJOnUx5wCBsktERxh6/1LrAW9ftxa/c6OsOraBgoeOb3CxyQ3DjSwbAMM0xkc17
6+
RNoTPNnz+0LoeK6ON+pDXprOrb+Z/WkcHYE11/OrROxGEPGdm/dXsieIEaT31U0f
7+
wGg/fuuaEpF9nCF6fy4tqcoAOPHETJ8tXXuS5thGa4AfvA7hpMl+jTAhbn3jtJkk
8+
uXE5a4lJAgMBAAECggEATGwli6V/f/JyX4nR9H5n0bdMTEh8JIkqOwYuBv0gb1FP
9+
O+eQeAX/DR0/3P+FoaIHl5DwF0AtknExjNsOSXA4BjNkeXcLsHKTQ3oOkH9zRVaP
10+
57fwy8yI09d4WT7RtLYwGR8sqro+23/cuSnkSplpmxyd90m2rXBK/ppNypbguOh0
11+
hJQrE8+ra3TBltQkjaa/RrFiFAAz7tYlDzMUkdfjjcLtx17czPB8F/y1Yfw/xWT4
12+
8W3bYQC2q0CnrdVeA6zruGbUTSEUlpDKV0EzL2TMafyUt5wm2zZfsggjWGz3TQ7y
13+
ocMPjZL1spktUWBnebHBBAEZkqwqOKhxozxSypWfAQKBgQDx3gHXlJKd9RCvtyEx
14+
M4PfGiwtmgfiZHMdF8ecX36r6MzGN2Hb7ENqxt2856p9qenWrcjpzBD98CAYePPz
15+
u4s7oTNKpf5D+IAqMJgBEi/LFCUl9pbhdJwXZzruw5SuXlEquZQzxJCDYUIB90BV
16+
B3sYOiZImBtmv14q2NNxUlC94QKBgQDUwKUO5RpJs18DYiYyt5bdO/KMcuoxxj7m
17+
QJOMabFSp2edqIYz4Q5D3wDY+/clmv/Kdju4RW/MNrUOVoyu4o8m8MEfpQsm+Q0b
18+
CxEokhvKDvardhRw0j89CCCde9MAxUBjF48IiBE8Rc04zV11wR9cE6ZvAL5FYJQC
19+
xVv/W/KoaQKBgQDFC6lUiKYqKc0+WmOgQefdiuUTAboKputheE4XB3WbeD3b/qKr
20+
GQCTrRBZJiOv3Q206EAWuTneqBJ93YxhtRjpq5qt5i4QEhPYS16LANYPDIp3Mz4Y
21+
z3ebWW6Ztp0asZxOwoIK6skRP9sW3uh6XW3bfwRRgBpSyvVc0ujwGa/OAQKBgQDO
22+
hds0ZE1qccavwB0YaoL2a3T9xad1fd4dIV6ZlRffBkZdEvSDc9qnI9jsyVqWlKnt
23+
XWyHalAmSozjSDz0n1UbFeZC07HJuUVxlQKpAXwcXv4wX0VkZ5OfqT4P4d1oCBKC
24+
nqHoRD2G5rNainBJGJlahnCvnGcXbbMAJZkyf41E0QKBgQCTswh3SyW79OInegDq
25+
FNolH/nfQxC8T6SSHKHaHkywVufPLOL95kv0WM9VGDCZ0RqNX7IAaUk7+M1/reUc
26+
Qc4Uwrg7n2fOe4FLlzGc30DpGvKNQ5VkZOhvWZ3PRxmuiWr5ruJ8ejxnu7+va7qk
27+
ASlG077d/GyDPQ4YtFcRAzslIw==
28+
-----END PRIVATE KEY-----

sdk/keyvault/azure-keyvault-securitydomain/tests/test_security_domain.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from _shared.test_case import KeyVaultTestCase
1313
from _test_case import ClientPreparer
14-
from utils import get_certificate_info, write_security_domain, write_transfer_key
14+
from utils import get_certificate_info, use_wrapping_keys, write_security_domain, write_transfer_key
1515

1616

1717
class TestSecurityDomain(KeyVaultTestCase):
@@ -20,9 +20,13 @@ class TestSecurityDomain(KeyVaultTestCase):
2020
def test_security_domain_download_and_upload(
2121
self, client: SecurityDomainClient, upload_client: SecurityDomainClient, **kwargs
2222
):
23-
# Before running this test, create security domain certificates
24-
# 1. Create private keys: `openssl genrsa -pubout -out <>-certificate[0-2].key 2048`
25-
# 2. Create certificates: `openssl req -new -x509 -days 365 -key <>-certificate[0-2].key -out <>-certificate[0-2].cer`
23+
"""Test downloading a security domain and uploading it to another Managed HSM.
24+
25+
This test requires two Managed HSMs to be set up, one for downloading and one for uploading. The URL of the
26+
first Managed HSM is specified in the environment variable AZURE_MANAGEDHSM_URL, and the second is specified
27+
in SECONDARY_MANAGEDHSM_URL.
28+
"""
29+
# Load the certificate{x}.cer files from /resources and use them to download the security domain.
2630
certs_object = get_certificate_info()
2731
poller = client.begin_download(certificate_info=certs_object, skip_activation_polling=True)
2832
result = poller.result()
@@ -31,14 +35,16 @@ def test_security_domain_download_and_upload(
3135
assert status.status.lower() == "inprogress"
3236
assert result.value
3337

38+
# Get the transfer key of the secondary HSM, and write it and the security domain to files.
3439
jwk = str(upload_client.get_transfer_key().transfer_key)
3540
transfer_key = json.loads(jwk)
3641
write_transfer_key(transfer_key)
3742
write_security_domain(result.value)
43+
# Wrap the security domain using the certificate{x}.pem keys.
44+
wrapped_security_domain = use_wrapping_keys()
3845

39-
# At this point, use the Azure CLI to encrypt the security domain to prepare for upload
40-
# `az keyvault security-domain restore-blob --sd-exchange-key <>-transfer-key.pem --sd-file <>-security-domain.json --sd-wrapping-keys <>-certificate0.key <>-certificate1.key <>-certificate2.key --sd-file-restore-blob <>-restore-blob.json`
41-
poller = upload_client.begin_upload(security_domain=result)
46+
# Upload the wrapped security domain to the secondary HSM.
47+
poller = upload_client.begin_upload(security_domain=wrapped_security_domain)
4248
result = poller.result()
4349
assert result is None
4450
status = upload_client.get_upload_status()

sdk/keyvault/azure-keyvault-securitydomain/tests/test_security_domain_async.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from _shared.async_test_case import KeyVaultTestCase
1313
from _async_test_case import ClientPreparer
14-
from utils import get_certificate_info, write_security_domain, write_transfer_key
14+
from utils import get_certificate_info, use_wrapping_keys, write_security_domain, write_transfer_key
1515

1616

1717
class TestSecurityDomain(KeyVaultTestCase):
@@ -21,9 +21,13 @@ class TestSecurityDomain(KeyVaultTestCase):
2121
async def test_security_domain_download_and_upload(
2222
self, client: SecurityDomainClient, upload_client: SecurityDomainClient, **kwargs
2323
):
24-
# Before running this test, create security domain certificates
25-
# 1. Create private keys: `openssl genrsa -pubout -out <>-certificate[0-2].key 2048`
26-
# 2. Create certificates: `openssl req -new -x509 -days 365 -key <>-certificate[0-2].key -out <>-certificate[0-2].cer`
24+
"""Test downloading a security domain and uploading it to another Managed HSM.
25+
26+
This test requires two Managed HSMs to be set up, one for downloading and one for uploading. The URL of the
27+
first Managed HSM is specified in the environment variable AZURE_MANAGEDHSM_URL, and the second is specified
28+
in SECONDARY_MANAGEDHSM_URL.
29+
"""
30+
# Load the certificate{x}.cer files from /resources and use them to download the security domain.
2731
certs_object = get_certificate_info()
2832
poller = await client.begin_download(certificate_info=certs_object, skip_activation_polling=True)
2933
result = await poller.result()
@@ -32,15 +36,17 @@ async def test_security_domain_download_and_upload(
3236
assert status.status.lower() == "inprogress"
3337
assert result.value
3438

39+
# Get the transfer key of the secondary HSM, and write it and the security domain to files.
3540
key = await upload_client.get_transfer_key()
3641
jwk = str(key.transfer_key)
3742
transfer_key = json.loads(jwk)
3843
write_transfer_key(transfer_key)
3944
write_security_domain(result.value)
45+
# Wrap the security domain using the certificate{x}.pem keys.
46+
wrapped_security_domain = use_wrapping_keys()
4047

41-
# At this point, use the Azure CLI to encrypt the security domain to prepare for upload
42-
# `az keyvault security-domain restore-blob --sd-exchange-key <>-transfer-key.pem --sd-file <>-security-domain.json --sd-wrapping-keys <>-certificate0.key <>-certificate1.key <>-certificate2.key --sd-file-restore-blob <>-restore-blob.json`
43-
poller = await upload_client.begin_upload(security_domain=result)
48+
# Upload the wrapped security domain to the secondary HSM.
49+
poller = await upload_client.begin_upload(security_domain=wrapped_security_domain)
4450
result = await poller.result()
4551
assert result is None
4652
status = await upload_client.get_upload_status()

0 commit comments

Comments
 (0)