@@ -43,3 +43,325 @@ def add_encrypted_key(
43
43
raise RuntimeError ('Failed to add encrypted key' )
44
44
45
45
return result
46
+
47
+
48
+ def add_key_name (node : _Element , name : str | None = None ) -> _Element :
49
+ """
50
+ Python wrapper for the C function `PyXmlSec_TemplateAddKeyName`.
51
+
52
+ :param node: The XML node to which the key name will be added.
53
+ :param name: Optional name for the key.
54
+ :return: The modified XML node.
55
+ """
56
+ c_name = ctypes .c_char_p (name .encode ('utf-8' ) if name else None )
57
+ result = libxmlsec .PyXmlSec_TemplateAddKeyName (node , c_name )
58
+
59
+ if not result :
60
+ raise RuntimeError ('Failed to add key name' )
61
+
62
+ return result
63
+
64
+
65
+ def add_key_value (node : _Element ) -> _Element :
66
+ """
67
+ Python wrapper for the C function `PyXmlSec_TemplateAddKeyValue`.
68
+
69
+ :param node: The XML node to which the key value will be added.
70
+ :return: The modified XML node.
71
+ """
72
+ result = libxmlsec .PyXmlSec_TemplateAddKeyValue (node )
73
+
74
+ if not result :
75
+ raise RuntimeError ('Failed to add key value' )
76
+
77
+ return result
78
+
79
+
80
+ def add_reference (
81
+ node : _Element , digest_method : Transform , id : str | None = None , uri : str | None = None , type : str | None = None
82
+ ) -> _Element :
83
+ """
84
+ Python wrapper for the C function `PyXmlSec_TemplateAddReference`.
85
+
86
+ :param node: The XML node to which the reference will be added.
87
+ :param digest_method: The digest method for the reference.
88
+ :param id: Optional ID for the reference.
89
+ :param uri: Optional URI for the reference.
90
+ :param type: Optional type for the reference.
91
+ :return: The modified XML node.
92
+ """
93
+ c_id = ctypes .c_char_p (id .encode ('utf-8' ) if id else None )
94
+ c_uri = ctypes .c_char_p (uri .encode ('utf-8' ) if uri else None )
95
+ c_type = ctypes .c_char_p (type .encode ('utf-8' ) if type else None )
96
+
97
+ result = libxmlsec .PyXmlSec_TemplateAddReference (node , digest_method , c_id , c_uri , c_type )
98
+
99
+ if not result :
100
+ raise RuntimeError ('Failed to add reference' )
101
+
102
+ return result
103
+
104
+
105
+ def add_transform (node : _Element , transform : Transform ) -> Any :
106
+ """
107
+ Python wrapper for the C function `PyXmlSec_TemplateAddTransform`.
108
+
109
+ :param node: The XML node to which the transform will be added.
110
+ :param transform: The transform to add.
111
+ :return: The modified XML node.
112
+ """
113
+ result = libxmlsec .PyXmlSec_TemplateAddTransform (node , transform )
114
+
115
+ if not result :
116
+ raise RuntimeError ('Failed to add transform' )
117
+
118
+ return result
119
+
120
+
121
+ def add_x509_data (node : _Element ) -> _Element :
122
+ """
123
+ Python wrapper for the C function `PyXmlSec_TemplateAddX509Data`.
124
+
125
+ :param node: The XML node to which the X509 data will be added.
126
+ :return: The modified XML node.
127
+ """
128
+ result = libxmlsec .PyXmlSec_TemplateAddX509Data (node )
129
+
130
+ if not result :
131
+ raise RuntimeError ('Failed to add X509 data' )
132
+
133
+ return result
134
+
135
+
136
+ def create (node : _Element , c14n_method : Transform , sign_method : Transform ) -> _Element :
137
+ """
138
+ Python wrapper for the C function `PyXmlSec_TemplateCreate`.
139
+
140
+ :param node: The XML node to create.
141
+ :param c14n_method: The canonicalization method.
142
+ :param sign_method: The signature method.
143
+ :return: The created XML node.
144
+ """
145
+ result = libxmlsec .PyXmlSec_TemplateCreate (node , c14n_method , sign_method )
146
+
147
+ if not result :
148
+ raise RuntimeError ('Failed to create template' )
149
+
150
+ return result
151
+
152
+
153
+ def encrypted_data_create (
154
+ node : _Element ,
155
+ method : Transform ,
156
+ id : str | None = None ,
157
+ type : str | None = None ,
158
+ mime_type : str | None = None ,
159
+ encoding : str | None = None ,
160
+ ns : str | None = None ,
161
+ ) -> _Element :
162
+ """
163
+ Python wrapper for the C function `PyXmlSec_TemplateEncryptedDataCreate`.
164
+
165
+ :param node: The XML node to create encrypted data for.
166
+ :param method: The encryption method.
167
+ :param id: Optional ID for the encrypted data.
168
+ :param type: Optional type for the encrypted data.
169
+ :param mime_type: Optional MIME type for the encrypted data.
170
+ :param encoding: Optional encoding for the encrypted data.
171
+ :param ns: Optional namespace for the encrypted data.
172
+ :return: The created encrypted data node.
173
+ """
174
+ c_id = ctypes .c_char_p (id .encode ('utf-8' ) if id else None )
175
+ c_type = ctypes .c_char_p (type .encode ('utf-8' ) if type else None )
176
+ c_mime_type = ctypes .c_char_p (mime_type .encode ('utf-8' ) if mime_type else None )
177
+ c_encoding = ctypes .c_char_p (encoding .encode ('utf-8' ) if encoding else None )
178
+ c_ns = ctypes .c_char_p (ns .encode ('utf-8' ) if ns else None )
179
+
180
+ result = libxmlsec .PyXmlSec_TemplateEncryptedDataCreate (node , method , c_id , c_type , c_mime_type , c_encoding , c_ns )
181
+
182
+ if not result :
183
+ raise RuntimeError ('Failed to create encrypted data' )
184
+
185
+ return result
186
+
187
+
188
+ def encrypted_data_ensure_cipher_value (node : _Element ) -> _Element :
189
+ """
190
+ Python wrapper for the C function `PyXmlSec_TemplateEncryptedDataEnsureCipherValue`.
191
+
192
+ :param node: The XML node to ensure cipher value for.
193
+ :return: The modified XML node.
194
+ """
195
+ result = libxmlsec .PyXmlSec_TemplateEncryptedDataEnsureCipherValue (node )
196
+
197
+ if not result :
198
+ raise RuntimeError ('Failed to ensure cipher value' )
199
+
200
+ return result
201
+
202
+
203
+ def encrypted_data_ensure_key_info (node : _Element , id : str | None = None , ns : str | None = None ) -> _Element :
204
+ """
205
+ Python wrapper for the C function `PyXmlSec_TemplateEncryptedDataEnsureKeyInfo`.
206
+
207
+ :param node: The XML node to ensure key info for.
208
+ :param id: Optional ID for the key info.
209
+ :param ns: Optional namespace for the key info.
210
+ :return: The modified XML node.
211
+ """
212
+ c_id = ctypes .c_char_p (id .encode ('utf-8' ) if id else None )
213
+ c_ns = ctypes .c_char_p (ns .encode ('utf-8' ) if ns else None )
214
+
215
+ result = libxmlsec .PyXmlSec_TemplateEncryptedDataEnsureKeyInfo (node , c_id , c_ns )
216
+
217
+ if not result :
218
+ raise RuntimeError ('Failed to ensure key info' )
219
+
220
+ return result
221
+
222
+
223
+ def ensure_key_info (node : _Element , id : str | None = None ) -> _Element :
224
+ """
225
+ Python wrapper for the C function `PyXmlSec_TemplateEnsureKeyInfo`.
226
+
227
+ :param node: The XML node to ensure key info for.
228
+ :param id: Optional ID for the key info.
229
+ :return: The modified XML node.
230
+ """
231
+ c_id = ctypes .c_char_p (id .encode ('utf-8' ) if id else None )
232
+
233
+ result = libxmlsec .PyXmlSec_TemplateEnsureKeyInfo (node , c_id )
234
+
235
+ if not result :
236
+ raise RuntimeError ('Failed to ensure key info' )
237
+
238
+ return result
239
+
240
+
241
+ def transform_add_c14n_inclusive_namespaces (node : _Element , prefixes : str | Sequence [str ]) -> None :
242
+ """
243
+ Python wrapper for the C function `PyXmlSec_TemplateTransformAddC14NInclusiveNamespaces`.
244
+
245
+ :param node: The XML node to add inclusive namespaces to.
246
+ :param prefixes: The prefixes to add.
247
+ """
248
+ if isinstance (prefixes , str ):
249
+ prefixes = [prefixes ]
250
+
251
+ c_prefixes = (ctypes .c_char_p * len (prefixes ))(* [p .encode ('utf-8' ) for p in prefixes ])
252
+
253
+ result = libxmlsec .PyXmlSec_TemplateTransformAddC14NInclusiveNamespaces (node , c_prefixes )
254
+
255
+ if not result :
256
+ raise RuntimeError ('Failed to add inclusive namespaces' )
257
+
258
+
259
+ def x509_data_add_certificate (node : _Element ) -> _Element :
260
+ """
261
+ Python wrapper for the C function `PyXmlSec_TemplateX509DataAddCertificate`.
262
+
263
+ :param node: The XML node to add the certificate to.
264
+ :return: The modified XML node.
265
+ """
266
+ result = libxmlsec .PyXmlSec_TemplateX509DataAddCertificate (node )
267
+
268
+ if not result :
269
+ raise RuntimeError ('Failed to add certificate' )
270
+
271
+ return result
272
+
273
+
274
+ def x509_data_add_crl (node : _Element ) -> _Element :
275
+ """
276
+ Python wrapper for the C function `PyXmlSec_TemplateX509DataAddCRL`.
277
+
278
+ :param node: The XML node to add the CRL to.
279
+ :return: The modified XML node.
280
+ """
281
+ result = libxmlsec .PyXmlSec_TemplateX509DataAddCRL (node )
282
+
283
+ if not result :
284
+ raise RuntimeError ('Failed to add CRL' )
285
+
286
+ return result
287
+
288
+
289
+ def x509_data_add_issuer_serial (node : _Element ) -> _Element :
290
+ """
291
+ Python wrapper for the C function `PyXmlSec_TemplateX509DataAddIssuerSerial`.
292
+
293
+ :param node: The XML node to add the issuer serial to.
294
+ :return: The modified XML node.
295
+ """
296
+ result = libxmlsec .PyXmlSec_TemplateX509DataAddIssuerSerial (node )
297
+
298
+ if not result :
299
+ raise RuntimeError ('Failed to add issuer serial' )
300
+
301
+ return result
302
+
303
+
304
+ def x509_data_add_ski (node : _Element ) -> _Element :
305
+ """
306
+ Python wrapper for the C function `PyXmlSec_TemplateX509DataAddSKI`.
307
+
308
+ :param node: The XML node to add the SKI to.
309
+ :return: The modified XML node.
310
+ """
311
+ result = libxmlsec .PyXmlSec_TemplateX509DataAddSKI (node )
312
+
313
+ if not result :
314
+ raise RuntimeError ('Failed to add SKI' )
315
+
316
+ return result
317
+
318
+
319
+ def x509_data_add_subject_name (node : _Element ) -> _Element :
320
+ """
321
+ Python wrapper for the C function `PyXmlSec_TemplateX509DataAddSubjectName`.
322
+
323
+ :param node: The XML node to add the subject name to.
324
+ :return: The modified XML node.
325
+ """
326
+ result = libxmlsec .PyXmlSec_TemplateX509DataAddSubjectName (node )
327
+
328
+ if not result :
329
+ raise RuntimeError ('Failed to add subject name' )
330
+
331
+ return result
332
+
333
+
334
+ def x509_issuer_serial_add_issuer_name (node : _Element , name : str | None = None ) -> _Element :
335
+ """
336
+ Python wrapper for the C function `PyXmlSec_TemplateX509IssuerSerialAddIssuerName`.
337
+
338
+ :param node: The XML node to add the issuer name to.
339
+ :param name: The issuer name to add.
340
+ :return: The modified XML node.
341
+ """
342
+ c_name = ctypes .c_char_p (name .encode ('utf-8' ) if name else None )
343
+
344
+ result = libxmlsec .PyXmlSec_TemplateX509IssuerSerialAddIssuerName (node , c_name )
345
+
346
+ if not result :
347
+ raise RuntimeError ('Failed to add issuer name' )
348
+
349
+ return result
350
+
351
+
352
+ def x509_issuer_serial_add_serial_number (node : _Element , serial : str | None = None ) -> _Element :
353
+ """
354
+ Python wrapper for the C function `PyXmlSec_TemplateX509IssuerSerialAddSerialNumber`.
355
+
356
+ :param node: The XML node to add the serial number to.
357
+ :param serial: The serial number to add.
358
+ :return: The modified XML node.
359
+ """
360
+ c_serial = ctypes .c_char_p (serial .encode ('utf-8' ) if serial else None )
361
+
362
+ result = libxmlsec .PyXmlSec_TemplateX509IssuerSerialAddSerialNumber (node , c_serial )
363
+
364
+ if not result :
365
+ raise RuntimeError ('Failed to add serial number' )
366
+
367
+ return result
0 commit comments