|  |  | 
|  | datum			T_DATUM | 
|  | EVP_MD_CTX *		T_MD_CTX | 
|  | EVP_CIPHER_CTX *	T_CIPHER_CTX | 
|  | BIGNUM *		T_BIGNUM | 
|  | SSL_METHOD *		T_SSL_METHOD | 
|  | SSL_CTX *		T_SSL_CTX | 
|  | SSL_CIPHER *		T_SSL_CIPHER | 
|  | SSL *			T_SSL | 
|  | BIO *			T_BIO | 
|  | X509 *			T_X509 | 
|  |  | 
|  | INPUT | 
|  | T_DATUM | 
|  | $var.dptr=SvPV($arg,$var.dsize); | 
|  | T_MD_CTX | 
|  | if (sv_derived_from($arg, \"OpenSSL::MD\")) { | 
|  | IV tmp = SvIV((SV*)SvRV($arg)); | 
|  | $var = (EVP_MD_CTX *) tmp; | 
|  | } | 
|  | else | 
|  | croak(\"$var is not of type OpenSSL::MD\") | 
|  | T_CIPHER_CTX | 
|  | if (sv_derived_from($arg, \"OpenSSL::Cipher\")) { | 
|  | IV tmp = SvIV((SV*)SvRV($arg)); | 
|  | $var = (EVP_CIPHER_CTX *) tmp; | 
|  | } | 
|  | else | 
|  | croak(\"$var is not of type OpenSSL::Cipher\") | 
|  | T_BIGNUM | 
|  | sv_to_BIGNUM(&($var),$arg,\"$var is not of type OpenSSL::MD, int or string\") | 
|  | T_SSL_METHOD | 
|  | if (sv_derived_from($arg, \"OpenSSL::SSL::METHOD\")) { | 
|  | IV tmp = SvIV((SV*)SvRV($arg)); | 
|  | $var = (SSL_METHOD *) tmp; | 
|  | } | 
|  | else | 
|  | croak(\"$var is not of type OpenSSL::SSL::METHOD\") | 
|  | T_SSL_CTX | 
|  | if (sv_derived_from($arg, \"OpenSSL::SSL::CTX\")) { | 
|  | IV tmp = SvIV((SV*)SvRV($arg)); | 
|  | $var = (SSL_CTX *) tmp; | 
|  | } | 
|  | else | 
|  | croak(\"$var is not of type OpenSSL::SSL::CTX\") | 
|  | T_SSL_CIPHER | 
|  | if (sv_derived_from($arg, \"OpenSSL::SSL::CIPHER\")) { | 
|  | IV tmp = SvIV((SV*)SvRV($arg)); | 
|  | $var = (SSL_CIPHER *) tmp; | 
|  | } | 
|  | else | 
|  | croak(\"$var is not of type OpenSSL::SSL::CIPHER\") | 
|  | T_SSL | 
|  | if (sv_derived_from($arg, \"OpenSSL::SSL\")) { | 
|  | IV tmp = SvIV((SV*)SvRV($arg)); | 
|  | $var = (SSL *) tmp; | 
|  | } | 
|  | else | 
|  | croak(\"$var is not of type OpenSSL::SSL\") | 
|  | T_BIO | 
|  | if (sv_derived_from($arg, \"OpenSSL::BIO\")) { | 
|  | IV tmp = SvIV((SV*)SvRV($arg)); | 
|  | $var = (BIO *) tmp; | 
|  | } | 
|  | else | 
|  | croak(\"$var is not of type OpenSSL::BIO\") | 
|  | T_X509 | 
|  | if (sv_derived_from($arg, \"OpenSSL::X509\")) { | 
|  | IV tmp = SvIV((SV*)SvRV($arg)); | 
|  | $var = (X509 *) tmp; | 
|  | } | 
|  | else | 
|  | croak(\"$var is not of type OpenSSL::X509\") | 
|  | OUTPUT | 
|  | T_DATUM | 
|  | sv_setpvn($arg,$var.dptr,$var.dsize); | 
|  | T_MD_CTX | 
|  | sv_setref_pv($arg, \"OpenSSL::MD\", (void*)$var); | 
|  | T_CIPHER_CTX | 
|  | sv_setref_pv($arg, \"OpenSSL::Cipher\", (void*)$var); | 
|  | T_BIGNUM | 
|  | sv_setref_pv($arg, \"OpenSSL::BN\", (void*)$var); | 
|  | T_SSL_METHOD | 
|  | sv_setref_pv($arg, \"OpenSSL::SSL::METHOD\", (void*)$var); | 
|  | T_SSL_CTX | 
|  | sv_setref_pv($arg, \"OpenSSL::SSL::CTX\", (void*)$var); | 
|  | T_SSL_CIPHER | 
|  | sv_setref_pv($arg, \"OpenSSL::SSL::CIPHER\", (void*)$var); | 
|  | T_SSL | 
|  | sv_setref_pv($arg, \"OpenSSL::SSL\", (void*)$var); | 
|  | T_BIO | 
|  | sv_setref_pv($arg, \"OpenSSL::BIO\", (void*)$var); | 
|  | T_X509 | 
|  | sv_setref_pv($arg, \"OpenSSL::X509\", (void*)$var); | 
|  |  | 
|  |  |