Skip to content

Commit f22deb0

Browse files
committed
[Python] Fix Cert API argument type errors
NativeLibraryHandleMethodArguments correctly setting the argument types causes argument type errors: ctypes.ArgumentError: argument 1: TypeError: expected LP_c_ubyte instance instead of bytes We can safely cast bytes as the native side marks it const.
1 parent 759b7b0 commit f22deb0

File tree

1 file changed

+6
-2
lines changed
  • src/controller/python/chip/credentials

1 file changed

+6
-2
lines changed

src/controller/python/chip/credentials/cert.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ def convert_x509_cert_to_chip_cert(x509Cert: bytes) -> bytes:
3535
"""Converts a x509 certificate to CHIP Certificate."""
3636
output_buffer = (ctypes.c_uint8 * 1024)()
3737
output_size = ctypes.c_size_t(1024)
38+
ptr_type = ctypes.POINTER(ctypes.c_uint8)
3839

39-
_handle().pychip_ConvertX509CertToChipCert(x509Cert, len(x509Cert), output_buffer, ctypes.byref(output_size)).raise_on_error()
40+
_handle().pychip_ConvertX509CertToChipCert(ctypes.cast(x509Cert, ptr_type), len(x509Cert),
41+
ctypes.cast(output_buffer, ptr_type), ctypes.byref(output_size)).raise_on_error()
4042

4143
return bytes(output_buffer)[:output_size.value]
4244

@@ -45,7 +47,9 @@ def convert_chip_cert_to_x509_cert(chipCert: bytes) -> bytes:
4547
"""Converts a x509 certificate to CHIP Certificate."""
4648
output_buffer = (ctypes.c_byte * 1024)()
4749
output_size = ctypes.c_size_t(1024)
50+
ptr_type = ctypes.POINTER(ctypes.c_uint8)
4851

49-
_handle().pychip_ConvertChipCertToX509Cert(chipCert, len(chipCert), output_buffer, ctypes.byref(output_size)).raise_on_error()
52+
_handle().pychip_ConvertChipCertToX509Cert(ctypes.cast(chipCert, ptr_type), len(chipCert),
53+
ctypes.cast(output_buffer, ptr_type), ctypes.byref(output_size)).raise_on_error()
5054

5155
return bytes(output_buffer)[:output_size.value]

0 commit comments

Comments
 (0)