The actual code of the license class is put into an internal class and made into long functions to make it harder for the crackers to find anything meaningful after the dlls were cracked in November 2005. The obfuscation virtualization is also applied using custom attribute. More...

Inherits System::Object.

Public Member Functions

System::ArrayPtr< System::Stringget_Products () const
 Gets Aspose product names this license is for. You need to specify value that matches the value specified in AssemblyProduct attribute. This is used to check that the license is suitable for this product. More...
 
Aspose::Pdf::EditionType get_EditionType () const
 Gets edition type. You can use this to enable/disable some features depending on the edition type. More...
 
System::String get_SerialNumber () const
 Unique license number. Used to black list stolen licenses. More...
 
System::DateTime get_SubscriptionExpiry () const
 Gets the last date of the subscription. This is to be checked against custom attribute on the assembly that contains the relase date. More...
 
System::DateTime get_LicenseExpiry () const
 This is for temporary licenses. Setter is only for unit testing. More...
 
void set_LicenseExpiry (System::DateTime value)
 This is for temporary licenses. Setter is only for unit testing. More...
 
void SetLicenseCore (System::String licenseName, System::SharedPtr< System::Reflection::Assembly > clientAssembly, bool embedded)
 
void SetLicenseCore (System::String licenseName, System::SharedPtr< System::Reflection::Assembly > clientAssembly)
 
void SetLicenseCore (System::SharedPtr< System::IO::Stream > stream)
 
 LicenseCore ()
 
- Public Member Functions inherited from System::Object
ASPOSECPP_SHARED_API Object ()
 Creates object. Initializes all internal data structures. More...
 
virtual ASPOSECPP_SHARED_API ~Object ()
 Destroys object. Frees all internal data structures. More...
 
ASPOSECPP_SHARED_API Object (Object const &x)
 Copy constructor. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
 
Objectoperator= (Object const &x)
 Assignment operator. Doesn't copy anything, really, just initializes new object and enables copy constructing subclasses. More...
 
ObjectSharedRefAdded ()
 Increments shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
int SharedRefRemovedSafe ()
 Decrements and returns shared reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
int RemovedSharedRefs (int count)
 Decreases shared reference count by specified value. More...
 
Detail::SmartPtrCounter * WeakRefAdded ()
 Increments weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
void WeakRefRemoved ()
 Decrements weak reference count. Shouldn't be called directly; instead, use smart pointers or ThisProtector. More...
 
Detail::SmartPtrCounter * GetCounter ()
 Gets reference counter data structure associated with the object. More...
 
int SharedCount () const
 Gets current value of shared refernce counter. More...
 
ASPOSECPP_SHARED_API void Lock ()
 Implements C# lock() statement locking. Call directly or use LockContext sentry object. More...
 
ASPOSECPP_SHARED_API void Unlock ()
 Implements C# lock() statement unlocking. Call directly or use LockContext sentry object. More...
 
virtual ASPOSECPP_SHARED_API bool Equals (ptr obj)
 Compares objects using C# Object.Equals semantics. More...
 
virtual ASPOSECPP_SHARED_API int GetHashCode () const
 Analog of C# Object.GetHashCode() method. Enables hashing of custom objects. More...
 
virtual ASPOSECPP_SHARED_API String ToString () const
 Analog of C# Object.ToString() method. Enables converting custom objects to string. More...
 
virtual ASPOSECPP_SHARED_API ptr MemberwiseClone () const
 Analog of C# Object.MemberwiseClone() method. Enables cloning custom types. More...
 
virtual ASPOSECPP_SHARED_API const TypeInfoGetType () const
 Gets actual type of object. Analog of C# System.Object.GetType() call. More...
 
virtual ASPOSECPP_SHARED_API bool Is (const TypeInfo &targetType) const
 Check if object represents an instance of type described by targetType. Analog of C# 'is' operator. More...
 
virtual ASPOSECPP_SHARED_API void SetTemplateWeakPtr (unsigned int argument)
 Set n'th template argument a weak pointer (rather than shared). Allows switching pointers in containers to weak mode. More...
 
template<>
bool Equals (float const &objA, float const &objB)
 
template<>
bool Equals (double const &objA, double const &objB)
 
template<>
bool ReferenceEquals (String const &str, std::nullptr_t)
 
template<>
bool ReferenceEquals (String const &str1, String const &str2)
 

Static Public Member Functions

static void ClearLicense ()
 
static LicenseState GetLicenseState_ForInternalUse ()
 Call this from your component code to check if running evaluation version or not. More...
 
static LicenseState GetLicenseState_ForPublicUse ()
 This method has to be exactly the same as GetLicenseState_ForInternalUse. It is created (and duplicated) to make hacking of Aspose licensing a little more difficult. The hacker can easily find this method and attempt to circumvent it, but it will not affect the real decision about watermark injection because it is made in GetLicenseState_ForInternalUse. More...
 
- Static Public Member Functions inherited from System::Object
static bool ReferenceEquals (ptr const &objA, ptr const &objB)
 Compares objects by reference. More...
 
template<typename T >
static std::enable_if<!IsSmartPtr< T >::value, bool >::type ReferenceEquals (T const &objA, T const &objB)
 Compares objects by reference. More...
 
template<typename T >
static std::enable_if<!IsSmartPtr< T >::value, bool >::type ReferenceEquals (T const &objA, std::nullptr_t)
 Reference-compares value type object with nullptr. More...
 
template<typename T1 , typename T2 >
static std::enable_if< IsSmartPtr< T1 >::value &&IsSmartPtr< T2 >::value, bool >::type Equals (T1 const &objA, T2 const &objB)
 Compares reference type objects in C# style. More...
 
template<typename T1 , typename T2 >
static std::enable_if<!IsSmartPtr< T1 >::value &&!IsSmartPtr< T2 >::value, bool >::type Equals (T1 const &objA, T2 const &objB)
 Compares value type objects in C# style. More...
 
static const TypeInfoType ()
 Impleemnts C# typeof(System.Object) construct. More...
 

Static Public Attributes

static bool UseInUnitTestsOneGlobalLicenseLikeOnProduction
 Generally now in unit tests used binding of license to thread that installed it. It makes sense cause in unit tests possible situation runs different tests where license must can be set and reset in different threads in same time - like in PCL conversion tests. This parameter allows if necessary force in unit tests' code usage of production model of work with license in multithreading : i.e. use fully static license(one installed license used with all threads, instead of situation where each thread will use independent copy of license) Please use try/finally blocks to ensure that this behaviour will be allways turned off after running of test that uses it More...
 

Protected Member Functions

virtual ~LicenseCore ()
 

Additional Inherited Members

- Public Types inherited from System::Object
typedef SmartPtr< Objectptr
 Alias for smart pointer type. More...
 
typedef System::Details::SharedMembersType shared_members_type
 structure to keep list of shared pointers contained in object. More...
 

Detailed Description

The actual code of the license class is put into an internal class and made into long functions to make it harder for the crackers to find anything meaningful after the dlls were cracked in November 2005. The obfuscation virtualization is also applied using custom attribute.

Constructor & Destructor Documentation

◆ LicenseCore()

Aspose::Pdf::LicenseCore::LicenseCore ( )

◆ ~LicenseCore()

virtual Aspose::Pdf::LicenseCore::~LicenseCore ( )
protectedvirtual

Member Function Documentation

◆ ClearLicense()

static void Aspose::Pdf::LicenseCore::ClearLicense ( )
static

◆ get_EditionType()

Aspose::Pdf::EditionType Aspose::Pdf::LicenseCore::get_EditionType ( ) const

Gets edition type. You can use this to enable/disable some features depending on the edition type.

◆ get_LicenseExpiry()

System::DateTime Aspose::Pdf::LicenseCore::get_LicenseExpiry ( ) const

This is for temporary licenses. Setter is only for unit testing.

◆ get_Products()

System::ArrayPtr<System::String> Aspose::Pdf::LicenseCore::get_Products ( ) const

Gets Aspose product names this license is for. You need to specify value that matches the value specified in AssemblyProduct attribute. This is used to check that the license is suitable for this product.

◆ get_SerialNumber()

System::String Aspose::Pdf::LicenseCore::get_SerialNumber ( ) const

Unique license number. Used to black list stolen licenses.

◆ get_SubscriptionExpiry()

System::DateTime Aspose::Pdf::LicenseCore::get_SubscriptionExpiry ( ) const

Gets the last date of the subscription. This is to be checked against custom attribute on the assembly that contains the relase date.

◆ GetLicenseState_ForInternalUse()

static LicenseState Aspose::Pdf::LicenseCore::GetLicenseState_ForInternalUse ( )
static

Call this from your component code to check if running evaluation version or not.

if (Aspose.Words.LicenseCore.GetLicenseState_ForInternalUse() == LicenseState.Evaluation)
InjectWatermark();

◆ GetLicenseState_ForPublicUse()

static LicenseState Aspose::Pdf::LicenseCore::GetLicenseState_ForPublicUse ( )
static

This method has to be exactly the same as GetLicenseState_ForInternalUse. It is created (and duplicated) to make hacking of Aspose licensing a little more difficult. The hacker can easily find this method and attempt to circumvent it, but it will not affect the real decision about watermark injection because it is made in GetLicenseState_ForInternalUse.

The issue was discussed and a solution proposed in https://asposeproductleads.wordpress.com/2015/08/20/license-islicensed-a-potential-security-leak/#comment-22

Returns

◆ set_LicenseExpiry()

void Aspose::Pdf::LicenseCore::set_LicenseExpiry ( System::DateTime  value)

This is for temporary licenses. Setter is only for unit testing.

◆ SetLicenseCore() [1/3]

void Aspose::Pdf::LicenseCore::SetLicenseCore ( System::String  licenseName,
System::SharedPtr< System::Reflection::Assembly clientAssembly,
bool  embedded 
)

◆ SetLicenseCore() [2/3]

void Aspose::Pdf::LicenseCore::SetLicenseCore ( System::String  licenseName,
System::SharedPtr< System::Reflection::Assembly clientAssembly 
)

◆ SetLicenseCore() [3/3]

void Aspose::Pdf::LicenseCore::SetLicenseCore ( System::SharedPtr< System::IO::Stream stream)

Member Data Documentation

◆ UseInUnitTestsOneGlobalLicenseLikeOnProduction

bool Aspose::Pdf::LicenseCore::UseInUnitTestsOneGlobalLicenseLikeOnProduction
static

Generally now in unit tests used binding of license to thread that installed it. It makes sense cause in unit tests possible situation runs different tests where license must can be set and reset in different threads in same time - like in PCL conversion tests. This parameter allows if necessary force in unit tests' code usage of production model of work with license in multithreading : i.e. use fully static license(one installed license used with all threads, instead of situation where each thread will use independent copy of license) Please use try/finally blocks to ensure that this behaviour will be allways turned off after running of test that uses it