summaryrefslogtreecommitdiffstats
path: root/crypto
AgeCommit message (Expand)Author
2006-04-18Add OID cross reference table.Dr. Stephen Henson
2006-04-17SynchroniseRichard Levitte
2006-04-17Allow public key ASN1 methods to set PKCS#7 SignerInfo structures.Dr. Stephen Henson
2006-04-17Fix (most) WIN32 warnings and errors.Dr. Stephen Henson
2006-04-16Provisional support for EC pkey method, supporting ECDH and ECDSA.Dr. Stephen Henson
2006-04-16SHA-1 for x86_64.Andy Polyakov
2006-04-15Use more flexible method of determining output length, by setting &outlenDr. Stephen Henson
2006-04-15Fix from 0.9.7-stable branch.Dr. Stephen Henson
2006-04-15Revert to original...Dr. Stephen Henson
2006-04-15Oops...Dr. Stephen Henson
2006-04-14Update copyright notices on a few files where all original SSLeay code hasDr. Stephen Henson
2006-04-14Print out zero length string properly.Dr. Stephen Henson
2006-04-14Add functions to allow setting and adding external EVP_PKEY_METHOD.Dr. Stephen Henson
2006-04-13Complete key derivation support.Dr. Stephen Henson
2006-04-13Update dependencies.Dr. Stephen Henson
2006-04-13Add key derivation support.Dr. Stephen Henson
2006-04-13Synchronise what what's happening with the Unix buildRichard Levitte
2006-04-13Typo.Dr. Stephen Henson
2006-04-12Extend DH ASN1 method, add DH EVP_PKEY_METHOD.Dr. Stephen Henson
2006-04-12Fix leak.Dr. Stephen Henson
2006-04-12PKCS#3 DH PKCS#8 ASN1 support.Dr. Stephen Henson
2006-04-12Extend DH ASN1 method to support public key encode/decode and parameterDr. Stephen Henson
2006-04-12Compare parameters when comparing public keys.Dr. Stephen Henson
2006-04-12Add file dso_beos.c missing from original commit.Dr. Stephen Henson
2006-04-12Support for DSA keygen, fix for genpkey.Dr. Stephen Henson
2006-04-12Initial DSA EVP_PKEY_METHOD. Fixup some error codes.Dr. Stephen Henson
2006-04-11Add BeOS support.Ulf Möller
2006-04-11Use Dl_info only on systems where it is known to exist. It does notUlf Möller
2006-04-11uncomment; that one slipped throughUlf Möller
2006-04-11improve make dclean to remove files generated during buildUlf Möller
2006-04-11Add support for setting keybits and public exponent value for pkey RSA keygen.Dr. Stephen Henson
2006-04-11Initial keygen support.Dr. Stephen Henson
2006-04-10ctrls to set PSS salt length.Dr. Stephen Henson
2006-04-10Preliminary PSS support.Dr. Stephen Henson
2006-04-10Beginnings of PSS support.Dr. Stephen Henson
2006-04-10Synchronise with the Unix buildRichard Levitte
2006-04-10Change operation values so they can be used as a mask.Dr. Stephen Henson
2006-04-10Implementation of pkey_rsa_verify. Some constification.Dr. Stephen Henson
2006-04-10New utility function to reverse a buffer, either by copying or in-place.Dr. Stephen Henson
2006-04-09Store digests as EVP_MD instead of a NID.Dr. Stephen Henson
2006-04-09Constification.Dr. Stephen Henson
2006-04-09Bugfix X9.31 padding.Dr. Stephen Henson
2006-04-09Support for digest signing and X931 in rsa_pkey_meth.Dr. Stephen Henson
2006-04-09Add checking to padding ctrl.Dr. Stephen Henson
2006-04-09Add RSA ctrl for padding mode, add ctrl support in pkeyutl.Dr. Stephen Henson
2006-04-08Implement encrypt/decrypt using RSA.Dr. Stephen Henson
2006-04-08Initial functions for RSA EVP_PKEY_METHOD.Dr. Stephen Henson
2006-04-07If <operatio>_init function is zero interpret as noop.Dr. Stephen Henson
2006-04-07New utility 'pkeyutl' a general purpose version of 'rsautl'.Dr. Stephen Henson
2006-04-07Include EVP_PKEY argument in EVP_PKEY_CTX_new(). This avoids theDr. Stephen Henson
n>struct socket_wq *wq; if (sk_stream_is_writeable(sk) && sock) { clear_bit(SOCK_NOSPACE, &sock->flags); rcu_read_lock(); wq = rcu_dereference(sk->sk_wq); if (skwq_has_sleeper(wq)) wake_up_interruptible_poll(&wq->wait, POLLOUT | POLLWRNORM | POLLWRBAND); if (wq && wq->fasync_list && !(sk->sk_shutdown & SEND_SHUTDOWN)) sock_wake_async(wq, SOCK_WAKE_SPACE, POLL_OUT); rcu_read_unlock(); } } /** * sk_stream_wait_connect - Wait for a socket to get into the connected state * @sk: sock to wait on * @timeo_p: for how long to wait * * Must be called with the socket locked. */ int sk_stream_wait_connect(struct sock *sk, long *timeo_p) { DEFINE_WAIT_FUNC(wait, woken_wake_function); struct task_struct *tsk = current; int done; do { int err = sock_error(sk); if (err) return err; if ((1 << sk->sk_state) & ~(TCPF_SYN_SENT | TCPF_SYN_RECV)) return -EPIPE; if (!*timeo_p) return -EAGAIN; if (signal_pending(tsk)) return sock_intr_errno(*timeo_p); add_wait_queue(sk_sleep(sk), &wait); sk->sk_write_pending++; done = sk_wait_event(sk, timeo_p, !sk->sk_err && !((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)), &wait); remove_wait_queue(sk_sleep(sk), &wait); sk->sk_write_pending--; } while (!done); return 0; } EXPORT_SYMBOL(sk_stream_wait_connect); /** * sk_stream_closing - Return 1 if we still have things to send in our buffers. * @sk: socket to verify */ static inline int sk_stream_closing(struct sock *sk) { return (1 << sk->sk_state) & (TCPF_FIN_WAIT1 | TCPF_CLOSING | TCPF_LAST_ACK); } void sk_stream_wait_close(struct sock *sk, long timeout) { if (timeout) { DEFINE_WAIT_FUNC(wait, woken_wake_function); add_wait_queue(sk_sleep(sk), &wait); do { if (sk_wait_event(sk, &timeout, !sk_stream_closing(sk), &wait)) break; } while (!signal_pending(current) && timeout); remove_wait_queue(sk_sleep(sk), &wait); } } EXPORT_SYMBOL(sk_stream_wait_close); /** * sk_stream_wait_memory - Wait for more memory for a socket * @sk: socket to wait for memory * @timeo_p: for how long */ int sk_stream_wait_memory(struct sock *sk, long *timeo_p) { int err = 0; long vm_wait = 0; long current_timeo = *timeo_p; bool noblock = (*timeo_p ? false : true); DEFINE_WAIT_FUNC(wait, woken_wake_function); if (sk_stream_memory_free(sk)) current_timeo = vm_wait = (prandom_u32() % (HZ / 5)) + 2; add_wait_queue(sk_sleep(sk), &wait); while (1) { sk_set_bit(SOCKWQ_ASYNC_NOSPACE, sk); if (sk->sk_err || (sk->sk_shutdown & SEND_SHUTDOWN)) goto do_error; if (!*timeo_p) { if (noblock) set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); goto do_nonblock; } if (signal_pending(current)) goto do_interrupted; sk_clear_bit(SOCKWQ_ASYNC_NOSPACE, sk); if (sk_stream_memory_free(sk) && !vm_wait) break; set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); sk->sk_write_pending++; sk_wait_event(sk, &current_timeo, sk->sk_err || (sk->sk_shutdown & SEND_SHUTDOWN) || (sk_stream_memory_free(sk) && !vm_wait), &wait); sk->sk_write_pending--; if (vm_wait) { vm_wait -= current_timeo; current_timeo = *timeo_p; if (current_timeo != MAX_SCHEDULE_TIMEOUT && (current_timeo -= vm_wait) < 0) current_timeo = 0; vm_wait = 0; } *timeo_p = current_timeo; } out: remove_wait_queue(sk_sleep(sk), &wait); return err; do_error: err = -EPIPE; goto out; do_nonblock: err = -EAGAIN; goto out; do_interrupted: err = sock_intr_errno(*timeo_p); goto out; } EXPORT_SYMBOL(sk_stream_wait_memory); int sk_stream_error(struct sock *sk, int flags, int err) { if (err == -EPIPE) err = sock_error(sk) ? : -EPIPE; if (err == -EPIPE && !(flags & MSG_NOSIGNAL)) send_sig(SIGPIPE, current, 0); return err; } EXPORT_SYMBOL(sk_stream_error); void sk_stream_kill_queues(struct sock *sk) { /* First the read buffer. */ __skb_queue_purge(&sk->sk_receive_queue); /* Next, the error queue. */ __skb_queue_purge(&sk->sk_error_queue); /* Next, the write queue. */ WARN_ON(!skb_queue_empty(&sk->sk_write_queue)); /* Account for returned memory. */ sk_mem_reclaim(sk); WARN_ON(sk->sk_wmem_queued); WARN_ON(sk->sk_forward_alloc); /* It is _impossible_ for the backlog to contain anything * when we get here. All user references to this socket * have gone away, only the net layer knows can touch it. */ } EXPORT_SYMBOL(sk_stream_kill_queues);