Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1429921
| From | Denis Kenzior <denkenz@gmail.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v6 3/6] crypto: AF_ALG -- add asymmetric cipher interface |
| Date | 2016-06-23 17:30 +0200 |
| Message-ID | <rNeJP-3uS-5@gated-at.bofh.it> (permalink) |
| References | <rzg8R-u7-93@gated-at.bofh.it> <rIvUZ-5O9-11@gated-at.bofh.it> <rMZrs-1su-45@gated-at.bofh.it> <rN53P-5jQ-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Hi Stephan, >> >> This brings me to another proposal for read buffer sizing: AF_ALG akcipher >> can guarantee that partial reads (where the read buffer is shorter than >> the output of the crypto op) will work using the same semantics as >> SOCK_DGRAM/SOCK_SEQPACKET. With those sockets, as much data as will fit is >> copied in to the read buffer and the remainder is discarded. >> >> I realize there's a performance and memory tradeoff, since the crypto >> algorithm needs a sufficiently large output buffer that would have to be >> created by AF_ALG akcipher. The user could manage that tradeoff by >> providing a larger buffer (typically key_size?) if it wants to avoid >> allocating and copying intermediate buffers inside the kernel. > > How shall the user know that something got truncated or that the kernel > created memory? > To the former point, recall the signature of recv: ssize_t recv(int sockfd, void *buf, size_t len, int flags); Traditionally, userspace apps can know that the buffer provided to recv was too small in two ways: The return value from recv / recvmsg was >= len. In the case of recvmsg, the MSG_TRUNC flag is set. To quote man recv: "All three calls return the length of the message on successful compleā tion. If a message is too long to fit in the supplied buffer, excess bytes may be discarded depending on the type of socket the message is received from." and "MSG_TRUNC (since Linux 2.2) For raw (AF_PACKET), Internet datagram (since Linux 2.4.27/2.6.8), netlink (since Linux 2.6.22), and UNIX datagram (since Linux 3.4) sockets: return the real length of the packet or datagram, even when it was longer than the passed buffer. " Regards, -Denis
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
Re: [PATCH v6 3/6] crypto: AF_ALG -- add asymmetric cipher interface Mat Martineau <mathew.j.martineau@linux.intel.com> - 2016-06-23 01:10 +0200
Re: [PATCH v6 3/6] crypto: AF_ALG -- add asymmetric cipher interface Stephan Mueller <smueller@chronox.de> - 2016-06-23 07:10 +0200
Re: [PATCH v6 3/6] crypto: AF_ALG -- add asymmetric cipher interface Denis Kenzior <denkenz@gmail.com> - 2016-06-23 17:30 +0200
csiph-web