Proprietary Fingerprint Template III
API for participating in NIST's evaluation of proprietary fingerprint template algorithms.
Public Member Functions | Static Public Member Functions | List of all members
PFTIII::Interface Class Referenceabstract

PFT III Interface. More...

#include <pftiii.h>

Collaboration diagram for PFTIII::Interface:
Collaboration graph

Public Member Functions

virtual SubmissionIdentification getIdentification () const =0
 Obtain identification and version information for this submission. More...
 
virtual std::tuple< FingerImageStatus, CreateProprietaryTemplateResultcreateProprietaryTemplate (const FingerImage &fingerImage)=0
 Create a proprietary biometric template from a fingerprint image. More...
 
virtual std::tuple< CompareProprietaryTemplatesStatus, double > compareProprietaryTemplates (const std::vector< std::byte > &probeTemplate, const std::vector< std::byte > &referenceTemplate)=0
 Perform a one-to-one comparison of proprietary templates. More...
 
virtual ~Interface ()
 Destructor. More...
 
 Interface ()
 Default constructor. More...
 

Static Public Member Functions

static std::shared_ptr< InterfacegetImplementation (const std::filesystem::path &configurationDirectory)
 Obtain a managed pointer to an object implementing PFTIII::Interface. More...
 

Detailed Description

PFT III Interface.

Definition at line 453 of file pftiii.h.

Constructor & Destructor Documentation

◆ ~Interface()

PFTIII::Interface::~Interface ( )
virtual

Destructor.

Definition at line 152 of file libpftiii.cpp.

◆ Interface()

PFTIII::Interface::Interface ( )

Default constructor.

Definition at line 147 of file libpftiii.cpp.

Member Function Documentation

◆ getIdentification()

virtual SubmissionIdentification PFTIII::Interface::getIdentification ( ) const
pure virtual

Obtain identification and version information for this submission.

Returns
SubmissionIdentification populated with information used to identify this submission in reports.
Note
This method shall return instantly.

◆ createProprietaryTemplate()

virtual std::tuple< FingerImageStatus, CreateProprietaryTemplateResult > PFTIII::Interface::createProprietaryTemplate ( const FingerImage fingerImage)
pure virtual

Create a proprietary biometric template from a fingerprint image.

Parameters
fingerImageData and metadata for a fingerprint image from which biometric features can be extracted.
Returns
A tuple whose first member is a FingerImageStatus (with FingerImageStatus.code set to FingerImageStatus::Code::Supported when input FingerImage data is supported, or another FingerImageStatus::Code if not) and whose second member is a CreateProprietaryTemplateResult object containing the status of extracting and encoding fingerprint features and a biometric template suitable to be passed as either the probe or reference to compareProprietaryTemplates().
Note
If FingerImageStatus.code in the first member of the returned tuple is not FingerImageStatus::Code::Supported, the value of proprietaryTemplate from the second member of the returned tuple will not be consulted. Instead, an empty (0 byte) entry will be recorded as the biometric template for the input. The value will always be consulted when FingerImageStatus.code is FingerImageStatus::Code::Supported, including in conditions where CreateProprietaryTemplateResult.result is Result::Failure.
This method does not differentiate between probe and reference templates.
This method shall, on average, return in <= 0.5 seconds on a dedicated timing sample.
All metadata, including Unknown, shall be supported. It is not acceptable to not set FingerImageStatus::Code::Success if value is Unknown or for an entire classification of data (e.g., 1000 PPI, RolledContactlessMoving, etc.)
This method shall be deterministic (e.g., providing the same FingerImage repeatedly shall result in byte-identical return values).

◆ compareProprietaryTemplates()

virtual std::tuple< CompareProprietaryTemplatesStatus, double > PFTIII::Interface::compareProprietaryTemplates ( const std::vector< std::byte > &  probeTemplate,
const std::vector< std::byte > &  referenceTemplate 
)
pure virtual

Perform a one-to-one comparison of proprietary templates.

Parameters
probeTemplateA proprietary biometric probe template returned from createProprietaryTemplate().
referenceTemplateA proprietary biometric reference template returned from createProprietaryTemplate().
Returns
A tuple whose first member is a CompareProprietaryTemplatesStatus (with CompareProprietaryTemplatesStatus.result set to Result::Success when successful, or Result::Failure on failure) and whose second member is the comparison score produced by comparing probeTemplate to referenceTemplate.
Note
This method must tolerate empty (0 byte) templates for both probe and reference templates, in the case that createProprietaryTemplate() did not return with Result::Success.
This method must tolerate comparisons with both probe and reference templates where CreateProprietaryTemplateResult.result was Result::Failure and FingerImageStatus.code was not FingerImageStatus::Code::Supported (e.g., 0 bytes) when returned from createProprietaryTemplate().
This method shall be deterministic (e.g., providing the same two templates shall result in the same similarity score).
This method shall, on average, return in <= 0.01 seconds, on a dedicated timing sample.

◆ getImplementation()

static std::shared_ptr< Interface > PFTIII::Interface::getImplementation ( const std::filesystem::path &  configurationDirectory)
static

Obtain a managed pointer to an object implementing PFTIII::Interface.

Parameters
configurationDirectoryPath to a read-only directory populated with configuration files provided in validation.
Returns
Shared pointer to an instance of Interface containing the participant's biometric template generation and biometric template comparison algorithm.
Note
A possible implementation might be: return (std::make_shared<Implementation>( configurationDirectory));
This method shall return in <= 10 seconds.
configurationDirectory may be stored on a slow disk. NIST suggests reading data into available RAM.

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