Skip to content

Commit 7a6f58c

Browse files
authored
Merge pull request #1 from getCUJO/add_method-pref_function
Add libsssh2_session_method_pref
2 parents a3d077e + a27d6f7 commit 7a6f58c

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

ssh2/c_ssh2.pxd

+12
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ cdef extern from "libssh2.h" nogil:
4343
enum:
4444
LIBSSH2_HOSTKEY_HASH_SHA256
4545

46+
enum:
47+
LIBSSH2_METHOD_KEX
48+
LIBSSH2_METHOD_HOSTKEY
49+
LIBSSH2_METHOD_CRYPT_CS
50+
LIBSSH2_METHOD_CRYPT_SC
51+
LIBSSH2_METHOD_MAC_CS
52+
LIBSSH2_METHOD_MAC_SC
53+
LIBSSH2_METHOD_COMP_CS
54+
LIBSSH2_METHOD_COMP_SC
55+
LIBSSH2_METHOD_LANG_CS
56+
LIBSSH2_METHOD_LANG_SC
57+
4658
# ctypedef libssh2_uint64_t libssh2_struct_stat_size
4759
ctypedef struct libssh2_struct_stat:
4860
dev_t st_dev

ssh2/session.pyx

+20
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,17 @@ LIBSSH2_HOSTKEY_TYPE_UNKNOWN = c_ssh2.LIBSSH2_HOSTKEY_TYPE_UNKNOWN
4545
LIBSSH2_HOSTKEY_TYPE_RSA = c_ssh2.LIBSSH2_HOSTKEY_TYPE_RSA
4646
LIBSSH2_HOSTKEY_TYPE_DSS = c_ssh2.LIBSSH2_HOSTKEY_TYPE_DSS
4747

48+
LIBSSH2_METHOD_KEX = c_ssh2.LIBSSH2_METHOD_KEX
49+
LIBSSH2_METHOD_HOSTKEY = c_ssh2.LIBSSH2_METHOD_HOSTKEY
50+
LIBSSH2_METHOD_CRYPT_CS = c_ssh2.LIBSSH2_METHOD_CRYPT_CS
51+
LIBSSH2_METHOD_CRYPT_SC = c_ssh2.LIBSSH2_METHOD_CRYPT_SC
52+
LIBSSH2_METHOD_MAC_CS = c_ssh2.LIBSSH2_METHOD_MAC_CS
53+
LIBSSH2_METHOD_MAC_SC = c_ssh2.LIBSSH2_METHOD_MAC_SC
54+
LIBSSH2_METHOD_COMP_CS = c_ssh2.LIBSSH2_METHOD_COMP_CS
55+
LIBSSH2_METHOD_COMP_SC = c_ssh2.LIBSSH2_METHOD_COMP_SC
56+
LIBSSH2_METHOD_LANG_CS = c_ssh2.LIBSSH2_METHOD_LANG_CS
57+
LIBSSH2_METHOD_LANG_SC = c_ssh2.LIBSSH2_METHOD_LANG_SC
58+
4859

4960
cdef class Session:
5061

@@ -68,6 +79,15 @@ cdef class Session:
6879
rc = c_ssh2.libssh2_session_disconnect(self._session, b"end")
6980
return handle_error_codes(rc)
7081

82+
def method_pref(self, method_type, pref_methods):
83+
cdef int rc
84+
cdef int _method_type = int(method_type)
85+
cdef bytes b_pref_methods = to_bytes(pref_methods)
86+
cdef char *_pref_methods = b_pref_methods
87+
with nogil:
88+
rc = c_ssh2.libssh2_session_method_pref(self._session, _method_type, _pref_methods)
89+
return handle_error_codes(rc)
90+
7191
def handshake(self, sock not None):
7292
"""Perform SSH handshake.
7393

0 commit comments

Comments
 (0)