Merge branch 'vendor/OPENSSL'
authorPeter Avalos <pavalos@dragonflybsd.org>
Sun, 28 Feb 2010 00:31:33 +0000 (00:31 +0000)
committerPeter Avalos <pavalos@dragonflybsd.org>
Sun, 28 Feb 2010 01:22:31 +0000 (01:22 +0000)
287 files changed:
1  2 
crypto/openssl/README.DRAGONFLY
crypto/openssl/apps/speed.c
crypto/openssl/crypto/engine/eng_cryptodev.c
crypto/openssl/crypto/engine/engine.h
secure/lib/libcrypto/Makefile.inc
secure/lib/libcrypto/man/ASN1_OBJECT_new.3
secure/lib/libcrypto/man/ASN1_STRING_length.3
secure/lib/libcrypto/man/ASN1_STRING_new.3
secure/lib/libcrypto/man/ASN1_STRING_print_ex.3
secure/lib/libcrypto/man/ASN1_generate_nconf.3
secure/lib/libcrypto/man/BIO_ctrl.3
secure/lib/libcrypto/man/BIO_f_base64.3
secure/lib/libcrypto/man/BIO_f_buffer.3
secure/lib/libcrypto/man/BIO_f_cipher.3
secure/lib/libcrypto/man/BIO_f_md.3
secure/lib/libcrypto/man/BIO_f_null.3
secure/lib/libcrypto/man/BIO_f_ssl.3
secure/lib/libcrypto/man/BIO_find_type.3
secure/lib/libcrypto/man/BIO_new.3
secure/lib/libcrypto/man/BIO_push.3
secure/lib/libcrypto/man/BIO_read.3
secure/lib/libcrypto/man/BIO_s_accept.3
secure/lib/libcrypto/man/BIO_s_bio.3
secure/lib/libcrypto/man/BIO_s_connect.3
secure/lib/libcrypto/man/BIO_s_fd.3
secure/lib/libcrypto/man/BIO_s_file.3
secure/lib/libcrypto/man/BIO_s_mem.3
secure/lib/libcrypto/man/BIO_s_null.3
secure/lib/libcrypto/man/BIO_s_socket.3
secure/lib/libcrypto/man/BIO_set_callback.3
secure/lib/libcrypto/man/BIO_should_retry.3
secure/lib/libcrypto/man/BN_BLINDING_new.3
secure/lib/libcrypto/man/BN_CTX_new.3
secure/lib/libcrypto/man/BN_CTX_start.3
secure/lib/libcrypto/man/BN_add.3
secure/lib/libcrypto/man/BN_add_word.3
secure/lib/libcrypto/man/BN_bn2bin.3
secure/lib/libcrypto/man/BN_cmp.3
secure/lib/libcrypto/man/BN_copy.3
secure/lib/libcrypto/man/BN_generate_prime.3
secure/lib/libcrypto/man/BN_mod_inverse.3
secure/lib/libcrypto/man/BN_mod_mul_montgomery.3
secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3
secure/lib/libcrypto/man/BN_new.3
secure/lib/libcrypto/man/BN_num_bytes.3
secure/lib/libcrypto/man/BN_rand.3
secure/lib/libcrypto/man/BN_set_bit.3
secure/lib/libcrypto/man/BN_swap.3
secure/lib/libcrypto/man/BN_zero.3
secure/lib/libcrypto/man/CONF_modules_free.3
secure/lib/libcrypto/man/CONF_modules_load_file.3
secure/lib/libcrypto/man/CRYPTO_set_ex_data.3
secure/lib/libcrypto/man/DH_generate_key.3
secure/lib/libcrypto/man/DH_generate_parameters.3
secure/lib/libcrypto/man/DH_get_ex_new_index.3
secure/lib/libcrypto/man/DH_new.3
secure/lib/libcrypto/man/DH_set_method.3
secure/lib/libcrypto/man/DH_size.3
secure/lib/libcrypto/man/DSA_SIG_new.3
secure/lib/libcrypto/man/DSA_do_sign.3
secure/lib/libcrypto/man/DSA_dup_DH.3
secure/lib/libcrypto/man/DSA_generate_key.3
secure/lib/libcrypto/man/DSA_generate_parameters.3
secure/lib/libcrypto/man/DSA_get_ex_new_index.3
secure/lib/libcrypto/man/DSA_new.3
secure/lib/libcrypto/man/DSA_set_method.3
secure/lib/libcrypto/man/DSA_sign.3
secure/lib/libcrypto/man/DSA_size.3
secure/lib/libcrypto/man/ERR_GET_LIB.3
secure/lib/libcrypto/man/ERR_clear_error.3
secure/lib/libcrypto/man/ERR_error_string.3
secure/lib/libcrypto/man/ERR_get_error.3
secure/lib/libcrypto/man/ERR_load_crypto_strings.3
secure/lib/libcrypto/man/ERR_load_strings.3
secure/lib/libcrypto/man/ERR_print_errors.3
secure/lib/libcrypto/man/ERR_put_error.3
secure/lib/libcrypto/man/ERR_remove_state.3
secure/lib/libcrypto/man/ERR_set_mark.3
secure/lib/libcrypto/man/EVP_BytesToKey.3
secure/lib/libcrypto/man/EVP_DigestInit.3
secure/lib/libcrypto/man/EVP_EncryptInit.3
secure/lib/libcrypto/man/EVP_OpenInit.3
secure/lib/libcrypto/man/EVP_PKEY_new.3
secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3
secure/lib/libcrypto/man/EVP_SealInit.3
secure/lib/libcrypto/man/EVP_SignInit.3
secure/lib/libcrypto/man/EVP_VerifyInit.3
secure/lib/libcrypto/man/OBJ_nid2obj.3
secure/lib/libcrypto/man/OPENSSL_Applink.3
secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3
secure/lib/libcrypto/man/OPENSSL_config.3
secure/lib/libcrypto/man/OPENSSL_ia32cap.3
secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3
secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3
secure/lib/libcrypto/man/PKCS12_create.3
secure/lib/libcrypto/man/PKCS12_parse.3
secure/lib/libcrypto/man/PKCS7_decrypt.3
secure/lib/libcrypto/man/PKCS7_encrypt.3
secure/lib/libcrypto/man/PKCS7_sign.3
secure/lib/libcrypto/man/PKCS7_verify.3
secure/lib/libcrypto/man/RAND_add.3
secure/lib/libcrypto/man/RAND_bytes.3
secure/lib/libcrypto/man/RAND_cleanup.3
secure/lib/libcrypto/man/RAND_egd.3
secure/lib/libcrypto/man/RAND_load_file.3
secure/lib/libcrypto/man/RAND_set_rand_method.3
secure/lib/libcrypto/man/RSA_blinding_on.3
secure/lib/libcrypto/man/RSA_check_key.3
secure/lib/libcrypto/man/RSA_generate_key.3
secure/lib/libcrypto/man/RSA_get_ex_new_index.3
secure/lib/libcrypto/man/RSA_new.3
secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3
secure/lib/libcrypto/man/RSA_print.3
secure/lib/libcrypto/man/RSA_private_encrypt.3
secure/lib/libcrypto/man/RSA_public_encrypt.3
secure/lib/libcrypto/man/RSA_set_method.3
secure/lib/libcrypto/man/RSA_sign.3
secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3
secure/lib/libcrypto/man/RSA_size.3
secure/lib/libcrypto/man/SMIME_read_PKCS7.3
secure/lib/libcrypto/man/SMIME_write_PKCS7.3
secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3
secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3
secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3
secure/lib/libcrypto/man/X509_NAME_print_ex.3
secure/lib/libcrypto/man/X509_new.3
secure/lib/libcrypto/man/bio.3
secure/lib/libcrypto/man/blowfish.3
secure/lib/libcrypto/man/bn.3
secure/lib/libcrypto/man/bn_internal.3
secure/lib/libcrypto/man/buffer.3
secure/lib/libcrypto/man/crypto.3
secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3
secure/lib/libcrypto/man/d2i_DHparams.3
secure/lib/libcrypto/man/d2i_DSAPublicKey.3
secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3
secure/lib/libcrypto/man/d2i_RSAPublicKey.3
secure/lib/libcrypto/man/d2i_X509.3
secure/lib/libcrypto/man/d2i_X509_ALGOR.3
secure/lib/libcrypto/man/d2i_X509_CRL.3
secure/lib/libcrypto/man/d2i_X509_NAME.3
secure/lib/libcrypto/man/d2i_X509_REQ.3
secure/lib/libcrypto/man/d2i_X509_SIG.3
secure/lib/libcrypto/man/des.3
secure/lib/libcrypto/man/des_modes.7
secure/lib/libcrypto/man/dh.3
secure/lib/libcrypto/man/dsa.3
secure/lib/libcrypto/man/ecdsa.3
secure/lib/libcrypto/man/engine.3
secure/lib/libcrypto/man/err.3
secure/lib/libcrypto/man/evp.3
secure/lib/libcrypto/man/hmac.3
secure/lib/libcrypto/man/lh_stats.3
secure/lib/libcrypto/man/lhash.3
secure/lib/libcrypto/man/md5.3
secure/lib/libcrypto/man/mdc2.3
secure/lib/libcrypto/man/pem.3
secure/lib/libcrypto/man/rand.3
secure/lib/libcrypto/man/rc4.3
secure/lib/libcrypto/man/ripemd.3
secure/lib/libcrypto/man/rsa.3
secure/lib/libcrypto/man/sha.3
secure/lib/libcrypto/man/threads.3
secure/lib/libcrypto/man/ui.3
secure/lib/libcrypto/man/ui_compat.3
secure/lib/libcrypto/man/x509.3
secure/lib/libcrypto/opensslconf-i386.h
secure/lib/libcrypto/opensslconf-x86_64.h
secure/lib/libssl/Makefile
secure/lib/libssl/man/SSL_CIPHER_get_name.3
secure/lib/libssl/man/SSL_COMP_add_compression_method.3
secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3
secure/lib/libssl/man/SSL_CTX_add_session.3
secure/lib/libssl/man/SSL_CTX_ctrl.3
secure/lib/libssl/man/SSL_CTX_flush_sessions.3
secure/lib/libssl/man/SSL_CTX_free.3
secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3
secure/lib/libssl/man/SSL_CTX_get_verify_mode.3
secure/lib/libssl/man/SSL_CTX_load_verify_locations.3
secure/lib/libssl/man/SSL_CTX_new.3
secure/lib/libssl/man/SSL_CTX_sess_number.3
secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3
secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3
secure/lib/libssl/man/SSL_CTX_sessions.3
secure/lib/libssl/man/SSL_CTX_set_cert_store.3
secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3
secure/lib/libssl/man/SSL_CTX_set_cipher_list.3
secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3
secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3
secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3
secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3
secure/lib/libssl/man/SSL_CTX_set_info_callback.3
secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3
secure/lib/libssl/man/SSL_CTX_set_mode.3
secure/lib/libssl/man/SSL_CTX_set_msg_callback.3
secure/lib/libssl/man/SSL_CTX_set_options.3
secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3
secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3
secure/lib/libssl/man/SSL_CTX_set_session_id_context.3
secure/lib/libssl/man/SSL_CTX_set_ssl_version.3
secure/lib/libssl/man/SSL_CTX_set_timeout.3
secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3
secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3
secure/lib/libssl/man/SSL_CTX_set_verify.3
secure/lib/libssl/man/SSL_CTX_use_certificate.3
secure/lib/libssl/man/SSL_SESSION_free.3
secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3
secure/lib/libssl/man/SSL_SESSION_get_time.3
secure/lib/libssl/man/SSL_accept.3
secure/lib/libssl/man/SSL_alert_type_string.3
secure/lib/libssl/man/SSL_clear.3
secure/lib/libssl/man/SSL_connect.3
secure/lib/libssl/man/SSL_do_handshake.3
secure/lib/libssl/man/SSL_free.3
secure/lib/libssl/man/SSL_get_SSL_CTX.3
secure/lib/libssl/man/SSL_get_ciphers.3
secure/lib/libssl/man/SSL_get_client_CA_list.3
secure/lib/libssl/man/SSL_get_current_cipher.3
secure/lib/libssl/man/SSL_get_default_timeout.3
secure/lib/libssl/man/SSL_get_error.3
secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3
secure/lib/libssl/man/SSL_get_ex_new_index.3
secure/lib/libssl/man/SSL_get_fd.3
secure/lib/libssl/man/SSL_get_peer_cert_chain.3
secure/lib/libssl/man/SSL_get_peer_certificate.3
secure/lib/libssl/man/SSL_get_rbio.3
secure/lib/libssl/man/SSL_get_session.3
secure/lib/libssl/man/SSL_get_verify_result.3
secure/lib/libssl/man/SSL_get_version.3
secure/lib/libssl/man/SSL_library_init.3
secure/lib/libssl/man/SSL_load_client_CA_file.3
secure/lib/libssl/man/SSL_new.3
secure/lib/libssl/man/SSL_pending.3
secure/lib/libssl/man/SSL_read.3
secure/lib/libssl/man/SSL_rstate_string.3
secure/lib/libssl/man/SSL_session_reused.3
secure/lib/libssl/man/SSL_set_bio.3
secure/lib/libssl/man/SSL_set_connect_state.3
secure/lib/libssl/man/SSL_set_fd.3
secure/lib/libssl/man/SSL_set_session.3
secure/lib/libssl/man/SSL_set_shutdown.3
secure/lib/libssl/man/SSL_set_verify_result.3
secure/lib/libssl/man/SSL_shutdown.3
secure/lib/libssl/man/SSL_state_string.3
secure/lib/libssl/man/SSL_want.3
secure/lib/libssl/man/SSL_write.3
secure/lib/libssl/man/d2i_SSL_SESSION.3
secure/lib/libssl/man/ssl.3
secure/usr.bin/openssl/man/CA.pl.1
secure/usr.bin/openssl/man/asn1parse.1
secure/usr.bin/openssl/man/ca.1
secure/usr.bin/openssl/man/ciphers.1
secure/usr.bin/openssl/man/config.5
secure/usr.bin/openssl/man/crl.1
secure/usr.bin/openssl/man/crl2pkcs7.1
secure/usr.bin/openssl/man/dgst.1
secure/usr.bin/openssl/man/dhparam.1
secure/usr.bin/openssl/man/dsa.1
secure/usr.bin/openssl/man/dsaparam.1
secure/usr.bin/openssl/man/ec.1
secure/usr.bin/openssl/man/ecparam.1
secure/usr.bin/openssl/man/enc.1
secure/usr.bin/openssl/man/errstr.1
secure/usr.bin/openssl/man/gendsa.1
secure/usr.bin/openssl/man/genrsa.1
secure/usr.bin/openssl/man/nseq.1
secure/usr.bin/openssl/man/ocsp.1
secure/usr.bin/openssl/man/openssl.1
secure/usr.bin/openssl/man/passwd.1
secure/usr.bin/openssl/man/pkcs12.1
secure/usr.bin/openssl/man/pkcs7.1
secure/usr.bin/openssl/man/pkcs8.1
secure/usr.bin/openssl/man/rand.1
secure/usr.bin/openssl/man/req.1
secure/usr.bin/openssl/man/rsa.1
secure/usr.bin/openssl/man/rsautl.1
secure/usr.bin/openssl/man/s_client.1
secure/usr.bin/openssl/man/s_server.1
secure/usr.bin/openssl/man/s_time.1
secure/usr.bin/openssl/man/sess_id.1
secure/usr.bin/openssl/man/smime.1
secure/usr.bin/openssl/man/speed.1
secure/usr.bin/openssl/man/spkac.1
secure/usr.bin/openssl/man/verify.1
secure/usr.bin/openssl/man/version.1
secure/usr.bin/openssl/man/x509.1
secure/usr.bin/openssl/man/x509v3_config.5

index 96942a0,0000000..3d513cb
mode 100644,000000..100644
--- /dev/null
@@@ -1,23 -1,0 +1,19 @@@
- # Add DragonFly keywords to opensslconf-*.h
 +Original source can be downloaded from OpenSSL at
 +<http://www.openssl.org/source/>.
 +
 +Here's some hints to upgrading:
 +./Configure shared no-asm --prefix=/usr --openssldir=/etc/ssl BSD-x86-elf
 +cp crypto/opensslconf.h ../../secure/lib/libcrypto/opensslconf-i386.h
 +./Configure shared no-asm --prefix=/usr --openssldir=/etc/ssl BSD-x86_64
 +cp crypto/opensslconf.h ../../secure/lib/libcrypto/opensslconf-x86_64.h
 +cd ../../secure/lib/libcrypto
 +# Update the version in Makefile.inc
- # make sure things work then import and commit
- # cvs import hint:
- # cvs import src/crypto/openssl-0.9 OPENSSL v0_9_??
 +make man-makefile-update && make man-update
 +cd ../libssl
 +make man-makefile-update && make man-update
 +cd ../../usr.bin/openssl
 +make man-makefile-update && make man-update
 +cd ../..
 +cvs add lib/libcrypto/man/*.3 lib/libssl/man/*.3 usr.bin/openssl/man/*.1
 +cd ../crypto/openssl-0.9
 +xargs rm -rf < README.DELETED
Simple merge
  #include <openssl/engine.h>
  #include <openssl/evp.h>
  #include <openssl/bn.h>
+ #include <openssl/dsa.h>
+ #include <openssl/rsa.h>
+ #include <openssl/dh.h>
+ #include <openssl/err.h>
  
  #if (defined(__unix__) || defined(unix)) && !defined(USG) && \
-       (defined(OpenBSD) || defined(__FreeBSD_version) || defined(__DragonFly__))
 -      (defined(OpenBSD) || defined(__FreeBSD__))
++      (defined(OpenBSD) || defined(__FreeBSD__) || defined(__DragonFly__))
  #include <sys/param.h>
 -# if (OpenBSD >= 200112) || ((__FreeBSD_version >= 470101 && __FreeBSD_version < 500000) || __FreeBSD_version >= 500041)
 +# if (OpenBSD >= 200112) || ((__FreeBSD_version >= 470101 && __FreeBSD_version < 500000) || __FreeBSD_version >= 500041) || (__DragonFly_version >= 200500)
  #  define HAVE_CRYPTODEV
  # endif
  # if (OpenBSD >= 200110)
Simple merge
index 02a01a9,0000000..0523409
mode 100644,000000..100644
--- /dev/null
@@@ -1,152 -1,0 +1,152 @@@
- OSSLVERSION=  0.9.8l
 +# $FreeBSD: src/secure/lib/libcrypto/Makefile.inc,v 1.7.2.11 2003/02/20 15:07:32 nectar Exp $
 +# $DragonFly: src/secure/lib/libcrypto/Makefile.inc,v 1.18 2008/09/27 21:04:45 pavalos Exp $
 +
++OSSLVERSION=  0.9.8m
 +LCRYPTO_SRC=  ${.CURDIR}/../../../crypto/openssl
 +LCRYPTO_DOC=  ${LCRYPTO_SRC}/doc
 +
 +CFLAGS+=      -DTERMIOS -DANSI_SOURCE
 +CFLAGS+=      -I${LCRYPTO_SRC} -I${LCRYPTO_SRC}/crypto \
 +              -I${LCRYPTO_SRC}/crypto/engine -I${.OBJDIR}
 +
 +CFLAGS+=      -DOPENSSL_NO_GMP
 +CFLAGS+=      -DOPENSSL_NO_CMS
 +CFLAGS+=      -DOPENSSL_NO_JPAKE
 +
 +.if !defined(WANT_IDEA)
 +CFLAGS+=      -DOPENSSL_NO_IDEA
 +.else
 +_idea_h=      idea/idea.h
 +.endif
 +
 +.if ${MACHINE_ARCH} == "i386"
 +CFLAGS+= -DL_ENDIAN
 +.endif
 +
 +CRYTPO_HDRS=  \
 +      ../e_os.h ../e_os2.h \
 +      crypto.h \
 +      ebcdic.h \
 +      fips_err.h \
 +      opensslv.h \
 +      ossl_typ.h \
 +      symhacks.h \
 +      tmdiff.h \
 +      aes/aes.h aes/aes_locl.h \
 +      asn1/asn1.h asn1/asn1_mac.h asn1/asn1t.h \
 +      bio/bio.h \
 +      bf/blowfish.h \
 +      bn/bn.h \
 +      buffer/buffer.h \
 +      camellia/camellia.h \
 +      cast/cast.h \
 +      comp/comp.h \
 +      conf/conf.h conf/conf_api.h \
 +      des/des.h des/des_old.h \
 +      dh/dh.h \
 +      dsa/dsa.h \
 +      dso/dso.h \
 +      ec/ec.h \
 +      ecdh/ecdh.h \
 +      ecdsa/ecdsa.h \
 +      engine/eng_int.h engine/engine.h \
 +      err/err.h \
 +      hmac/hmac.h \
 +      ${_idea_h} \
 +      krb5/krb5_asn.h \
 +      lhash/lhash.h \
 +      md2/md2.h \
 +      md4/md4.h \
 +      md5/md5.h \
 +      mdc2/mdc2.h \
 +      ocsp/ocsp.h \
 +      objects/objects.h objects/obj_mac.h \
 +      pem/pem.h pem/pem2.h \
 +      pkcs12/pkcs12.h pkcs7/pkcs7.h \
 +      pqueue/pqueue.h pqueue/pq_compat.h \
 +      rand/rand.h \
 +      rc2/rc2.h rc4/rc4.h rc5/rc5.h \
 +      ripemd/ripemd.h \
 +      rsa/rsa.h \
 +      stack/stack.h stack/safestack.h \
 +      store/store.h \
 +      sha/sha.h \
 +      txt_db/txt_db.h \
 +      ui/ui.h ui/ui_compat.h ui/ui_locl.h \
 +      x509/x509.h x509/x509_vfy.h x509v3/x509v3.h
 +
 +SSL_HDRS=     \
 +      dtls1.h kssl.h ssl.h ssl2.h ssl23.h ssl3.h tls1.h
 +
 +HDRS+=        ${CRYTPO_HDRS:S,^,crypto/,} \
 +      ${SSL_HDRS:S,^,ssl/,}
 +
 +SRCS+=                buildinf.h openssl/opensslconf.h openssl/evp.h
 +CLEANFILES+=  buildinf.h openssl/opensslconf.h openssl/evp.h
 +CLEANDIRS+=   openssl
 +
 +buildinf.h:
 +      ( echo "#ifndef MK1MF_BUILD"; \
 +      echo "  /* auto-generated by crypto/Makefile.ssl for crypto/cversion.c */"; \
 +      echo "  #define CFLAGS \"$(CC)\""; \
 +      echo "  #define PLATFORM \"`uname -s`-`uname -m`\""; \
 +      echo "  #define DATE \"`LC_ALL=C date`\""; \
 +      echo "#endif" ) > ${.TARGET}
 +
 +openssl/opensslconf.h: openssl/.dummy ../../lib/libcrypto/opensslconf-${MACHINE_ARCH}.h
 +.if defined(WANT_IDEA)
 +      sed '/^#ifndef OPENSSL_NO_IDEA$$/,/^#endif$$/d' ${.ALLSRC:Nopenssl/.dummy} > ${.TARGET}
 +.else
 +      cp ${.ALLSRC:Nopenssl/.dummy} ${.TARGET}
 +.endif
 +
 +openssl/evp.h: openssl/.dummy ${LCRYPTO_SRC}/crypto/evp/evp.h
 +      cp ${.ALLSRC:Nopenssl/.dummy} ${.TARGET}
 +
 +SRCS+=        ${HDRS:T:S;^;openssl/;}
 +.for h in ${HDRS:S,^,${LCRYPTO_SRC}/,}
 +openssl/${h:T}: openssl/.dummy ${h}
 +      cp ${h} openssl
 +.endfor
 +
 +# mkdir the required directory as its own target, so multiple
 +# mkdir commands do not race against each other.
 +#
 +openssl/.dummy:
 +      mkdir -p openssl
 +      if [ ! -f ${.TARGET} ]; then touch ${.TARGET}; fi
 +
 +MANDIR=       ${SHAREDIR}/openssl/man/man
 +
 +.if defined(LIB)
 +_docs=        ${LIB}
 +_sec= 3
 +.else
 +_docs=        apps
 +_sec= 1
 +.endif
 +
 +man-update:
 +.for manpage in ${MAN}
 +      @(sec=${manpage:E}; \
 +      pod=${manpage:R}.pod; \
 +      cp ${LCRYPTO_DOC}/${_docs}/$$pod .; \
 +      pod2man --section=$$sec --release="${OSSLVERSION}" --center="OpenSSL" \
 +        $$pod > ${.CURDIR}/man/${manpage}; \
 +      rm $$pod; \
 +      ${ECHO} ${manpage})
 +.endfor
 +
 +man-makefile-update:
 +      rm -f ${.CURDIR}/Makefile.man
 +      echo '# DO NOT EDIT: generated from man-makefile-update target' >> \
 +          ${.CURDIR}/Makefile.man
 +      for i in ${LCRYPTO_DOC}/${_docs}/*.pod; do \
 +              fn=`basename $$i .pod`; \
 +              sec=`perl ${LCRYPTO_SRC}/util/extract-section.pl < $$i`; \
 +              sec=$${sec:-${_sec}}; \
 +              ${ECHO} "MAN+= $$fn.$$sec" >> ${.CURDIR}/Makefile.man; \
 +              perl ${LCRYPTO_SRC}/util/extract-names.pl < $$i | \
 +                sed -Ee "/^$$fn\$$/d;s/^(.*)/MLINKS+= $$fn.$$sec \1.$$sec/" >> \
 +                  ${.CURDIR}/Makefile.man; \
 +      done
index 7c22e23,0000000..ec52cd1
mode 100644,000000..100644
--- /dev/null
@@@ -1,173 -1,0 +1,173 @@@
- .TH ASN1_OBJECT_new 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "ASN1_OBJECT_new 3"
++.TH ASN1_OBJECT_new 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +ASN1_OBJECT_new, ASN1_OBJECT_free, \- object allocation functions
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 2
 +\& ASN1_OBJECT *ASN1_OBJECT_new(void);
 +\& void ASN1_OBJECT_free(ASN1_OBJECT *a);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +The \s-1ASN1_OBJECT\s0 allocation routines, allocate and free an
 +\&\s-1ASN1_OBJECT\s0 structure, which represents an \s-1ASN1\s0 \s-1OBJECT\s0 \s-1IDENTIFIER\s0.
 +.PP
 +\&\fIASN1_OBJECT_new()\fR allocates and initializes a \s-1ASN1_OBJECT\s0 structure.
 +.PP
 +\&\fIASN1_OBJECT_free()\fR frees up the \fB\s-1ASN1_OBJECT\s0\fR structure \fBa\fR.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +Although \fIASN1_OBJECT_new()\fR allocates a new \s-1ASN1_OBJECT\s0 structure it
 +is almost never used in applications. The \s-1ASN1\s0 object utility functions
 +such as \fIOBJ_nid2obj()\fR are used instead.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +If the allocation fails, \fIASN1_OBJECT_new()\fR returns \fB\s-1NULL\s0\fR and sets an error
 +code that can be obtained by \fIERR_get_error\fR\|(3).
 +Otherwise it returns a pointer to the newly allocated structure.
 +.PP
 +\&\fIASN1_OBJECT_free()\fR returns no value.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIERR_get_error\fR\|(3), \fId2i_ASN1_OBJECT\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +\&\fIASN1_OBJECT_new()\fR and \fIASN1_OBJECT_free()\fR are available in all versions of SSLeay and OpenSSL.
index 944db16,0000000..246358a
mode 100644,000000..100644
--- /dev/null
@@@ -1,213 -1,0 +1,213 @@@
- .TH ASN1_STRING_length 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "ASN1_STRING_length 3"
++.TH ASN1_STRING_length 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +ASN1_STRING_dup, ASN1_STRING_cmp, ASN1_STRING_set, ASN1_STRING_length,
 +ASN1_STRING_length_set, ASN1_STRING_type, ASN1_STRING_data \-
 +ASN1_STRING utility functions
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 2
 +\& int ASN1_STRING_length(ASN1_STRING *x);
 +\& unsigned char * ASN1_STRING_data(ASN1_STRING *x);
 +\&
 +\& ASN1_STRING * ASN1_STRING_dup(ASN1_STRING *a);
 +\&
 +\& int ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b);
 +\&
 +\& int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
 +\&
 +\& int ASN1_STRING_type(ASN1_STRING *x);
 +\&
 +\& int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +These functions allow an \fB\s-1ASN1_STRING\s0\fR structure to be manipulated.
 +.PP
 +\&\fIASN1_STRING_length()\fR returns the length of the content of \fBx\fR.
 +.PP
 +\&\fIASN1_STRING_data()\fR returns an internal pointer to the data of \fBx\fR.
 +Since this is an internal pointer it should \fBnot\fR be freed or
 +modified in any way.
 +.PP
 +\&\fIASN1_STRING_dup()\fR returns a copy of the structure \fBa\fR.
 +.PP
 +\&\fIASN1_STRING_cmp()\fR compares \fBa\fR and \fBb\fR returning 0 if the two
 +are identical. The string types and content are compared.
 +.PP
 +\&\fIASN1_STRING_set()\fR sets the data of string \fBstr\fR to the buffer
 +\&\fBdata\fR or length \fBlen\fR. The supplied data is copied. If \fBlen\fR
 +is \-1 then the length is determined by strlen(data).
 +.PP
 +\&\fIASN1_STRING_type()\fR returns the type of \fBx\fR, using standard constants
 +such as \fBV_ASN1_OCTET_STRING\fR.
 +.PP
 +\&\fIASN1_STRING_to_UTF8()\fR converts the string \fBin\fR to \s-1UTF8\s0 format, the
 +converted data is allocated in a buffer in \fB*out\fR. The length of
 +\&\fBout\fR is returned or a negative error code. The buffer \fB*out\fR
 +should be free using \fIOPENSSL_free()\fR.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +Almost all \s-1ASN1\s0 types in OpenSSL are represented as an \fB\s-1ASN1_STRING\s0\fR
 +structure. Other types such as \fB\s-1ASN1_OCTET_STRING\s0\fR are simply typedefed
 +to \fB\s-1ASN1_STRING\s0\fR and the functions call the \fB\s-1ASN1_STRING\s0\fR equivalents.
 +\&\fB\s-1ASN1_STRING\s0\fR is also used for some \fB\s-1CHOICE\s0\fR types which consist
 +entirely of primitive string types such as \fBDirectoryString\fR and
 +\&\fBTime\fR.
 +.PP
 +These functions should \fBnot\fR be used to examine or modify \fB\s-1ASN1_INTEGER\s0\fR
 +or \fB\s-1ASN1_ENUMERATED\s0\fR types: the relevant \fB\s-1INTEGER\s0\fR or \fB\s-1ENUMERATED\s0\fR
 +utility functions should be used instead.
 +.PP
 +In general it cannot be assumed that the data returned by \fIASN1_STRING_data()\fR
 +is null terminated or does not contain embedded nulls. The actual format
 +of the data will depend on the actual string type itself: for example
 +for and IA5String the data will be \s-1ASCII\s0, for a BMPString two bytes per
 +character in big endian format, UTF8String will be in \s-1UTF8\s0 format.
 +.PP
 +Similar care should be take to ensure the data is in the correct format
 +when calling \fIASN1_STRING_set()\fR.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIERR_get_error\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
index a9ca86f,0000000..0b9eec5
mode 100644,000000..100644
--- /dev/null
@@@ -1,174 -1,0 +1,174 @@@
- .TH ASN1_STRING_new 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "ASN1_STRING_new 3"
++.TH ASN1_STRING_new 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +ASN1_STRING_new, ASN1_STRING_type_new, ASN1_STRING_free \-
 +ASN1_STRING allocation functions
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 3
 +\& ASN1_STRING * ASN1_STRING_new(void);
 +\& ASN1_STRING * ASN1_STRING_type_new(int type);
 +\& void ASN1_STRING_free(ASN1_STRING *a);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIASN1_STRING_new()\fR returns an allocated \fB\s-1ASN1_STRING\s0\fR structure. Its type
 +is undefined.
 +.PP
 +\&\fIASN1_STRING_type_new()\fR returns an allocated \fB\s-1ASN1_STRING\s0\fR structure of
 +type \fBtype\fR.
 +.PP
 +\&\fIASN1_STRING_free()\fR frees up \fBa\fR.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +Other string types call the \fB\s-1ASN1_STRING\s0\fR functions. For example
 +\&\fIASN1_OCTET_STRING_new()\fR calls ASN1_STRING_type(V_ASN1_OCTET_STRING).
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIASN1_STRING_new()\fR and \fIASN1_STRING_type_new()\fR return a valid
 +\&\s-1ASN1_STRING\s0 structure or \fB\s-1NULL\s0\fR if an error occurred.
 +.PP
 +\&\fIASN1_STRING_free()\fR does not return a value.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIERR_get_error\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +\&\s-1TBA\s0
index 1ffc212,0000000..e16213c
mode 100644,000000..100644
--- /dev/null
@@@ -1,226 -1,0 +1,226 @@@
- .TH ASN1_STRING_print_ex 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "ASN1_STRING_print_ex 3"
++.TH ASN1_STRING_print_ex 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp \- ASN1_STRING output routines.
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/asn1.h>
 +\&
 +\& int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags);
 +\& int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags);
 +\& int ASN1_STRING_print(BIO *out, ASN1_STRING *str);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +These functions output an \fB\s-1ASN1_STRING\s0\fR structure. \fB\s-1ASN1_STRING\s0\fR is used to
 +represent all the \s-1ASN1\s0 string types.
 +.PP
 +\&\fIASN1_STRING_print_ex()\fR outputs \fBstr\fR to \fBout\fR, the format is determined by
 +the options \fBflags\fR. \fIASN1_STRING_print_ex_fp()\fR is identical except it outputs
 +to \fBfp\fR instead.
 +.PP
 +\&\fIASN1_STRING_print()\fR prints \fBstr\fR to \fBout\fR but using a different format to
 +\&\fIASN1_STRING_print_ex()\fR. It replaces unprintable characters (other than \s-1CR\s0, \s-1LF\s0)
 +with '.'.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +\&\fIASN1_STRING_print()\fR is a legacy function which should be avoided in new applications.
 +.PP
 +Although there are a large number of options frequently \fB\s-1ASN1_STRFLGS_RFC2253\s0\fR is 
 +suitable, or on \s-1UTF8\s0 terminals \fB\s-1ASN1_STRFLGS_RFC2253\s0 & ~ASN1_STRFLGS_ESC_MSB\fR.
 +.PP
 +The complete set of supported options for \fBflags\fR is listed below.
 +.PP
 +Various characters can be escaped. If \fB\s-1ASN1_STRFLGS_ESC_2253\s0\fR is set the characters
 +determined by \s-1RFC2253\s0 are escaped. If \fB\s-1ASN1_STRFLGS_ESC_CTRL\s0\fR is set control
 +characters are escaped. If \fB\s-1ASN1_STRFLGS_ESC_MSB\s0\fR is set characters with the
 +\&\s-1MSB\s0 set are escaped: this option should \fBnot\fR be used if the terminal correctly
 +interprets \s-1UTF8\s0 sequences.
 +.PP
 +Escaping takes several forms.
 +.PP
 +If the character being escaped is a 16 bit character then the form \*(L"\eUXXXX\*(R" is used
 +using exactly four characters for the hex representation. If it is 32 bits then
 +\&\*(L"\eWXXXXXXXX\*(R" is used using eight characters of its hex representation. These forms
 +will only be used if \s-1UTF8\s0 conversion is not set (see below).
 +.PP
 +Printable characters are normally escaped using the backslash '\e' character. If
 +\&\fB\s-1ASN1_STRFLGS_ESC_QUOTE\s0\fR is set then the whole string is instead surrounded by
 +double quote characters: this is arguably more readable than the backslash
 +notation. Other characters use the \*(L"\eXX\*(R" using exactly two characters of the hex
 +representation.
 +.PP
 +If \fB\s-1ASN1_STRFLGS_UTF8_CONVERT\s0\fR is set then characters are converted to \s-1UTF8\s0
 +format first. If the terminal supports the display of \s-1UTF8\s0 sequences then this
 +option will correctly display multi byte characters.
 +.PP
 +If \fB\s-1ASN1_STRFLGS_IGNORE_TYPE\s0\fR is set then the string type is not interpreted at
 +all: everything is assumed to be one byte per character. This is primarily for
 +debugging purposes and can result in confusing output in multi character strings.
 +.PP
 +If \fB\s-1ASN1_STRFLGS_SHOW_TYPE\s0\fR is set then the string type itself is printed out
 +before its value (for example \*(L"\s-1BMPSTRING\s0\*(R"), this actually uses \fIASN1_tag2str()\fR.
 +.PP
 +The content of a string instead of being interpreted can be \*(L"dumped\*(R": this just
 +outputs the value of the string using the form #XXXX using hex format for each
 +octet.
 +.PP
 +If \fB\s-1ASN1_STRFLGS_DUMP_ALL\s0\fR is set then any type is dumped.
 +.PP
 +Normally non character string types (such as \s-1OCTET\s0 \s-1STRING\s0) are assumed to be
 +one byte per character, if \fB\s-1ASN1_STRFLGS_DUMP_UNKNOWN\s0\fR is set then they will
 +be dumped instead.
 +.PP
 +When a type is dumped normally just the content octets are printed, if 
 +\&\fB\s-1ASN1_STRFLGS_DUMP_DER\s0\fR is set then the complete encoding is dumped
 +instead (including tag and length octets).
 +.PP
 +\&\fB\s-1ASN1_STRFLGS_RFC2253\s0\fR includes all the flags required by \s-1RFC2253\s0. It is
 +equivalent to:
 + \s-1ASN1_STRFLGS_ESC_2253\s0 | \s-1ASN1_STRFLGS_ESC_CTRL\s0 | \s-1ASN1_STRFLGS_ESC_MSB\s0 |
 + \s-1ASN1_STRFLGS_UTF8_CONVERT\s0 | \s-1ASN1_STRFLGS_DUMP_UNKNOWN\s0 \s-1ASN1_STRFLGS_DUMP_DER\s0
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIX509_NAME_print_ex\fR\|(3),
 +\&\fIASN1_tag2str\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +\&\s-1TBA\s0
index eeac309,0000000..fff61f0
mode 100644,000000..100644
--- /dev/null
@@@ -1,373 -1,0 +1,373 @@@
- .TH ASN1_generate_nconf 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "ASN1_generate_nconf 3"
++.TH ASN1_generate_nconf 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +ASN1_generate_nconf, ASN1_generate_v3 \- ASN1 generation functions
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 2
 +\& ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
 +\& ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +These functions generate the \s-1ASN1\s0 encoding of a string
 +in an \fB\s-1ASN1_TYPE\s0\fR structure.
 +.PP
 +\&\fBstr\fR contains the string to encode \fBnconf\fR or \fBcnf\fR contains
 +the optional configuration information where additional strings
 +will be read from. \fBnconf\fR will typically come from a config
 +file wherease \fBcnf\fR is obtained from an \fBX509V3_CTX\fR structure
 +which will typically be used by X509 v3 certificate extension
 +functions. \fBcnf\fR or \fBnconf\fR can be set to \fB\s-1NULL\s0\fR if no additional
 +configuration will be used.
 +.SH "GENERATION STRING FORMAT"
 +.IX Header "GENERATION STRING FORMAT"
 +The actual data encoded is determined by the string \fBstr\fR and
 +the configuration information. The general format of the string
 +is:
 +.IP "\fB[modifier,]type[:value]\fR" 2
 +.IX Item "[modifier,]type[:value]"
 +.PP
 +That is zero or more comma separated modifiers followed by a type
 +followed by an optional colon and a value. The formats of \fBtype\fR,
 +\&\fBvalue\fR and \fBmodifier\fR are explained below.
 +.Sh "\s-1SUPPORTED\s0 \s-1TYPES\s0"
 +.IX Subsection "SUPPORTED TYPES"
 +The supported types are listed below. Unless otherwise specified
 +only the \fB\s-1ASCII\s0\fR format is permissible.
 +.IP "\fB\s-1BOOLEAN\s0\fR, \fB\s-1BOOL\s0\fR" 2
 +.IX Item "BOOLEAN, BOOL"
 +This encodes a boolean type. The \fBvalue\fR string is mandatory and
 +should be \fB\s-1TRUE\s0\fR or \fB\s-1FALSE\s0\fR. Additionally \fB\s-1TRUE\s0\fR, \fBtrue\fR, \fBY\fR,
 +\&\fBy\fR, \fB\s-1YES\s0\fR, \fByes\fR, \fB\s-1FALSE\s0\fR, \fBfalse\fR, \fBN\fR, \fBn\fR, \fB\s-1NO\s0\fR and \fBno\fR
 +are acceptable.
 +.IP "\fB\s-1NULL\s0\fR" 2
 +.IX Item "NULL"
 +Encode the \fB\s-1NULL\s0\fR type, the \fBvalue\fR string must not be present.
 +.IP "\fB\s-1INTEGER\s0\fR, \fB\s-1INT\s0\fR" 2
 +.IX Item "INTEGER, INT"
 +Encodes an \s-1ASN1\s0 \fB\s-1INTEGER\s0\fR type. The \fBvalue\fR string represents
 +the value of the integer, it can be preceeded by a minus sign and
 +is normally interpreted as a decimal value unless the prefix \fB0x\fR
 +is included.
 +.IP "\fB\s-1ENUMERATED\s0\fR, \fB\s-1ENUM\s0\fR" 2
 +.IX Item "ENUMERATED, ENUM"
 +Encodes the \s-1ASN1\s0 \fB\s-1ENUMERATED\s0\fR type, it is otherwise identical to
 +\&\fB\s-1INTEGER\s0\fR.
 +.IP "\fB\s-1OBJECT\s0\fR, \fB\s-1OID\s0\fR" 2
 +.IX Item "OBJECT, OID"
 +Encodes an \s-1ASN1\s0 \fB\s-1OBJECT\s0 \s-1IDENTIFIER\s0\fR, the \fBvalue\fR string can be
 +a short name, a long name or numerical format.
 +.IP "\fB\s-1UTCTIME\s0\fR, \fB\s-1UTC\s0\fR" 2
 +.IX Item "UTCTIME, UTC"
 +Encodes an \s-1ASN1\s0 \fBUTCTime\fR structure, the value should be in
 +the format \fB\s-1YYMMDDHHMMSSZ\s0\fR.
 +.IP "\fB\s-1GENERALIZEDTIME\s0\fR, \fB\s-1GENTIME\s0\fR" 2
 +.IX Item "GENERALIZEDTIME, GENTIME"
 +Encodes an \s-1ASN1\s0 \fBGeneralizedTime\fR structure, the value should be in
 +the format \fB\s-1YYYYMMDDHHMMSSZ\s0\fR.
 +.IP "\fB\s-1OCTETSTRING\s0\fR, \fB\s-1OCT\s0\fR" 2
 +.IX Item "OCTETSTRING, OCT"
 +Encodes an \s-1ASN1\s0 \fB\s-1OCTET\s0 \s-1STRING\s0\fR. \fBvalue\fR represents the contents
 +of this structure, the format strings \fB\s-1ASCII\s0\fR and \fB\s-1HEX\s0\fR can be
 +used to specify the format of \fBvalue\fR.
 +.IP "\fB\s-1BITSTRING\s0\fR, \fB\s-1BITSTR\s0\fR" 2
 +.IX Item "BITSTRING, BITSTR"
 +Encodes an \s-1ASN1\s0 \fB\s-1BIT\s0 \s-1STRING\s0\fR. \fBvalue\fR represents the contents
 +of this structure, the format strings \fB\s-1ASCII\s0\fR, \fB\s-1HEX\s0\fR and \fB\s-1BITLIST\s0\fR
 +can be used to specify the format of \fBvalue\fR.
 +.Sp
 +If the format is anything other than \fB\s-1BITLIST\s0\fR the number of unused
 +bits is set to zero.
 +.IP "\fB\s-1UNIVERSALSTRING\s0\fR, \fB\s-1UNIV\s0\fR, \fB\s-1IA5\s0\fR, \fB\s-1IA5STRING\s0\fR, \fB\s-1UTF8\s0\fR, \fBUTF8String\fR, \fB\s-1BMP\s0\fR, \fB\s-1BMPSTRING\s0\fR, \fB\s-1VISIBLESTRING\s0\fR, \fB\s-1VISIBLE\s0\fR, \fB\s-1PRINTABLESTRING\s0\fR, \fB\s-1PRINTABLE\s0\fR, \fBT61\fR, \fBT61STRING\fR, \fB\s-1TELETEXSTRING\s0\fR, \fBGeneralString\fR" 2
 +.IX Item "UNIVERSALSTRING, UNIV, IA5, IA5STRING, UTF8, UTF8String, BMP, BMPSTRING, VISIBLESTRING, VISIBLE, PRINTABLESTRING, PRINTABLE, T61, T61STRING, TELETEXSTRING, GeneralString"
 +These encode the corresponding string types. \fBvalue\fR represents the
 +contents of this structure. The format can be \fB\s-1ASCII\s0\fR or \fB\s-1UTF8\s0\fR.
 +.IP "\fB\s-1SEQUENCE\s0\fR, \fB\s-1SEQ\s0\fR, \fB\s-1SET\s0\fR" 2
 +.IX Item "SEQUENCE, SEQ, SET"
 +Formats the result as an \s-1ASN1\s0 \fB\s-1SEQUENCE\s0\fR or \fB\s-1SET\s0\fR type. \fBvalue\fR
 +should be a section name which will contain the contents. The
 +field names in the section are ignored and the values are in the
 +generated string format. If \fBvalue\fR is absent then an empty \s-1SEQUENCE\s0
 +will be encoded.
 +.Sh "\s-1MODIFIERS\s0"
 +.IX Subsection "MODIFIERS"
 +Modifiers affect the following structure, they can be used to
 +add \s-1EXPLICIT\s0 or \s-1IMPLICIT\s0 tagging, add wrappers or to change
 +the string format of the final type and value. The supported
 +formats are documented below.
 +.IP "\fB\s-1EXPLICIT\s0\fR, \fB\s-1EXP\s0\fR" 2
 +.IX Item "EXPLICIT, EXP"
 +Add an explicit tag to the following structure. This string
 +should be followed by a colon and the tag value to use as a
 +decimal value.
 +.Sp
 +By following the number with \fBU\fR, \fBA\fR, \fBP\fR or \fBC\fR \s-1UNIVERSAL\s0,
 +\&\s-1APPLICATION\s0, \s-1PRIVATE\s0 or \s-1CONTEXT\s0 \s-1SPECIFIC\s0 tagging can be used,
 +the default is \s-1CONTEXT\s0 \s-1SPECIFIC\s0.
 +.IP "\fB\s-1IMPLICIT\s0\fR, \fB\s-1IMP\s0\fR" 2
 +.IX Item "IMPLICIT, IMP"
 +This is the same as \fB\s-1EXPLICIT\s0\fR except \s-1IMPLICIT\s0 tagging is used
 +instead.
 +.IP "\fB\s-1OCTWRAP\s0\fR, \fB\s-1SEQWRAP\s0\fR, \fB\s-1SETWRAP\s0\fR, \fB\s-1BITWRAP\s0\fR" 2
 +.IX Item "OCTWRAP, SEQWRAP, SETWRAP, BITWRAP"
 +The following structure is surrounded by an \s-1OCTET\s0 \s-1STRING\s0, a \s-1SEQUENCE\s0,
 +a \s-1SET\s0 or a \s-1BIT\s0 \s-1STRING\s0 respectively. For a \s-1BIT\s0 \s-1STRING\s0 the number of unused
 +bits is set to zero.
 +.IP "\fB\s-1FORMAT\s0\fR" 2
 +.IX Item "FORMAT"
 +This specifies the format of the ultimate value. It should be followed
 +by a colon and one of the strings \fB\s-1ASCII\s0\fR, \fB\s-1UTF8\s0\fR, \fB\s-1HEX\s0\fR or \fB\s-1BITLIST\s0\fR.
 +.Sp
 +If no format specifier is included then \fB\s-1ASCII\s0\fR is used. If \fB\s-1UTF8\s0\fR is
 +specified then the value string must be a valid \fB\s-1UTF8\s0\fR string. For \fB\s-1HEX\s0\fR the
 +output must be a set of hex digits. \fB\s-1BITLIST\s0\fR (which is only valid for a \s-1BIT\s0
 +\&\s-1STRING\s0) is a comma separated list of the indices of the set bits, all other
 +bits are zero.
 +.SH "EXAMPLES"
 +.IX Header "EXAMPLES"
 +A simple IA5String:
 +.PP
 +.Vb 1
 +\& IA5STRING:Hello World
 +.Ve
 +.PP
 +An IA5String explicitly tagged:
 +.PP
 +.Vb 1
 +\& EXPLICIT:0,IA5STRING:Hello World
 +.Ve
 +.PP
 +An IA5String explicitly tagged using \s-1APPLICATION\s0 tagging:
 +.PP
 +.Vb 1
 +\& EXPLICIT:0A,IA5STRING:Hello World
 +.Ve
 +.PP
 +A \s-1BITSTRING\s0 with bits 1 and 5 set and all others zero:
 +.PP
 +.Vb 1
 +\& FORMAT=BITLIST,BITSTRING:1,5
 +.Ve
 +.PP
 +A more complex example using a config file to produce a
 +\&\s-1SEQUENCE\s0 consiting of a \s-1BOOL\s0 an \s-1OID\s0 and a UTF8String:
 +.PP
 +.Vb 1
 +\& asn1 = SEQUENCE:seq_section
 +\&
 +\& [seq_section]
 +\&
 +\& field1 = BOOLEAN:TRUE
 +\& field2 = OID:commonName
 +\& field3 = UTF8:Third field
 +.Ve
 +.PP
 +This example produces an RSAPrivateKey structure, this is the
 +key contained in the file client.pem in all OpenSSL distributions
 +(note: the field names such as 'coeff' are ignored and are present just
 +for clarity):
 +.PP
 +.Vb 3
 +\& asn1=SEQUENCE:private_key
 +\& [private_key]
 +\& version=INTEGER:0
 +\&
 +\& n=INTEGER:0xBB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644\e
 +\& D4D2C6D000430DEC66ABF47829E74B8C5108623A1C0EE8BE217B3AD8D36D5EB4FCA1D9
 +\&
 +\& e=INTEGER:0x010001
 +\&
 +\& d=INTEGER:0x6F05EAD2F27FFAEC84BEC360C4B928FD5F3A9865D0FCAAD291E2A52F4A\e
 +\& F810DC6373278C006A0ABBA27DC8C63BF97F7E666E27C5284D7D3B1FFFE16B7A87B51D
 +\&
 +\& p=INTEGER:0xF3929B9435608F8A22C208D86795271D54EBDFB09DDEF539AB083DA912\e
 +\& D4BD57
 +\&
 +\& q=INTEGER:0xC50016F89DFF2561347ED1186A46E150E28BF2D0F539A1594BBD7FE467\e
 +\& 46EC4F
 +\&
 +\& exp1=INTEGER:0x9E7D4326C924AFC1DEA40B45650134966D6F9DFA3A7F9D698CD4ABEA\e
 +\& 9C0A39B9
 +\&
 +\& exp2=INTEGER:0xBA84003BB95355AFB7C50DF140C60513D0BA51D637272E355E397779\e
 +\& E7B2458F
 +\&
 +\& coeff=INTEGER:0x30B9E4F2AFA5AC679F920FC83F1F2DF1BAF1779CF989447FABC2F5\e
 +\& 628657053A
 +.Ve
 +.PP
 +This example is the corresponding public key in a SubjectPublicKeyInfo
 +structure:
 +.PP
 +.Vb 2
 +\& # Start with a SEQUENCE
 +\& asn1=SEQUENCE:pubkeyinfo
 +\&
 +\& # pubkeyinfo contains an algorithm identifier and the public key wrapped
 +\& # in a BIT STRING
 +\& [pubkeyinfo]
 +\& algorithm=SEQUENCE:rsa_alg
 +\& pubkey=BITWRAP,SEQUENCE:rsapubkey
 +\&
 +\& # algorithm ID for RSA is just an OID and a NULL
 +\& [rsa_alg]
 +\& algorithm=OID:rsaEncryption
 +\& parameter=NULL
 +\&
 +\& # Actual public key: modulus and exponent
 +\& [rsapubkey]
 +\& n=INTEGER:0xBB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644\e
 +\& D4D2C6D000430DEC66ABF47829E74B8C5108623A1C0EE8BE217B3AD8D36D5EB4FCA1D9
 +\&
 +\& e=INTEGER:0x010001
 +.Ve
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIASN1_generate_nconf()\fR and \fIASN1_generate_v3()\fR return the encoded
 +data as an \fB\s-1ASN1_TYPE\s0\fR structure or \fB\s-1NULL\s0\fR if an error occurred.
 +.PP
 +The error codes that can be obtained by \fIERR_get_error\fR\|(3).
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIERR_get_error\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +\&\fIASN1_generate_nconf()\fR and \fIASN1_generate_v3()\fR were added to OpenSSL 0.9.8
index 0170572,0000000..7c191ef
mode 100644,000000..100644
--- /dev/null
@@@ -1,260 -1,0 +1,260 @@@
- .TH BIO_ctrl 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_ctrl 3"
++.TH BIO_ctrl 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_ctrl, BIO_callback_ctrl, BIO_ptr_ctrl, BIO_int_ctrl, BIO_reset,
 +BIO_seek, BIO_tell, BIO_flush, BIO_eof, BIO_set_close, BIO_get_close,
 +BIO_pending, BIO_wpending, BIO_ctrl_pending, BIO_ctrl_wpending,
 +BIO_get_info_callback, BIO_set_info_callback \- BIO control operations
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& long BIO_ctrl(BIO *bp,int cmd,long larg,void *parg);
 +\& long BIO_callback_ctrl(BIO *b, int cmd, void (*fp)(struct bio_st *, int, const char *, int, long, long));
 +\& char * BIO_ptr_ctrl(BIO *bp,int cmd,long larg);
 +\& long BIO_int_ctrl(BIO *bp,int cmd,long larg,int iarg);
 +\&
 +\& int BIO_reset(BIO *b);
 +\& int BIO_seek(BIO *b, int ofs);
 +\& int BIO_tell(BIO *b);
 +\& int BIO_flush(BIO *b);
 +\& int BIO_eof(BIO *b);
 +\& int BIO_set_close(BIO *b,long flag);
 +\& int BIO_get_close(BIO *b);
 +\& int BIO_pending(BIO *b);
 +\& int BIO_wpending(BIO *b);
 +\& size_t BIO_ctrl_pending(BIO *b);
 +\& size_t BIO_ctrl_wpending(BIO *b);
 +\&
 +\& int BIO_get_info_callback(BIO *b,bio_info_cb **cbp);
 +\& int BIO_set_info_callback(BIO *b,bio_info_cb *cb);
 +\&
 +\& typedef void bio_info_cb(BIO *b, int oper, const char *ptr, int arg1, long arg2, long arg3);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_ctrl()\fR, \fIBIO_callback_ctrl()\fR, \fIBIO_ptr_ctrl()\fR and \fIBIO_int_ctrl()\fR
 +are \s-1BIO\s0 \*(L"control\*(R" operations taking arguments of various types.
 +These functions are not normally called directly, various macros
 +are used instead. The standard macros are described below, macros
 +specific to a particular type of \s-1BIO\s0 are described in the specific
 +BIOs manual page as well as any special features of the standard
 +calls.
 +.PP
 +\&\fIBIO_reset()\fR typically resets a \s-1BIO\s0 to some initial state, in the case
 +of file related BIOs for example it rewinds the file pointer to the
 +start of the file.
 +.PP
 +\&\fIBIO_seek()\fR resets a file related \s-1BIO\s0's (that is file descriptor and
 +\&\s-1FILE\s0 BIOs) file position pointer to \fBofs\fR bytes from start of file.
 +.PP
 +\&\fIBIO_tell()\fR returns the current file position of a file related \s-1BIO\s0.
 +.PP
 +\&\fIBIO_flush()\fR normally writes out any internally buffered data, in some
 +cases it is used to signal \s-1EOF\s0 and that no more data will be written.
 +.PP
 +\&\fIBIO_eof()\fR returns 1 if the \s-1BIO\s0 has read \s-1EOF\s0, the precise meaning of
 +\&\*(L"\s-1EOF\s0\*(R" varies according to the \s-1BIO\s0 type.
 +.PP
 +\&\fIBIO_set_close()\fR sets the \s-1BIO\s0 \fBb\fR close flag to \fBflag\fR. \fBflag\fR can
 +take the value \s-1BIO_CLOSE\s0 or \s-1BIO_NOCLOSE\s0. Typically \s-1BIO_CLOSE\s0 is used
 +in a source/sink \s-1BIO\s0 to indicate that the underlying I/O stream should
 +be closed when the \s-1BIO\s0 is freed.
 +.PP
 +\&\fIBIO_get_close()\fR returns the BIOs close flag.
 +.PP
 +\&\fIBIO_pending()\fR, \fIBIO_ctrl_pending()\fR, \fIBIO_wpending()\fR and \fIBIO_ctrl_wpending()\fR
 +return the number of pending characters in the BIOs read and write buffers.
 +Not all BIOs support these calls. \fIBIO_ctrl_pending()\fR and \fIBIO_ctrl_wpending()\fR
 +return a size_t type and are functions, \fIBIO_pending()\fR and \fIBIO_wpending()\fR are
 +macros which call \fIBIO_ctrl()\fR.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_reset()\fR normally returns 1 for success and 0 or \-1 for failure. File
 +BIOs are an exception, they return 0 for success and \-1 for failure.
 +.PP
 +\&\fIBIO_seek()\fR and \fIBIO_tell()\fR both return the current file position on success
 +and \-1 for failure, except file BIOs which for \fIBIO_seek()\fR always return 0
 +for success and \-1 for failure.
 +.PP
 +\&\fIBIO_flush()\fR returns 1 for success and 0 or \-1 for failure.
 +.PP
 +\&\fIBIO_eof()\fR returns 1 if \s-1EOF\s0 has been reached 0 otherwise.
 +.PP
 +\&\fIBIO_set_close()\fR always returns 1.
 +.PP
 +\&\fIBIO_get_close()\fR returns the close flag value: \s-1BIO_CLOSE\s0 or \s-1BIO_NOCLOSE\s0.
 +.PP
 +\&\fIBIO_pending()\fR, \fIBIO_ctrl_pending()\fR, \fIBIO_wpending()\fR and \fIBIO_ctrl_wpending()\fR
 +return the amount of pending data.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +\&\fIBIO_flush()\fR, because it can write data may return 0 or \-1 indicating
 +that the call should be retried later in a similar manner to \fIBIO_write()\fR. 
 +The \fIBIO_should_retry()\fR call should be used and appropriate action taken
 +is the call fails.
 +.PP
 +The return values of \fIBIO_pending()\fR and \fIBIO_wpending()\fR may not reliably
 +determine the amount of pending data in all cases. For example in the
 +case of a file \s-1BIO\s0 some data may be available in the \s-1FILE\s0 structures
 +internal buffers but it is not possible to determine this in a
 +portably way. For other types of \s-1BIO\s0 they may not be supported.
 +.PP
 +Filter BIOs if they do not internally handle a particular \fIBIO_ctrl()\fR
 +operation usually pass the operation to the next \s-1BIO\s0 in the chain.
 +This often means there is no need to locate the required \s-1BIO\s0 for
 +a particular operation, it can be called on a chain and it will
 +be automatically passed to the relevant \s-1BIO\s0. However this can cause
 +unexpected results: for example no current filter BIOs implement
 +\&\fIBIO_seek()\fR, but this may still succeed if the chain ends in a \s-1FILE\s0
 +or file descriptor \s-1BIO\s0.
 +.PP
 +Source/sink BIOs return an 0 if they do not recognize the \fIBIO_ctrl()\fR
 +operation.
 +.SH "BUGS"
 +.IX Header "BUGS"
 +Some of the return values are ambiguous and care should be taken. In
 +particular a return value of 0 can be returned if an operation is not
 +supported, if an error occurred, if \s-1EOF\s0 has not been reached and in
 +the case of \fIBIO_seek()\fR on a file \s-1BIO\s0 for a successful operation.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 455bd88,0000000..2088dd8
mode 100644,000000..100644
--- /dev/null
@@@ -1,216 -1,0 +1,216 @@@
- .TH BIO_f_base64 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_f_base64 3"
++.TH BIO_f_base64 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_f_base64 \- base64 BIO filter
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 2
 +\& #include <openssl/bio.h>
 +\& #include <openssl/evp.h>
 +\&
 +\& BIO_METHOD *   BIO_f_base64(void);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_f_base64()\fR returns the base64 \s-1BIO\s0 method. This is a filter
 +\&\s-1BIO\s0 that base64 encodes any data written through it and decodes
 +any data read through it.
 +.PP
 +Base64 BIOs do not support \fIBIO_gets()\fR or \fIBIO_puts()\fR.
 +.PP
 +\&\fIBIO_flush()\fR on a base64 \s-1BIO\s0 that is being written through is
 +used to signal that no more data is to be encoded: this is used
 +to flush the final block through the \s-1BIO\s0.
 +.PP
 +The flag \s-1BIO_FLAGS_BASE64_NO_NL\s0 can be set with \fIBIO_set_flags()\fR
 +to encode the data all on one line or expect the data to be all
 +on one line.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +Because of the format of base64 encoding the end of the encoded
 +block cannot always be reliably determined.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_f_base64()\fR returns the base64 \s-1BIO\s0 method.
 +.SH "EXAMPLES"
 +.IX Header "EXAMPLES"
 +Base64 encode the string \*(L"Hello World\en\*(R" and write the result
 +to standard output:
 +.PP
 +.Vb 2
 +\& BIO *bio, *b64;
 +\& char message[] = "Hello World \en";
 +\&
 +\& b64 = BIO_new(BIO_f_base64());
 +\& bio = BIO_new_fp(stdout, BIO_NOCLOSE);
 +\& bio = BIO_push(b64, bio);
 +\& BIO_write(bio, message, strlen(message));
 +\& BIO_flush(bio);
 +\&
 +\& BIO_free_all(bio);
 +.Ve
 +.PP
 +Read Base64 encoded data from standard input and write the decoded
 +data to standard output:
 +.PP
 +.Vb 3
 +\& BIO *bio, *b64, *bio_out;
 +\& char inbuf[512];
 +\& int inlen;
 +\&
 +\& b64 = BIO_new(BIO_f_base64());
 +\& bio = BIO_new_fp(stdin, BIO_NOCLOSE);
 +\& bio_out = BIO_new_fp(stdout, BIO_NOCLOSE);
 +\& bio = BIO_push(b64, bio);
 +\& while((inlen = BIO_read(bio, inbuf, 512)) > 0) 
 +\&        BIO_write(bio_out, inbuf, inlen);
 +\&
 +\& BIO_free_all(bio);
 +.Ve
 +.SH "BUGS"
 +.IX Header "BUGS"
 +The ambiguity of \s-1EOF\s0 in base64 encoded data can cause additional
 +data following the base64 encoded block to be misinterpreted.
 +.PP
 +There should be some way of specifying a test that the \s-1BIO\s0 can perform
 +to reliably determine \s-1EOF\s0 (for example a \s-1MIME\s0 boundary).
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 7f84463,0000000..6d6e725
mode 100644,000000..100644
--- /dev/null
@@@ -1,202 -1,0 +1,202 @@@
- .TH BIO_f_buffer 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_f_buffer 3"
++.TH BIO_f_buffer 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_f_buffer \- buffering BIO
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD * BIO_f_buffer(void);
 +\&
 +\& #define BIO_get_buffer_num_lines(b)    BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL)
 +\& #define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0)
 +\& #define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1)
 +\& #define BIO_set_buffer_size(b,size)    BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL)
 +\& #define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf)
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_f_buffer()\fR returns the buffering \s-1BIO\s0 method.
 +.PP
 +Data written to a buffering \s-1BIO\s0 is buffered and periodically written
 +to the next \s-1BIO\s0 in the chain. Data read from a buffering \s-1BIO\s0 comes from
 +an internal buffer which is filled from the next \s-1BIO\s0 in the chain.
 +Both \fIBIO_gets()\fR and \fIBIO_puts()\fR are supported.
 +.PP
 +Calling \fIBIO_reset()\fR on a buffering \s-1BIO\s0 clears any buffered data.
 +.PP
 +\&\fIBIO_get_buffer_num_lines()\fR returns the number of lines currently buffered.
 +.PP
 +\&\fIBIO_set_read_buffer_size()\fR, \fIBIO_set_write_buffer_size()\fR and \fIBIO_set_buffer_size()\fR
 +set the read, write or both read and write buffer sizes to \fBsize\fR. The initial
 +buffer size is \s-1DEFAULT_BUFFER_SIZE\s0, currently 1024. Any attempt to reduce the
 +buffer size below \s-1DEFAULT_BUFFER_SIZE\s0 is ignored. Any buffered data is cleared
 +when the buffer is resized.
 +.PP
 +\&\fIBIO_set_buffer_read_data()\fR clears the read buffer and fills it with \fBnum\fR
 +bytes of \fBbuf\fR. If \fBnum\fR is larger than the current buffer size the buffer
 +is expanded.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +Buffering BIOs implement \fIBIO_gets()\fR by using \fIBIO_read()\fR operations on the
 +next \s-1BIO\s0 in the chain. By prepending a buffering \s-1BIO\s0 to a chain it is therefore
 +possible to provide \fIBIO_gets()\fR functionality if the following BIOs do not
 +support it (for example \s-1SSL\s0 BIOs).
 +.PP
 +Data is only written to the next \s-1BIO\s0 in the chain when the write buffer fills
 +or when \fIBIO_flush()\fR is called. It is therefore important to call \fIBIO_flush()\fR
 +whenever any pending data should be written such as when removing a buffering
 +\&\s-1BIO\s0 using \fIBIO_pop()\fR. \fIBIO_flush()\fR may need to be retried if the ultimate
 +source/sink \s-1BIO\s0 is non blocking.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_f_buffer()\fR returns the buffering \s-1BIO\s0 method.
 +.PP
 +\&\fIBIO_get_buffer_num_lines()\fR returns the number of lines buffered (may be 0).
 +.PP
 +\&\fIBIO_set_read_buffer_size()\fR, \fIBIO_set_write_buffer_size()\fR and \fIBIO_set_buffer_size()\fR
 +return 1 if the buffer was successfully resized or 0 for failure.
 +.PP
 +\&\fIBIO_set_buffer_read_data()\fR returns 1 if the data was set correctly or 0 if
 +there was an error.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index af8f6e9,0000000..82a3db0
mode 100644,000000..100644
--- /dev/null
@@@ -1,208 -1,0 +1,208 @@@
- .TH BIO_f_cipher 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_f_cipher 3"
++.TH BIO_f_cipher 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_f_cipher, BIO_set_cipher, BIO_get_cipher_status, BIO_get_cipher_ctx \- cipher BIO filter
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 2
 +\& #include <openssl/bio.h>
 +\& #include <openssl/evp.h>
 +\&
 +\& BIO_METHOD *   BIO_f_cipher(void);
 +\& void BIO_set_cipher(BIO *b,const EVP_CIPHER *cipher,
 +\&                unsigned char *key, unsigned char *iv, int enc);
 +\& int BIO_get_cipher_status(BIO *b)
 +\& int BIO_get_cipher_ctx(BIO *b, EVP_CIPHER_CTX **pctx)
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_f_cipher()\fR returns the cipher \s-1BIO\s0 method. This is a filter
 +\&\s-1BIO\s0 that encrypts any data written through it, and decrypts any data
 +read from it. It is a \s-1BIO\s0 wrapper for the cipher routines
 +\&\fIEVP_CipherInit()\fR, \fIEVP_CipherUpdate()\fR and \fIEVP_CipherFinal()\fR.
 +.PP
 +Cipher BIOs do not support \fIBIO_gets()\fR or \fIBIO_puts()\fR.
 +.PP
 +\&\fIBIO_flush()\fR on an encryption \s-1BIO\s0 that is being written through is
 +used to signal that no more data is to be encrypted: this is used
 +to flush and possibly pad the final block through the \s-1BIO\s0.
 +.PP
 +\&\fIBIO_set_cipher()\fR sets the cipher of \s-1BIO\s0 \fBb\fR to \fBcipher\fR using key \fBkey\fR
 +and \s-1IV\s0 \fBiv\fR. \fBenc\fR should be set to 1 for encryption and zero for
 +decryption.
 +.PP
 +When reading from an encryption \s-1BIO\s0 the final block is automatically
 +decrypted and checked when \s-1EOF\s0 is detected. \fIBIO_get_cipher_status()\fR
 +is a \fIBIO_ctrl()\fR macro which can be called to determine whether the
 +decryption operation was successful.
 +.PP
 +\&\fIBIO_get_cipher_ctx()\fR is a \fIBIO_ctrl()\fR macro which retrieves the internal
 +\&\s-1BIO\s0 cipher context. The retrieved context can be used in conjunction
 +with the standard cipher routines to set it up. This is useful when
 +\&\fIBIO_set_cipher()\fR is not flexible enough for the applications needs.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +When encrypting \fIBIO_flush()\fR \fBmust\fR be called to flush the final block
 +through the \s-1BIO\s0. If it is not then the final block will fail a subsequent
 +decrypt.
 +.PP
 +When decrypting an error on the final block is signalled by a zero
 +return value from the read operation. A successful decrypt followed
 +by \s-1EOF\s0 will also return zero for the final read. \fIBIO_get_cipher_status()\fR
 +should be called to determine if the decrypt was successful.
 +.PP
 +As always, if \fIBIO_gets()\fR or \fIBIO_puts()\fR support is needed then it can
 +be achieved by preceding the cipher \s-1BIO\s0 with a buffering \s-1BIO\s0.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_f_cipher()\fR returns the cipher \s-1BIO\s0 method.
 +.PP
 +\&\fIBIO_set_cipher()\fR does not return a value.
 +.PP
 +\&\fIBIO_get_cipher_status()\fR returns 1 for a successful decrypt and 0
 +for failure.
 +.PP
 +\&\fIBIO_get_cipher_ctx()\fR currently always returns 1.
 +.SH "EXAMPLES"
 +.IX Header "EXAMPLES"
 +\&\s-1TBA\s0
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 17b5b5d,0000000..096ea24
mode 100644,000000..100644
--- /dev/null
@@@ -1,275 -1,0 +1,275 @@@
- .TH BIO_f_md 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_f_md 3"
++.TH BIO_f_md 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_f_md, BIO_set_md, BIO_get_md, BIO_get_md_ctx \- message digest BIO filter
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 2
 +\& #include <openssl/bio.h>
 +\& #include <openssl/evp.h>
 +\&
 +\& BIO_METHOD *   BIO_f_md(void);
 +\& int BIO_set_md(BIO *b,EVP_MD *md);
 +\& int BIO_get_md(BIO *b,EVP_MD **mdp);
 +\& int BIO_get_md_ctx(BIO *b,EVP_MD_CTX **mdcp);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_f_md()\fR returns the message digest \s-1BIO\s0 method. This is a filter
 +\&\s-1BIO\s0 that digests any data passed through it, it is a \s-1BIO\s0 wrapper
 +for the digest routines \fIEVP_DigestInit()\fR, \fIEVP_DigestUpdate()\fR
 +and \fIEVP_DigestFinal()\fR.
 +.PP
 +Any data written or read through a digest \s-1BIO\s0 using \fIBIO_read()\fR and
 +\&\fIBIO_write()\fR is digested.
 +.PP
 +\&\fIBIO_gets()\fR, if its \fBsize\fR parameter is large enough finishes the
 +digest calculation and returns the digest value. \fIBIO_puts()\fR is
 +not supported.
 +.PP
 +\&\fIBIO_reset()\fR reinitialises a digest \s-1BIO\s0.
 +.PP
 +\&\fIBIO_set_md()\fR sets the message digest of \s-1BIO\s0 \fBb\fR to \fBmd\fR: this
 +must be called to initialize a digest \s-1BIO\s0 before any data is
 +passed through it. It is a \fIBIO_ctrl()\fR macro.
 +.PP
 +\&\fIBIO_get_md()\fR places the a pointer to the digest BIOs digest method
 +in \fBmdp\fR, it is a \fIBIO_ctrl()\fR macro.
 +.PP
 +\&\fIBIO_get_md_ctx()\fR returns the digest BIOs context into \fBmdcp\fR.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +The context returned by \fIBIO_get_md_ctx()\fR can be used in calls
 +to \fIEVP_DigestFinal()\fR and also the signature routines \fIEVP_SignFinal()\fR
 +and \fIEVP_VerifyFinal()\fR.
 +.PP
 +The context returned by \fIBIO_get_md_ctx()\fR is an internal context
 +structure. Changes made to this context will affect the digest
 +\&\s-1BIO\s0 itself and the context pointer will become invalid when the digest
 +\&\s-1BIO\s0 is freed.
 +.PP
 +After the digest has been retrieved from a digest \s-1BIO\s0 it must be
 +reinitialized by calling \fIBIO_reset()\fR, or \fIBIO_set_md()\fR before any more
 +data is passed through it.
 +.PP
 +If an application needs to call \fIBIO_gets()\fR or \fIBIO_puts()\fR through
 +a chain containing digest BIOs then this can be done by prepending
 +a buffering \s-1BIO\s0.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_f_md()\fR returns the digest \s-1BIO\s0 method.
 +.PP
 +\&\fIBIO_set_md()\fR, \fIBIO_get_md()\fR and \fIBIO_md_ctx()\fR return 1 for success and
 +0 for failure.
 +.SH "EXAMPLES"
 +.IX Header "EXAMPLES"
 +The following example creates a \s-1BIO\s0 chain containing an \s-1SHA1\s0 and \s-1MD5\s0
 +digest \s-1BIO\s0 and passes the string \*(L"Hello World\*(R" through it. Error
 +checking has been omitted for clarity.
 +.PP
 +.Vb 10
 +\& BIO *bio, *mdtmp;
 +\& char message[] = "Hello World";
 +\& bio = BIO_new(BIO_s_null());
 +\& mdtmp = BIO_new(BIO_f_md());
 +\& BIO_set_md(mdtmp, EVP_sha1());
 +\& /* For BIO_push() we want to append the sink BIO and keep a note of
 +\&  * the start of the chain.
 +\&  */
 +\& bio = BIO_push(mdtmp, bio);
 +\& mdtmp = BIO_new(BIO_f_md());
 +\& BIO_set_md(mdtmp, EVP_md5());
 +\& bio = BIO_push(mdtmp, bio);
 +\& /* Note: mdtmp can now be discarded */
 +\& BIO_write(bio, message, strlen(message));
 +.Ve
 +.PP
 +The next example digests data by reading through a chain instead:
 +.PP
 +.Vb 10
 +\& BIO *bio, *mdtmp;
 +\& char buf[1024];
 +\& int rdlen;
 +\& bio = BIO_new_file(file, "rb");
 +\& mdtmp = BIO_new(BIO_f_md());
 +\& BIO_set_md(mdtmp, EVP_sha1());
 +\& bio = BIO_push(mdtmp, bio);
 +\& mdtmp = BIO_new(BIO_f_md());
 +\& BIO_set_md(mdtmp, EVP_md5());
 +\& bio = BIO_push(mdtmp, bio);
 +\& do {
 +\&        rdlen = BIO_read(bio, buf, sizeof(buf));
 +\&        /* Might want to do something with the data here */
 +\& } while(rdlen > 0);
 +.Ve
 +.PP
 +This next example retrieves the message digests from a \s-1BIO\s0 chain and
 +outputs them. This could be used with the examples above.
 +.PP
 +.Vb 10
 +\& BIO *mdtmp;
 +\& unsigned char mdbuf[EVP_MAX_MD_SIZE];
 +\& int mdlen;
 +\& int i;
 +\& mdtmp = bio;   /* Assume bio has previously been set up */
 +\& do {
 +\&        EVP_MD *md;
 +\&        mdtmp = BIO_find_type(mdtmp, BIO_TYPE_MD);
 +\&        if(!mdtmp) break;
 +\&        BIO_get_md(mdtmp, &md);
 +\&        printf("%s digest", OBJ_nid2sn(EVP_MD_type(md)));
 +\&        mdlen = BIO_gets(mdtmp, mdbuf, EVP_MAX_MD_SIZE);
 +\&        for(i = 0; i < mdlen; i++) printf(":%02X", mdbuf[i]);
 +\&        printf("\en");
 +\&        mdtmp = BIO_next(mdtmp);
 +\& } while(mdtmp);
 +\&
 +\& BIO_free_all(bio);
 +.Ve
 +.SH "BUGS"
 +.IX Header "BUGS"
 +The lack of support for \fIBIO_puts()\fR and the non standard behaviour of
 +\&\fIBIO_gets()\fR could be regarded as anomalous. It could be argued that \fIBIO_gets()\fR
 +and \fIBIO_puts()\fR should be passed to the next \s-1BIO\s0 in the chain and digest
 +the data passed through and that digests should be retrieved using a
 +separate \fIBIO_ctrl()\fR call.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 322c768,0000000..eaa6579
mode 100644,000000..100644
--- /dev/null
@@@ -1,165 -1,0 +1,165 @@@
- .TH BIO_f_null 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_f_null 3"
++.TH BIO_f_null 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_f_null \- null filter
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD *   BIO_f_null(void);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_f_null()\fR returns the null filter \s-1BIO\s0 method. This is a filter \s-1BIO\s0
 +that does nothing.
 +.PP
 +All requests to a null filter \s-1BIO\s0 are passed through to the next \s-1BIO\s0 in
 +the chain: this means that a \s-1BIO\s0 chain containing a null filter \s-1BIO\s0
 +behaves just as though the \s-1BIO\s0 was not there.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +As may be apparent a null filter \s-1BIO\s0 is not particularly useful.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_f_null()\fR returns the null filter \s-1BIO\s0 method.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 1f70c64,0000000..6906bd4
mode 100644,000000..100644
--- /dev/null
@@@ -1,449 -1,0 +1,449 @@@
- .TH BIO_f_ssl 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_f_ssl 3"
++.TH BIO_f_ssl 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_f_ssl, BIO_set_ssl, BIO_get_ssl, BIO_set_ssl_mode, BIO_set_ssl_renegotiate_bytes,
 +BIO_get_num_renegotiates, BIO_set_ssl_renegotiate_timeout, BIO_new_ssl,
 +BIO_new_ssl_connect, BIO_new_buffer_ssl_connect, BIO_ssl_copy_session_id,
 +BIO_ssl_shutdown \- SSL BIO
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 2
 +\& #include <openssl/bio.h>
 +\& #include <openssl/ssl.h>
 +\&
 +\& BIO_METHOD *BIO_f_ssl(void);
 +\&
 +\& #define BIO_set_ssl(b,ssl,c)   BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl)
 +\& #define BIO_get_ssl(b,sslp)    BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)sslp)
 +\& #define BIO_set_ssl_mode(b,client)     BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
 +\& #define BIO_set_ssl_renegotiate_bytes(b,num) \e
 +\&        BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL);
 +\& #define BIO_set_ssl_renegotiate_timeout(b,seconds) \e
 +\&        BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL);
 +\& #define BIO_get_num_renegotiates(b) \e
 +\&        BIO_ctrl(b,BIO_C_SET_SSL_NUM_RENEGOTIATES,0,NULL);
 +\&
 +\& BIO *BIO_new_ssl(SSL_CTX *ctx,int client);
 +\& BIO *BIO_new_ssl_connect(SSL_CTX *ctx);
 +\& BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx);
 +\& int BIO_ssl_copy_session_id(BIO *to,BIO *from);
 +\& void BIO_ssl_shutdown(BIO *bio);
 +\&
 +\& #define BIO_do_handshake(b)    BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_f_ssl()\fR returns the \s-1SSL\s0 \s-1BIO\s0 method. This is a filter \s-1BIO\s0 which
 +is a wrapper round the OpenSSL \s-1SSL\s0 routines adding a \s-1BIO\s0 \*(L"flavour\*(R" to
 +\&\s-1SSL\s0 I/O.
 +.PP
 +I/O performed on an \s-1SSL\s0 \s-1BIO\s0 communicates using the \s-1SSL\s0 protocol with
 +the SSLs read and write BIOs. If an \s-1SSL\s0 connection is not established
 +then an attempt is made to establish one on the first I/O call.
 +.PP
 +If a \s-1BIO\s0 is appended to an \s-1SSL\s0 \s-1BIO\s0 using \fIBIO_push()\fR it is automatically
 +used as the \s-1SSL\s0 BIOs read and write BIOs.
 +.PP
 +Calling \fIBIO_reset()\fR on an \s-1SSL\s0 \s-1BIO\s0 closes down any current \s-1SSL\s0 connection
 +by calling \fISSL_shutdown()\fR. \fIBIO_reset()\fR is then sent to the next \s-1BIO\s0 in
 +the chain: this will typically disconnect the underlying transport.
 +The \s-1SSL\s0 \s-1BIO\s0 is then reset to the initial accept or connect state.
 +.PP
 +If the close flag is set when an \s-1SSL\s0 \s-1BIO\s0 is freed then the internal
 +\&\s-1SSL\s0 structure is also freed using \fISSL_free()\fR.
 +.PP
 +\&\fIBIO_set_ssl()\fR sets the internal \s-1SSL\s0 pointer of \s-1BIO\s0 \fBb\fR to \fBssl\fR using
 +the close flag \fBc\fR.
 +.PP
 +\&\fIBIO_get_ssl()\fR retrieves the \s-1SSL\s0 pointer of \s-1BIO\s0 \fBb\fR, it can then be
 +manipulated using the standard \s-1SSL\s0 library functions.
 +.PP
 +\&\fIBIO_set_ssl_mode()\fR sets the \s-1SSL\s0 \s-1BIO\s0 mode to \fBclient\fR. If \fBclient\fR
 +is 1 client mode is set. If \fBclient\fR is 0 server mode is set.
 +.PP
 +\&\fIBIO_set_ssl_renegotiate_bytes()\fR sets the renegotiate byte count
 +to \fBnum\fR. When set after every \fBnum\fR bytes of I/O (read and write) 
 +the \s-1SSL\s0 session is automatically renegotiated. \fBnum\fR must be at
 +least 512 bytes.
 +.PP
 +\&\fIBIO_set_ssl_renegotiate_timeout()\fR sets the renegotiate timeout to
 +\&\fBseconds\fR. When the renegotiate timeout elapses the session is
 +automatically renegotiated.
 +.PP
 +\&\fIBIO_get_num_renegotiates()\fR returns the total number of session
 +renegotiations due to I/O or timeout.
 +.PP
 +\&\fIBIO_new_ssl()\fR allocates an \s-1SSL\s0 \s-1BIO\s0 using \s-1SSL_CTX\s0 \fBctx\fR and using
 +client mode if \fBclient\fR is non zero.
 +.PP
 +\&\fIBIO_new_ssl_connect()\fR creates a new \s-1BIO\s0 chain consisting of an
 +\&\s-1SSL\s0 \s-1BIO\s0 (using \fBctx\fR) followed by a connect \s-1BIO\s0.
 +.PP
 +\&\fIBIO_new_buffer_ssl_connect()\fR creates a new \s-1BIO\s0 chain consisting
 +of a buffering \s-1BIO\s0, an \s-1SSL\s0 \s-1BIO\s0 (using \fBctx\fR) and a connect
 +\&\s-1BIO\s0.
 +.PP
 +\&\fIBIO_ssl_copy_session_id()\fR copies an \s-1SSL\s0 session id between 
 +\&\s-1BIO\s0 chains \fBfrom\fR and \fBto\fR. It does this by locating the
 +\&\s-1SSL\s0 BIOs in each chain and calling \fISSL_copy_session_id()\fR on
 +the internal \s-1SSL\s0 pointer.
 +.PP
 +\&\fIBIO_ssl_shutdown()\fR closes down an \s-1SSL\s0 connection on \s-1BIO\s0
 +chain \fBbio\fR. It does this by locating the \s-1SSL\s0 \s-1BIO\s0 in the
 +chain and calling \fISSL_shutdown()\fR on its internal \s-1SSL\s0
 +pointer.
 +.PP
 +\&\fIBIO_do_handshake()\fR attempts to complete an \s-1SSL\s0 handshake on the
 +supplied \s-1BIO\s0 and establish the \s-1SSL\s0 connection. It returns 1
 +if the connection was established successfully. A zero or negative
 +value is returned if the connection could not be established, the
 +call \fIBIO_should_retry()\fR should be used for non blocking connect BIOs
 +to determine if the call should be retried. If an \s-1SSL\s0 connection has
 +already been established this call has no effect.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +\&\s-1SSL\s0 BIOs are exceptional in that if the underlying transport
 +is non blocking they can still request a retry in exceptional
 +circumstances. Specifically this will happen if a session
 +renegotiation takes place during a \fIBIO_read()\fR operation, one
 +case where this happens is when \s-1SGC\s0 or step up occurs.
 +.PP
 +In OpenSSL 0.9.6 and later the \s-1SSL\s0 flag \s-1SSL_AUTO_RETRY\s0 can be
 +set to disable this behaviour. That is when this flag is set
 +an \s-1SSL\s0 \s-1BIO\s0 using a blocking transport will never request a
 +retry.
 +.PP
 +Since unknown \fIBIO_ctrl()\fR operations are sent through filter
 +BIOs the servers name and port can be set using \fIBIO_set_host()\fR
 +on the \s-1BIO\s0 returned by \fIBIO_new_ssl_connect()\fR without having
 +to locate the connect \s-1BIO\s0 first.
 +.PP
 +Applications do not have to call \fIBIO_do_handshake()\fR but may wish
 +to do so to separate the handshake process from other I/O
 +processing.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\s-1TBA\s0
 +.SH "EXAMPLE"
 +.IX Header "EXAMPLE"
 +This \s-1SSL/TLS\s0 client example, attempts to retrieve a page from an
 +\&\s-1SSL/TLS\s0 web server. The I/O routines are identical to those of the
 +unencrypted example in \fIBIO_s_connect\fR\|(3).
 +.PP
 +.Vb 5
 +\& BIO *sbio, *out;
 +\& int len;
 +\& char tmpbuf[1024];
 +\& SSL_CTX *ctx;
 +\& SSL *ssl;
 +\&
 +\& ERR_load_crypto_strings();
 +\& ERR_load_SSL_strings();
 +\& OpenSSL_add_all_algorithms();
 +\&
 +\& /* We would seed the PRNG here if the platform didn\*(Aqt
 +\&  * do it automatically
 +\&  */
 +\&
 +\& ctx = SSL_CTX_new(SSLv23_client_method());
 +\&
 +\& /* We\*(Aqd normally set some stuff like the verify paths and
 +\&  * mode here because as things stand this will connect to
 +\&  * any server whose certificate is signed by any CA.
 +\&  */
 +\&
 +\& sbio = BIO_new_ssl_connect(ctx);
 +\&
 +\& BIO_get_ssl(sbio, &ssl);
 +\&
 +\& if(!ssl) {
 +\&   fprintf(stderr, "Can\*(Aqt locate SSL pointer\en");
 +\&   /* whatever ... */
 +\& }
 +\&
 +\& /* Don\*(Aqt want any retries */
 +\& SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
 +\&
 +\& /* We might want to do other things with ssl here */
 +\&
 +\& BIO_set_conn_hostname(sbio, "localhost:https");
 +\&
 +\& out = BIO_new_fp(stdout, BIO_NOCLOSE);
 +\& if(BIO_do_connect(sbio) <= 0) {
 +\&        fprintf(stderr, "Error connecting to server\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        /* whatever ... */
 +\& }
 +\&
 +\& if(BIO_do_handshake(sbio) <= 0) {
 +\&        fprintf(stderr, "Error establishing SSL connection\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        /* whatever ... */
 +\& }
 +\&
 +\& /* Could examine ssl here to get connection info */
 +\&
 +\& BIO_puts(sbio, "GET / HTTP/1.0\en\en");
 +\& for(;;) {      
 +\&        len = BIO_read(sbio, tmpbuf, 1024);
 +\&        if(len <= 0) break;
 +\&        BIO_write(out, tmpbuf, len);
 +\& }
 +\& BIO_free_all(sbio);
 +\& BIO_free(out);
 +.Ve
 +.PP
 +Here is a simple server example. It makes use of a buffering
 +\&\s-1BIO\s0 to allow lines to be read from the \s-1SSL\s0 \s-1BIO\s0 using BIO_gets.
 +It creates a pseudo web page containing the actual request from
 +a client and also echoes the request to standard output.
 +.PP
 +.Vb 5
 +\& BIO *sbio, *bbio, *acpt, *out;
 +\& int len;
 +\& char tmpbuf[1024];
 +\& SSL_CTX *ctx;
 +\& SSL *ssl;
 +\&
 +\& ERR_load_crypto_strings();
 +\& ERR_load_SSL_strings();
 +\& OpenSSL_add_all_algorithms();
 +\&
 +\& /* Might seed PRNG here */
 +\&
 +\& ctx = SSL_CTX_new(SSLv23_server_method());
 +\&
 +\& if (!SSL_CTX_use_certificate_file(ctx,"server.pem",SSL_FILETYPE_PEM)
 +\&        || !SSL_CTX_use_PrivateKey_file(ctx,"server.pem",SSL_FILETYPE_PEM)
 +\&        || !SSL_CTX_check_private_key(ctx)) {
 +\&
 +\&        fprintf(stderr, "Error setting up SSL_CTX\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        return 0;
 +\& }
 +\&
 +\& /* Might do other things here like setting verify locations and
 +\&  * DH and/or RSA temporary key callbacks
 +\&  */
 +\&
 +\& /* New SSL BIO setup as server */
 +\& sbio=BIO_new_ssl(ctx,0);
 +\&
 +\& BIO_get_ssl(sbio, &ssl);
 +\&
 +\& if(!ssl) {
 +\&   fprintf(stderr, "Can\*(Aqt locate SSL pointer\en");
 +\&   /* whatever ... */
 +\& }
 +\&
 +\& /* Don\*(Aqt want any retries */
 +\& SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
 +\&
 +\& /* Create the buffering BIO */
 +\&
 +\& bbio = BIO_new(BIO_f_buffer());
 +\&
 +\& /* Add to chain */
 +\& sbio = BIO_push(bbio, sbio);
 +\&
 +\& acpt=BIO_new_accept("4433");
 +\&
 +\& /* By doing this when a new connection is established
 +\&  * we automatically have sbio inserted into it. The
 +\&  * BIO chain is now \*(Aqswallowed\*(Aq by the accept BIO and
 +\&  * will be freed when the accept BIO is freed. 
 +\&  */
 +\& 
 +\& BIO_set_accept_bios(acpt,sbio);
 +\&
 +\& out = BIO_new_fp(stdout, BIO_NOCLOSE);
 +\&
 +\& /* Setup accept BIO */
 +\& if(BIO_do_accept(acpt) <= 0) {
 +\&        fprintf(stderr, "Error setting up accept BIO\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        return 0;
 +\& }
 +\&
 +\& /* Now wait for incoming connection */
 +\& if(BIO_do_accept(acpt) <= 0) {
 +\&        fprintf(stderr, "Error in connection\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        return 0;
 +\& }
 +\&
 +\& /* We only want one connection so remove and free
 +\&  * accept BIO
 +\&  */
 +\&
 +\& sbio = BIO_pop(acpt);
 +\&
 +\& BIO_free_all(acpt);
 +\&
 +\& if(BIO_do_handshake(sbio) <= 0) {
 +\&        fprintf(stderr, "Error in SSL handshake\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        return 0;
 +\& }
 +\&
 +\& BIO_puts(sbio, "HTTP/1.0 200 OK\er\enContent\-type: text/plain\er\en\er\en");
 +\& BIO_puts(sbio, "\er\enConnection Established\er\enRequest headers:\er\en");
 +\& BIO_puts(sbio, "\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\er\en");
 +\&
 +\& for(;;) {
 +\&        len = BIO_gets(sbio, tmpbuf, 1024);
 +\&        if(len <= 0) break;
 +\&        BIO_write(sbio, tmpbuf, len);
 +\&        BIO_write(out, tmpbuf, len);
 +\&        /* Look for blank line signifying end of headers*/
 +\&        if((tmpbuf[0] == \*(Aq\er\*(Aq) || (tmpbuf[0] == \*(Aq\en\*(Aq)) break;
 +\& }
 +\&
 +\& BIO_puts(sbio, "\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\er\en");
 +\& BIO_puts(sbio, "\er\en");
 +\&
 +\& /* Since there is a buffering BIO present we had better flush it */
 +\& BIO_flush(sbio);
 +\&
 +\& BIO_free_all(sbio);
 +.Ve
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 1e761d1,0000000..82e212a
mode 100644,000000..100644
--- /dev/null
@@@ -1,232 -1,0 +1,232 @@@
- .TH BIO_find_type 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_find_type 3"
++.TH BIO_find_type 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_find_type, BIO_next \- BIO chain traversal
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO *  BIO_find_type(BIO *b,int bio_type);
 +\& BIO *  BIO_next(BIO *b);
 +\&
 +\& #define BIO_method_type(b)             ((b)\->method\->type)
 +\&
 +\& #define BIO_TYPE_NONE          0
 +\& #define BIO_TYPE_MEM           (1|0x0400)
 +\& #define BIO_TYPE_FILE          (2|0x0400)
 +\&
 +\& #define BIO_TYPE_FD            (4|0x0400|0x0100)
 +\& #define BIO_TYPE_SOCKET                (5|0x0400|0x0100)
 +\& #define BIO_TYPE_NULL          (6|0x0400)
 +\& #define BIO_TYPE_SSL           (7|0x0200)
 +\& #define BIO_TYPE_MD            (8|0x0200)
 +\& #define BIO_TYPE_BUFFER                (9|0x0200)
 +\& #define BIO_TYPE_CIPHER                (10|0x0200)
 +\& #define BIO_TYPE_BASE64                (11|0x0200)
 +\& #define BIO_TYPE_CONNECT       (12|0x0400|0x0100)
 +\& #define BIO_TYPE_ACCEPT                (13|0x0400|0x0100)
 +\& #define BIO_TYPE_PROXY_CLIENT  (14|0x0200)
 +\& #define BIO_TYPE_PROXY_SERVER  (15|0x0200)
 +\& #define BIO_TYPE_NBIO_TEST     (16|0x0200)
 +\& #define BIO_TYPE_NULL_FILTER   (17|0x0200)
 +\& #define BIO_TYPE_BER           (18|0x0200)
 +\& #define BIO_TYPE_BIO           (19|0x0400)
 +\&
 +\& #define BIO_TYPE_DESCRIPTOR    0x0100
 +\& #define BIO_TYPE_FILTER                0x0200
 +\& #define BIO_TYPE_SOURCE_SINK   0x0400
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +The \fIBIO_find_type()\fR searches for a \s-1BIO\s0 of a given type in a chain, starting
 +at \s-1BIO\s0 \fBb\fR. If \fBtype\fR is a specific type (such as \s-1BIO_TYPE_MEM\s0) then a search
 +is made for a \s-1BIO\s0 of that type. If \fBtype\fR is a general type (such as
 +\&\fB\s-1BIO_TYPE_SOURCE_SINK\s0\fR) then the next matching \s-1BIO\s0 of the given general type is
 +searched for. \fIBIO_find_type()\fR returns the next matching \s-1BIO\s0 or \s-1NULL\s0 if none is
 +found.
 +.PP
 +Note: not all the \fBBIO_TYPE_*\fR types above have corresponding \s-1BIO\s0 implementations.
 +.PP
 +\&\fIBIO_next()\fR returns the next \s-1BIO\s0 in a chain. It can be used to traverse all BIOs
 +in a chain or used in conjunction with \fIBIO_find_type()\fR to find all BIOs of a
 +certain type.
 +.PP
 +\&\fIBIO_method_type()\fR returns the type of a \s-1BIO\s0.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_find_type()\fR returns a matching \s-1BIO\s0 or \s-1NULL\s0 for no match.
 +.PP
 +\&\fIBIO_next()\fR returns the next \s-1BIO\s0 in a chain.
 +.PP
 +\&\fIBIO_method_type()\fR returns the type of the \s-1BIO\s0 \fBb\fR.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +\&\fIBIO_next()\fR was added to OpenSSL 0.9.6 to provide a 'clean' way to traverse a \s-1BIO\s0
 +chain or find multiple matches using \fIBIO_find_type()\fR. Previous versions had to
 +use:
 +.PP
 +.Vb 1
 +\& next = bio\->next_bio;
 +.Ve
 +.SH "BUGS"
 +.IX Header "BUGS"
 +\&\fIBIO_find_type()\fR in OpenSSL 0.9.5a and earlier could not be safely passed a
 +\&\s-1NULL\s0 pointer for the \fBb\fR argument.
 +.SH "EXAMPLE"
 +.IX Header "EXAMPLE"
 +Traverse a chain looking for digest BIOs:
 +.PP
 +.Vb 2
 +\& BIO *btmp;
 +\& btmp = in_bio; /* in_bio is chain to search through */
 +\&
 +\& do {
 +\&        btmp = BIO_find_type(btmp, BIO_TYPE_MD);
 +\&        if(btmp == NULL) break; /* Not found */
 +\&        /* btmp is a digest BIO, do something with it ...*/
 +\&        ...
 +\&
 +\&        btmp = BIO_next(btmp);
 +\& } while(btmp);
 +.Ve
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 2466396,0000000..8526d14
mode 100644,000000..100644
--- /dev/null
@@@ -1,199 -1,0 +1,199 @@@
- .TH BIO_new 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_new 3"
++.TH BIO_new 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_new, BIO_set, BIO_free, BIO_vfree, BIO_free_all \- BIO allocation and freeing functions
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO *  BIO_new(BIO_METHOD *type);
 +\& int    BIO_set(BIO *a,BIO_METHOD *type);
 +\& int    BIO_free(BIO *a);
 +\& void   BIO_vfree(BIO *a);
 +\& void   BIO_free_all(BIO *a);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +The \fIBIO_new()\fR function returns a new \s-1BIO\s0 using method \fBtype\fR.
 +.PP
 +\&\fIBIO_set()\fR sets the method of an already existing \s-1BIO\s0.
 +.PP
 +\&\fIBIO_free()\fR frees up a single \s-1BIO\s0, \fIBIO_vfree()\fR also frees up a single \s-1BIO\s0
 +but it does not return a value. Calling \fIBIO_free()\fR may also have some effect
 +on the underlying I/O structure, for example it may close the file being
 +referred to under certain circumstances. For more details see the individual
 +\&\s-1BIO_METHOD\s0 descriptions.
 +.PP
 +\&\fIBIO_free_all()\fR frees up an entire \s-1BIO\s0 chain, it does not halt if an error
 +occurs freeing up an individual \s-1BIO\s0 in the chain.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_new()\fR returns a newly created \s-1BIO\s0 or \s-1NULL\s0 if the call fails.
 +.PP
 +\&\fIBIO_set()\fR, \fIBIO_free()\fR return 1 for success and 0 for failure.
 +.PP
 +\&\fIBIO_free_all()\fR and \fIBIO_vfree()\fR do not return values.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +Some BIOs (such as memory BIOs) can be used immediately after calling
 +\&\fIBIO_new()\fR. Others (such as file BIOs) need some additional initialization,
 +and frequently a utility function exists to create and initialize such BIOs.
 +.PP
 +If \fIBIO_free()\fR is called on a \s-1BIO\s0 chain it will only free one \s-1BIO\s0 resulting
 +in a memory leak.
 +.PP
 +Calling \fIBIO_free_all()\fR a single \s-1BIO\s0 has the same effect as calling \fIBIO_free()\fR
 +on it other than the discarded return value.
 +.PP
 +Normally the \fBtype\fR argument is supplied by a function which returns a
 +pointer to a \s-1BIO_METHOD\s0. There is a naming convention for such functions:
 +a source/sink \s-1BIO\s0 is normally called BIO_s_*() and a filter \s-1BIO\s0
 +BIO_f_*();
 +.SH "EXAMPLE"
 +.IX Header "EXAMPLE"
 +Create a memory \s-1BIO:\s0
 +.PP
 +.Vb 1
 +\& BIO *mem = BIO_new(BIO_s_mem());
 +.Ve
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index febac89,0000000..228ea7c
mode 100644,000000..100644
--- /dev/null
@@@ -1,207 -1,0 +1,207 @@@
- .TH BIO_push 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_push 3"
++.TH BIO_push 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_push, BIO_pop \- add and remove BIOs from a chain.
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO *  BIO_push(BIO *b,BIO *append);
 +\& BIO *  BIO_pop(BIO *b);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +The \fIBIO_push()\fR function appends the \s-1BIO\s0 \fBappend\fR to \fBb\fR, it returns
 +\&\fBb\fR.
 +.PP
 +\&\fIBIO_pop()\fR removes the \s-1BIO\s0 \fBb\fR from a chain and returns the next \s-1BIO\s0
 +in the chain, or \s-1NULL\s0 if there is no next \s-1BIO\s0. The removed \s-1BIO\s0 then
 +becomes a single \s-1BIO\s0 with no association with the original chain,
 +it can thus be freed or attached to a different chain.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +The names of these functions are perhaps a little misleading. \fIBIO_push()\fR
 +joins two \s-1BIO\s0 chains whereas \fIBIO_pop()\fR deletes a single \s-1BIO\s0 from a chain,
 +the deleted \s-1BIO\s0 does not need to be at the end of a chain.
 +.PP
 +The process of calling \fIBIO_push()\fR and \fIBIO_pop()\fR on a \s-1BIO\s0 may have additional
 +consequences (a control call is made to the affected BIOs) any effects will
 +be noted in the descriptions of individual BIOs.
 +.SH "EXAMPLES"
 +.IX Header "EXAMPLES"
 +For these examples suppose \fBmd1\fR and \fBmd2\fR are digest BIOs, \fBb64\fR is
 +a base64 \s-1BIO\s0 and \fBf\fR is a file \s-1BIO\s0.
 +.PP
 +If the call:
 +.PP
 +.Vb 1
 +\& BIO_push(b64, f);
 +.Ve
 +.PP
 +is made then the new chain will be \fBb64\-chain\fR. After making the calls
 +.PP
 +.Vb 2
 +\& BIO_push(md2, b64);
 +\& BIO_push(md1, md2);
 +.Ve
 +.PP
 +the new chain is \fBmd1\-md2\-b64\-f\fR. Data written to \fBmd1\fR will be digested
 +by \fBmd1\fR and \fBmd2\fR, \fBbase64\fR encoded and written to \fBf\fR.
 +.PP
 +It should be noted that reading causes data to pass in the reverse
 +direction, that is data is read from \fBf\fR, base64 \fBdecoded\fR and digested
 +by \fBmd1\fR and \fBmd2\fR. If the call:
 +.PP
 +.Vb 1
 +\& BIO_pop(md2);
 +.Ve
 +.PP
 +The call will return \fBb64\fR and the new chain will be \fBmd1\-b64\-f\fR data can
 +be written to \fBmd1\fR as before.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_push()\fR returns the end of the chain, \fBb\fR.
 +.PP
 +\&\fIBIO_pop()\fR returns the next \s-1BIO\s0 in the chain, or \s-1NULL\s0 if there is no next
 +\&\s-1BIO\s0.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index c978239,0000000..3c518e7
mode 100644,000000..100644
--- /dev/null
@@@ -1,199 -1,0 +1,199 @@@
- .TH BIO_read 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_read 3"
++.TH BIO_read 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_read, BIO_write, BIO_gets, BIO_puts \- BIO I/O functions
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& int    BIO_read(BIO *b, void *buf, int len);
 +\& int    BIO_gets(BIO *b,char *buf, int size);
 +\& int    BIO_write(BIO *b, const void *buf, int len);
 +\& int    BIO_puts(BIO *b,const char *buf);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_read()\fR attempts to read \fBlen\fR bytes from \s-1BIO\s0 \fBb\fR and places
 +the data in \fBbuf\fR.
 +.PP
 +\&\fIBIO_gets()\fR performs the BIOs \*(L"gets\*(R" operation and places the data
 +in \fBbuf\fR. Usually this operation will attempt to read a line of data
 +from the \s-1BIO\s0 of maximum length \fBlen\fR. There are exceptions to this
 +however, for example \fIBIO_gets()\fR on a digest \s-1BIO\s0 will calculate and
 +return the digest and other BIOs may not support \fIBIO_gets()\fR at all.
 +.PP
 +\&\fIBIO_write()\fR attempts to write \fBlen\fR bytes from \fBbuf\fR to \s-1BIO\s0 \fBb\fR.
 +.PP
 +\&\fIBIO_puts()\fR attempts to write a null terminated string \fBbuf\fR to \s-1BIO\s0 \fBb\fR
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +All these functions return either the amount of data successfully read or
 +written (if the return value is positive) or that no data was successfully
 +read or written if the result is 0 or \-1. If the return value is \-2 then
 +the operation is not implemented in the specific \s-1BIO\s0 type.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +A 0 or \-1 return is not necessarily an indication of an error. In
 +particular when the source/sink is non-blocking or of a certain type
 +it may merely be an indication that no data is currently available and that
 +the application should retry the operation later.
 +.PP
 +One technique sometimes used with blocking sockets is to use a system call
 +(such as \fIselect()\fR, \fIpoll()\fR or equivalent) to determine when data is available
 +and then call \fIread()\fR to read the data. The equivalent with BIOs (that is call
 +\&\fIselect()\fR on the underlying I/O structure and then call \fIBIO_read()\fR to
 +read the data) should \fBnot\fR be used because a single call to \fIBIO_read()\fR
 +can cause several reads (and writes in the case of \s-1SSL\s0 BIOs) on the underlying
 +I/O structure and may block as a result. Instead \fIselect()\fR (or equivalent)
 +should be combined with non blocking I/O so successive reads will request
 +a retry instead of blocking.
 +.PP
 +See \fIBIO_should_retry\fR\|(3) for details of how to
 +determine the cause of a retry and other I/O issues.
 +.PP
 +If the \fIBIO_gets()\fR function is not supported by a \s-1BIO\s0 then it possible to
 +work around this by adding a buffering \s-1BIO\s0 \fIBIO_f_buffer\fR\|(3)
 +to the chain.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIBIO_should_retry\fR\|(3)
 +.PP
 +\&\s-1TBA\s0
index a75b0f4,0000000..04a7748
mode 100644,000000..100644
--- /dev/null
@@@ -1,331 -1,0 +1,331 @@@
- .TH BIO_s_accept 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_s_accept 3"
++.TH BIO_s_accept 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_s_accept, BIO_set_accept_port, BIO_get_accept_port,
 +BIO_set_nbio_accept, BIO_set_accept_bios, BIO_set_bind_mode,
 +BIO_get_bind_mode, BIO_do_accept \- accept BIO
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD *BIO_s_accept(void);
 +\&
 +\& long BIO_set_accept_port(BIO *b, char *name);
 +\& char *BIO_get_accept_port(BIO *b);
 +\&
 +\& BIO *BIO_new_accept(char *host_port);
 +\&
 +\& long BIO_set_nbio_accept(BIO *b, int n);
 +\& long BIO_set_accept_bios(BIO *b, char *bio);
 +\&
 +\& long BIO_set_bind_mode(BIO *b, long mode);
 +\& long BIO_get_bind_mode(BIO *b, long dummy);
 +\&
 +\& #define BIO_BIND_NORMAL                0
 +\& #define BIO_BIND_REUSEADDR_IF_UNUSED   1
 +\& #define BIO_BIND_REUSEADDR             2
 +\&
 +\& int BIO_do_accept(BIO *b);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_s_accept()\fR returns the accept \s-1BIO\s0 method. This is a wrapper
 +round the platform's \s-1TCP/IP\s0 socket accept routines.
 +.PP
 +Using accept BIOs, \s-1TCP/IP\s0 connections can be accepted and data
 +transferred using only \s-1BIO\s0 routines. In this way any platform
 +specific operations are hidden by the \s-1BIO\s0 abstraction.
 +.PP
 +Read and write operations on an accept \s-1BIO\s0 will perform I/O
 +on the underlying connection. If no connection is established
 +and the port (see below) is set up properly then the \s-1BIO\s0
 +waits for an incoming connection.
 +.PP
 +Accept BIOs support \fIBIO_puts()\fR but not \fIBIO_gets()\fR.
 +.PP
 +If the close flag is set on an accept \s-1BIO\s0 then any active
 +connection on that chain is shutdown and the socket closed when
 +the \s-1BIO\s0 is freed.
 +.PP
 +Calling \fIBIO_reset()\fR on a accept \s-1BIO\s0 will close any active
 +connection and reset the \s-1BIO\s0 into a state where it awaits another
 +incoming connection.
 +.PP
 +\&\fIBIO_get_fd()\fR and \fIBIO_set_fd()\fR can be called to retrieve or set
 +the accept socket. See \fIBIO_s_fd\fR\|(3)
 +.PP
 +\&\fIBIO_set_accept_port()\fR uses the string \fBname\fR to set the accept
 +port. The port is represented as a string of the form \*(L"host:port\*(R",
 +where \*(L"host\*(R" is the interface to use and \*(L"port\*(R" is the port.
 +Either or both values can be \*(L"*\*(R" which is interpreted as meaning
 +any interface or port respectively. \*(L"port\*(R" has the same syntax
 +as the port specified in \fIBIO_set_conn_port()\fR for connect BIOs,
 +that is it can be a numerical port string or a string to lookup
 +using \fIgetservbyname()\fR and a string table.
 +.PP
 +\&\fIBIO_new_accept()\fR combines \fIBIO_new()\fR and \fIBIO_set_accept_port()\fR into
 +a single call: that is it creates a new accept \s-1BIO\s0 with port
 +\&\fBhost_port\fR.
 +.PP
 +\&\fIBIO_set_nbio_accept()\fR sets the accept socket to blocking mode
 +(the default) if \fBn\fR is 0 or non blocking mode if \fBn\fR is 1.
 +.PP
 +\&\fIBIO_set_accept_bios()\fR can be used to set a chain of BIOs which
 +will be duplicated and prepended to the chain when an incoming
 +connection is received. This is useful if, for example, a 
 +buffering or \s-1SSL\s0 \s-1BIO\s0 is required for each connection. The
 +chain of BIOs must not be freed after this call, they will
 +be automatically freed when the accept \s-1BIO\s0 is freed.
 +.PP
 +\&\fIBIO_set_bind_mode()\fR and \fIBIO_get_bind_mode()\fR set and retrieve
 +the current bind mode. If \s-1BIO_BIND_NORMAL\s0 (the default) is set
 +then another socket cannot be bound to the same port. If
 +\&\s-1BIO_BIND_REUSEADDR\s0 is set then other sockets can bind to the
 +same port. If \s-1BIO_BIND_REUSEADDR_IF_UNUSED\s0 is set then and
 +attempt is first made to use \s-1BIO_BIN_NORMAL\s0, if this fails
 +and the port is not in use then a second attempt is made
 +using \s-1BIO_BIND_REUSEADDR\s0.
 +.PP
 +\&\fIBIO_do_accept()\fR serves two functions. When it is first
 +called, after the accept \s-1BIO\s0 has been setup, it will attempt
 +to create the accept socket and bind an address to it. Second
 +and subsequent calls to \fIBIO_do_accept()\fR will await an incoming
 +connection, or request a retry in non blocking mode.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +When an accept \s-1BIO\s0 is at the end of a chain it will await an
 +incoming connection before processing I/O calls. When an accept
 +\&\s-1BIO\s0 is not at then end of a chain it passes I/O calls to the next
 +\&\s-1BIO\s0 in the chain.
 +.PP
 +When a connection is established a new socket \s-1BIO\s0 is created for
 +the connection and appended to the chain. That is the chain is now
 +accept\->socket. This effectively means that attempting I/O on
 +an initial accept socket will await an incoming connection then
 +perform I/O on it.
 +.PP
 +If any additional BIOs have been set using \fIBIO_set_accept_bios()\fR
 +then they are placed between the socket and the accept \s-1BIO\s0,
 +that is the chain will be accept\->otherbios\->socket.
 +.PP
 +If a server wishes to process multiple connections (as is normally
 +the case) then the accept \s-1BIO\s0 must be made available for further
 +incoming connections. This can be done by waiting for a connection and
 +then calling:
 +.PP
 +.Vb 1
 +\& connection = BIO_pop(accept);
 +.Ve
 +.PP
 +After this call \fBconnection\fR will contain a \s-1BIO\s0 for the recently
 +established connection and \fBaccept\fR will now be a single \s-1BIO\s0
 +again which can be used to await further incoming connections.
 +If no further connections will be accepted the \fBaccept\fR can
 +be freed using \fIBIO_free()\fR.
 +.PP
 +If only a single connection will be processed it is possible to
 +perform I/O using the accept \s-1BIO\s0 itself. This is often undesirable
 +however because the accept \s-1BIO\s0 will still accept additional incoming
 +connections. This can be resolved by using \fIBIO_pop()\fR (see above)
 +and freeing up the accept \s-1BIO\s0 after the initial connection.
 +.PP
 +If the underlying accept socket is non-blocking and \fIBIO_do_accept()\fR is
 +called to await an incoming connection it is possible for
 +\&\fIBIO_should_io_special()\fR with the reason \s-1BIO_RR_ACCEPT\s0. If this happens
 +then it is an indication that an accept attempt would block: the application
 +should take appropriate action to wait until the underlying socket has
 +accepted a connection and retry the call.
 +.PP
 +\&\fIBIO_set_accept_port()\fR, \fIBIO_get_accept_port()\fR, \fIBIO_set_nbio_accept()\fR,
 +\&\fIBIO_set_accept_bios()\fR, \fIBIO_set_bind_mode()\fR, \fIBIO_get_bind_mode()\fR and
 +\&\fIBIO_do_accept()\fR are macros.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\s-1TBA\s0
 +.SH "EXAMPLE"
 +.IX Header "EXAMPLE"
 +This example accepts two connections on port 4444, sends messages
 +down each and finally closes both down.
 +.PP
 +.Vb 3
 +\& BIO *abio, *cbio, *cbio2;
 +\& ERR_load_crypto_strings();
 +\& abio = BIO_new_accept("4444");
 +\&
 +\& /* First call to BIO_accept() sets up accept BIO */
 +\& if(BIO_do_accept(abio) <= 0) {
 +\&        fprintf(stderr, "Error setting up accept\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        exit(0);                
 +\& }
 +\&
 +\& /* Wait for incoming connection */
 +\& if(BIO_do_accept(abio) <= 0) {
 +\&        fprintf(stderr, "Error accepting connection\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        exit(0);                
 +\& }
 +\& fprintf(stderr, "Connection 1 established\en");
 +\& /* Retrieve BIO for connection */
 +\& cbio = BIO_pop(abio);
 +\& BIO_puts(cbio, "Connection 1: Sending out Data on initial connection\en");
 +\& fprintf(stderr, "Sent out data on connection 1\en");
 +\& /* Wait for another connection */
 +\& if(BIO_do_accept(abio) <= 0) {
 +\&        fprintf(stderr, "Error accepting connection\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        exit(0);                
 +\& }
 +\& fprintf(stderr, "Connection 2 established\en");
 +\& /* Close accept BIO to refuse further connections */
 +\& cbio2 = BIO_pop(abio);
 +\& BIO_free(abio);
 +\& BIO_puts(cbio2, "Connection 2: Sending out Data on second\en");
 +\& fprintf(stderr, "Sent out data on connection 2\en");
 +\&
 +\& BIO_puts(cbio, "Connection 1: Second connection established\en");
 +\& /* Close the two established connections */
 +\& BIO_free(cbio);
 +\& BIO_free(cbio2);
 +.Ve
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 2f3228b,0000000..3da9dff
mode 100644,000000..100644
--- /dev/null
@@@ -1,313 -1,0 +1,313 @@@
- .TH BIO_s_bio 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_s_bio 3"
++.TH BIO_s_bio 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_s_bio, BIO_make_bio_pair, BIO_destroy_bio_pair, BIO_shutdown_wr, 
 +BIO_set_write_buf_size, BIO_get_write_buf_size, BIO_new_bio_pair,
 +BIO_get_write_guarantee, BIO_ctrl_get_write_guarantee, BIO_get_read_request,
 +BIO_ctrl_get_read_request, BIO_ctrl_reset_read_request \- BIO pair BIO
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD *BIO_s_bio(void);
 +\&
 +\& #define BIO_make_bio_pair(b1,b2)   (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2)
 +\& #define BIO_destroy_bio_pair(b)    (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL)
 +\&
 +\& #define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL)
 +\&
 +\& #define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL)
 +\& #define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL)
 +\&
 +\& int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2);
 +\&
 +\& #define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL)
 +\& size_t BIO_ctrl_get_write_guarantee(BIO *b);
 +\&
 +\& #define BIO_get_read_request(b)    (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL)
 +\& size_t BIO_ctrl_get_read_request(BIO *b);
 +\&
 +\& int BIO_ctrl_reset_read_request(BIO *b);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_s_bio()\fR returns the method for a \s-1BIO\s0 pair. A \s-1BIO\s0 pair is a pair of source/sink
 +BIOs where data written to either half of the pair is buffered and can be read from
 +the other half. Both halves must usually by handled by the same application thread
 +since no locking is done on the internal data structures.
 +.PP
 +Since \s-1BIO\s0 chains typically end in a source/sink \s-1BIO\s0 it is possible to make this
 +one half of a \s-1BIO\s0 pair and have all the data processed by the chain under application
 +control.
 +.PP
 +One typical use of \s-1BIO\s0 pairs is to place \s-1TLS/SSL\s0 I/O under application control, this
 +can be used when the application wishes to use a non standard transport for
 +\&\s-1TLS/SSL\s0 or the normal socket routines are inappropriate.
 +.PP
 +Calls to \fIBIO_read()\fR will read data from the buffer or request a retry if no
 +data is available.
 +.PP
 +Calls to \fIBIO_write()\fR will place data in the buffer or request a retry if the
 +buffer is full.
 +.PP
 +The standard calls \fIBIO_ctrl_pending()\fR and \fIBIO_ctrl_wpending()\fR can be used to
 +determine the amount of pending data in the read or write buffer.
 +.PP
 +\&\fIBIO_reset()\fR clears any data in the write buffer.
 +.PP
 +\&\fIBIO_make_bio_pair()\fR joins two separate BIOs into a connected pair.
 +.PP
 +\&\fIBIO_destroy_pair()\fR destroys the association between two connected BIOs. Freeing
 +up any half of the pair will automatically destroy the association.
 +.PP
 +\&\fIBIO_shutdown_wr()\fR is used to close down a \s-1BIO\s0 \fBb\fR. After this call no further
 +writes on \s-1BIO\s0 \fBb\fR are allowed (they will return an error). Reads on the other
 +half of the pair will return any pending data or \s-1EOF\s0 when all pending data has
 +been read.
 +.PP
 +\&\fIBIO_set_write_buf_size()\fR sets the write buffer size of \s-1BIO\s0 \fBb\fR to \fBsize\fR.
 +If the size is not initialized a default value is used. This is currently
 +17K, sufficient for a maximum size \s-1TLS\s0 record.
 +.PP
 +\&\fIBIO_get_write_buf_size()\fR returns the size of the write buffer.
 +.PP
 +\&\fIBIO_new_bio_pair()\fR combines the calls to \fIBIO_new()\fR, \fIBIO_make_bio_pair()\fR and
 +\&\fIBIO_set_write_buf_size()\fR to create a connected pair of BIOs \fBbio1\fR, \fBbio2\fR
 +with write buffer sizes \fBwritebuf1\fR and \fBwritebuf2\fR. If either size is
 +zero then the default size is used.  \fIBIO_new_bio_pair()\fR does not check whether
 +\&\fBbio1\fR or \fBbio2\fR do point to some other \s-1BIO\s0, the values are overwritten,
 +\&\fIBIO_free()\fR is not called.
 +.PP
 +\&\fIBIO_get_write_guarantee()\fR and \fIBIO_ctrl_get_write_guarantee()\fR return the maximum
 +length of data that can be currently written to the \s-1BIO\s0. Writes larger than this
 +value will return a value from \fIBIO_write()\fR less than the amount requested or if the
 +buffer is full request a retry. \fIBIO_ctrl_get_write_guarantee()\fR is a function
 +whereas \fIBIO_get_write_guarantee()\fR is a macro.
 +.PP
 +\&\fIBIO_get_read_request()\fR and \fIBIO_ctrl_get_read_request()\fR return the
 +amount of data requested, or the buffer size if it is less, if the
 +last read attempt at the other half of the \s-1BIO\s0 pair failed due to an
 +empty buffer.  This can be used to determine how much data should be
 +written to the \s-1BIO\s0 so the next read will succeed: this is most useful
 +in \s-1TLS/SSL\s0 applications where the amount of data read is usually
 +meaningful rather than just a buffer size. After a successful read
 +this call will return zero.  It also will return zero once new data
 +has been written satisfying the read request or part of it.
 +Note that \fIBIO_get_read_request()\fR never returns an amount larger
 +than that returned by \fIBIO_get_write_guarantee()\fR.
 +.PP
 +\&\fIBIO_ctrl_reset_read_request()\fR can also be used to reset the value returned by
 +\&\fIBIO_get_read_request()\fR to zero.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +Both halves of a \s-1BIO\s0 pair should be freed. That is even if one half is implicit
 +freed due to a \fIBIO_free_all()\fR or \fISSL_free()\fR call the other half needs to be freed.
 +.PP
 +When used in bidirectional applications (such as \s-1TLS/SSL\s0) care should be taken to
 +flush any data in the write buffer. This can be done by calling \fIBIO_pending()\fR
 +on the other half of the pair and, if any data is pending, reading it and sending
 +it to the underlying transport. This must be done before any normal processing
 +(such as calling \fIselect()\fR ) due to a request and \fIBIO_should_read()\fR being true.
 +.PP
 +To see why this is important consider a case where a request is sent using
 +\&\fIBIO_write()\fR and a response read with \fIBIO_read()\fR, this can occur during an
 +\&\s-1TLS/SSL\s0 handshake for example. \fIBIO_write()\fR will succeed and place data in the write
 +buffer. \fIBIO_read()\fR will initially fail and \fIBIO_should_read()\fR will be true. If
 +the application then waits for data to be available on the underlying transport
 +before flushing the write buffer it will never succeed because the request was
 +never sent!
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_new_bio_pair()\fR returns 1 on success, with the new BIOs available in
 +\&\fBbio1\fR and \fBbio2\fR, or 0 on failure, with \s-1NULL\s0 pointers stored into the
 +locations for \fBbio1\fR and \fBbio2\fR. Check the error stack for more information.
 +.PP
 +[\s-1XXXXX:\s0 More return values need to be added here]
 +.SH "EXAMPLE"
 +.IX Header "EXAMPLE"
 +The \s-1BIO\s0 pair can be used to have full control over the network access of an
 +application. The application can call \fIselect()\fR on the socket as required
 +without having to go through the SSL-interface.
 +.PP
 +.Vb 6
 +\& BIO *internal_bio, *network_bio;
 +\& ...
 +\& BIO_new_bio_pair(internal_bio, 0, network_bio, 0);
 +\& SSL_set_bio(ssl, internal_bio, internal_bio);
 +\& SSL_operations();
 +\& ...
 +\&
 +\& application |   TLS\-engine
 +\&    |        |
 +\&    +\-\-\-\-\-\-\-\-\-\-> SSL_operations()
 +\&             |     /\e    ||
 +\&             |     ||    \e/
 +\&             |   BIO\-pair (internal_bio)
 +\&    +\-\-\-\-\-\-\-\-\-\-< BIO\-pair (network_bio)
 +\&    |        |
 +\&  socket     |
 +\&
 +\&  ...
 +\&  SSL_free(ssl);                /* implicitly frees internal_bio */
 +\&  BIO_free(network_bio);
 +\&  ...
 +.Ve
 +.PP
 +As the \s-1BIO\s0 pair will only buffer the data and never directly access the
 +connection, it behaves non-blocking and will return as soon as the write
 +buffer is full or the read buffer is drained. Then the application has to
 +flush the write buffer and/or fill the read buffer.
 +.PP
 +Use the \fIBIO_ctrl_pending()\fR, to find out whether data is buffered in the \s-1BIO\s0
 +and must be transfered to the network. Use \fIBIO_ctrl_get_read_request()\fR to
 +find out, how many bytes must be written into the buffer before the
 +\&\fISSL_operation()\fR can successfully be continued.
 +.SH "WARNING"
 +.IX Header "WARNING"
 +As the data is buffered, \fISSL_operation()\fR may return with a \s-1ERROR_SSL_WANT_READ\s0
 +condition, but there is still data in the write buffer. An application must
 +not rely on the error value of \fISSL_operation()\fR but must assure that the
 +write buffer is always flushed first. Otherwise a deadlock may occur as
 +the peer might be waiting for the data before being able to continue.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fISSL_set_bio\fR\|(3), \fIssl\fR\|(3), \fIbio\fR\|(3),
 +\&\fIBIO_should_retry\fR\|(3), \fIBIO_read\fR\|(3)
index 89619ff,0000000..f17c702
mode 100644,000000..100644
--- /dev/null
@@@ -1,324 -1,0 +1,324 @@@
- .TH BIO_s_connect 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_s_connect 3"
++.TH BIO_s_connect 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_s_connect, BIO_set_conn_hostname, BIO_set_conn_port,
 +BIO_set_conn_ip, BIO_set_conn_int_port, BIO_get_conn_hostname,
 +BIO_get_conn_port, BIO_get_conn_ip, BIO_get_conn_int_port,
 +BIO_set_nbio, BIO_do_connect \- connect BIO
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD * BIO_s_connect(void);
 +\&
 +\& BIO *BIO_new_connect(char *name);
 +\&
 +\& long BIO_set_conn_hostname(BIO *b, char *name);
 +\& long BIO_set_conn_port(BIO *b, char *port);
 +\& long BIO_set_conn_ip(BIO *b, char *ip);
 +\& long BIO_set_conn_int_port(BIO *b, char *port);
 +\& char *BIO_get_conn_hostname(BIO *b);
 +\& char *BIO_get_conn_port(BIO *b);
 +\& char *BIO_get_conn_ip(BIO *b, dummy);
 +\& long BIO_get_conn_int_port(BIO *b, int port);
 +\&
 +\& long BIO_set_nbio(BIO *b, long n);
 +\&
 +\& int BIO_do_connect(BIO *b);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_s_connect()\fR returns the connect \s-1BIO\s0 method. This is a wrapper
 +round the platform's \s-1TCP/IP\s0 socket connection routines.
 +.PP
 +Using connect BIOs, \s-1TCP/IP\s0 connections can be made and data
 +transferred using only \s-1BIO\s0 routines. In this way any platform
 +specific operations are hidden by the \s-1BIO\s0 abstraction.
 +.PP
 +Read and write operations on a connect \s-1BIO\s0 will perform I/O
 +on the underlying connection. If no connection is established
 +and the port and hostname (see below) is set up properly then
 +a connection is established first.
 +.PP
 +Connect BIOs support \fIBIO_puts()\fR but not \fIBIO_gets()\fR.
 +.PP
 +If the close flag is set on a connect \s-1BIO\s0 then any active
 +connection is shutdown and the socket closed when the \s-1BIO\s0
 +is freed.
 +.PP
 +Calling \fIBIO_reset()\fR on a connect \s-1BIO\s0 will close any active
 +connection and reset the \s-1BIO\s0 into a state where it can connect
 +to the same host again.
 +.PP
 +\&\fIBIO_get_fd()\fR places the underlying socket in \fBc\fR if it is not \s-1NULL\s0,
 +it also returns the socket . If \fBc\fR is not \s-1NULL\s0 it should be of
 +type (int *).
 +.PP
 +\&\fIBIO_set_conn_hostname()\fR uses the string \fBname\fR to set the hostname.
 +The hostname can be an \s-1IP\s0 address. The hostname can also include the
 +port in the form hostname:port . It is also acceptable to use the
 +form \*(L"hostname/any/other/path\*(R" or \*(L"hostname:port/any/other/path\*(R".
 +.PP
 +\&\fIBIO_set_conn_port()\fR sets the port to \fBport\fR. \fBport\fR can be the
 +numerical form or a string such as \*(L"http\*(R". A string will be looked
 +up first using \fIgetservbyname()\fR on the host platform but if that
 +fails a standard table of port names will be used. Currently the
 +list is http, telnet, socks, https, ssl, ftp, gopher and wais.
 +.PP
 +\&\fIBIO_set_conn_ip()\fR sets the \s-1IP\s0 address to \fBip\fR using binary form,
 +that is four bytes specifying the \s-1IP\s0 address in big-endian form.
 +.PP
 +\&\fIBIO_set_conn_int_port()\fR sets the port using \fBport\fR. \fBport\fR should
 +be of type (int *).
 +.PP
 +\&\fIBIO_get_conn_hostname()\fR returns the hostname of the connect \s-1BIO\s0 or
 +\&\s-1NULL\s0 if the \s-1BIO\s0 is initialized but no hostname is set.
 +This return value is an internal pointer which should not be modified.
 +.PP
 +\&\fIBIO_get_conn_port()\fR returns the port as a string.
 +.PP
 +\&\fIBIO_get_conn_ip()\fR returns the \s-1IP\s0 address in binary form.
 +.PP
 +\&\fIBIO_get_conn_int_port()\fR returns the port as an int.
 +.PP
 +\&\fIBIO_set_nbio()\fR sets the non blocking I/O flag to \fBn\fR. If \fBn\fR is
 +zero then blocking I/O is set. If \fBn\fR is 1 then non blocking I/O
 +is set. Blocking I/O is the default. The call to \fIBIO_set_nbio()\fR
 +should be made before the connection is established because 
 +non blocking I/O is set during the connect process.
 +.PP
 +\&\fIBIO_new_connect()\fR combines \fIBIO_new()\fR and \fIBIO_set_conn_hostname()\fR into
 +a single call: that is it creates a new connect \s-1BIO\s0 with \fBname\fR.
 +.PP
 +\&\fIBIO_do_connect()\fR attempts to connect the supplied \s-1BIO\s0. It returns 1
 +if the connection was established successfully. A zero or negative
 +value is returned if the connection could not be established, the
 +call \fIBIO_should_retry()\fR should be used for non blocking connect BIOs
 +to determine if the call should be retried.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +If blocking I/O is set then a non positive return value from any
 +I/O call is caused by an error condition, although a zero return
 +will normally mean that the connection was closed.
 +.PP
 +If the port name is supplied as part of the host name then this will
 +override any value set with \fIBIO_set_conn_port()\fR. This may be undesirable
 +if the application does not wish to allow connection to arbitrary
 +ports. This can be avoided by checking for the presence of the ':'
 +character in the passed hostname and either indicating an error or
 +truncating the string at that point.
 +.PP
 +The values returned by \fIBIO_get_conn_hostname()\fR, \fIBIO_get_conn_port()\fR,
 +\&\fIBIO_get_conn_ip()\fR and \fIBIO_get_conn_int_port()\fR are updated when a
 +connection attempt is made. Before any connection attempt the values
 +returned are those set by the application itself.
 +.PP
 +Applications do not have to call \fIBIO_do_connect()\fR but may wish to do
 +so to separate the connection process from other I/O processing.
 +.PP
 +If non blocking I/O is set then retries will be requested as appropriate.
 +.PP
 +It addition to \fIBIO_should_read()\fR and \fIBIO_should_write()\fR it is also
 +possible for \fIBIO_should_io_special()\fR to be true during the initial
 +connection process with the reason \s-1BIO_RR_CONNECT\s0. If this is returned
 +then this is an indication that a connection attempt would block,
 +the application should then take appropriate action to wait until
 +the underlying socket has connected and retry the call.
 +.PP
 +\&\fIBIO_set_conn_hostname()\fR, \fIBIO_set_conn_port()\fR, \fIBIO_set_conn_ip()\fR,
 +\&\fIBIO_set_conn_int_port()\fR, \fIBIO_get_conn_hostname()\fR, \fIBIO_get_conn_port()\fR,
 +\&\fIBIO_get_conn_ip()\fR, \fIBIO_get_conn_int_port()\fR, \fIBIO_set_nbio()\fR and
 +\&\fIBIO_do_connect()\fR are macros.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_s_connect()\fR returns the connect \s-1BIO\s0 method.
 +.PP
 +\&\fIBIO_get_fd()\fR returns the socket or \-1 if the \s-1BIO\s0 has not
 +been initialized.
 +.PP
 +\&\fIBIO_set_conn_hostname()\fR, \fIBIO_set_conn_port()\fR, \fIBIO_set_conn_ip()\fR and
 +\&\fIBIO_set_conn_int_port()\fR always return 1.
 +.PP
 +\&\fIBIO_get_conn_hostname()\fR returns the connected hostname or \s-1NULL\s0 is
 +none was set.
 +.PP
 +\&\fIBIO_get_conn_port()\fR returns a string representing the connected
 +port or \s-1NULL\s0 if not set.
 +.PP
 +\&\fIBIO_get_conn_ip()\fR returns a pointer to the connected \s-1IP\s0 address in
 +binary form or all zeros if not set.
 +.PP
 +\&\fIBIO_get_conn_int_port()\fR returns the connected port or 0 if none was
 +set.
 +.PP
 +\&\fIBIO_set_nbio()\fR always returns 1.
 +.PP
 +\&\fIBIO_do_connect()\fR returns 1 if the connection was successfully
 +established and 0 or \-1 if the connection failed.
 +.SH "EXAMPLE"
 +.IX Header "EXAMPLE"
 +This is example connects to a webserver on the local host and attempts
 +to retrieve a page and copy the result to standard output.
 +.PP
 +.Vb 10
 +\& BIO *cbio, *out;
 +\& int len;
 +\& char tmpbuf[1024];
 +\& ERR_load_crypto_strings();
 +\& cbio = BIO_new_connect("localhost:http");
 +\& out = BIO_new_fp(stdout, BIO_NOCLOSE);
 +\& if(BIO_do_connect(cbio) <= 0) {
 +\&        fprintf(stderr, "Error connecting to server\en");
 +\&        ERR_print_errors_fp(stderr);
 +\&        /* whatever ... */
 +\&        }
 +\& BIO_puts(cbio, "GET / HTTP/1.0\en\en");
 +\& for(;;) {      
 +\&        len = BIO_read(cbio, tmpbuf, 1024);
 +\&        if(len <= 0) break;
 +\&        BIO_write(out, tmpbuf, len);
 +\& }
 +\& BIO_free(cbio);
 +\& BIO_free(out);
 +.Ve
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 18522df,0000000..c8aa8c1
mode 100644,000000..100644
--- /dev/null
@@@ -1,223 -1,0 +1,223 @@@
- .TH BIO_s_fd 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_s_fd 3"
++.TH BIO_s_fd 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_s_fd, BIO_set_fd, BIO_get_fd, BIO_new_fd \- file descriptor BIO
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD *   BIO_s_fd(void);
 +\&
 +\& #define BIO_set_fd(b,fd,c)     BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
 +\& #define BIO_get_fd(b,c)        BIO_ctrl(b,BIO_C_GET_FD,0,(char *)c)
 +\&
 +\& BIO *BIO_new_fd(int fd, int close_flag);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_s_fd()\fR returns the file descriptor \s-1BIO\s0 method. This is a wrapper
 +round the platforms file descriptor routines such as \fIread()\fR and \fIwrite()\fR.
 +.PP
 +\&\fIBIO_read()\fR and \fIBIO_write()\fR read or write the underlying descriptor.
 +\&\fIBIO_puts()\fR is supported but \fIBIO_gets()\fR is not.
 +.PP
 +If the close flag is set then then \fIclose()\fR is called on the underlying
 +file descriptor when the \s-1BIO\s0 is freed.
 +.PP
 +\&\fIBIO_reset()\fR attempts to change the file pointer to the start of file
 +using lseek(fd, 0, 0).
 +.PP
 +\&\fIBIO_seek()\fR sets the file pointer to position \fBofs\fR from start of file
 +using lseek(fd, ofs, 0).
 +.PP
 +\&\fIBIO_tell()\fR returns the current file position by calling lseek(fd, 0, 1).
 +.PP
 +\&\fIBIO_set_fd()\fR sets the file descriptor of \s-1BIO\s0 \fBb\fR to \fBfd\fR and the close
 +flag to \fBc\fR.
 +.PP
 +\&\fIBIO_get_fd()\fR places the file descriptor in \fBc\fR if it is not \s-1NULL\s0, it also
 +returns the file descriptor. If \fBc\fR is not \s-1NULL\s0 it should be of type
 +(int *).
 +.PP
 +\&\fIBIO_new_fd()\fR returns a file descriptor \s-1BIO\s0 using \fBfd\fR and \fBclose_flag\fR.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +The behaviour of \fIBIO_read()\fR and \fIBIO_write()\fR depends on the behavior of the
 +platforms \fIread()\fR and \fIwrite()\fR calls on the descriptor. If the underlying 
 +file descriptor is in a non blocking mode then the \s-1BIO\s0 will behave in the
 +manner described in the \fIBIO_read\fR\|(3) and \fIBIO_should_retry\fR\|(3)
 +manual pages.
 +.PP
 +File descriptor BIOs should not be used for socket I/O. Use socket BIOs
 +instead.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_s_fd()\fR returns the file descriptor \s-1BIO\s0 method.
 +.PP
 +\&\fIBIO_reset()\fR returns zero for success and \-1 if an error occurred.
 +\&\fIBIO_seek()\fR and \fIBIO_tell()\fR return the current file position or \-1
 +is an error occurred. These values reflect the underlying \fIlseek()\fR
 +behaviour.
 +.PP
 +\&\fIBIO_set_fd()\fR always returns 1.
 +.PP
 +\&\fIBIO_get_fd()\fR returns the file descriptor or \-1 if the \s-1BIO\s0 has not
 +been initialized.
 +.PP
 +\&\fIBIO_new_fd()\fR returns the newly allocated \s-1BIO\s0 or \s-1NULL\s0 is an error
 +occurred.
 +.SH "EXAMPLE"
 +.IX Header "EXAMPLE"
 +This is a file descriptor \s-1BIO\s0 version of \*(L"Hello World\*(R":
 +.PP
 +.Vb 4
 +\& BIO *out;
 +\& out = BIO_new_fd(fileno(stdout), BIO_NOCLOSE);
 +\& BIO_printf(out, "Hello World\en");
 +\& BIO_free(out);
 +.Ve
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIBIO_seek\fR\|(3), \fIBIO_tell\fR\|(3),
 +\&\fIBIO_reset\fR\|(3), \fIBIO_read\fR\|(3),
 +\&\fIBIO_write\fR\|(3), \fIBIO_puts\fR\|(3),
 +\&\fIBIO_gets\fR\|(3), \fIBIO_printf\fR\|(3),
 +\&\fIBIO_set_close\fR\|(3), \fIBIO_get_close\fR\|(3)
index 93953e3,0000000..27997e7
mode 100644,000000..100644
--- /dev/null
@@@ -1,283 -1,0 +1,283 @@@
- .TH BIO_s_file 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_s_file 3"
++.TH BIO_s_file 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_s_file, BIO_new_file, BIO_new_fp, BIO_set_fp, BIO_get_fp,
 +BIO_read_filename, BIO_write_filename, BIO_append_filename,
 +BIO_rw_filename \- FILE bio
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD *   BIO_s_file(void);
 +\& BIO *BIO_new_file(const char *filename, const char *mode);
 +\& BIO *BIO_new_fp(FILE *stream, int flags);
 +\&
 +\& BIO_set_fp(BIO *b,FILE *fp, int flags);
 +\& BIO_get_fp(BIO *b,FILE **fpp);
 +\&
 +\& int BIO_read_filename(BIO *b, char *name)
 +\& int BIO_write_filename(BIO *b, char *name)
 +\& int BIO_append_filename(BIO *b, char *name)
 +\& int BIO_rw_filename(BIO *b, char *name)
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_s_file()\fR returns the \s-1BIO\s0 file method. As its name implies it
 +is a wrapper round the stdio \s-1FILE\s0 structure and it is a
 +source/sink \s-1BIO\s0.
 +.PP
 +Calls to \fIBIO_read()\fR and \fIBIO_write()\fR read and write data to the
 +underlying stream. \fIBIO_gets()\fR and \fIBIO_puts()\fR are supported on file BIOs.
 +.PP
 +\&\fIBIO_flush()\fR on a file \s-1BIO\s0 calls the \fIfflush()\fR function on the wrapped
 +stream.
 +.PP
 +\&\fIBIO_reset()\fR attempts to change the file pointer to the start of file
 +using fseek(stream, 0, 0).
 +.PP
 +\&\fIBIO_seek()\fR sets the file pointer to position \fBofs\fR from start of file
 +using fseek(stream, ofs, 0).
 +.PP
 +\&\fIBIO_eof()\fR calls \fIfeof()\fR.
 +.PP
 +Setting the \s-1BIO_CLOSE\s0 flag calls \fIfclose()\fR on the stream when the \s-1BIO\s0
 +is freed.
 +.PP
 +\&\fIBIO_new_file()\fR creates a new file \s-1BIO\s0 with mode \fBmode\fR the meaning
 +of \fBmode\fR is the same as the stdio function \fIfopen()\fR. The \s-1BIO_CLOSE\s0
 +flag is set on the returned \s-1BIO\s0.
 +.PP
 +\&\fIBIO_new_fp()\fR creates a file \s-1BIO\s0 wrapping \fBstream\fR. Flags can be:
 +\&\s-1BIO_CLOSE\s0, \s-1BIO_NOCLOSE\s0 (the close flag) \s-1BIO_FP_TEXT\s0 (sets the underlying
 +stream to text mode, default is binary: this only has any effect under
 +Win32).
 +.PP
 +\&\fIBIO_set_fp()\fR set the fp of a file \s-1BIO\s0 to \fBfp\fR. \fBflags\fR has the same
 +meaning as in \fIBIO_new_fp()\fR, it is a macro.
 +.PP
 +\&\fIBIO_get_fp()\fR retrieves the fp of a file \s-1BIO\s0, it is a macro.
 +.PP
 +\&\fIBIO_seek()\fR is a macro that sets the position pointer to \fBoffset\fR bytes
 +from the start of file.
 +.PP
 +\&\fIBIO_tell()\fR returns the value of the position pointer.
 +.PP
 +\&\fIBIO_read_filename()\fR, \fIBIO_write_filename()\fR, \fIBIO_append_filename()\fR and
 +\&\fIBIO_rw_filename()\fR set the file \s-1BIO\s0 \fBb\fR to use file \fBname\fR for
 +reading, writing, append or read write respectively.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +When wrapping stdout, stdin or stderr the underlying stream should not
 +normally be closed so the \s-1BIO_NOCLOSE\s0 flag should be set.
 +.PP
 +Because the file \s-1BIO\s0 calls the underlying stdio functions any quirks
 +in stdio behaviour will be mirrored by the corresponding \s-1BIO\s0.
 +.SH "EXAMPLES"
 +.IX Header "EXAMPLES"
 +File \s-1BIO\s0 \*(L"hello world\*(R":
 +.PP
 +.Vb 3
 +\& BIO *bio_out;
 +\& bio_out = BIO_new_fp(stdout, BIO_NOCLOSE);
 +\& BIO_printf(bio_out, "Hello World\en");
 +.Ve
 +.PP
 +Alternative technique:
 +.PP
 +.Vb 5
 +\& BIO *bio_out;
 +\& bio_out = BIO_new(BIO_s_file());
 +\& if(bio_out == NULL) /* Error ... */
 +\& if(!BIO_set_fp(bio_out, stdout, BIO_NOCLOSE)) /* Error ... */
 +\& BIO_printf(bio_out, "Hello World\en");
 +.Ve
 +.PP
 +Write to a file:
 +.PP
 +.Vb 5
 +\& BIO *out;
 +\& out = BIO_new_file("filename.txt", "w");
 +\& if(!out) /* Error occurred */
 +\& BIO_printf(out, "Hello World\en");
 +\& BIO_free(out);
 +.Ve
 +.PP
 +Alternative technique:
 +.PP
 +.Vb 6
 +\& BIO *out;
 +\& out = BIO_new(BIO_s_file());
 +\& if(out == NULL) /* Error ... */
 +\& if(!BIO_write_filename(out, "filename.txt")) /* Error ... */
 +\& BIO_printf(out, "Hello World\en");
 +\& BIO_free(out);
 +.Ve
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_s_file()\fR returns the file \s-1BIO\s0 method.
 +.PP
 +\&\fIBIO_new_file()\fR and \fIBIO_new_fp()\fR return a file \s-1BIO\s0 or \s-1NULL\s0 if an error
 +occurred.
 +.PP
 +\&\fIBIO_set_fp()\fR and \fIBIO_get_fp()\fR return 1 for success or 0 for failure
 +(although the current implementation never return 0).
 +.PP
 +\&\fIBIO_seek()\fR returns the same value as the underlying \fIfseek()\fR function:
 +0 for success or \-1 for failure.
 +.PP
 +\&\fIBIO_tell()\fR returns the current file position.
 +.PP
 +\&\fIBIO_read_filename()\fR, \fIBIO_write_filename()\fR,  \fIBIO_append_filename()\fR and
 +\&\fIBIO_rw_filename()\fR return 1 for success or 0 for failure.
 +.SH "BUGS"
 +.IX Header "BUGS"
 +\&\fIBIO_reset()\fR and \fIBIO_seek()\fR are implemented using \fIfseek()\fR on the underlying
 +stream. The return value for \fIfseek()\fR is 0 for success or \-1 if an error
 +occurred this differs from other types of \s-1BIO\s0 which will typically return
 +1 for success and a non positive value if an error occurred.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIBIO_seek\fR\|(3), \fIBIO_tell\fR\|(3),
 +\&\fIBIO_reset\fR\|(3), \fIBIO_flush\fR\|(3),
 +\&\fIBIO_read\fR\|(3),
 +\&\fIBIO_write\fR\|(3), \fIBIO_puts\fR\|(3),
 +\&\fIBIO_gets\fR\|(3), \fIBIO_printf\fR\|(3),
 +\&\fIBIO_set_close\fR\|(3), \fIBIO_get_close\fR\|(3)
index 80b08a1,0000000..1d4917d
mode 100644,000000..100644
--- /dev/null
@@@ -1,252 -1,0 +1,252 @@@
- .TH BIO_s_mem 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_s_mem 3"
++.TH BIO_s_mem 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_s_mem, BIO_set_mem_eof_return, BIO_get_mem_data, BIO_set_mem_buf,
 +BIO_get_mem_ptr, BIO_new_mem_buf \- memory BIO
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD *   BIO_s_mem(void);
 +\&
 +\& BIO_set_mem_eof_return(BIO *b,int v)
 +\& long BIO_get_mem_data(BIO *b, char **pp)
 +\& BIO_set_mem_buf(BIO *b,BUF_MEM *bm,int c)
 +\& BIO_get_mem_ptr(BIO *b,BUF_MEM **pp)
 +\&
 +\& BIO *BIO_new_mem_buf(void *buf, int len);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_s_mem()\fR return the memory \s-1BIO\s0 method function.
 +.PP
 +A memory \s-1BIO\s0 is a source/sink \s-1BIO\s0 which uses memory for its I/O. Data
 +written to a memory \s-1BIO\s0 is stored in a \s-1BUF_MEM\s0 structure which is extended
 +as appropriate to accommodate the stored data.
 +.PP
 +Any data written to a memory \s-1BIO\s0 can be recalled by reading from it.
 +Unless the memory \s-1BIO\s0 is read only any data read from it is deleted from
 +the \s-1BIO\s0.
 +.PP
 +Memory BIOs support \fIBIO_gets()\fR and \fIBIO_puts()\fR.
 +.PP
 +If the \s-1BIO_CLOSE\s0 flag is set when a memory \s-1BIO\s0 is freed then the underlying
 +\&\s-1BUF_MEM\s0 structure is also freed.
 +.PP
 +Calling \fIBIO_reset()\fR on a read write memory \s-1BIO\s0 clears any data in it. On a
 +read only \s-1BIO\s0 it restores the \s-1BIO\s0 to its original state and the read only
 +data can be read again.
 +.PP
 +\&\fIBIO_eof()\fR is true if no data is in the \s-1BIO\s0.
 +.PP
 +\&\fIBIO_ctrl_pending()\fR returns the number of bytes currently stored.
 +.PP
 +\&\fIBIO_set_mem_eof_return()\fR sets the behaviour of memory \s-1BIO\s0 \fBb\fR when it is
 +empty. If the \fBv\fR is zero then an empty memory \s-1BIO\s0 will return \s-1EOF\s0 (that is
 +it will return zero and BIO_should_retry(b) will be false. If \fBv\fR is non
 +zero then it will return \fBv\fR when it is empty and it will set the read retry
 +flag (that is BIO_read_retry(b) is true). To avoid ambiguity with a normal
 +positive return value \fBv\fR should be set to a negative value, typically \-1.
 +.PP
 +\&\fIBIO_get_mem_data()\fR sets \fBpp\fR to a pointer to the start of the memory BIOs data
 +and returns the total amount of data available. It is implemented as a macro.
 +.PP
 +\&\fIBIO_set_mem_buf()\fR sets the internal \s-1BUF_MEM\s0 structure to \fBbm\fR and sets the
 +close flag to \fBc\fR, that is \fBc\fR should be either \s-1BIO_CLOSE\s0 or \s-1BIO_NOCLOSE\s0.
 +It is a macro.
 +.PP
 +\&\fIBIO_get_mem_ptr()\fR places the underlying \s-1BUF_MEM\s0 structure in \fBpp\fR. It is
 +a macro.
 +.PP
 +\&\fIBIO_new_mem_buf()\fR creates a memory \s-1BIO\s0 using \fBlen\fR bytes of data at \fBbuf\fR,
 +if \fBlen\fR is \-1 then the \fBbuf\fR is assumed to be null terminated and its
 +length is determined by \fBstrlen\fR. The \s-1BIO\s0 is set to a read only state and
 +as a result cannot be written to. This is useful when some data needs to be
 +made available from a static area of memory in the form of a \s-1BIO\s0. The
 +supplied data is read directly from the supplied buffer: it is \fBnot\fR copied
 +first, so the supplied area of memory must be unchanged until the \s-1BIO\s0 is freed.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +Writes to memory BIOs will always succeed if memory is available: that is
 +their size can grow indefinitely.
 +.PP
 +Every read from a read write memory \s-1BIO\s0 will remove the data just read with
 +an internal copy operation, if a \s-1BIO\s0 contains a lots of data and it is
 +read in small chunks the operation can be very slow. The use of a read only
 +memory \s-1BIO\s0 avoids this problem. If the \s-1BIO\s0 must be read write then adding
 +a buffering \s-1BIO\s0 to the chain will speed up the process.
 +.SH "BUGS"
 +.IX Header "BUGS"
 +There should be an option to set the maximum size of a memory \s-1BIO\s0.
 +.PP
 +There should be a way to \*(L"rewind\*(R" a read write \s-1BIO\s0 without destroying
 +its contents.
 +.PP
 +The copying operation should not occur after every small read of a large \s-1BIO\s0
 +to improve efficiency.
 +.SH "EXAMPLE"
 +.IX Header "EXAMPLE"
 +Create a memory \s-1BIO\s0 and write some data to it:
 +.PP
 +.Vb 2
 +\& BIO *mem = BIO_new(BIO_s_mem());
 +\& BIO_puts(mem, "Hello World\en");
 +.Ve
 +.PP
 +Create a read only memory \s-1BIO:\s0
 +.PP
 +.Vb 3
 +\& char data[] = "Hello World";
 +\& BIO *mem;
 +\& mem = BIO_new_mem_buf(data, \-1);
 +.Ve
 +.PP
 +Extract the \s-1BUF_MEM\s0 structure from a memory \s-1BIO\s0 and then free up the \s-1BIO:\s0
 +.PP
 +.Vb 4
 +\& BUF_MEM *bptr;
 +\& BIO_get_mem_ptr(mem, &bptr);
 +\& BIO_set_close(mem, BIO_NOCLOSE); /* So BIO_free() leaves BUF_MEM alone */
 +\& BIO_free(mem);
 +.Ve
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 215f1fa,0000000..e8ac404
mode 100644,000000..100644
--- /dev/null
@@@ -1,170 -1,0 +1,170 @@@
- .TH BIO_s_null 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_s_null 3"
++.TH BIO_s_null 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_s_null \- null data sink
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD *   BIO_s_null(void);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_s_null()\fR returns the null sink \s-1BIO\s0 method. Data written to
 +the null sink is discarded, reads return \s-1EOF\s0.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +A null sink \s-1BIO\s0 behaves in a similar manner to the Unix /dev/null
 +device.
 +.PP
 +A null bio can be placed on the end of a chain to discard any data
 +passed through it.
 +.PP
 +A null sink is useful if, for example, an application wishes to digest some
 +data by writing through a digest bio but not send the digested data anywhere.
 +Since a \s-1BIO\s0 chain must normally include a source/sink \s-1BIO\s0 this can be achieved
 +by adding a null sink \s-1BIO\s0 to the end of the chain
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_s_null()\fR returns the null sink \s-1BIO\s0 method.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index c5dbee7,0000000..21745b2
mode 100644,000000..100644
--- /dev/null
@@@ -1,196 -1,0 +1,196 @@@
- .TH BIO_s_socket 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_s_socket 3"
++.TH BIO_s_socket 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_s_socket, BIO_new_socket \- socket BIO
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& BIO_METHOD *BIO_s_socket(void);
 +\&
 +\& long BIO_set_fd(BIO *b, int fd, long close_flag);
 +\& long BIO_get_fd(BIO *b, int *c);
 +\&
 +\& BIO *BIO_new_socket(int sock, int close_flag);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_s_socket()\fR returns the socket \s-1BIO\s0 method. This is a wrapper
 +round the platform's socket routines.
 +.PP
 +\&\fIBIO_read()\fR and \fIBIO_write()\fR read or write the underlying socket.
 +\&\fIBIO_puts()\fR is supported but \fIBIO_gets()\fR is not.
 +.PP
 +If the close flag is set then the socket is shut down and closed
 +when the \s-1BIO\s0 is freed.
 +.PP
 +\&\fIBIO_set_fd()\fR sets the socket of \s-1BIO\s0 \fBb\fR to \fBfd\fR and the close
 +flag to \fBclose_flag\fR.
 +.PP
 +\&\fIBIO_get_fd()\fR places the socket in \fBc\fR if it is not \s-1NULL\s0, it also
 +returns the socket. If \fBc\fR is not \s-1NULL\s0 it should be of type (int *).
 +.PP
 +\&\fIBIO_new_socket()\fR returns a socket \s-1BIO\s0 using \fBsock\fR and \fBclose_flag\fR.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +Socket BIOs also support any relevant functionality of file descriptor
 +BIOs.
 +.PP
 +The reason for having separate file descriptor and socket BIOs is that on some
 +platforms sockets are not file descriptors and use distinct I/O routines,
 +Windows is one such platform. Any code mixing the two will not work on
 +all platforms.
 +.PP
 +\&\fIBIO_set_fd()\fR and \fIBIO_get_fd()\fR are macros.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBIO_s_socket()\fR returns the socket \s-1BIO\s0 method.
 +.PP
 +\&\fIBIO_set_fd()\fR always returns 1.
 +.PP
 +\&\fIBIO_get_fd()\fR returns the socket or \-1 if the \s-1BIO\s0 has not been
 +initialized.
 +.PP
 +\&\fIBIO_new_socket()\fR returns the newly allocated \s-1BIO\s0 or \s-1NULL\s0 is an error
 +occurred.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 08a3f05,0000000..69234fb
mode 100644,000000..100644
--- /dev/null
@@@ -1,232 -1,0 +1,232 @@@
- .TH BIO_set_callback 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_set_callback 3"
++.TH BIO_set_callback 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_set_callback, BIO_get_callback, BIO_set_callback_arg, BIO_get_callback_arg,
 +BIO_debug_callback \- BIO callback functions
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& #define BIO_set_callback(b,cb)         ((b)\->callback=(cb))
 +\& #define BIO_get_callback(b)            ((b)\->callback)
 +\& #define BIO_set_callback_arg(b,arg)    ((b)\->cb_arg=(char *)(arg))
 +\& #define BIO_get_callback_arg(b)                ((b)\->cb_arg)
 +\&
 +\& long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi,
 +\&        long argl,long ret);
 +\&
 +\& typedef long (*callback)(BIO *b, int oper, const char *argp,
 +\&                        int argi, long argl, long retvalue);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBIO_set_callback()\fR and \fIBIO_get_callback()\fR set and retrieve the \s-1BIO\s0 callback,
 +they are both macros. The callback is called during most high level \s-1BIO\s0
 +operations. It can be used for debugging purposes to trace operations on
 +a \s-1BIO\s0 or to modify its operation.
 +.PP
 +\&\fIBIO_set_callback_arg()\fR and \fIBIO_get_callback_arg()\fR are macros which can be
 +used to set and retrieve an argument for use in the callback.
 +.PP
 +\&\fIBIO_debug_callback()\fR is a standard debugging callback which prints
 +out information relating to each \s-1BIO\s0 operation. If the callback
 +argument is set if is interpreted as a \s-1BIO\s0 to send the information
 +to, otherwise stderr is used.
 +.PP
 +\&\fIcallback()\fR is the callback function itself. The meaning of each
 +argument is described below.
 +.PP
 +The \s-1BIO\s0 the callback is attached to is passed in \fBb\fR.
 +.PP
 +\&\fBoper\fR is set to the operation being performed. For some operations
 +the callback is called twice, once before and once after the actual
 +operation, the latter case has \fBoper\fR or'ed with \s-1BIO_CB_RETURN\s0.
 +.PP
 +The meaning of the arguments \fBargp\fR, \fBargi\fR and \fBargl\fR depends on
 +the value of \fBoper\fR, that is the operation being performed.
 +.PP
 +\&\fBretvalue\fR is the return value that would be returned to the
 +application if no callback were present. The actual value returned
 +is the return value of the callback itself. In the case of callbacks
 +called before the actual \s-1BIO\s0 operation 1 is placed in retvalue, if
 +the return value is not positive it will be immediately returned to
 +the application and the \s-1BIO\s0 operation will not be performed.
 +.PP
 +The callback should normally simply return \fBretvalue\fR when it has
 +finished processing, unless if specifically wishes to modify the
 +value returned to the application.
 +.SH "CALLBACK OPERATIONS"
 +.IX Header "CALLBACK OPERATIONS"
 +.IP "\fBBIO_free(b)\fR" 4
 +.IX Item "BIO_free(b)"
 +callback(b, \s-1BIO_CB_FREE\s0, \s-1NULL\s0, 0L, 0L, 1L) is called before the
 +free operation.
 +.IP "\fBBIO_read(b, out, outl)\fR" 4
 +.IX Item "BIO_read(b, out, outl)"
 +callback(b, \s-1BIO_CB_READ\s0, out, outl, 0L, 1L) is called before
 +the read and callback(b, BIO_CB_READ|BIO_CB_RETURN, out, outl, 0L, retvalue)
 +after.
 +.IP "\fBBIO_write(b, in, inl)\fR" 4
 +.IX Item "BIO_write(b, in, inl)"
 +callback(b, \s-1BIO_CB_WRITE\s0, in, inl, 0L, 1L) is called before
 +the write and callback(b, BIO_CB_WRITE|BIO_CB_RETURN, in, inl, 0L, retvalue)
 +after.
 +.IP "\fBBIO_gets(b, out, outl)\fR" 4
 +.IX Item "BIO_gets(b, out, outl)"
 +callback(b, \s-1BIO_CB_GETS\s0, out, outl, 0L, 1L) is called before
 +the operation and callback(b, BIO_CB_GETS|BIO_CB_RETURN, out, outl, 0L, retvalue)
 +after.
 +.IP "\fBBIO_puts(b, in)\fR" 4
 +.IX Item "BIO_puts(b, in)"
 +callback(b, \s-1BIO_CB_WRITE\s0, in, 0, 0L, 1L) is called before
 +the operation and callback(b, BIO_CB_WRITE|BIO_CB_RETURN, in, 0, 0L, retvalue)
 +after.
 +.IP "\fBBIO_ctrl(\s-1BIO\s0 *b, int cmd, long larg, void *parg)\fR" 4
 +.IX Item "BIO_ctrl(BIO *b, int cmd, long larg, void *parg)"
 +callback(b,BIO_CB_CTRL,parg,cmd,larg,1L) is called before the call and
 +callback(b,BIO_CB_CTRL|BIO_CB_RETURN,parg,cmd, larg,ret) after.
 +.SH "EXAMPLE"
 +.IX Header "EXAMPLE"
 +The \fIBIO_debug_callback()\fR function is a good example, its source is
 +in crypto/bio/bio_cb.c
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 37ac831,0000000..fca1738
mode 100644,000000..100644
--- /dev/null
@@@ -1,247 -1,0 +1,247 @@@
- .TH BIO_should_retry 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BIO_should_retry 3"
++.TH BIO_should_retry 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BIO_should_retry, BIO_should_read, BIO_should_write,
 +BIO_should_io_special, BIO_retry_type, BIO_should_retry,
 +BIO_get_retry_BIO, BIO_get_retry_reason \- BIO retry functions
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bio.h>
 +\&
 +\& #define BIO_should_read(a)             ((a)\->flags & BIO_FLAGS_READ)
 +\& #define BIO_should_write(a)            ((a)\->flags & BIO_FLAGS_WRITE)
 +\& #define BIO_should_io_special(a)       ((a)\->flags & BIO_FLAGS_IO_SPECIAL)
 +\& #define BIO_retry_type(a)              ((a)\->flags & BIO_FLAGS_RWS)
 +\& #define BIO_should_retry(a)            ((a)\->flags & BIO_FLAGS_SHOULD_RETRY)
 +\&
 +\& #define BIO_FLAGS_READ         0x01
 +\& #define BIO_FLAGS_WRITE        0x02
 +\& #define BIO_FLAGS_IO_SPECIAL   0x04
 +\& #define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL)
 +\& #define BIO_FLAGS_SHOULD_RETRY 0x08
 +\&
 +\& BIO *  BIO_get_retry_BIO(BIO *bio, int *reason);
 +\& int    BIO_get_retry_reason(BIO *bio);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +These functions determine why a \s-1BIO\s0 is not able to read or write data.
 +They will typically be called after a failed \fIBIO_read()\fR or \fIBIO_write()\fR
 +call.
 +.PP
 +\&\fIBIO_should_retry()\fR is true if the call that produced this condition
 +should then be retried at a later time.
 +.PP
 +If \fIBIO_should_retry()\fR is false then the cause is an error condition.
 +.PP
 +\&\fIBIO_should_read()\fR is true if the cause of the condition is that a \s-1BIO\s0
 +needs to read data.
 +.PP
 +\&\fIBIO_should_write()\fR is true if the cause of the condition is that a \s-1BIO\s0
 +needs to read data.
 +.PP
 +\&\fIBIO_should_io_special()\fR is true if some \*(L"special\*(R" condition, that is a
 +reason other than reading or writing is the cause of the condition.
 +.PP
 +\&\fIBIO_get_retry_reason()\fR returns a mask of the cause of a retry condition
 +consisting of the values \fB\s-1BIO_FLAGS_READ\s0\fR, \fB\s-1BIO_FLAGS_WRITE\s0\fR,
 +\&\fB\s-1BIO_FLAGS_IO_SPECIAL\s0\fR though current \s-1BIO\s0 types will only set one of
 +these.
 +.PP
 +\&\fIBIO_get_retry_BIO()\fR determines the precise reason for the special
 +condition, it returns the \s-1BIO\s0 that caused this condition and if 
 +\&\fBreason\fR is not \s-1NULL\s0 it contains the reason code. The meaning of
 +the reason code and the action that should be taken depends on
 +the type of \s-1BIO\s0 that resulted in this condition.
 +.PP
 +\&\fIBIO_get_retry_reason()\fR returns the reason for a special condition if
 +passed the relevant \s-1BIO\s0, for example as returned by \fIBIO_get_retry_BIO()\fR.
 +.SH "NOTES"
 +.IX Header "NOTES"
 +If \fIBIO_should_retry()\fR returns false then the precise \*(L"error condition\*(R"
 +depends on the \s-1BIO\s0 type that caused it and the return code of the \s-1BIO\s0
 +operation. For example if a call to \fIBIO_read()\fR on a socket \s-1BIO\s0 returns
 +0 and \fIBIO_should_retry()\fR is false then the cause will be that the
 +connection closed. A similar condition on a file \s-1BIO\s0 will mean that it
 +has reached \s-1EOF\s0. Some \s-1BIO\s0 types may place additional information on
 +the error queue. For more details see the individual \s-1BIO\s0 type manual
 +pages.
 +.PP
 +If the underlying I/O structure is in a blocking mode almost all current
 +\&\s-1BIO\s0 types will not request a retry, because the underlying I/O
 +calls will not. If the application knows that the \s-1BIO\s0 type will never
 +signal a retry then it need not call \fIBIO_should_retry()\fR after a failed
 +\&\s-1BIO\s0 I/O call. This is typically done with file BIOs.
 +.PP
 +\&\s-1SSL\s0 BIOs are the only current exception to this rule: they can request a
 +retry even if the underlying I/O structure is blocking, if a handshake
 +occurs during a call to \fIBIO_read()\fR. An application can retry the failed
 +call immediately or avoid this situation by setting \s-1SSL_MODE_AUTO_RETRY\s0
 +on the underlying \s-1SSL\s0 structure.
 +.PP
 +While an application may retry a failed non blocking call immediately
 +this is likely to be very inefficient because the call will fail
 +repeatedly until data can be processed or is available. An application
 +will normally wait until the necessary condition is satisfied. How
 +this is done depends on the underlying I/O structure.
 +.PP
 +For example if the cause is ultimately a socket and \fIBIO_should_read()\fR
 +is true then a call to \fIselect()\fR may be made to wait until data is
 +available and then retry the \s-1BIO\s0 operation. By combining the retry
 +conditions of several non blocking BIOs in a single \fIselect()\fR call
 +it is possible to service several BIOs in a single thread, though
 +the performance may be poor if \s-1SSL\s0 BIOs are present because long delays
 +can occur during the initial handshake process.
 +.PP
 +It is possible for a \s-1BIO\s0 to block indefinitely if the underlying I/O
 +structure cannot process or return any data. This depends on the behaviour of
 +the platforms I/O functions. This is often not desirable: one solution
 +is to use non blocking I/O and use a timeout on the \fIselect()\fR (or
 +equivalent) call.
 +.SH "BUGS"
 +.IX Header "BUGS"
 +The OpenSSL \s-1ASN1\s0 functions cannot gracefully deal with non blocking I/O:
 +that is they cannot retry after a partial read or write. This is usually
 +worked around by only passing the relevant data to \s-1ASN1\s0 functions when
 +the entire structure can be read or written.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\s-1TBA\s0
index 48e291b,0000000..29ff157
mode 100644,000000..100644
--- /dev/null
@@@ -1,239 -1,0 +1,239 @@@
- .TH BN_BLINDING_new 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BN_BLINDING_new 3"
++.TH BN_BLINDING_new 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BN_BLINDING_new, BN_BLINDING_free, BN_BLINDING_update, BN_BLINDING_convert, 
 +BN_BLINDING_invert, BN_BLINDING_convert_ex, BN_BLINDING_invert_ex, 
 +BN_BLINDING_get_thread_id, BN_BLINDING_set_thread_id, BN_BLINDING_get_flags,
 +BN_BLINDING_set_flags, BN_BLINDING_create_param \- blinding related BIGNUM
 +functions.
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bn.h>
 +\&
 +\& BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai,
 +\&        BIGNUM *mod);
 +\& void BN_BLINDING_free(BN_BLINDING *b);
 +\& int BN_BLINDING_update(BN_BLINDING *b,BN_CTX *ctx);
 +\& int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
 +\& int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
 +\& int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b,
 +\&        BN_CTX *ctx);
 +\& int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b,
 +\&        BN_CTX *ctx);
 +\& unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *);
 +\& void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long);
 +\& unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
 +\& void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
 +\& BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
 +\&        const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
 +\&        int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
 +\&                          const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx),
 +\&        BN_MONT_CTX *m_ctx);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBN_BLINDING_new()\fR allocates a new \fB\s-1BN_BLINDING\s0\fR structure and copies
 +the \fBA\fR and \fBAi\fR values into the newly created \fB\s-1BN_BLINDING\s0\fR object.
 +.PP
 +\&\fIBN_BLINDING_free()\fR frees the \fB\s-1BN_BLINDING\s0\fR structure.
 +.PP
 +\&\fIBN_BLINDING_update()\fR updates the \fB\s-1BN_BLINDING\s0\fR parameters by squaring
 +the \fBA\fR and \fBAi\fR or, after specific number of uses and if the
 +necessary parameters are set, by re-creating the blinding parameters.
 +.PP
 +\&\fIBN_BLINDING_convert_ex()\fR multiplies \fBn\fR with the blinding factor \fBA\fR.
 +If \fBr\fR is not \s-1NULL\s0 a copy the inverse blinding factor \fBAi\fR will be
 +returned in \fBr\fR (this is useful if a \fB\s-1RSA\s0\fR object is shared amoung
 +several threads). \fIBN_BLINDING_invert_ex()\fR multiplies \fBn\fR with the
 +inverse blinding factor \fBAi\fR. If \fBr\fR is not \s-1NULL\s0 it will be used as
 +the inverse blinding.
 +.PP
 +\&\fIBN_BLINDING_convert()\fR and \fIBN_BLINDING_invert()\fR are wrapper
 +functions for \fIBN_BLINDING_convert_ex()\fR and \fIBN_BLINDING_invert_ex()\fR
 +with \fBr\fR set to \s-1NULL\s0.
 +.PP
 +\&\fIBN_BLINDING_set_thread_id()\fR and \fIBN_BLINDING_get_thread_id()\fR
 +set and get the \*(L"thread id\*(R" value of the \fB\s-1BN_BLINDING\s0\fR structure,
 +a field provided to users of \fB\s-1BN_BLINDING\s0\fR structure to help them
 +provide proper locking if needed for multi-threaded use. The 
 +\&\*(L"thread id\*(R" of a newly allocated \fB\s-1BN_BLINDING\s0\fR structure is zero.
 +.PP
 +\&\fIBN_BLINDING_get_flags()\fR returns the \s-1BN_BLINDING\s0 flags. Currently
 +there are two supported flags: \fB\s-1BN_BLINDING_NO_UPDATE\s0\fR and
 +\&\fB\s-1BN_BLINDING_NO_RECREATE\s0\fR. \fB\s-1BN_BLINDING_NO_UPDATE\s0\fR inhibits the
 +automatic update of the \fB\s-1BN_BLINDING\s0\fR parameters after each use
 +and \fB\s-1BN_BLINDING_NO_RECREATE\s0\fR inhibits the automatic re-creation
 +of the \fB\s-1BN_BLINDING\s0\fR parameters after a fixed number of uses (currently
 +32). In newly allocated \fB\s-1BN_BLINDING\s0\fR objects no flags are set.
 +\&\fIBN_BLINDING_set_flags()\fR sets the \fB\s-1BN_BLINDING\s0\fR parameters flags.
 +.PP
 +\&\fIBN_BLINDING_create_param()\fR creates new \fB\s-1BN_BLINDING\s0\fR parameters
 +using the exponent \fBe\fR and the modulus \fBm\fR. \fBbn_mod_exp\fR and
 +\&\fBm_ctx\fR can be used to pass special functions for exponentiation
 +(normally \fIBN_mod_exp_mont()\fR and \fB\s-1BN_MONT_CTX\s0\fR).
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBN_BLINDING_new()\fR returns the newly allocated \fB\s-1BN_BLINDING\s0\fR structure
 +or \s-1NULL\s0 in case of an error.
 +.PP
 +\&\fIBN_BLINDING_update()\fR, \fIBN_BLINDING_convert()\fR, \fIBN_BLINDING_invert()\fR,
 +\&\fIBN_BLINDING_convert_ex()\fR and \fIBN_BLINDING_invert_ex()\fR return 1 on
 +success and 0 if an error occured.
 +.PP
 +\&\fIBN_BLINDING_get_thread_id()\fR returns the thread id (a \fBunsigned long\fR
 +value) or 0 if not set.
 +.PP
 +\&\fIBN_BLINDING_get_flags()\fR returns the currently set \fB\s-1BN_BLINDING\s0\fR flags
 +(a \fBunsigned long\fR value).
 +.PP
 +\&\fIBN_BLINDING_create_param()\fR returns the newly created \fB\s-1BN_BLINDING\s0\fR 
 +parameters or \s-1NULL\s0 on error.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIbn\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +BN_BLINDING_convert_ex, BN_BLINDIND_invert_ex, BN_BLINDING_get_thread_id,
 +BN_BLINDING_set_thread_id, BN_BLINDING_set_flags, BN_BLINDING_get_flags
 +and BN_BLINDING_create_param were first introduced in OpenSSL 0.9.8
 +.SH "AUTHOR"
 +.IX Header "AUTHOR"
 +Nils Larsch for the OpenSSL project (http://www.openssl.org).
index cc5c75e,0000000..d88f3e0
mode 100644,000000..100644
--- /dev/null
@@@ -1,183 -1,0 +1,183 @@@
- .TH BN_CTX_new 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BN_CTX_new 3"
++.TH BN_CTX_new 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BN_CTX_new, BN_CTX_init, BN_CTX_free \- allocate and free BN_CTX structures
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bn.h>
 +\&
 +\& BN_CTX *BN_CTX_new(void);
 +\&
 +\& void BN_CTX_init(BN_CTX *c);
 +\&
 +\& void BN_CTX_free(BN_CTX *c);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +A \fB\s-1BN_CTX\s0\fR is a structure that holds \fB\s-1BIGNUM\s0\fR temporary variables used by
 +library functions. Since dynamic memory allocation to create \fB\s-1BIGNUM\s0\fRs
 +is rather expensive when used in conjunction with repeated subroutine
 +calls, the \fB\s-1BN_CTX\s0\fR structure is used.
 +.PP
 +\&\fIBN_CTX_new()\fR allocates and initializes a \fB\s-1BN_CTX\s0\fR
 +structure. \fIBN_CTX_init()\fR initializes an existing uninitialized
 +\&\fB\s-1BN_CTX\s0\fR.
 +.PP
 +\&\fIBN_CTX_free()\fR frees the components of the \fB\s-1BN_CTX\s0\fR, and if it was
 +created by \fIBN_CTX_new()\fR, also the structure itself.
 +If \fIBN_CTX_start\fR\|(3) has been used on the \fB\s-1BN_CTX\s0\fR,
 +\&\fIBN_CTX_end\fR\|(3) must be called before the \fB\s-1BN_CTX\s0\fR
 +may be freed by \fIBN_CTX_free()\fR.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBN_CTX_new()\fR returns a pointer to the \fB\s-1BN_CTX\s0\fR. If the allocation fails,
 +it returns \fB\s-1NULL\s0\fR and sets an error code that can be obtained by
 +\&\fIERR_get_error\fR\|(3).
 +.PP
 +\&\fIBN_CTX_init()\fR and \fIBN_CTX_free()\fR have no return values.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIbn\fR\|(3), \fIERR_get_error\fR\|(3), \fIBN_add\fR\|(3),
 +\&\fIBN_CTX_start\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +\&\fIBN_CTX_new()\fR and \fIBN_CTX_free()\fR are available in all versions on SSLeay
 +and OpenSSL. \fIBN_CTX_init()\fR was added in SSLeay 0.9.1b.
index 700126f,0000000..a8ec277
mode 100644,000000..100644
--- /dev/null
@@@ -1,182 -1,0 +1,182 @@@
- .TH BN_CTX_start 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BN_CTX_start 3"
++.TH BN_CTX_start 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BN_CTX_start, BN_CTX_get, BN_CTX_end \- use temporary BIGNUM variables
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bn.h>
 +\&
 +\& void BN_CTX_start(BN_CTX *ctx);
 +\&
 +\& BIGNUM *BN_CTX_get(BN_CTX *ctx);
 +\&
 +\& void BN_CTX_end(BN_CTX *ctx);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +These functions are used to obtain temporary \fB\s-1BIGNUM\s0\fR variables from
 +a \fB\s-1BN_CTX\s0\fR (which can been created by using \fIBN_CTX_new\fR\|(3))
 +in order to save the overhead of repeatedly creating and
 +freeing \fB\s-1BIGNUM\s0\fRs in functions that are called from inside a loop.
 +.PP
 +A function must call \fIBN_CTX_start()\fR first. Then, \fIBN_CTX_get()\fR may be
 +called repeatedly to obtain temporary \fB\s-1BIGNUM\s0\fRs. All \fIBN_CTX_get()\fR
 +calls must be made before calling any other functions that use the
 +\&\fBctx\fR as an argument.
 +.PP
 +Finally, \fIBN_CTX_end()\fR must be called before returning from the function.
 +When \fIBN_CTX_end()\fR is called, the \fB\s-1BIGNUM\s0\fR pointers obtained from
 +\&\fIBN_CTX_get()\fR become invalid.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBN_CTX_start()\fR and \fIBN_CTX_end()\fR return no values.
 +.PP
 +\&\fIBN_CTX_get()\fR returns a pointer to the \fB\s-1BIGNUM\s0\fR, or \fB\s-1NULL\s0\fR on error.
 +Once \fIBN_CTX_get()\fR has failed, the subsequent calls will return \fB\s-1NULL\s0\fR
 +as well, so it is sufficient to check the return value of the last
 +\&\fIBN_CTX_get()\fR call. In case of an error, an error code is set, which
 +can be obtained by \fIERR_get_error\fR\|(3).
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIBN_CTX_new\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +\&\fIBN_CTX_start()\fR, \fIBN_CTX_get()\fR and \fIBN_CTX_end()\fR were added in OpenSSL 0.9.5.
index 1d803e5,0000000..7c6d984
mode 100644,000000..100644
--- /dev/null
@@@ -1,257 -1,0 +1,257 @@@
- .TH BN_add 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BN_add 3"
++.TH BN_add 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BN_add, BN_sub, BN_mul, BN_sqr, BN_div, BN_mod, BN_nnmod, BN_mod_add,
 +BN_mod_sub, BN_mod_mul, BN_mod_sqr, BN_exp, BN_mod_exp, BN_gcd \-
 +arithmetic operations on BIGNUMs
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bn.h>
 +\&
 +\& int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
 +\&
 +\& int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
 +\&
 +\& int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);
 +\&
 +\& int BN_sqr(BIGNUM *r, BIGNUM *a, BN_CTX *ctx);
 +\&
 +\& int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *a, const BIGNUM *d,
 +\&         BN_CTX *ctx);
 +\&
 +\& int BN_mod(BIGNUM *rem, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
 +\&
 +\& int BN_nnmod(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
 +\&
 +\& int BN_mod_add(BIGNUM *r, BIGNUM *a, BIGNUM *b, const BIGNUM *m,
 +\&         BN_CTX *ctx);
 +\&
 +\& int BN_mod_sub(BIGNUM *r, BIGNUM *a, BIGNUM *b, const BIGNUM *m,
 +\&         BN_CTX *ctx);
 +\&
 +\& int BN_mod_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, const BIGNUM *m,
 +\&         BN_CTX *ctx);
 +\&
 +\& int BN_mod_sqr(BIGNUM *r, BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
 +\&
 +\& int BN_exp(BIGNUM *r, BIGNUM *a, BIGNUM *p, BN_CTX *ctx);
 +\&
 +\& int BN_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
 +\&         const BIGNUM *m, BN_CTX *ctx);
 +\&
 +\& int BN_gcd(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBN_add()\fR adds \fIa\fR and \fIb\fR and places the result in \fIr\fR (\f(CW\*(C`r=a+b\*(C'\fR).
 +\&\fIr\fR may be the same \fB\s-1BIGNUM\s0\fR as \fIa\fR or \fIb\fR.
 +.PP
 +\&\fIBN_sub()\fR subtracts \fIb\fR from \fIa\fR and places the result in \fIr\fR (\f(CW\*(C`r=a\-b\*(C'\fR).
 +.PP
 +\&\fIBN_mul()\fR multiplies \fIa\fR and \fIb\fR and places the result in \fIr\fR (\f(CW\*(C`r=a*b\*(C'\fR).
 +\&\fIr\fR may be the same \fB\s-1BIGNUM\s0\fR as \fIa\fR or \fIb\fR.
 +For multiplication by powers of 2, use \fIBN_lshift\fR\|(3).
 +.PP
 +\&\fIBN_sqr()\fR takes the square of \fIa\fR and places the result in \fIr\fR
 +(\f(CW\*(C`r=a^2\*(C'\fR). \fIr\fR and \fIa\fR may be the same \fB\s-1BIGNUM\s0\fR.
 +This function is faster than BN_mul(r,a,a).
 +.PP
 +\&\fIBN_div()\fR divides \fIa\fR by \fId\fR and places the result in \fIdv\fR and the
 +remainder in \fIrem\fR (\f(CW\*(C`dv=a/d, rem=a%d\*(C'\fR). Either of \fIdv\fR and \fIrem\fR may
 +be \fB\s-1NULL\s0\fR, in which case the respective value is not returned.
 +The result is rounded towards zero; thus if \fIa\fR is negative, the
 +remainder will be zero or negative.
 +For division by powers of 2, use \fIBN_rshift\fR\|(3).
 +.PP
 +\&\fIBN_mod()\fR corresponds to \fIBN_div()\fR with \fIdv\fR set to \fB\s-1NULL\s0\fR.
 +.PP
 +\&\fIBN_nnmod()\fR reduces \fIa\fR modulo \fIm\fR and places the non-negative
 +remainder in \fIr\fR.
 +.PP
 +\&\fIBN_mod_add()\fR adds \fIa\fR to \fIb\fR modulo \fIm\fR and places the non-negative
 +result in \fIr\fR.
 +.PP
 +\&\fIBN_mod_sub()\fR subtracts \fIb\fR from \fIa\fR modulo \fIm\fR and places the
 +non-negative result in \fIr\fR.
 +.PP
 +\&\fIBN_mod_mul()\fR multiplies \fIa\fR by \fIb\fR and finds the non-negative
 +remainder respective to modulus \fIm\fR (\f(CW\*(C`r=(a*b) mod m\*(C'\fR). \fIr\fR may be
 +the same \fB\s-1BIGNUM\s0\fR as \fIa\fR or \fIb\fR. For more efficient algorithms for
 +repeated computations using the same modulus, see
 +\&\fIBN_mod_mul_montgomery\fR\|(3) and
 +\&\fIBN_mod_mul_reciprocal\fR\|(3).
 +.PP
 +\&\fIBN_mod_sqr()\fR takes the square of \fIa\fR modulo \fBm\fR and places the
 +result in \fIr\fR.
 +.PP
 +\&\fIBN_exp()\fR raises \fIa\fR to the \fIp\fR\-th power and places the result in \fIr\fR
 +(\f(CW\*(C`r=a^p\*(C'\fR). This function is faster than repeated applications of
 +\&\fIBN_mul()\fR.
 +.PP
 +\&\fIBN_mod_exp()\fR computes \fIa\fR to the \fIp\fR\-th power modulo \fIm\fR (\f(CW\*(C`r=a^p %
 +m\*(C'\fR). This function uses less time and space than \fIBN_exp()\fR.
 +.PP
 +\&\fIBN_gcd()\fR computes the greatest common divisor of \fIa\fR and \fIb\fR and
 +places the result in \fIr\fR. \fIr\fR may be the same \fB\s-1BIGNUM\s0\fR as \fIa\fR or
 +\&\fIb\fR.
 +.PP
 +For all functions, \fIctx\fR is a previously allocated \fB\s-1BN_CTX\s0\fR used for
 +temporary variables; see \fIBN_CTX_new\fR\|(3).
 +.PP
 +Unless noted otherwise, the result \fB\s-1BIGNUM\s0\fR must be different from
 +the arguments.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +For all functions, 1 is returned for success, 0 on error. The return
 +value should always be checked (e.g., \f(CW\*(C`if (!BN_add(r,a,b)) goto err;\*(C'\fR).
 +The error codes can be obtained by \fIERR_get_error\fR\|(3).
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIbn\fR\|(3), \fIERR_get_error\fR\|(3), \fIBN_CTX_new\fR\|(3),
 +\&\fIBN_add_word\fR\|(3), \fIBN_set_bit\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +\&\fIBN_add()\fR, \fIBN_sub()\fR, \fIBN_sqr()\fR, \fIBN_div()\fR, \fIBN_mod()\fR, \fIBN_mod_mul()\fR,
 +\&\fIBN_mod_exp()\fR and \fIBN_gcd()\fR are available in all versions of SSLeay and
 +OpenSSL. The \fIctx\fR argument to \fIBN_mul()\fR was added in SSLeay
 +0.9.1b. \fIBN_exp()\fR appeared in SSLeay 0.9.0.
 +\&\fIBN_nnmod()\fR, \fIBN_mod_add()\fR, \fIBN_mod_sub()\fR, and \fIBN_mod_sqr()\fR were added in
 +OpenSSL 0.9.7.
index f697875,0000000..6c56632
mode 100644,000000..100644
--- /dev/null
@@@ -1,192 -1,0 +1,192 @@@
- .TH BN_add_word 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BN_add_word 3"
++.TH BN_add_word 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BN_add_word, BN_sub_word, BN_mul_word, BN_div_word, BN_mod_word \- arithmetic
 +functions on BIGNUMs with integers
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bn.h>
 +\&
 +\& int BN_add_word(BIGNUM *a, BN_ULONG w);
 +\&
 +\& int BN_sub_word(BIGNUM *a, BN_ULONG w);
 +\&
 +\& int BN_mul_word(BIGNUM *a, BN_ULONG w);
 +\&
 +\& BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
 +\&
 +\& BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +These functions perform arithmetic operations on BIGNUMs with unsigned
 +integers. They are much more efficient than the normal \s-1BIGNUM\s0
 +arithmetic operations.
 +.PP
 +\&\fIBN_add_word()\fR adds \fBw\fR to \fBa\fR (\f(CW\*(C`a+=w\*(C'\fR).
 +.PP
 +\&\fIBN_sub_word()\fR subtracts \fBw\fR from \fBa\fR (\f(CW\*(C`a\-=w\*(C'\fR).
 +.PP
 +\&\fIBN_mul_word()\fR multiplies \fBa\fR and \fBw\fR (\f(CW\*(C`a*=w\*(C'\fR).
 +.PP
 +\&\fIBN_div_word()\fR divides \fBa\fR by \fBw\fR (\f(CW\*(C`a/=w\*(C'\fR) and returns the remainder.
 +.PP
 +\&\fIBN_mod_word()\fR returns the remainder of \fBa\fR divided by \fBw\fR (\f(CW\*(C`a%w\*(C'\fR).
 +.PP
 +For \fIBN_div_word()\fR and \fIBN_mod_word()\fR, \fBw\fR must not be 0.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBN_add_word()\fR, \fIBN_sub_word()\fR and \fIBN_mul_word()\fR return 1 for success, 0
 +on error. The error codes can be obtained by \fIERR_get_error\fR\|(3).
 +.PP
 +\&\fIBN_mod_word()\fR and \fIBN_div_word()\fR return \fBa\fR%\fBw\fR on success and
 +\&\fB(\s-1BN_ULONG\s0)\-1\fR if an error occurred.
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIbn\fR\|(3), \fIERR_get_error\fR\|(3), \fIBN_add\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +\&\fIBN_add_word()\fR and \fIBN_mod_word()\fR are available in all versions of
 +SSLeay and OpenSSL. \fIBN_div_word()\fR was added in SSLeay 0.8, and
 +\&\fIBN_sub_word()\fR and \fIBN_mul_word()\fR in SSLeay 0.9.0.
 +.PP
 +Before 0.9.8a the return value for \fIBN_div_word()\fR and \fIBN_mod_word()\fR
 +in case of an error was 0.
index 0a9c70a,0000000..3f2fb0d
mode 100644,000000..100644
--- /dev/null
@@@ -1,226 -1,0 +1,226 @@@
- .TH BN_bn2bin 3 "2009-11-06" "0.9.8l" "OpenSSL"
 +.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05)
 +.\"
 +.\" Standard preamble:
 +.\" ========================================================================
 +.de Sh \" Subsection heading
 +.br
 +.if t .Sp
 +.ne 5
 +.PP
 +\fB\\$1\fR
 +.PP
 +..
 +.de Sp \" Vertical space (when we can't use .PP)
 +.if t .sp .5v
 +.if n .sp
 +..
 +.de Vb \" Begin verbatim text
 +.ft CW
 +.nf
 +.ne \\$1
 +..
 +.de Ve \" End verbatim text
 +.ft R
 +.fi
 +..
 +.\" Set up some character translations and predefined strings.  \*(-- will
 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
 +.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
 +.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
 +.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
 +.\" nothing in troff, for use with C<>.
 +.tr \(*W-
 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
 +.ie n \{\
 +.    ds -- \(*W-
 +.    ds PI pi
 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
 +.    ds L" ""
 +.    ds R" ""
 +.    ds C` ""
 +.    ds C' ""
 +'br\}
 +.el\{\
 +.    ds -- \|\(em\|
 +.    ds PI \(*p
 +.    ds L" ``
 +.    ds R" ''
 +'br\}
 +.\"
 +.\" Escape single quotes in literal strings from groff's Unicode transform.
 +.ie \n(.g .ds Aq \(aq
 +.el       .ds Aq '
 +.\"
 +.\" If the F register is turned on, we'll generate index entries on stderr for
 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
 +.\" output yourself in some meaningful fashion.
 +.ie \nF \{\
 +.    de IX
 +.    tm Index:\\$1\t\\n%\t"\\$2"
 +..
 +.    nr % 0
 +.    rr F
 +.\}
 +.el \{\
 +.    de IX
 +..
 +.\}
 +.\"
 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
 +.    \" fudge factors for nroff and troff
 +.if n \{\
 +.    ds #H 0
 +.    ds #V .8m
 +.    ds #F .3m
 +.    ds #[ \f1
 +.    ds #] \fP
 +.\}
 +.if t \{\
 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
 +.    ds #V .6m
 +.    ds #F 0
 +.    ds #[ \&
 +.    ds #] \&
 +.\}
 +.    \" simple accents for nroff and troff
 +.if n \{\
 +.    ds ' \&
 +.    ds ` \&
 +.    ds ^ \&
 +.    ds , \&
 +.    ds ~ ~
 +.    ds /
 +.\}
 +.if t \{\
 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
 +.\}
 +.    \" troff and (daisy-wheel) nroff accents
 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
 +.ds ae a\h'-(\w'a'u*4/10)'e
 +.ds Ae A\h'-(\w'A'u*4/10)'E
 +.    \" corrections for vroff
 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
 +.    \" for low resolution devices (crt and lpr)
 +.if \n(.H>23 .if \n(.V>19 \
 +\{\
 +.    ds : e
 +.    ds 8 ss
 +.    ds o a
 +.    ds d- d\h'-1'\(ga
 +.    ds D- D\h'-1'\(hy
 +.    ds th \o'bp'
 +.    ds Th \o'LP'
 +.    ds ae ae
 +.    ds Ae AE
 +.\}
 +.rm #[ #] #H #V #F C
 +.\" ========================================================================
 +.\"
 +.IX Title "BN_bn2bin 3"
++.TH BN_bn2bin 3 "2010-02-27" "0.9.8m" "OpenSSL"
 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 +.\" way too many mistakes in technical documents.
 +.if n .ad l
 +.nh
 +.SH "NAME"
 +BN_bn2bin, BN_bin2bn, BN_bn2hex, BN_bn2dec, BN_hex2bn, BN_dec2bn,
 +BN_print, BN_print_fp, BN_bn2mpi, BN_mpi2bn \- format conversions
 +.SH "SYNOPSIS"
 +.IX Header "SYNOPSIS"
 +.Vb 1
 +\& #include <openssl/bn.h>
 +\&
 +\& int BN_bn2bin(const BIGNUM *a, unsigned char *to);
 +\& BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
 +\&
 +\& char *BN_bn2hex(const BIGNUM *a);
 +\& char *BN_bn2dec(const BIGNUM *a);
 +\& int BN_hex2bn(BIGNUM **a, const char *str);
 +\& int BN_dec2bn(BIGNUM **a, const char *str);
 +\&
 +\& int BN_print(BIO *fp, const BIGNUM *a);
 +\& int BN_print_fp(FILE *fp, const BIGNUM *a);
 +\&
 +\& int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
 +\& BIGNUM *BN_mpi2bn(unsigned char *s, int len, BIGNUM *ret);
 +.Ve
 +.SH "DESCRIPTION"
 +.IX Header "DESCRIPTION"
 +\&\fIBN_bn2bin()\fR converts the absolute value of \fBa\fR into big-endian form
 +and stores it at \fBto\fR. \fBto\fR must point to BN_num_bytes(\fBa\fR) bytes of
 +memory.
 +.PP
 +\&\fIBN_bin2bn()\fR converts the positive integer in big-endian form of length
 +\&\fBlen\fR at \fBs\fR into a \fB\s-1BIGNUM\s0\fR and places it in \fBret\fR. If \fBret\fR is
 +\&\s-1NULL\s0, a new \fB\s-1BIGNUM\s0\fR is created.
 +.PP
 +\&\fIBN_bn2hex()\fR and \fIBN_bn2dec()\fR return printable strings containing the
 +hexadecimal and decimal encoding of \fBa\fR respectively. For negative
 +numbers, the string is prefaced with a leading '\-'. The string must be
 +freed later using \fIOPENSSL_free()\fR.
 +.PP
 +\&\fIBN_hex2bn()\fR converts the string \fBstr\fR containing a hexadecimal number
 +to a \fB\s-1BIGNUM\s0\fR and stores it in **\fBbn\fR. If *\fBbn\fR is \s-1NULL\s0, a new
 +\&\fB\s-1BIGNUM\s0\fR is created. If \fBbn\fR is \s-1NULL\s0, it only computes the number's
 +length in hexadecimal digits. If the string starts with '\-', the
 +number is negative. \fIBN_dec2bn()\fR is the same using the decimal system.
 +.PP
 +\&\fIBN_print()\fR and \fIBN_print_fp()\fR write the hexadecimal encoding of \fBa\fR,
 +with a leading '\-' for negative numbers, to the \fB\s-1BIO\s0\fR or \fB\s-1FILE\s0\fR
 +\&\fBfp\fR.
 +.PP
 +\&\fIBN_bn2mpi()\fR and \fIBN_mpi2bn()\fR convert \fB\s-1BIGNUM\s0\fRs from and to a format
 +that consists of the number's length in bytes represented as a 4\-byte
 +big-endian number, and the number itself in big-endian format, where
 +the most significant bit signals a negative number (the representation
 +of numbers with the \s-1MSB\s0 set is prefixed with null byte).
 +.PP
 +\&\fIBN_bn2mpi()\fR stores the representation of \fBa\fR at \fBto\fR, where \fBto\fR
 +must be large enough to hold the result. The size can be determined by
 +calling BN_bn2mpi(\fBa\fR, \s-1NULL\s0).
 +.PP
 +\&\fIBN_mpi2bn()\fR converts the \fBlen\fR bytes long representation at \fBs\fR to
 +a \fB\s-1BIGNUM\s0\fR and stores it at \fBret\fR, or in a newly allocated \fB\s-1BIGNUM\s0\fR
 +if \fBret\fR is \s-1NULL\s0.
 +.SH "RETURN VALUES"
 +.IX Header "RETURN VALUES"
 +\&\fIBN_bn2bin()\fR returns the length of the big-endian number placed at \fBto\fR.
 +\&\fIBN_bin2bn()\fR returns the \fB\s-1BIGNUM\s0\fR, \s-1NULL\s0 on error.
 +.PP
 +\&\fIBN_bn2hex()\fR and \fIBN_bn2dec()\fR return a null-terminated string, or \s-1NULL\s0
 +on error. \fIBN_hex2bn()\fR and \fIBN_dec2bn()\fR return the number's length in
 +hexadecimal or decimal digits, and 0 on error.
 +.PP
 +\&\fIBN_print_fp()\fR and \fIBN_print()\fR return 1 on success, 0 on write errors.
 +.PP
 +\&\fIBN_bn2mpi()\fR returns the length of the representation. \fIBN_mpi2bn()\fR
 +returns the \fB\s-1BIGNUM\s0\fR, and \s-1NULL\s0 on error.
 +.PP
 +The error codes can be obtained by \fIERR_get_error\fR\|(3).
 +.SH "SEE ALSO"
 +.IX Header "SEE ALSO"
 +\&\fIbn\fR\|(3), \fIERR_get_error\fR\|(3), \fIBN_zero\fR\|(3),
 +\&\fIASN1_INTEGER_to_BN\fR\|(3),
 +\&\fIBN_num_bytes\fR\|(3)
 +.SH "HISTORY"
 +.IX Header "HISTORY"
 +\&\fIBN_bn2bin()\fR, \fIBN_bin2bn()\fR, \fIBN_print_fp()\fR and \fIBN_print()\fR are available
 +in all versions of SSLeay and OpenSSL.
 +.PP
 +\&\fIBN_bn2hex()\fR, \fIBN_bn2dec()\fR, \fIBN_hex2bn()\fR, \fIBN_dec2bn()\fR, \fIBN_bn2mpi()\fR and
 +\&\fIBN_mpi2bn()\fR were added in SSLeay 0.9.0.
index 4814970,0000000..7ca87cf
mode 100644,000000..100644
---