1*c15f66b0SDixsie Wolmers<div class="uib-modal__content">
2*c15f66b0SDixsie Wolmers  <div class="modal-header">
3*c15f66b0SDixsie Wolmers    <h2 class="modal-title" id="modal_label">
4*c15f66b0SDixsie Wolmers      Generate a Certificate Signing Request (CSR)
5*c15f66b0SDixsie Wolmers    </h2>
6*c15f66b0SDixsie Wolmers    <button
7*c15f66b0SDixsie Wolmers      type="button"
8*c15f66b0SDixsie Wolmers      class="btn  btn--close"
9*c15f66b0SDixsie Wolmers      ng-click="$dismiss()"
10*c15f66b0SDixsie Wolmers      aria-label="close">
11*c15f66b0SDixsie Wolmers      <icon file="icon-close.svg" aria-hidden="true"></icon>
12*c15f66b0SDixsie Wolmers    </button>
13*c15f66b0SDixsie Wolmers  </div>
14*c15f66b0SDixsie Wolmers    <form name="addCsrForm" id="addCsrForm" novalidate>
15*c15f66b0SDixsie Wolmers      <div class="modal-body">
16*c15f66b0SDixsie Wolmers        <div class="row">
17*c15f66b0SDixsie Wolmers          <fieldset class="column large-8 add-csr__section">
18*c15f66b0SDixsie Wolmers            <legend class="content-label">General</legend>
19*c15f66b0SDixsie Wolmers            <div class="row">
20*c15f66b0SDixsie Wolmers              <div class="column large-6">
21*c15f66b0SDixsie Wolmers                <label for="certType" class="content-label">
22*c15f66b0SDixsie Wolmers                  Certificate Type *
23*c15f66b0SDixsie Wolmers                </label>
24*c15f66b0SDixsie Wolmers                <select
25*c15f66b0SDixsie Wolmers                  class="add-csr__select"
26*c15f66b0SDixsie Wolmers                  id="certType"
27*c15f66b0SDixsie Wolmers                  name="certType"
28*c15f66b0SDixsie Wolmers                  ng-model="newCSR.certificateCollection"
29*c15f66b0SDixsie Wolmers                  required>
30*c15f66b0SDixsie Wolmers                  <option
31*c15f66b0SDixsie Wolmers                    class="courier-bold"
32*c15f66b0SDixsie Wolmers                    ng-value="default"
33*c15f66b0SDixsie Wolmers                    ng-model="selectOption">
34*c15f66b0SDixsie Wolmers                    Select an option
35*c15f66b0SDixsie Wolmers                  </option>
36*c15f66b0SDixsie Wolmers                  <!-- Do not show CA certificate as an option.
37*c15f66b0SDixsie Wolmers                       Only a certificate authority can generate a CA certificate
38*c15f66b0SDixsie Wolmers                       (known as TrustStore Certificate in Redfish) -->
39*c15f66b0SDixsie Wolmers                  <option
40*c15f66b0SDixsie Wolmers                    class="courier-bold"
41*c15f66b0SDixsie Wolmers                    ng-value="type"
42*c15f66b0SDixsie Wolmers                    ng-repeat="type in allCertificateTypes"
43*c15f66b0SDixsie Wolmers                    ng-if="type.Description !== 'TrustStore Certificate'">
44*c15f66b0SDixsie Wolmers                    {{ type.name }}
45*c15f66b0SDixsie Wolmers                  </option>
46*c15f66b0SDixsie Wolmers                </select>
47*c15f66b0SDixsie Wolmers                <div
48*c15f66b0SDixsie Wolmers                  ng-messages="addCsrForm.certType.$error"
49*c15f66b0SDixsie Wolmers                  class="form-error"
50*c15f66b0SDixsie Wolmers                  ng-class="{'visible' : addCsrForm.certType.$touched}">
51*c15f66b0SDixsie Wolmers                  <p ng-message="required">Field is required</p>
52*c15f66b0SDixsie Wolmers                </div>
53*c15f66b0SDixsie Wolmers              </div>
54*c15f66b0SDixsie Wolmers              <div class="column large-6">
55*c15f66b0SDixsie Wolmers                <label for="countryCode" class="content-label">Country *</label>
56*c15f66b0SDixsie Wolmers                <select
57*c15f66b0SDixsie Wolmers                  class="add-csr__select"
58*c15f66b0SDixsie Wolmers                  id="countryCode"
59*c15f66b0SDixsie Wolmers                  name="countryCode"
60*c15f66b0SDixsie Wolmers                  ng-model="newCSR.countryCode"
61*c15f66b0SDixsie Wolmers                  required>
62*c15f66b0SDixsie Wolmers                  <option
63*c15f66b0SDixsie Wolmers                    class="courier-bold"
64*c15f66b0SDixsie Wolmers                    ng-value=""
65*c15f66b0SDixsie Wolmers                    ng-model="selectOption">
66*c15f66b0SDixsie Wolmers                    Select an option
67*c15f66b0SDixsie Wolmers                  </option>
68*c15f66b0SDixsie Wolmers                  <option
69*c15f66b0SDixsie Wolmers                    class="courier-bold"
70*c15f66b0SDixsie Wolmers                    ng-value="country"
71*c15f66b0SDixsie Wolmers                    ng-repeat="country in countryList">
72*c15f66b0SDixsie Wolmers                    {{ country.Name }}
73*c15f66b0SDixsie Wolmers                  </option>
74*c15f66b0SDixsie Wolmers                </select>
75*c15f66b0SDixsie Wolmers                <div
76*c15f66b0SDixsie Wolmers                  ng-messages="addCsrForm.countryCode.$error"
77*c15f66b0SDixsie Wolmers                  class="form-error"
78*c15f66b0SDixsie Wolmers                  ng-class="{'visible' : addCsrForm.countryCode.$touched}">
79*c15f66b0SDixsie Wolmers                  <p ng-message="required">Field is required</p>
80*c15f66b0SDixsie Wolmers                </div>
81*c15f66b0SDixsie Wolmers              </div>
82*c15f66b0SDixsie Wolmers              <div class="column large-6">
83*c15f66b0SDixsie Wolmers                <label for="state" class="content-label">State *</label>
84*c15f66b0SDixsie Wolmers                <input
85*c15f66b0SDixsie Wolmers                  class="add-csr__input"
86*c15f66b0SDixsie Wolmers                  ng-model="newCSR.state"
87*c15f66b0SDixsie Wolmers                  type="text"
88*c15f66b0SDixsie Wolmers                  id="state"
89*c15f66b0SDixsie Wolmers                  name="state"
90*c15f66b0SDixsie Wolmers                  required/>
91*c15f66b0SDixsie Wolmers                <div
92*c15f66b0SDixsie Wolmers                  ng-messages="addCsrForm.state.$error"
93*c15f66b0SDixsie Wolmers                  class="form-error"
94*c15f66b0SDixsie Wolmers                  ng-class="{'visible' : addCsrForm.state.$touched}">
95*c15f66b0SDixsie Wolmers                  <p ng-message="required">Field is required</p>
96*c15f66b0SDixsie Wolmers                </div>
97*c15f66b0SDixsie Wolmers              </div>
98*c15f66b0SDixsie Wolmers              <div class="column large-6">
99*c15f66b0SDixsie Wolmers                <label for="city" class="content-label">City *</label>
100*c15f66b0SDixsie Wolmers                <input
101*c15f66b0SDixsie Wolmers                  class="add-csr__input"
102*c15f66b0SDixsie Wolmers                  id="city"
103*c15f66b0SDixsie Wolmers                  name="city"
104*c15f66b0SDixsie Wolmers                  ng-model="newCSR.city"
105*c15f66b0SDixsie Wolmers                  type="text"
106*c15f66b0SDixsie Wolmers                  required/>
107*c15f66b0SDixsie Wolmers                <div
108*c15f66b0SDixsie Wolmers                  ng-messages="addCsrForm.city.$error"
109*c15f66b0SDixsie Wolmers                  class="form-error"
110*c15f66b0SDixsie Wolmers                  ng-class="{'visible' : addCsrForm.city.$touched}">
111*c15f66b0SDixsie Wolmers                  <p ng-message="required">Field is required</p>
112*c15f66b0SDixsie Wolmers                </div>
113*c15f66b0SDixsie Wolmers              </div>
114*c15f66b0SDixsie Wolmers              <div class="column large-6">
115*c15f66b0SDixsie Wolmers                <label for="companyName" class="content-label">
116*c15f66b0SDixsie Wolmers                  Company Name *
117*c15f66b0SDixsie Wolmers                </label>
118*c15f66b0SDixsie Wolmers                <input
119*c15f66b0SDixsie Wolmers                  class="add-csr__input"
120*c15f66b0SDixsie Wolmers                  type="text"
121*c15f66b0SDixsie Wolmers                  ng-model="newCSR.organization"
122*c15f66b0SDixsie Wolmers                  id="companyName"
123*c15f66b0SDixsie Wolmers                  name="companyName"
124*c15f66b0SDixsie Wolmers                  required/>
125*c15f66b0SDixsie Wolmers                <div
126*c15f66b0SDixsie Wolmers                  ng-messages="addCsrForm.companyName.$error"
127*c15f66b0SDixsie Wolmers                  class="form-error"
128*c15f66b0SDixsie Wolmers                  ng-class="{'visible' : addCsrForm.companyName.$touched}">
129*c15f66b0SDixsie Wolmers                  <p ng-message="required">Field is required</p>
130*c15f66b0SDixsie Wolmers                </div>
131*c15f66b0SDixsie Wolmers              </div>
132*c15f66b0SDixsie Wolmers              <div class="column large-6">
133*c15f66b0SDixsie Wolmers                <label for="companyUnit" class="content-label">
134*c15f66b0SDixsie Wolmers                  Company Unit *
135*c15f66b0SDixsie Wolmers                </label>
136*c15f66b0SDixsie Wolmers                <input
137*c15f66b0SDixsie Wolmers                  class="add-csr__input"
138*c15f66b0SDixsie Wolmers                  ng-model="newCSR.companyUnit"
139*c15f66b0SDixsie Wolmers                  name="companyUnit"
140*c15f66b0SDixsie Wolmers                  id="companyUnit"
141*c15f66b0SDixsie Wolmers                  type="text"
142*c15f66b0SDixsie Wolmers                  required/>
143*c15f66b0SDixsie Wolmers                <div
144*c15f66b0SDixsie Wolmers                  ng-messages="addCsrForm.companyUnit.$error"
145*c15f66b0SDixsie Wolmers                  class="form-error"
146*c15f66b0SDixsie Wolmers                  ng-class="{'visible' : addCsrForm.companyUnit.$touched}">
147*c15f66b0SDixsie Wolmers                  <p ng-message="required">Field is required</p>
148*c15f66b0SDixsie Wolmers                </div>
149*c15f66b0SDixsie Wolmers              </div>
150*c15f66b0SDixsie Wolmers              <div class="column large-6">
151*c15f66b0SDixsie Wolmers                <label for="commonName" class="content-label">
152*c15f66b0SDixsie Wolmers                  Common Name *
153*c15f66b0SDixsie Wolmers                </label>
154*c15f66b0SDixsie Wolmers                <input
155*c15f66b0SDixsie Wolmers                  class="add-csr__input"
156*c15f66b0SDixsie Wolmers                  ng-model="newCSR.commonName"
157*c15f66b0SDixsie Wolmers                  name="commonName"
158*c15f66b0SDixsie Wolmers                  type="text"
159*c15f66b0SDixsie Wolmers                  id="commonName"
160*c15f66b0SDixsie Wolmers                  required/>
161*c15f66b0SDixsie Wolmers                <div
162*c15f66b0SDixsie Wolmers                  ng-messages="addCsrForm.commonName.$error"
163*c15f66b0SDixsie Wolmers                  class="form-error"
164*c15f66b0SDixsie Wolmers                  ng-class="{'visible' : addCsrForm.commonName.$touched}">
165*c15f66b0SDixsie Wolmers                  <p ng-message="required">Field is required</p>
166*c15f66b0SDixsie Wolmers                </div>
167*c15f66b0SDixsie Wolmers              </div>
168*c15f66b0SDixsie Wolmers              <div class="column large-6">
169*c15f66b0SDixsie Wolmers                <label for="challengePassword" class="content-label">
170*c15f66b0SDixsie Wolmers                  Challenge Password
171*c15f66b0SDixsie Wolmers                </label>
172*c15f66b0SDixsie Wolmers                <input
173*c15f66b0SDixsie Wolmers                  class="add-csr__input-no-validation"
174*c15f66b0SDixsie Wolmers                  id="challengePassword"
175*c15f66b0SDixsie Wolmers                  ng-model="newCSR.challengePassword"
176*c15f66b0SDixsie Wolmers                  type="text"/>
177*c15f66b0SDixsie Wolmers              </div>
178*c15f66b0SDixsie Wolmers              <div class="column large-6">
179*c15f66b0SDixsie Wolmers                <label for="contactPerson" class="content-label">
180*c15f66b0SDixsie Wolmers                  Contact Person
181*c15f66b0SDixsie Wolmers                </label>
182*c15f66b0SDixsie Wolmers                <input
183*c15f66b0SDixsie Wolmers                  class="add-csr__input-no-validation"
184*c15f66b0SDixsie Wolmers                  id="contactPerson"
185*c15f66b0SDixsie Wolmers                  ng-model="newCSR.contactPerson"
186*c15f66b0SDixsie Wolmers                  type="text"/>
187*c15f66b0SDixsie Wolmers              </div>
188*c15f66b0SDixsie Wolmers              <div class="column large-6">
189*c15f66b0SDixsie Wolmers                <label for="emailAddress" class="content-label">
190*c15f66b0SDixsie Wolmers                  Email Address
191*c15f66b0SDixsie Wolmers                </label>
192*c15f66b0SDixsie Wolmers                <input
193*c15f66b0SDixsie Wolmers                  class="add-csr__input-no-validation"
194*c15f66b0SDixsie Wolmers                  id="emailAddress"
195*c15f66b0SDixsie Wolmers                  ng-model="newCSR.emailAddress"
196*c15f66b0SDixsie Wolmers                  type="text"/>
197*c15f66b0SDixsie Wolmers              </div>
198*c15f66b0SDixsie Wolmers              <div class="column large-6">
199*c15f66b0SDixsie Wolmers                <label
200*c15f66b0SDixsie Wolmers                  id="alternate-name-label"
201*c15f66b0SDixsie Wolmers                  for="alternateName"
202*c15f66b0SDixsie Wolmers                  class="content-label">
203*c15f66b0SDixsie Wolmers                  Alternate Name
204*c15f66b0SDixsie Wolmers                </label>
205*c15f66b0SDixsie Wolmers                <input
206*c15f66b0SDixsie Wolmers                  class="add-csr__input-no-validation"
207*c15f66b0SDixsie Wolmers                  ng-model="newCSR.firstAlternativeName"
208*c15f66b0SDixsie Wolmers                  id="alternateName"
209*c15f66b0SDixsie Wolmers                  name="alternativeName"
210*c15f66b0SDixsie Wolmers                  type="text"/>
211*c15f66b0SDixsie Wolmers                <div
212*c15f66b0SDixsie Wolmers                  class="add-csr__additional-alt-names"
213*c15f66b0SDixsie Wolmers                  ng-repeat="name in names">
214*c15f66b0SDixsie Wolmers                  <input
215*c15f66b0SDixsie Wolmers                    id="alternate-name-input-{{ $index }}"
216*c15f66b0SDixsie Wolmers                    aria-describedby="alternate-name-label"
217*c15f66b0SDixsie Wolmers                    class="add-csr__input-no-validation"
218*c15f66b0SDixsie Wolmers                    ng-model="name.Value"
219*c15f66b0SDixsie Wolmers                    type="text"/>
220*c15f66b0SDixsie Wolmers                  <button
221*c15f66b0SDixsie Wolmers                    aria-label="Delete alternate name field"
222*c15f66b0SDixsie Wolmers                    aria-controls="alternate-name-input-{{ $index }}"
223*c15f66b0SDixsie Wolmers                    class="btn btn-tertiary add-csr__alt-name-delete-btn"
224*c15f66b0SDixsie Wolmers                    ng-click="deleteOptionalRow($index)"
225*c15f66b0SDixsie Wolmers                    ng-disabled="multiSelected">
226*c15f66b0SDixsie Wolmers                    <icon aria-hidden="true" file="icon-trashcan.svg"></icon>
227*c15f66b0SDixsie Wolmers                  </button>
228*c15f66b0SDixsie Wolmers                </div>
229*c15f66b0SDixsie Wolmers              </div>
230*c15f66b0SDixsie Wolmers              <div class="column large-6">
231*c15f66b0SDixsie Wolmers                <button
232*c15f66b0SDixsie Wolmers                  class="btn btn-tertiary add-csr__alt-name-add-btn"
233*c15f66b0SDixsie Wolmers                  ng-click="addOptionalRow()">
234*c15f66b0SDixsie Wolmers                  <icon file="icon-plus.svg" aria-hidden="true"></icon>
235*c15f66b0SDixsie Wolmers                  Add another alternate name
236*c15f66b0SDixsie Wolmers                </button>
237*c15f66b0SDixsie Wolmers              </div>
238*c15f66b0SDixsie Wolmers            </div>
239*c15f66b0SDixsie Wolmers          </fieldset>
240*c15f66b0SDixsie Wolmers          <fieldset
241*c15f66b0SDixsie Wolmers            class="column medium-12 large-4 add-csr__section add-csr__section--border">
242*c15f66b0SDixsie Wolmers            <legend class="content-label">Private key</legend>
243*c15f66b0SDixsie Wolmers            <div class="add-csr__container-private-key">
244*c15f66b0SDixsie Wolmers              <div class="add-csr__container-private-key">
245*c15f66b0SDixsie Wolmers                <label for="keyPairAlgorithm" class="content-label">
246*c15f66b0SDixsie Wolmers                  Key Pair Algorithm *
247*c15f66b0SDixsie Wolmers                </label>
248*c15f66b0SDixsie Wolmers                <select
249*c15f66b0SDixsie Wolmers                  class="add-csr__select"
250*c15f66b0SDixsie Wolmers                  ng-model="newCSR.keyPairAlgorithm"
251*c15f66b0SDixsie Wolmers                  id="keyPairAlgorithm"
252*c15f66b0SDixsie Wolmers                  name="keyPairAlgorithm"
253*c15f66b0SDixsie Wolmers                  required>
254*c15f66b0SDixsie Wolmers                  <option
255*c15f66b0SDixsie Wolmers                    class="courier-bold"
256*c15f66b0SDixsie Wolmers                    ng-value=""
257*c15f66b0SDixsie Wolmers                    ng-model="selectOption">
258*c15f66b0SDixsie Wolmers                    Select an option
259*c15f66b0SDixsie Wolmers                  </option>
260*c15f66b0SDixsie Wolmers                  <option
261*c15f66b0SDixsie Wolmers                    class="courier-bold"
262*c15f66b0SDixsie Wolmers                    ng-value="data"
263*c15f66b0SDixsie Wolmers                    ng-repeat="data in keyPairAlgorithm">
264*c15f66b0SDixsie Wolmers                    {{ data }}
265*c15f66b0SDixsie Wolmers                  </option>
266*c15f66b0SDixsie Wolmers                </select>
267*c15f66b0SDixsie Wolmers                <div
268*c15f66b0SDixsie Wolmers                  ng-messages="addCsrForm.keyPairAlgorithm.$error"
269*c15f66b0SDixsie Wolmers                  class="form-error"
270*c15f66b0SDixsie Wolmers                  ng-class="{'visible' : addCsrForm.keyPairAlgorithm.$touched}">
271*c15f66b0SDixsie Wolmers                  <p ng-message="required">Field is required</p>
272*c15f66b0SDixsie Wolmers                </div>
273*c15f66b0SDixsie Wolmers              </div>
274*c15f66b0SDixsie Wolmers              <div ng-if="newCSR.keyPairAlgorithm == 'EC'">
275*c15f66b0SDixsie Wolmers                <div class="large-12">
276*c15f66b0SDixsie Wolmers                  <label for="keyCurveId" class="content-label">
277*c15f66b0SDixsie Wolmers                    Key Curve ID
278*c15f66b0SDixsie Wolmers                  </label>
279*c15f66b0SDixsie Wolmers                  <select
280*c15f66b0SDixsie Wolmers                    class="add-csr__select"
281*c15f66b0SDixsie Wolmers                    ng-model="newCSR.keyCurveId"
282*c15f66b0SDixsie Wolmers                    id="keyCurveId"
283*c15f66b0SDixsie Wolmers                    name="keyCurveId"
284*c15f66b0SDixsie Wolmers                    required>
285*c15f66b0SDixsie Wolmers                    <option class="courier-bold" ng-value="">None</option>
286*c15f66b0SDixsie Wolmers                    <option
287*c15f66b0SDixsie Wolmers                      class="courier-bold"
288*c15f66b0SDixsie Wolmers                      ng-value="data"
289*c15f66b0SDixsie Wolmers                      ng-repeat="data in keyCurveId">
290*c15f66b0SDixsie Wolmers                      {{ data }}
291*c15f66b0SDixsie Wolmers                    </option>
292*c15f66b0SDixsie Wolmers                  </select>
293*c15f66b0SDixsie Wolmers                  <div
294*c15f66b0SDixsie Wolmers                    ng-messages="addCsrForm.keyCurveId.$error"
295*c15f66b0SDixsie Wolmers                    class="form-error"
296*c15f66b0SDixsie Wolmers                    ng-class="{'visible' : addCsrForm.keyCurveId.$touched}">
297*c15f66b0SDixsie Wolmers                    <p ng-message="required">Field is required</p>
298*c15f66b0SDixsie Wolmers                  </div>
299*c15f66b0SDixsie Wolmers                </div>
300*c15f66b0SDixsie Wolmers              </div>
301*c15f66b0SDixsie Wolmers              <div ng-if="newCSR.keyPairAlgorithm =='RSA'">
302*c15f66b0SDixsie Wolmers                <div class="large-12">
303*c15f66b0SDixsie Wolmers                  <label for="keyBitLength" class="content-label">
304*c15f66b0SDixsie Wolmers                    Key Bit Length *
305*c15f66b0SDixsie Wolmers                  </label>
306*c15f66b0SDixsie Wolmers                  <select
307*c15f66b0SDixsie Wolmers                    class="add-csr__select"
308*c15f66b0SDixsie Wolmers                    ng-model="newCSR.keyBitLength"
309*c15f66b0SDixsie Wolmers                    id="keyBitLength"
310*c15f66b0SDixsie Wolmers                    name="keyBitLength"
311*c15f66b0SDixsie Wolmers                    required>
312*c15f66b0SDixsie Wolmers                    <option class="courier-bold" ng-value="">
313*c15f66b0SDixsie Wolmers                      Select an option
314*c15f66b0SDixsie Wolmers                    </option>
315*c15f66b0SDixsie Wolmers                    <option
316*c15f66b0SDixsie Wolmers                      class="courier-bold"
317*c15f66b0SDixsie Wolmers                      ng-value="data"
318*c15f66b0SDixsie Wolmers                      ng-repeat="data in keyBitLength">
319*c15f66b0SDixsie Wolmers                      {{ data }}
320*c15f66b0SDixsie Wolmers                    </option>
321*c15f66b0SDixsie Wolmers                  </select>
322*c15f66b0SDixsie Wolmers                  <div
323*c15f66b0SDixsie Wolmers                    ng-messages="addCsrForm.keyBitLength.$error"
324*c15f66b0SDixsie Wolmers                    class="form-error"
325*c15f66b0SDixsie Wolmers                    ng-class="{'visible' : addCsrForm.keyBitLength.$touched}">
326*c15f66b0SDixsie Wolmers                    <p ng-message="required">Field is required</p>
327*c15f66b0SDixsie Wolmers                  </div>
328*c15f66b0SDixsie Wolmers                </div>
329*c15f66b0SDixsie Wolmers              </div>
330*c15f66b0SDixsie Wolmers            </div>
331*c15f66b0SDixsie Wolmers          </fieldset>
332*c15f66b0SDixsie Wolmers        </div>
333*c15f66b0SDixsie Wolmers      </div>
334*c15f66b0SDixsie Wolmers      <div class="modal-footer">
335*c15f66b0SDixsie Wolmers        <button
336*c15f66b0SDixsie Wolmers          type="reset"
337*c15f66b0SDixsie Wolmers          class="btn btn-secondary"
338*c15f66b0SDixsie Wolmers          ng-click="$dismiss()">
339*c15f66b0SDixsie Wolmers          Cancel
340*c15f66b0SDixsie Wolmers        </button>
341*c15f66b0SDixsie Wolmers        <button
342*c15f66b0SDixsie Wolmers          type="submit"
343*c15f66b0SDixsie Wolmers          class="btn btn-primary"
344*c15f66b0SDixsie Wolmers          ng-click="getCSRCode();addCsrForm.$setUntouched();$dismiss()"
345*c15f66b0SDixsie Wolmers          ng-disabled="addCsrForm.$invalid">
346*c15f66b0SDixsie Wolmers          Generate CSR
347*c15f66b0SDixsie Wolmers        </button>
348*c15f66b0SDixsie Wolmers      </div>
349*c15f66b0SDixsie Wolmers    </form>
350*c15f66b0SDixsie Wolmers  </div>
351*c15f66b0SDixsie Wolmers</div>
352