Socket-Class

 view release on metacpan or  search on metacpan

xs/sc_ssl/openssl/source/CHANGES  view on Meta::CPAN

     time a new context for that algorithm attempts to select an
     implementation.
     [Ian Lister (tweaked by Geoff Thorpe)]

  *) Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9
     implemention in the following ways:

     Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be
     hard coded.

     Lack of BER streaming support means one pass streaming processing is
     only supported if data is detached: setting the streaming flag is
     ignored for embedded content.

     CMS support is disabled by default and must be explicitly enabled
     with the enable-cms configuration option.
     [Steve Henson]

  *) Update the GMP engine glue to do direct copies between BIGNUM and
     mpz_t when openssl and GMP use the same limb size. Otherwise the
     existing "conversion via a text string export" trick is still used.
     [Paul Sheer <paulsheer@gmail.com>]

xs/sc_ssl/openssl/source/CHANGES  view on Meta::CPAN

  *) Support for directoryName in GeneralName related extensions
     in config files.
     [Steve Henson]

  *) Make it possible to link applications using Makefile.shared.
     Make that possible even when linking against static libraries!
     [Richard Levitte]

  *) Support for single pass processing for S/MIME signing. This now
     means that S/MIME signing can be done from a pipe, in addition
     cleartext signing (multipart/signed type) is effectively streaming
     and the signed data does not need to be all held in memory.

     This is done with a new flag PKCS7_STREAM. When this flag is set
     PKCS7_sign() only initializes the PKCS7 structure and the actual signing
     is done after the data is output (and digests calculated) in
     SMIME_write_PKCS7().
     [Steve Henson]

  *) Add full support for -rpath/-R, both in shared libraries and
     applications, at least on the platforms where it's known how

xs/sc_ssl/openssl/source/CHANGES  view on Meta::CPAN

     options work when creating a PKCS#12 file. New option -nomac
     to omit the mac, NONE can be set for an encryption algorithm.
     New code is modified to use the enhanced PKCS12_create()
     instead of the low level API.
     [Steve Henson]

  *) Extend ASN1 encoder to support indefinite length constructed
     encoding. This can output sequences tags and octet strings in
     this form. Modify pk7_asn1.c to support indefinite length
     encoding. This is experimental and needs additional code to
     be useful, such as an ASN1 bio and some enhanced streaming
     PKCS#7 code.

     Extend template encode functionality so that tagging is passed
     down to the template encoder.
     [Steve Henson]

  *) Let 'openssl req' fail if an argument to '-newkey' is not
     recognized instead of using RSA as a default.
     [Bodo Moeller]

xs/sc_ssl/openssl/source/apps/cms.c  view on Meta::CPAN

		si = sk_CMS_SignerInfo_value(sis, 0);
		srcms = CMS_sign_receipt(si, signer, key, other, flags);
		if (!srcms)
			goto end;
		CMS_ContentInfo_free(cms);
		cms = srcms;
		}
	else if (operation & SMIME_SIGNERS)
		{
		int i;
		/* If detached data content we enable streaming if
		 * S/MIME output format.
		 */
		if (operation == SMIME_SIGN)
			{
				
			if (flags & CMS_DETACHED)
				{
				if (outformat == FORMAT_SMIME)
					flags |= CMS_STREAM;
				}

xs/sc_ssl/openssl/source/apps/cms.c  view on Meta::CPAN

			si = CMS_add1_signer(cms, signer, key, sign_md, flags);
			if (!si)
				goto end;
			if (rr && !CMS_add1_ReceiptRequest(si, rr))
				goto end;
			X509_free(signer);
			signer = NULL;
			EVP_PKEY_free(key);
			key = NULL;
			}
		/* If not streaming or resigning finalize structure */
		if ((operation == SMIME_SIGN) && !(flags & CMS_STREAM))
			{
			if (!CMS_final(cms, in, NULL, flags))
				goto end;
			}
		}

	if (!cms)
		{
		BIO_printf(bio_err, "Error creating CMS structure\n");

xs/sc_ssl/openssl/source/crypto/asn1/asn1_err.c  view on Meta::CPAN

{ERR_REASON(ASN1_R_NULL_IS_WRONG_LENGTH) ,"null is wrong length"},
{ERR_REASON(ASN1_R_OBJECT_NOT_ASCII_FORMAT),"object not ascii format"},
{ERR_REASON(ASN1_R_ODD_NUMBER_OF_CHARS)  ,"odd number of chars"},
{ERR_REASON(ASN1_R_PRIVATE_KEY_HEADER_MISSING),"private key header missing"},
{ERR_REASON(ASN1_R_SECOND_NUMBER_TOO_LARGE),"second number too large"},
{ERR_REASON(ASN1_R_SEQUENCE_LENGTH_MISMATCH),"sequence length mismatch"},
{ERR_REASON(ASN1_R_SEQUENCE_NOT_CONSTRUCTED),"sequence not constructed"},
{ERR_REASON(ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG),"sequence or set needs config"},
{ERR_REASON(ASN1_R_SHORT_LINE)           ,"short line"},
{ERR_REASON(ASN1_R_SIG_INVALID_MIME_TYPE),"sig invalid mime type"},
{ERR_REASON(ASN1_R_STREAMING_NOT_SUPPORTED),"streaming not supported"},
{ERR_REASON(ASN1_R_STRING_TOO_LONG)      ,"string too long"},
{ERR_REASON(ASN1_R_STRING_TOO_SHORT)     ,"string too short"},
{ERR_REASON(ASN1_R_TAG_VALUE_TOO_HIGH)   ,"tag value too high"},
{ERR_REASON(ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD),"the asn1 object identifier is not known for this md"},
{ERR_REASON(ASN1_R_TIME_NOT_ASCII_FORMAT),"time not ascii format"},
{ERR_REASON(ASN1_R_TOO_LONG)             ,"too long"},
{ERR_REASON(ASN1_R_TYPE_NOT_CONSTRUCTED) ,"type not constructed"},
{ERR_REASON(ASN1_R_UNABLE_TO_DECODE_RSA_KEY),"unable to decode rsa key"},
{ERR_REASON(ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY),"unable to decode rsa private key"},
{ERR_REASON(ASN1_R_UNEXPECTED_EOC)       ,"unexpected eoc"},

xs/sc_ssl/openssl/source/crypto/asn1/asn_mime.c  view on Meta::CPAN

 */

#include <stdio.h>
#include <ctype.h>
#include "cryptlib.h"
#include <openssl/rand.h>
#include <openssl/x509.h>
#include <openssl/asn1.h>
#include <openssl/asn1t.h>

/* Generalised MIME like utilities for streaming ASN1. Although many
 * have a PKCS7/CMS like flavour others are more general purpose.
 */

/* MIME format structures
 * Note that all are translated to lower case apart from
 * parameter values. Quotes are stripped off
 */

typedef struct {
char *param_name;			/* Param name e.g. "micalg" */

xs/sc_ssl/openssl/source/crypto/asn1/asn_mime.c  view on Meta::CPAN

}

/* Copy text from one BIO to another making the output CRLF at EOL */
int SMIME_crlf_copy(BIO *in, BIO *out, int flags)
{
	BIO *bf;
	char eol;
	int len;
	char linebuf[MAX_SMLEN];
	/* Buffer output so we don't write one line at a time. This is
	 * useful when streaming as we don't end up with one OCTET STRING
	 * per line.
	 */
	bf = BIO_new(BIO_f_buffer());
	if (!bf)
		return 0;
	out = BIO_push(bf, out);
	if(flags & SMIME_BINARY)
		{
		while((len = BIO_read(in, linebuf, MAX_SMLEN)) > 0)
						BIO_write(out, linebuf, len);

xs/sc_ssl/openssl/source/test/cms-test.pl  view on Meta::CPAN


    [
        "signed detached content DER format, RSA key",
        "-sign -in smcont.txt -outform DER"
          . " -signer $smdir/smrsa1.pem -out test.cms",
        "-verify -in test.cms -inform DER "
          . " -CAfile $smdir/smroot.pem -out smtst.txt -content smcont.txt"
    ],

    [
        "signed content test streaming BER format, RSA",
        "-sign -in smcont.txt -outform DER -nodetach"
          . " -stream -signer $smdir/smrsa1.pem -out test.cms",
        "-verify -in test.cms -inform DER "
          . " -CAfile $smdir/smroot.pem -out smtst.txt"
    ],

    [
        "signed content DER format, DSA key",
        "-sign -in smcont.txt -outform DER -nodetach"
          . " -signer $smdir/smdsa1.pem -out test.cms",

xs/sc_ssl/openssl/source/test/cms-test.pl  view on Meta::CPAN


    [
        "signed detached content DER format, add RSA signer",
        "-resign -inform DER -in test.cms -outform DER"
          . " -signer $smdir/smrsa1.pem -out test2.cms",
        "-verify -in test2.cms -inform DER "
          . " -CAfile $smdir/smroot.pem -out smtst.txt -content smcont.txt"
    ],

    [
        "signed content test streaming BER format, DSA key",
        "-sign -in smcont.txt -outform DER -nodetach"
          . " -stream -signer $smdir/smdsa1.pem -out test.cms",
        "-verify -in test.cms -inform DER "
          . " -CAfile $smdir/smroot.pem -out smtst.txt"
    ],

    [
        "signed content test streaming BER format, 2 DSA and 2 RSA keys",
        "-sign -in smcont.txt -outform DER -nodetach"
          . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem"
          . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem"
          . " -stream -out test.cms",
        "-verify -in test.cms -inform DER "
          . " -CAfile $smdir/smroot.pem -out smtst.txt"
    ],

    [
"signed content test streaming BER format, 2 DSA and 2 RSA keys, no attributes",
        "-sign -in smcont.txt -outform DER -noattr -nodetach"
          . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem"
          . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem"
          . " -stream -out test.cms",
        "-verify -in test.cms -inform DER "
          . " -CAfile $smdir/smroot.pem -out smtst.txt"
    ],

    [
        "signed content test streaming S/MIME format, 2 DSA and 2 RSA keys",
        "-sign -in smcont.txt -nodetach"
          . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem"
          . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem"
          . " -stream -out test.cms",
        "-verify -in test.cms " . " -CAfile $smdir/smroot.pem -out smtst.txt"
    ],

    [
"signed content test streaming multipart S/MIME format, 2 DSA and 2 RSA keys",
        "-sign -in smcont.txt"
          . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem"
          . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem"
          . " -stream -out test.cms",
        "-verify -in test.cms " . " -CAfile $smdir/smroot.pem -out smtst.txt"
    ],

    [
        "enveloped content test streaming S/MIME format, 3 recipients",
        "-encrypt -in smcont.txt"
          . " -stream -out test.cms"
          . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ",
        "-decrypt -recip $smdir/smrsa1.pem -in test.cms -out smtst.txt"
    ],

    [
"enveloped content test streaming S/MIME format, 3 recipients, 3rd used",
        "-encrypt -in smcont.txt"
          . " -stream -out test.cms"
          . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ",
        "-decrypt -recip $smdir/smrsa3.pem -in test.cms -out smtst.txt"
    ],

    [
"enveloped content test streaming S/MIME format, 3 recipients, key only used",
        "-encrypt -in smcont.txt"
          . " -stream -out test.cms"
          . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ",
        "-decrypt -inkey $smdir/smrsa3.pem -in test.cms -out smtst.txt"
    ],

    [
"enveloped content test streaming S/MIME format, AES-256 cipher, 3 recipients",
        "-encrypt -in smcont.txt"
          . " -aes256 -stream -out test.cms"
          . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ",
        "-decrypt -recip $smdir/smrsa1.pem -in test.cms -out smtst.txt"
    ],

);

my @smime_cms_tests = (

    [
        "signed content test streaming BER format, 2 DSA and 2 RSA keys, keyid",
        "-sign -in smcont.txt -outform DER -nodetach -keyid"
          . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem"
          . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem"
          . " -stream -out test.cms",
        "-verify -in test.cms -inform DER "
          . " -CAfile $smdir/smroot.pem -out smtst.txt"
    ],

    [
        "signed content test streaming PEM format, 2 DSA and 2 RSA keys",
        "-sign -in smcont.txt -outform PEM -nodetach"
          . " -signer $smdir/smrsa1.pem -signer $smdir/smrsa2.pem"
          . " -signer $smdir/smdsa1.pem -signer $smdir/smdsa2.pem"
          . " -stream -out test.cms",
        "-verify -in test.cms -inform PEM "
          . " -CAfile $smdir/smroot.pem -out smtst.txt"
    ],

    [
        "signed content MIME format, RSA key, signed receipt request",

xs/sc_ssl/openssl/source/test/cms-test.pl  view on Meta::CPAN

    [
        "signed receipt MIME format, RSA key",
        "-sign_receipt -in test.cms"
          . " -signer $smdir/smrsa2.pem"
          . " -out test2.cms",
        "-verify_receipt test2.cms -in test.cms"
          . " -CAfile $smdir/smroot.pem"
    ],

    [
        "enveloped content test streaming S/MIME format, 3 recipients, keyid",
        "-encrypt -in smcont.txt"
          . " -stream -out test.cms -keyid"
          . " $smdir/smrsa1.pem $smdir/smrsa2.pem $smdir/smrsa3.pem ",
        "-decrypt -recip $smdir/smrsa1.pem -in test.cms -out smtst.txt"
    ],

    [
        "enveloped content test streaming PEM format, KEK",
        "-encrypt -in smcont.txt -outform PEM -aes128"
          . " -stream -out test.cms "
          . " -secretkey 000102030405060708090A0B0C0D0E0F "
          . " -secretkeyid C0FEE0",
        "-decrypt -in test.cms -out smtst.txt -inform PEM"
          . " -secretkey 000102030405060708090A0B0C0D0E0F "
          . " -secretkeyid C0FEE0"
    ],

    [
        "enveloped content test streaming PEM format, KEK, key only",
        "-encrypt -in smcont.txt -outform PEM -aes128"
          . " -stream -out test.cms "
          . " -secretkey 000102030405060708090A0B0C0D0E0F "
          . " -secretkeyid C0FEE0",
        "-decrypt -in test.cms -out smtst.txt -inform PEM"
          . " -secretkey 000102030405060708090A0B0C0D0E0F "
    ],

    [
        "data content test streaming PEM format",
        "-data_create -in smcont.txt -outform PEM -nodetach"
          . " -stream -out test.cms",
        "-data_out -in test.cms -inform PEM -out smtst.txt"
    ],

    [
        "encrypted content test streaming PEM format, 128 bit RC2 key",
        "-EncryptedData_encrypt -in smcont.txt -outform PEM"
          . " -rc2 -secretkey 000102030405060708090A0B0C0D0E0F"
          . " -stream -out test.cms",
        "-EncryptedData_decrypt -in test.cms -inform PEM "
          . " -secretkey 000102030405060708090A0B0C0D0E0F -out smtst.txt"
    ],

    [
        "encrypted content test streaming PEM format, 40 bit RC2 key",
        "-EncryptedData_encrypt -in smcont.txt -outform PEM"
          . " -rc2 -secretkey 0001020304"
          . " -stream -out test.cms",
        "-EncryptedData_decrypt -in test.cms -inform PEM "
          . " -secretkey 0001020304 -out smtst.txt"
    ],

    [
        "encrypted content test streaming PEM format, triple DES key",
        "-EncryptedData_encrypt -in smcont.txt -outform PEM"
          . " -des3 -secretkey 000102030405060708090A0B0C0D0E0F1011121314151617"
          . " -stream -out test.cms",
        "-EncryptedData_decrypt -in test.cms -inform PEM "
          . " -secretkey 000102030405060708090A0B0C0D0E0F1011121314151617"
          . " -out smtst.txt"
    ],

    [
        "encrypted content test streaming PEM format, 128 bit AES key",
        "-EncryptedData_encrypt -in smcont.txt -outform PEM"
          . " -aes128 -secretkey 000102030405060708090A0B0C0D0E0F"
          . " -stream -out test.cms",
        "-EncryptedData_decrypt -in test.cms -inform PEM "
          . " -secretkey 000102030405060708090A0B0C0D0E0F -out smtst.txt"
    ],

);

my @smime_cms_comp_tests = (

    [
        "compressed content test streaming PEM format",
        "-compress -in smcont.txt -outform PEM -nodetach"
          . " -stream -out test.cms",
        "-uncompress -in test.cms -inform PEM -out smtst.txt"
    ]

);

print "PKCS#7 <=> PKCS#7 consistency tests\n";

run_smime_tests( \$badcmd, \@smime_pkcs7_tests, $pk7cmd, $pk7cmd );

xs/sc_ssl/openssl/source/test/cms-test.pl  view on Meta::CPAN


sub run_smime_tests {
    my ( $rv, $aref, $scmd, $vcmd ) = @_;

    foreach $smtst (@$aref) {
        my ( $tnam, $rscmd, $rvcmd ) = @$smtst;
	if ($ossl8)
		{
		# Skip smime resign: 0.9.8 smime doesn't support -resign	
		next if ($scmd =~ /smime/ && $rscmd =~ /-resign/);
		# Disable streaming: option not supported in 0.9.8
		$tnam =~ s/streaming//;	
		$rscmd =~ s/-stream//;	
		$rvcmd =~ s/-stream//;
		}
        system("$scmd$rscmd 2>cms.err 1>cms.out");
        if ($?) {
            print "$tnam: generation error\n";
            $$rv++;
            exit 1 if $halt_err;
            next;
        }



( run in 0.264 second using v1.01-cache-2.11-cpan-4d50c553e7e )