+++ /dev/null
-/*
- * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
- *
- * The contents of this file constitute Original Code as defined in and are
- * subject to the Apple Public Source License Version 1.2 (the 'License').
- * You may not use this file except in compliance with the License. Please obtain
- * a copy of the License at http://www.apple.com/publicsource and read it before
- * using this file.
- *
- * This Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
- * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
- * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
- * specific language governing rights and limitations under the License.
- */
-
-
-// c++_examples/any/example.C - an example of how to use C++ ASN.1-BER
-// for ANY Types
-//
-// AUTHOR: Mike Sample
-// DATE: 92
-//
-// $Header: /cvs/root/Security/SecuritySNACCRuntime/c++-examples/any/Attic/example.C,v 1.1.1.1 2001/05/18 23:14:05 mb Exp $
-// $Log: example.C,v $
-// Revision 1.1.1.1 2001/05/18 23:14:05 mb
-// Move from private repository to open source repository
-//
-// Revision 1.2 2001/05/05 00:59:17 rmurphy
-// Adding darwin license headers
-//
-// Revision 1.1.1.1 1999/03/16 18:05:57 aram
-// Originals from SMIME Free Library.
-//
-// Revision 1.5 1995/07/24 15:33:33 rj
-// changed `_' to `-' in file names.
-//
-// any-test.[hC] becomes any.[hC] due to to snacc's new file name generation scheme.
-//
-// check return value of new.
-//
-// Revision 1.4 1995/02/18 13:53:07 rj
-// added #define HAVE_VARIABLE_SIZED_AUTOMATIC_ARRAYS since not every C++ compiler provides them.
-//
-// Revision 1.3 1994/10/08 01:26:21 rj
-// several \size_t'
-//
-// Revision 1.2 1994/08/31 08:56:29 rj
-// first check-in. for a list of changes to the snacc-1.1 distribution please refer to the ChangeLog.
-//
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <fstream.h>
-
-#include "asn-incl.h"
-#include "any.h"
-
-main (int argc, char *argv[])
-{
- if (argc != 2)
- {
- cerr << "Usage: " << argv[0] << " <BER data file name>" << endl;
- cerr << " Decodes the given AnyTestType BER data file" << endl;
- cerr << " and re-encodes it to stdout" << endl;
- exit (1);
- }
-
- ifstream dataFile;
- // open the data file
- dataFile.open (argv[1]);
-
- if (!dataFile)
- {
- perror ("ifstream::open");
- exit (1);
- }
-
- // get size of the data file file
- dataFile.seekg (0, ios::end);
- int dataSize = dataFile.tellg();
- dataFile.seekg (0);
-
- // read data from file into contiguous block for a buffer
-#if HAVE_VARIABLE_SIZED_AUTOMATIC_ARRAYS
- char data[dataSize];
-#else
- char *data = new char[dataSize];
- if (!data)
- return 1;
-#endif /* HAVE_VARIABLE_SIZED_AUTOMATIC_ARRAYS */
- dataFile.read (data, dataSize);
- dataFile.close();
-
- //
- // put the BER data read from the file
- // into buffer format, ready for reading from the
- // beginning
- //
- AsnBuf inputBuf;
- inputBuf.InstallData ((char*)data, dataSize);
-
- size_t decodedLen;
- AnyTestType att;
-
- if (!att.BDecPdu (inputBuf, decodedLen))
- {
- cerr << "ERROR - Decode routines failed, exiting..." << endl;
- exit (1);
- }
-
- cerr << "decodedValue AnyTestType ::= " << att << endl << endl;
-
- //
- // allocate a new buffer and set up for writing to
- //
- AsnBuf outputBuf;
-#if HAVE_VARIABLE_SIZED_AUTOMATIC_ARRAYS
- char outputData[dataSize + 512];
-#else
- char *outputData = new char[dataSize + 512];
- if (!outputData)
- return 1;
-#endif /* HAVE_VARIABLE_SIZED_AUTOMATIC_ARRAYS */
- outputBuf.Init (outputData, dataSize+512);
- outputBuf.ResetInWriteRvsMode();
-
- size_t encodedLen;
- if (!att.BEncPdu (outputBuf, encodedLen))
- {
- cerr << "ERROR - Encode routines failed" << endl;
- }
-
- // write the BER value to cout
- outputBuf.ResetInReadMode();
- for ( ; encodedLen > 0; encodedLen--)
- cout.put (outputBuf.GetByte());
-
- return 0;
-}