namespace CCL::Security::Crypto

namespace Crypto {

// namespaces

namespace CCL::Security::Crypto::Internal;
namespace CCL::Security::Crypto::MaterialUtils;

// typedefs

typedef const Block& BlockRef;

// enums

enum Algorithm;
enum BlockCipherMode;
enum Definitions;
enum Hash;
enum MaterialType;
enum Mode;

// structs

struct Block;
struct IASN1ContentHandler;
struct ICryptoFactory;
struct ICryptoKeyStore;
struct ICryptor;
struct IInteger;
struct IPackageVendorSigningAuthority;
struct IProcessor;

// classes

class AES;
class BER;
class Cipher;
class DER;
class HKDF;
class HMAC_SHA1;
class HMAC_SHA256;
class IntegerStatics;
class MD5;
class Material;
class PKCS7;
class PackageSignature;
class PackageSigner;
class PackageVendorSignature;
class PackageVendorSigningAuthority;
class PackageVendorStore;
class PackageVerifier;
class PackageVerifierOptions;
class RSA;
class RandomPool;
class RawMaterial;
class SHA1;
class SHA256;
class SignedMessage;
class SignedXmlMessage;
class Signer;
class Verifier;

// global variables

 IASN1ContentHandler;
 IInteger;
 ICryptoKeyStore;
 IProcessor;
 ICryptor;
 ICryptoFactory;

} // namespace Crypto