dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::license Class Reference

#include <dx_license.h>

Inheritance diagram for dx::license:
Collaboration diagram for dx::license:

Classes

struct  types

Public Types

enum  { none , demo , beta , perpetual }
typedef std::pair<::CFStringRef, std::function< bool(::CFTypeRef)> > check

Public Member Functions

::CFStringRef cn () const
::CFIndex count () const noexcept
 dx_catchall_rethrow () const reference &retain() const noexcept
::CFArrayRef emails () const
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
CFTypeID id () noexcept
referenceinitialize (::SecCertificateRef cf_object, bool retain=true) try
::CFDataRef issuers () const noexcept
 The issuer is a sequence in the format used by SecItemCopyMatching. The content returned is a DER-encoded X.509 distinguished name. For a display version of the issuer, call SecCertificateCopyValues. The caller must CFRelease the value returned.
 license (::CFDictionaryRef dictionary, decltype(checks)&&checks, ::SecCertificateRef root=nullptr)
 the first keychain certificate matching the query dictionary that satisfies every check, chains to root (the only trust anchor; keychain trust settings otherwise) and, unless perpetual, has not expired
 operator bool () const noexcept
 operator::CFDataRef () const noexcept
 operator::CFDictionaryRef () const noexcept
 operator::CFTypeID () const noexcept
 operator::SecCertificateRef () const noexcept
 operator::SecKeyRef () const noexcept
 Retrieves the public key for a given certificate.
::CFTypeRef operator[] (::CFArrayRef array) const noexcept
::CFTypeRef operator[] (::CFStringRef oid) const try
referencerelease () noexcept
::CFDataRef serial () const noexcept
 Return the content of a DER-encoded integer (without the tag and length fields) for this certificate's serial number. The caller must CFRelease the value returned.
::CFDataRef subjects () const noexcept
 The subject is a sequence in the format used by SecItemCopyMatching. The content returned is a DER-encoded X.509 distinguished name. For a display version of the subject, call SecCertificateCopyValues. The caller must CFRelease the value returned.
::CFStringRef summary () const noexcept
::CFDateRef valid_after () const noexcept
 Returns the absolute time at which the given certificate becomes valid, or NULL if this value could not be obtained. The caller must CFRelease the value returned.
::CFDateRef valid_before () const noexcept
 Returns the absolute time at which the given certificate becomes valid, or NULL if this value could not be obtained. The caller must CFRelease the value returned.

Static Public Member Functions

template<typename satisfied_t>
static bool constraints (::CFTypeRef value, satisfied_t satisfied)
 evaluate a constraint list (DX_OID_LICENSE_CONSTRAINTS) in disjunctive normal form: entries "NAME=VALUE[&NAME=VALUE].." are OR'ed, the NAME=VALUE terms of one entry are AND'ed; satisfied(name, value) decides a single term; an absent or empty list is not satisfied: every license is bound
static void der (::CFDataRef data, std::vector< std::string > &result) noexcept
 decode DER: a single UTF8String/PrintableString/IA5String, or a SEQUENCE OF such strings
template<typename visit_t>
static bool each (::CFTypeRef value, visit_t visit)
 iterate a certificate value: a "section" array of {label, value} dictionaries, or a single item; stops and returns false as soon as visit(label, item) does
static std::vector< std::string > strings (::CFTypeRef value)
 collect the strings of a private extension value (DX_OID_LICENSE_*) as reported by SecCertificateCopyValues(): parsed elements labeled "Data" (e.g. each string of a SEQUENCE OF UTF8String), a DER encoded element labeled "Unparsed Data" (a single string or a SEQUENCE OF strings), or a plain string
static std::string utf8 (::CFTypeRef value)
 the first string of a private extension value

Public Attributes

std::map< check::first_type, check::second_type > checks {}
enum dx::license:: { ... }  type

Static Public Attributes

static constexpr const char * name [] {"", "demo", "beta", "perpetual"}

Protected Attributes

::SecCertificateRef cf_object

Detailed Description

Member Typedef Documentation

◆ check

typedef std::pair<::CFStringRef, std::function<bool(::CFTypeRef)> > dx::license::check

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
none 
demo 
beta 
perpetual 

Constructor & Destructor Documentation

◆ license()

dx::license::license ( ::CFDictionaryRef dictionary,
decltype(checks)&& checks,
::SecCertificateRef root = nullptr )
inline

the first keychain certificate matching the query dictionary that satisfies every check, chains to root (the only trust anchor; keychain trust settings otherwise) and, unless perpetual, has not expired

Parameters
checksOID -> satisfied(value): value as reported by SecCertificateCopyValues(), nullptr when absent
Here is the call graph for this function:

Member Function Documentation

◆ cn()

::CFStringRef sec::certificate::cn ( ) const
inlineinherited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ constraints()

template<typename satisfied_t>
bool dx::license::constraints ( ::CFTypeRef value,
satisfied_t satisfied )
inlinestatic

evaluate a constraint list (DX_OID_LICENSE_CONSTRAINTS) in disjunctive normal form: entries "NAME=VALUE[&NAME=VALUE].." are OR'ed, the NAME=VALUE terms of one entry are AND'ed; satisfied(name, value) decides a single term; an absent or empty list is not satisfied: every license is bound

Here is the call graph for this function:

◆ count()

::CFIndex cf::reference< ::SecCertificateRef >::count ( ) const
inlinenoexceptinherited
Here is the caller graph for this function:

◆ der()

void dx::license::der ( ::CFDataRef data,
std::vector< std::string > & result )
inlinestaticnoexcept

decode DER: a single UTF8String/PrintableString/IA5String, or a SEQUENCE OF such strings

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dx_catchall_rethrow()

cf::reference< ::SecCertificateRef >::dx_catchall_rethrow ( ) const &
inlinenoexceptinherited

◆ each()

template<typename visit_t>
bool dx::license::each ( ::CFTypeRef value,
visit_t visit )
inlinestatic

iterate a certificate value: a "section" array of {label, value} dictionaries, or a single item; stops and returns false as soon as visit(label, item) does

Here is the caller graph for this function:

◆ emails()

::CFArrayRef sec::certificate::emails ( ) const
inlineinherited
Here is the call graph for this function:
Here is the caller graph for this function:

◆ id() [1/22]

CFTypeID cf::reference<::CFMutableArrayRef >::id ( )
inlinenoexceptinherited

◆ id() [2/22]

CFTypeID cf::reference<::CFArrayRef >::id ( )
inlinenoexceptinherited

◆ id() [3/22]

CFTypeID cf::reference<::CFBundleRef >::id ( )
inlinenoexceptinherited

◆ id() [4/22]

CFTypeID cf::reference<::CFDataRef >::id ( )
inlinenoexceptinherited

◆ id() [5/22]

CFTypeID cf::reference<::CFMutableDictionaryRef >::id ( )
inlinenoexceptinherited

◆ id() [6/22]

CFTypeID cf::reference<::CFDictionaryRef >::id ( )
inlinenoexceptinherited

◆ id() [7/22]

CFTypeID cf::reference<::CFErrorRef >::id ( )
inlinenoexceptinherited

◆ id() [8/22]

CFTypeID cf::reference<::CFBooleanRef >::id ( )
inlinenoexceptinherited

◆ id() [9/22]

CFTypeID cf::reference<::CFNumberRef >::id ( )
inlinenoexceptinherited

◆ id() [10/22]

CFTypeID cf::reference<::CFRunLoopObserverRef >::id ( )
inlinenoexceptinherited

◆ id() [11/22]

CFTypeID cf::reference<::CFRunLoopSourceRef >::id ( )
inlinenoexceptinherited

◆ id() [12/22]

CFTypeID cf::reference<::CFRunLoopRef >::id ( )
inlinenoexceptinherited

◆ id() [13/22]

CFTypeID cf::reference<::CFReadStreamRef >::id ( )
inlinenoexceptinherited

◆ id() [14/22]

CFTypeID cf::reference<::CFMutableStringRef >::id ( )
inlinenoexceptinherited

◆ id() [15/22]

CFTypeID cf::reference<::CFStringRef >::id ( )
inlinenoexceptinherited

◆ id() [16/22]

CFTypeID cf::reference<::CFURLRef >::id ( )
inlinenoexceptinherited

◆ id() [17/22]

CFTypeID cf::reference<::CFUUIDRef >::id ( )
inlinenoexceptinherited

◆ id() [18/22]

CFTypeID cf::reference<::SCPreferencesRef >::id ( )
inlinenoexceptinherited

◆ id() [19/22]

CFTypeID cf::reference<::SecTrustRef >::id ( )
inlinenoexceptinherited

◆ id() [20/22]

CFTypeID cf::reference<::SecCertificateRef >::id ( )
inlinenoexceptinherited

◆ id() [21/22]

CFTypeID cf::reference<::SecStaticCodeRef >::id ( )
inlinenoexceptinherited

◆ id() [22/22]

CFTypeID cf::reference<::SecCodeRef >::id ( )
inlinenoexceptinherited

◆ initialize()

reference & cf::reference< ::SecCertificateRef >::initialize ( ::SecCertificateRef cf_object,
bool retain = true )
inlineinherited

◆ issuers()

::CFDataRef sec::certificate::issuers ( ) const
inlinenoexceptinherited

The issuer is a sequence in the format used by SecItemCopyMatching. The content returned is a DER-encoded X.509 distinguished name. For a display version of the issuer, call SecCertificateCopyValues. The caller must CFRelease the value returned.

Here is the call graph for this function:

◆ operator bool()

dx::license::operator bool ( ) const
inlinenoexcept

◆ operator::CFDataRef()

sec::certificate::operator::CFDataRef ( ) const
inlinenoexceptinherited
Here is the caller graph for this function:

◆ operator::CFDictionaryRef()

sec::certificate::operator::CFDictionaryRef ( ) const
inlinenoexceptinherited
Here is the caller graph for this function:

◆ operator::CFTypeID()

cf::reference< ::SecCertificateRef >::operator::CFTypeID ( ) const
inlineexplicitnoexceptinherited

◆ operator::SecCertificateRef()

cf::reference< ::SecCertificateRef >::operator ::SecCertificateRef ( ) const
inlinenoexceptinherited
Here is the caller graph for this function:

◆ operator::SecKeyRef()

sec::certificate::operator::SecKeyRef ( ) const
inlinenoexceptinherited

Retrieves the public key for a given certificate.

◆ operator[]() [1/2]

::CFTypeRef sec::certificate::operator[] ( ::CFArrayRef array) const
inlinenoexceptinherited

◆ operator[]() [2/2]

::CFTypeRef sec::certificate::operator[] ( ::CFStringRef oid) const
inlineinherited

◆ release()

reference & cf::reference< ::SecCertificateRef >::release ( )
inlinenoexceptinherited

◆ serial()

::CFDataRef sec::certificate::serial ( ) const
inlinenoexceptinherited

Return the content of a DER-encoded integer (without the tag and length fields) for this certificate's serial number. The caller must CFRelease the value returned.

Here is the call graph for this function:

◆ strings()

std::vector< std::string > dx::license::strings ( ::CFTypeRef value)
inlinestatic

collect the strings of a private extension value (DX_OID_LICENSE_*) as reported by SecCertificateCopyValues(): parsed elements labeled "Data" (e.g. each string of a SEQUENCE OF UTF8String), a DER encoded element labeled "Unparsed Data" (a single string or a SEQUENCE OF strings), or a plain string

Here is the call graph for this function:
Here is the caller graph for this function:

◆ subjects()

::CFDataRef sec::certificate::subjects ( ) const
inlinenoexceptinherited

The subject is a sequence in the format used by SecItemCopyMatching. The content returned is a DER-encoded X.509 distinguished name. For a display version of the subject, call SecCertificateCopyValues. The caller must CFRelease the value returned.

Here is the call graph for this function:

◆ summary()

::CFStringRef sec::certificate::summary ( ) const
inlinenoexceptinherited

◆ utf8()

std::string dx::license::utf8 ( ::CFTypeRef value)
inlinestatic

the first string of a private extension value

Here is the call graph for this function:

◆ valid_after()

::CFDateRef sec::certificate::valid_after ( ) const
inlinenoexceptinherited

Returns the absolute time at which the given certificate becomes valid, or NULL if this value could not be obtained. The caller must CFRelease the value returned.

◆ valid_before()

::CFDateRef sec::certificate::valid_before ( ) const
inlinenoexceptinherited

Returns the absolute time at which the given certificate becomes valid, or NULL if this value could not be obtained. The caller must CFRelease the value returned.

Member Data Documentation

◆ cf_object

::SecCertificateRef cf::reference< ::SecCertificateRef >::cf_object
protectedinherited

◆ checks

std::map<check::first_type, check::second_type> dx::license::checks {}

◆ name

const char* dx::license::name[] {"", "demo", "beta", "perpetual"}
staticconstexpr

◆ []

enum { ... } dx::license::type

The documentation for this class was generated from the following file:

(c) copyright 2009 dynamic acoustics e.U. generated on

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.