Coverage report: /home/ellis/comp/core/ffi/ssh2/ssh2.lisp

KindCoveredAll%
expression027 0.0
branch00nil
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 ;;; ffi.lisp --- SSH2 FFI
2
 
3
 ;; 
4
 
5
 ;;; Code:
6
 (in-package :ssh2)
7
 (define-alien-type libssh2-socket int)
8
 (define-opaque libssh2-session %libssh2-session)
9
 (define-opaque libssh2-channel %libssh2-channel)
10
 (define-opaque libssh2-listener %libssh2-listener)
11
 (define-opaque libssh2-knownhosts %libssh2-knownhosts)
12
 (define-opaque libssh2-agent %libssh2-agent)
13
 
14
 (define-alien-enum (libssh2-error int)
15
   :NONE +LIBSSH2-ERROR-NONE+
16
   :SOCKET-NONE +LIBSSH2-ERROR-SOCKET-NONE+
17
   :BANNER-RECV +LIBSSH2-ERROR-BANNER-RECV+
18
   :BANNER-SEND +LIBSSH2-ERROR-BANNER-SEND+
19
   :INVALID-MAC +LIBSSH2-ERROR-INVALID-MAC+
20
   :KEX-FAILURE +LIBSSH2-ERROR-KEX-FAILURE+
21
   :ALLOC +LIBSSH2-ERROR-ALLOC+
22
   :SOCKET-SEND +LIBSSH2-ERROR-SOCKET-SEND+
23
   :KEY-EXCHANGE-FAILURE +LIBSSH2-ERROR-KEY-EXCHANGE-FAILURE+
24
   :TIMEOUT +LIBSSH2-ERROR-TIMEOUT+
25
   :HOSTKEY-INIT +LIBSSH2-ERROR-HOSTKEY-INIT+
26
   :HOSTKEY-SIGN +LIBSSH2-ERROR-HOSTKEY-SIGN+
27
   :DECRYPT +LIBSSH2-ERROR-DECRYPT+
28
   :SOCKET-DISCONNECT +LIBSSH2-ERROR-SOCKET-DISCONNECT+
29
   :PROTO +LIBSSH2-ERROR-PROTO+
30
   :PASSWORD-EXPIRED +LIBSSH2-ERROR-PASSWORD-EXPIRED+
31
   :FILE +LIBSSH2-ERROR-FILE+
32
   :METHOD-NONE +LIBSSH2-ERROR-METHOD-NONE+
33
   :AUTHENTICATION-FAILED +LIBSSH2-ERROR-AUTHENTICATION-FAILED+
34
   :PUBLICKEY-UNVERIFIED +LIBSSH2-ERROR-PUBLICKEY-UNVERIFIED+
35
   :CHANNEL-OUTOFORDER +LIBSSH2-ERROR-CHANNEL-OUTOFORDER+
36
   :CHANNEL-FAILURE +LIBSSH2-ERROR-CHANNEL-FAILURE+
37
   :CHANNEL-REQUEST-DENIED +LIBSSH2-ERROR-CHANNEL-REQUEST-DENIED+
38
   :CHANNEL-UNKNOWN +LIBSSH2-ERROR-CHANNEL-UNKNOWN+
39
   :CHANNEL-WINDOW-EXCEEDED +LIBSSH2-ERROR-CHANNEL-WINDOW-EXCEEDED+
40
   :CHANNEL-PACKET-EXCEEDED +LIBSSH2-ERROR-CHANNEL-PACKET-EXCEEDED+
41
   :CHANNEL-CLOSED +LIBSSH2-ERROR-CHANNEL-CLOSED+
42
   :CHANNEL-EOF-SENT +LIBSSH2-ERROR-CHANNEL-EOF-SENT+
43
   :SCP-PROTOCOL +LIBSSH2-ERROR-SCP-PROTOCOL+
44
   :ZLIB +LIBSSH2-ERROR-ZLIB+
45
   :SOCKET-TIMEOUT +LIBSSH2-ERROR-SOCKET-TIMEOUT+
46
   :SFTP-PROTOCOL +LIBSSH2-ERROR-SFTP-PROTOCOL+
47
   :REQUEST-DENIED +LIBSSH2-ERROR-REQUEST-DENIED+
48
   :METHOD-NOT-SUPPORTED +LIBSSH2-ERROR-METHOD-NOT-SUPPORTED+
49
   :INVAL +LIBSSH2-ERROR-INVAL+
50
   :INVALID-POLL-TYPE +LIBSSH2-ERROR-INVALID-POLL-TYPE+
51
   :PUBLICKEY-PROTOCOL +LIBSSH2-ERROR-PUBLICKEY-PROTOCOL+
52
   :EAGAIN +LIBSSH2-ERROR-EAGAIN+
53
   :BUFFER-TOO-SMALL +LIBSSH2-ERROR-BUFFER-TOO-SMALL+
54
   :BAD-USE +LIBSSH2-ERROR-BAD-USE+
55
   :COMPRESS +LIBSSH2-ERROR-COMPRESS+
56
   :OUT-OF-BOUNDARY +LIBSSH2-ERROR-OUT-OF-BOUNDARY+
57
   :AGENT-PROTOCOL +LIBSSH2-ERROR-AGENT-PROTOCOL+
58
   :SOCKET-RECV +LIBSSH2-ERROR-SOCKET-RECV+
59
   :ENCRYPT +LIBSSH2-ERROR-ENCRYPT+
60
   :BAD-SOCKET +LIBSSH2-ERROR-BAD-SOCKET+
61
   :KNOWN-HOSTS +LIBSSH2-ERROR-KNOWN-HOSTS+)
62
 
63
 (define-alien-enum (ssh-disconnect int)
64
   :HOST-NOT-ALLOWED-TO-CONNECT +SSH-DISCONNECT-HOST-NOT-ALLOWED-TO-CONNECT+
65
   :PROTOCOL-ERROR +SSH-DISCONNECT-PROTOCOL-ERROR+
66
   :KEY-EXCHANGE-FAILED +SSH-DISCONNECT-KEY-EXCHANGE-FAILED+
67
   :RESERVED +SSH-DISCONNECT-RESERVED+
68
   :MAC-ERROR +SSH-DISCONNECT-MAC-ERROR+
69
   :COMPRESSION-ERROR +SSH-DISCONNECT-COMPRESSION-ERROR+
70
   :SERVICE-NOT-AVAILABLE +SSH-DISCONNECT-SERVICE-NOT-AVAILABLE+
71
   :PROTOCOL-VERSION-NOT-SUPPORTED +SSH-DISCONNECT-PROTOCOL-VERSION-NOT-SUPPORTED+
72
   :HOST-KEY-NOT-VERIFIABLE +SSH-DISCONNECT-HOST-KEY-NOT-VERIFIABLE+
73
   :CONNECTION-LOST +SSH-DISCONNECT-CONNECTION-LOST+
74
   :BY-APPLICATION +SSH-DISCONNECT-BY-APPLICATION+
75
   :TOO-MANY-CONNECTIONS +SSH-DISCONNECT-TOO-MANY-CONNECTIONS+
76
   :AUTH-CANCELLED-BY-USER +SSH-DISCONNECT-AUTH-CANCELLED-BY-USER+
77
   :NO-MORE-AUTH-METHODS-AVAILABLE +SSH-DISCONNECT-NO-MORE-AUTH-METHODS-AVAILABLE+
78
   :ILLEGAL-USER-NAME +SSH-DISCONNECT-ILLEGAL-USER-NAME+)
79
 
80
 (define-alien-enum (libssh2-callback int)
81
   :ignore 0
82
   :debug 1
83
   :disconnect 2
84
   :macerror 3
85
   :x11 4
86
   :send 5
87
   :recv 6
88
   :authagent 7
89
   :authagent-identities 8
90
   :authagent-sign 9)
91
 
92
 (define-alien-enum (libssh2-method int)
93
   :kex 0
94
   :hostkey 1
95
   :crypt-cs 2
96
   :crypt-sc 3
97
   :mac-cs 4
98
   :mac-sc 5
99
   :comp-cs 6
100
   :comp-sc 7
101
   :lang-cs 8
102
   :lang-sc 9
103
   :sign-algo 10)
104
 
105
 (define-alien-enum (libssh2-flag int)
106
   :sigpipe 1
107
   :compress 2
108
   :quote-paths 3)
109
 
110
 (define-alien-enum (libssh2-pollfd int)
111
   :socket 1
112
   :channel 2
113
   :listener 3
114
   :pollin #x0001
115
   :pollpri #x0002
116
   :pollout #x0004
117
   :pollerr #x0008
118
   :pollhup #x0010
119
   :session-closed #x0010
120
   :pollnval #x0020
121
   :pollex #x0040
122
   :channel-closed #x0080
123
   :listener-closed #x0080)
124
 
125
 (define-alien-enum (libssh2-hostkey-type int)
126
   :unknown 0
127
   :rsa 1
128
   :dss 2 ;; deprecated
129
   :ecdsa-256 3
130
   :ecdsa-384 4
131
   :ecdsa-521 5
132
   :ed25519 6)
133
 
134
 (define-alien-enum (libssh2-session-block int)
135
   :inbound #x0001
136
   :outbound #x0002)
137
 
138
 (define-alien-enum (libssh2-hostkey-hash int)
139
   :md5 1
140
   :sha1 2
141
   :sha256 3)
142
 
143
 (defar libssh2-init int (flags int))
144
 
145
 (defar libssh2-exit void)
146
 
147
 (defar libssh2-free void (session (* t)) (ptr (* t)))
148
 
149
 (defar libssh2-session-supported-algs int
150
   (session (* libssh2-session))
151
   (method-type int)
152
   (algs (* (* c-string))))
153
 
154
 (defar libssh2-session-init-ex (* libssh2-session)
155
   (alloc (* t))
156
   (free (* t))
157
   (realloc (* t))
158
   (abstract (* t)))
159
 
160
 (definline libssh2-session-init () (libssh2-session-init-ex nil nil nil nil))
161
 
162
 #+nil
163
 (with-alien ((arr (* c-string)))
164
   (let ((sesh (libssh2-session-init-ex nil nil nil nil)))
165
     (libssh2-session-supported-algs sesh 0 (addr arr))
166
     (c-strings-to-string-list (print arr))))