Skip to content
This repository was archived by the owner on Jul 5, 2021. It is now read-only.

Commit 943f9d9

Browse files
authored
Merge pull request #141 from ContainerSolutions/azure-backend
Azure backend
2 parents 28fcb8e + cba821c commit 943f9d9

File tree

10 files changed

+383
-1
lines changed

10 files changed

+383
-1
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ like [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) or [AWS SSM]
2727
- For the AWS Backend we support both simple secrets and binfiles.
2828
- You can get speciffic versions of the secrets or just get latest versions of them.
2929
- If you change something in your ExternalSecret CR, the operator will reconcile it (Even if your refresh interval is big).
30-
- AWS Secret Manager, Google Secret Manager and Gitlab backends supported currently!
30+
- AWS Secret Manager, Google Secret Manager, Gitlab and Azure Key Vault backends supported currently!
3131

3232
<a name="quick-start"></a>
3333

@@ -89,6 +89,7 @@ resources:
8989
- credentials-asm.yaml
9090
# - credentials-dummy.yaml
9191
# - credentials-gitlab.yaml
92+
# - credentials-akv.yaml
9293
```
9394

9495
```yaml
@@ -190,6 +191,7 @@ We would like to support as many backends as possible and it should be rather ea
190191
|[AWS Secrets Manager Info](https://aws.amazon.com/secrets-manager/) | [AWS Secrets Manager Backend Docs](#what-does-it-do) |
191192
|[GCP Secret Manager Info](https://cloud.google.com/secret-manager) | [GCP Secret Manager Backend Docs](docs/backends/gsm.md) |
192193
|[Gitlab CI/CD Variables Info](https://docs.gitlab.com/ce/ci/variables/) | [Gitlab CI/CD Variables Backend Docs](docs/backends/gitlab.md) |
194+
|[Azure Key Vault Info](https://docs.microsoft.com/en-us/azure/key-vault/) | [Azure Key Vault Backend Docs](docs/backends/akv.md) |
193195

194196
<a name="contributing"></a>
195197

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
name: credentials-akv
5+
labels:
6+
type: akv
7+
type: Opaque
8+
stringData:
9+
credentials.json: |-
10+
{
11+
"clientId": "",
12+
"clientSecret": "",
13+
"tenantId": "",
14+
"akvName": ""
15+
}

config/credentials/kustomization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ resources:
33
# - credentials-asm.yaml
44
- credentials-dummy.yaml
55
# - credentials-gitlab.yaml
6+
# - credentials-akv.yaml

config/samples/store_v1alpha1_secretstore.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,11 @@ spec:
4343
# parameters:
4444
# baseURL: https://gitlab.com
4545
# projectID: 12345678
46+
47+
#Azure Key Vault
48+
# store:
49+
# type: akv
50+
# auth:
51+
# secretRef:
52+
# name: externalsecret-operator-credentials-akv
53+
# parameters: {}

docs/backends/akv.md

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
## Azure Key Vault secrets
2+
3+
### Prerequisites
4+
5+
You need to have a Key Vault instance with a secret and an application registered in your Azure Active directory with Read access to the Vault's secrets.
6+
7+
The following script creates everything needed for sample purposes. It assumes you have Azure ClI installed and it is already authenticated.
8+
For more information about Azure CLI refer to the Azure CLI's [documentation page](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli).
9+
10+
```bash
11+
# The tennatId will be needed to get the secrets
12+
TENANT_ID=$(az account show --query tenantId | tr -d \")
13+
14+
# Name and location of the Resource Group
15+
RESOURCE_GROUP="MyKeyVaultResourceGroup"
16+
LOCATION="westus"
17+
18+
# Create the Resource Group
19+
az group create --location $LOCATION --name $RESOURCE_GROUP
20+
21+
VAULT_NAME="eso-akv-test"
22+
23+
# Create the Key Vault
24+
az keyvault create --name $VAULT_NAME --resource-group $RESOURCE_GROUP
25+
26+
SECRET_NAME="example-externalsecret-key"
27+
SECRET_VAlUE="This is our secret now!"
28+
29+
# Add a secret to the vault
30+
az keyvault secret set --name $SECRET_NAME --vault-name $VAULT_NAME --value "$SECRET_VAlUE"
31+
32+
# Now you need to create an app to access the Key Vault
33+
APP_NAME="ExtSectret Query App"
34+
APP_ID=$(az ad app create --display-name "$APP_NAME" --query appId | tr -d \")
35+
36+
# A Service Principal must also be created
37+
SERVICE_PRINCIPAL=$(az ad sp create --id $APP_ID --query objectId | tr -d \")
38+
39+
# Add permission to your App to query the Key Vault
40+
# The --api-permission refers to the Azure Key Vault user_impersonation permission (do not modify)
41+
# The --api refers to the Azure Key Vault API (do not modify)
42+
az ad app permission add --id $APP_ID --api-permissions f53da476-18e3-4152-8e01-aec403e6edc0=Scope --api cfa8b339-82a2-471a-a3c9-0fc0be7a4093
43+
44+
APP_PASSWORD="ThisisMyStrongPassword"
45+
# A password must be created for the app
46+
az ad app credential reset --id $APP_ID --password "$APP_PASSWORD"
47+
48+
# Finnaly, the Key Vault must have an Access Policy for the created app
49+
az keyvault set-policy --name $VAULT_NAME --object-id $SERVICE_PRINCIPAL --secret-permissions get
50+
```
51+
52+
For a detailed view on how to create the above mentioned resources in the Azure Portal, please go to: [How To Access Azure Key Vault Secrets Through Rest API Using Postman](https://www.c-sharpcorner.com/article/how-to-access-azure-key-vault-secrets-through-rest-api-using-postman/)
53+
54+
- Now you're ready to tnstall CRDs
55+
```
56+
make install
57+
```
58+
59+
### Deployment
60+
61+
- Uncomment and update credentials to be used in `config/credentials/kustomization.yaml`:
62+
63+
```yaml
64+
resources:
65+
# - credentials-gsm.yaml
66+
# - credentials-asm.yaml
67+
# - credentials-dummy.yaml
68+
# - credentials-gitlab.yaml
69+
- credentials-akv.yaml
70+
71+
```
72+
73+
- Update the Azure Key Vault backend credentials `config/credentials/credentials-akv.yaml` with your personal access token
74+
```json
75+
{
76+
"tenantId": "<Active Directory's Tenant ID>",
77+
"clientId": "<Application (client) ID>",
78+
"clientSecret": "<Application's secret value>",
79+
"keyvault": "<Key Vault name>"
80+
}
81+
```
82+
83+
You can run the following script that will generate the above mentioned json object
84+
```bash
85+
echo -e "{ \n \
86+
\"tenantId\": \"$TENANT_ID\", \n \
87+
\"clientId\": \"$APP_ID\", \n \
88+
\"clientSecret\": \"$APP_PASSWORD\", \n \
89+
\"keyvault\": \"$VAULT_NAME\" \n \
90+
}"
91+
```
92+
> Beware of the indentation if you paste the output from above into your file.
93+
94+
95+
- Update the `SecretStore` resource definition `config/samples/store_v1alpha1_secretstore.yaml`
96+
```yaml
97+
% cat `config/samples/store_v1alpha1_secretstore.yaml
98+
apiVersion: store.externalsecret-operator.container-solutions.com/v1alpha1
99+
kind: SecretStore
100+
metadata:
101+
name: secretstore-sample
102+
spec:
103+
controller: staging
104+
store:
105+
type: akv
106+
auth:
107+
secretRef:
108+
name: externalsecret-operator-credentials-akv
109+
parameters: {}
110+
```
111+
112+
- Update the `ExternalSecret` resource definition `config/samples/secrets_v1alpha1_externalsecret.yaml`
113+
```yaml
114+
% cat config/samples/secrets_v1alpha1_externalsecret.yaml
115+
apiVersion: secrets.externalsecret-operator.container-solutions.com/v1alpha1
116+
kind: ExternalSecret
117+
metadata:
118+
name: externalsecret-sample
119+
spec:
120+
storeRef:
121+
name: externalsecret-operator-secretstore-sample
122+
data:
123+
- key: example-externalsecret-key
124+
version: ""
125+
```
126+
127+
- The operator fetches the Key Vault secret from Azure and injects it as a Kubernetes secret:
128+
129+
```shell
130+
% make deploy
131+
% kubectl get secret externalsecret-operator-externalsecret-sample -n externalsecret-operator-system \
132+
-o jsonpath='{.data.example-externalsecret-key}' | base64 -d
133+
```
134+
135+
### Clean up
136+
137+
- Delete the resource group (it willa lso delete the Kay Vault created)
138+
139+
```bash
140+
az group delete --name $RESOURCE_GROUP
141+
```
142+
143+
- Delete the Active Directory application
144+
145+
```bash
146+
az ad app delete --id $APP_ID
147+
```

go.mod

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ go 1.15
44

55
require (
66
cloud.google.com/go v0.66.0
7+
github.com/Azure/azure-sdk-for-go v48.2.0+incompatible
8+
github.com/Azure/go-autorest/autorest/azure/auth v0.5.3 // indirect
9+
github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
10+
github.com/Azure/go-autorest/autorest/validation v0.3.0 // indirect
711
github.com/aws/aws-sdk-go v1.34.29
812
github.com/go-logr/logr v0.2.1
913
github.com/go-logr/zapr v0.2.0 // indirect

go.sum

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,49 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl
3434
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
3535
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
3636
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
37+
github.com/Azure/azure-sdk-for-go v0.2.0-beta h1:wYBqYNMWr0WL2lcEZi+dlK9n+N0wJ0Pjs4BKeOnDjfQ=
38+
github.com/Azure/azure-sdk-for-go v48.2.0+incompatible h1:+t2P1j1r5N6lYgPiiz7ZbEVZFkWjVe9WhHbMm0gg8hw=
39+
github.com/Azure/azure-sdk-for-go v48.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
3740
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
41+
github.com/Azure/go-autorest v1.1.1 h1:4G9tVCqooRY3vDTB2bA1Z01PlSALtnUbji0AfzthUSs=
42+
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
43+
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
3844
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
45+
github.com/Azure/go-autorest/autorest v0.9.6 h1:5YWtOnckcudzIw8lPPBcWOnmIFWMtHci1ZWAZulMSx0=
3946
github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
47+
github.com/Azure/go-autorest/autorest v0.11.9 h1:P0ZF0dEYoUPUVDQo3mA1CvH5b8mKev7DDcmTwauuNME=
48+
github.com/Azure/go-autorest/autorest v0.11.9/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw=
49+
github.com/Azure/go-autorest/autorest v0.11.12 h1:gI8ytXbxMfI+IVbI9mP2JGCTXIuhHLgRlvQ9X4PsnHE=
4050
github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
51+
github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0=
4152
github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
53+
github.com/Azure/go-autorest/autorest/adal v0.9.5 h1:Y3bBUV4rTuxenJJs41HU3qmqsb+auo+a3Lz+PlJPpL0=
54+
github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A=
55+
github.com/Azure/go-autorest/autorest/azure/auth v0.5.3 h1:lZifaPRAk1bqg5vGqreL6F8uLC5V0fDpY8nFvc3boFc=
56+
github.com/Azure/go-autorest/autorest/azure/auth v0.5.3/go.mod h1:4bJZhUhcq8LB20TruwHbAQsmUs2Xh+QR7utuJpLXX3A=
57+
github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 h1:dMOmEJfkLKW/7JsokJqkyoYSgmR08hi9KrhjZb+JALY=
58+
github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM=
4259
github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
60+
github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM=
4361
github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g=
62+
github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
63+
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
4464
github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
4565
github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
4666
github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM=
67+
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
68+
github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk=
69+
github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE=
70+
github.com/Azure/go-autorest/autorest/validation v0.3.0 h1:3I9AAI63HfcLtphd9g39ruUwRI+Ca+z/f36KHPFRUss=
71+
github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E=
72+
github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY=
4773
github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
74+
github.com/Azure/go-autorest/logger v0.2.0 h1:e4RVHVZKC5p6UANLJHkM4OfR1UKZPj8Wt8Pcx+3oqrE=
75+
github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
76+
github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k=
4877
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
78+
github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
79+
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
4980
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
5081
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
5182
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
@@ -117,7 +148,10 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do
117148
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
118149
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
119150
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
151+
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
120152
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
153+
github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4=
154+
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
121155
github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
122156
github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
123157
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
@@ -142,6 +176,8 @@ github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLi
142176
github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses=
143177
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
144178
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
179+
github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk=
180+
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
145181
github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
146182
github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
147183
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
@@ -389,6 +425,7 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5
389425
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
390426
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
391427
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
428+
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
392429
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
393430
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
394431
github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
@@ -582,6 +619,8 @@ golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPh
582619
golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
583620
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
584621
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
622+
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 h1:hb9wdF1z5waM+dSIICn1l0DkLVDT3hqhhQsDNUmHPRE=
623+
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
585624
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
586625
golang.org/x/exp v0.0.0-20190221220918-438050ddec5e/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
587626
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=

0 commit comments

Comments
 (0)