Information technology — Object oriented BioAPI — Part 3: C# implementation

This document specifies an interface of a BioAPI C# framework and BioAPI C# BSP which mirror the corresponding components specified in ISO/IEC 30106-1. The semantic equivalence of this document will be maintained with ISO/IEC 30106-2 (Java implementation). In spite of the differences in actual parameters passed between functions, the names and interface structure are the same.

Technlogies de l'information — Objet orienté BioAPI — Partie 3: Mise en oeuvre de C#

General Information

Status
Published
Publication Date
03-Nov-2020
Current Stage
9020 - International Standard under periodical review
Start Date
15-Oct-2025
Completion Date
15-Oct-2025
Ref Project

Relations

Standard
ISO/IEC 30106-3:2020 - Information technology — Object oriented BioAPI — Part 3: C# implementation Released:11/4/2020
English language
58 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)


INTERNATIONAL ISO/IEC
STANDARD 30106-3
Second edition
2020-11
Information technology — Object
oriented BioAPI —
Part 3:
C# implementation
Technlogies de l'information — Objet orienté BioAPI —
Partie 3: Mise en oeuvre de C#
Reference number
©
ISO/IEC 2020
© ISO/IEC 2020
All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may
be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting
on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address
below or ISO’s member body in the country of the requester.
ISO copyright office
CP 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Geneva
Phone: +41 22 749 01 11
Email: copyright@iso.org
Website: www.iso.org
Published in Switzerland
ii © ISO/IEC 2020 – All rights reserved

Contents Page
Foreword .vi
Introduction .vii
1 Scope . 1
2 Normative references . 1
3 Terms and definitions . 1
4 BioAPI C# Namespace Structure . 1
4.1 Overall structure . 1
4.2 Namespace BioAPI . 1
4.2.1 Namespace description . 1
4.2.2 Structure . 2
4.3 Namespace BioAPI.Data . 2
4.3.1 Namespace description . 2
4.3.2 Structure . 2
5 Data types and constants . 2
5.1 Class ACBioParameters . 2
5.1.1 Description . . . 2
5.1.2 Properties summary . 2
5.2 Class BFPListElement . . 3
5.2.1 Description . . . 3
5.2.2 Properties summary . 3
5.3 Class BFPSchema [Serializable()] . 3
5.3.1 Description . . . 3
5.3.2 Properties summary . 3
5.3.3 Method summary . 4
5.4 Class BIR . 4
5.4.1 Description . . . 4
5.4.2 Properties summary . 4
5.4.3 Method summary . 5
5.5 Class BSPSchema [Serializable()] . 6
5.5.1 Description . . . 6
5.5.2 Properties Summary . . 6
5.5.3 Method summary . 7
5.6 Class Candidate . 7
5.6.1 Description . . . 7
5.6.2 Properties summary . 8
5.7 Class DataTypes . 8
5.7.1 Description . . . 8
5.7.2 Enumerations . 8
5.8 Class Date .15
5.8.1 Description . . .15
5.8.2 Properties summary .15
5.8.3 Methods summary .16
5.9 Class FrameworkSchema .16
5.9.1 Description . . .16
5.9.2 Properties summary .17
5.9.3 Method summary .17
5.10 Class GUIBitmap .17
5.10.1 Description . . .17
5.10.2 Properties .17
5.10.3 Method summary .17
5.11 Class Identifypopulation .18
5.11.1 Description . . .18
© ISO/IEC 2020 – All rights reserved iii

5.11.2 Properties summary .18
5.11.3 Method summary .18
5.12 Class PopulationMember .18
5.12.1 Description . . .18
5.12.2 Properties summary .18
5.13 Class RegistryID .19
5.13.1 Description . . .19
5.13.2 Properties summary .19
5.14 Class SecurityProfileType .19
5.14.1 Description . . .19
5.14.2 Properties summary .19
5.14.3 Method summary .19
5.15 Class UnitList .20
5.15.1 Description . . .20
5.15.2 Properties summary .20
5.15.3 Methods summary .20
5.16 Class UnitListElement .20
5.16.1 Description . . .20
5.16.2 Properties summary .20
5.17 Class UnitSchema .21
5.17.1 Description . . .21
5.17.2 Properties summary .21
5.17.3 Method summary .21
5.18 Class UUID [Serializable()] .22
5.18.1 Description. .22
5.18.2 Properties .22
6 Object oriented interfaces for supporting BioAPI_Units .22
6.1 General .22
6.2 Interface IArchive .22
6.2.1 Description . . .22
6.2.2 Method summary .22
6.3 Interface IComparison .26
6.3.1 Description . . .26
6.3.2 Method summary .27
6.4 Interface IProcessing .29
6.4.1 Description . . .29
6.4.2 Method summary .30
6.5 Interface ISensor .31
6.5.1 Description . . .31
6.5.2 Method summary .32
7 BFP level .33
7.1 Interface IBFP .33
7.1.1 Description . . .33
7.1.2 Imported interfaces .33
7.1.3 Properties summary .33
7.1.4 Events summary .33
7.1.5 Method summary .33
8 BSP level .36
8.1 Interface IBSP .36
8.1.1 Description . . .36
8.1.2 Imported interfaces .36
8.1.3 Properties summary .36
8.1.4 Events summary .36
8.1.5 Method summary .36
9 Framework level .43
9.1 Interface IComponentRegistry .43
iv © ISO/IEC 2020 – All rights reserved

9.1.1 Description . . .43
9.1.2 Method summary .43
9.2 Interface IFramework .44
9.2.1 Description . . .44
9.2.2 Inherited interfaces .45
9.2.3 Properties summary .45
9.2.4 Method summary .45
10 Application interaction .49
10.1 class BioAPIException : Exception .49
10.1.1 Description . . .49
10.1.2 Constructor summary .49
10.1.3 Properties summary .50
10.1.4 Method summary .50
10.2 Callback functions .51
10.2.1 Description . . .51
10.2.2 Callback functions specification .51
Annex A (informative) Calling sequence examples and sample code .57
Bibliography .58
© ISO/IEC 2020 – All rights reserved v

Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that
are members of ISO or IEC participate in the development of International Standards through
technical committees established by the respective organization to deal with particular fields of
technical activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other
international organizations, governmental and non-governmental, in liaison with ISO and IEC, also
take part in the work.
The procedures used to develop this document and those intended for its further maintenance are
described in the ISO/IEC Directives, Part 1. In particular, the different approval criteria needed for
the different types of document should be noted. This document was drafted in accordance with the
editorial rules of the ISO/IEC Directives, Part 2 (see www .iso .org/ directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject
of patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent
rights. Details of any patent rights identified during the development of the document will be in the
Introduction and/or on the ISO list of patent declarations received (see www .iso .org/ patents) or the IEC
list of patent declarations received (see http:// patents .iec .ch).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and
expressions related to conformity assessment, as well as information about ISO's adherence to the
World Trade Organization (WTO) principles in the Technical Barriers to Trade (TBT), see www .iso .org/
iso/ foreword .html.
This document was prepared by Joint Technical Committee ISO/IEC JTC 1, Information technology,
Subcommittee SC 37, Biometrics.
This second edition cancels and replaces the first edition (ISO/IEC 30106-3:2016), which has been
technically revised.
The main changes compared to the previous edition are as follows:
— correction of typing errors;
— addition of AnalyseQuality method.
A list of all parts in the ISO/IEC 30106 series can be found on the ISO website.
Any feedback or questions on this document should be directed to the user’s national standards body. A
complete listing of these bodies can be found at www .iso .org/ members .html.
vi © ISO/IEC 2020 – All rights reserved

Introduction
This document specifies an application programming interface expressed in C# language. C# is intended
to be a simple, general-purpose, object-oriented programming language that is aimed at enabling
programmers to quickly build a wide range of applications for the Microsoft.NET platform.
One of the advantages of using C# is that, as it is designed for the CLI (Common Language Infrastructure),
it allows multiple high-level languages to be used on different computer platforms without being
rewritten for specific architectures.
C# shares some features (overloading, some syntactic details) with C++ but also includes new
characteristics (reference and output parameters, enumerations, unified type system). Furthermore,
C# is very similar to Java (interfaces, exceptions, object-orientation), which implies that the structure of
interfaces and namespaces (which is the equivalent to packages in Java language) is mostly the same as
Java but, as expected, code implementation and compilation are different.
As Java implementation allows an easy use of Java BSPs, Java-based application servers or Java applets,
C# is the best way to write windows desktop and web applications/services and provides an advanced
and well-designed remote framework.
© ISO/IEC 2020 – All rights reserved vii

INTERNATIONAL STANDARD ISO/IEC 30106-3:2020(E)
Information technology — Object oriented BioAPI —
Part 3:
C# implementation
1 Scope
This document specifies an interface of a BioAPI C# framework and BioAPI C# BSP which mirror the
corresponding components specified in ISO/IEC 30106-1. The semantic equivalence of this document
will be maintained with ISO/IEC 30106-2 (Java implementation). In spite of the differences in actual
parameters passed between functions, the names and interface structure are the same.
2 Normative references
The following documents are referred to in the text in such a way that some or all of their content
constitutes requirements of this document. For dated references, only the edition cited applies. For
undated references, the latest edition of the referenced document (including any amendments) applies.
ISO/IEC 10646:2017, Information technology — Universal Coded Character Set (UCS)
ISO/IEC 30106-1, Information technology — Object oriented BioAPI — Part 1: Architecture
3 Terms and definitions
No terms and definitions are listed in this document.
ISO and IEC maintain terminological databases for use in standardization at the following addresses:
— ISO Online browsing platform: available at https:// www .iso .org/ obp
— IEC Electropedia: available at http:// www .electropedia .org/
4 BioAPI C# Namespace Structure
4.1 Overall structure
The BioAPI C# interface is divided into several namespaces. The following is the namespace structure:
— Namespace BioAPI: Contains functionality to manage units, BSPs, BFPs, the Framework and
Applications.
— Namespace BioAPI.Data: Contains all the data structures.
4.2 Namespace BioAPI
4.2.1 Namespace description
This namespace contains all the components responsible for managing and executing the functionality
of BioAPI. Component Registry interface is also defined in this namespace.
© ISO/IEC 2020 – All rights reserved 1

4.2.2 Structure
The description of this namespace is given explaining a bottom-up structure. In Clause 6, the interfaces
needed to be implemented for each of the Unit types are explained. It is important to note that such
interfaces do not refer to an implemented class by itself, as the accessible class will be either the
Biometric Service Provider (BSP) or the Biometric Function Provider (BFP), but the specifications in
this clause are common to the methods and properties to be added to the implemented BSP and/or BFP
classes.
This will be followed by the specification of the implementation of the BFP (Clause 7) and BSP (Clause 8)
interfaces. These two interfaces provide the lower layer interoperability level, equivalent to the SPI and
BFPI interfaces in ISO/IEC 19784-1.
The higher layer of interoperability level is provided by the specification of the Framework (Clause 9,
with the Framework Interface and the Component Registry) and the Application interaction (Clause 10,
with the specification of the Exceptions and Callback functions). This provides the equivalence to the
API interface in ISO/IEC 19784-1.
4.3 Namespace BioAPI.Data
4.3.1 Namespace description
This namespace contains all data structures needed for the implementation of OO BioAPI.
4.3.2 Structure
Several data structures are provided to comply with the requirements of specifying this document. All
the BioAPI.Data namespace are specified in Clause 5, where all needed classes and enumerations are
defined. This has to be complemented to the constants defined in ISO/IEC 30106-1.
5 Data types and constants
5.1 Class ACBioParameters
5.1.1 Description
Provides the information which is used to generate ACBio instances.
5.1.2 Properties summary
— int[] Challenge {get;} – Challenge from the validator of a biometric verification when ACBio is
used. This value shall be sent to the field controlValue of type ACBioContentInformation in ACBio
instances.
— int[] InitialBPUIOIndexOutput {get;} – The initial value of BPU IO index which is to be assigned to the
output from the BioAPI Unit, BFP, or BSP when the ACBio instances are generated. The range between
InitialBPUIOIndexOutput and SupremumBPUIOIndexOutput shall be divided into the number of BSP
Units and BFPs which are accepted by the BSP, and assigned to the BSP Units and BSPs.
— int[] SupremumBPUIOIndexOutput {get;} – The supremum of BPU IO indexes which are to be
assigned to the output from the BioAPI Unit, BFP, or BSP when the ACBio instances are generated.
2 © ISO/IEC 2020 – All rights reserved

5.2 Class BFPListElement
5.2.1 Description
Identifies a BFP by category and UUID. A list is returned by a BSP when queried for the installed BFPs
that it supports.
5.2.2 Properties summary
— UnitCategoryType UnitCategory { get; set; }: The category of the unit.
— UUID BFPID { get; set; }: The UUID assigned to the BFP.
5.3 Class BFPSchema [Serializable()]
5.3.1 Description
Represents the record in the component registry that defines the properties of the BFP installed in the
system. Is a serializable class.
5.3.2 Properties summary
— UUID BFPUUID {get;}: UUID of the BFP.
— UnitCategoryType BFPCategory {get;}: Category of the BFP identified by the BFPUUID.
— String BFPDescription {get;}: A NULL-terminated string containing a text description of the BFP.
— String Path {get;}: A pointer to a NULL-terminated string containing the path of the file containing
the BFP executable code, including the filename. The path may be a URL. This string shall consist of
ISO/IEC 10646 characters encoded in UTF-8 (see ISO/IEC 10646:2017, Annex D). When BFPSchema
is used within a function call, the component that receives the call allocates the memory for the Path
schema element and the calling component frees the memory.
— String SpecVersion {get;}: Major/minor version number of the BioAPI specification to which the BFP
was implemented.
— String ProductVersion {get;}: The version string of the BFP software.
— String Vendor {get;}: A NULL-terminated string containing the name of the BFP vendor.
— sbyte[] BFPProperty {get;}
— List BFPSupportedFormats {get;}: A list of the data formats that are supported by the
BFP (see 7.1).
— List FactorsMask {get;}: A list of the biometric types supported by the BFP (see 7.1).
— UUID FwPropertyID {get;}: UUID of the format of the following BFP property.
— byte[] FwProperty {get;}: Address and length of a memory buffer containing the BFP property. The
format and content of the BFP property can either be specified by a vendor or can be specified in a
related standard.
© ISO/IEC 2020 – All rights reserved 3

5.3.3 Method summary
5.3.3.1 virtual void Dispose ()
Description: Removes all the information in the current object, leaving it empty for a next use.
Exception: None.
5.4 Class BIR
5.4.1 Description
This interface represents BIRs (Biometric Information Records). It supports the ISO/IEC 19785 series
definitions, both for Simple-BIRs or for Complex-BIRs. The specification of the patron format that shall
be used is given in ISO/IEC 30106-1.
5.4.2 Properties summary
NOTE The description of each of the properties can be found in ISO/IEC 19785-1.
— RegistryID SelfID { get; set; } (see 5.13).
— byte CBEFFVersion { get; set; }.
— byte PatronHeaderVersion { get; set; }.
— RegistryID BDBFormat { get; set; } (see 5.13).
— bool BDBEncription { get; set; }.
— bool BIRIntegrity { get; set; }.
— BiometricType BDBBiometricType { get; set; } (see 5.7.2.2).
— BiometricSubtype BDBBiometricSubtype { get; set; } (see 5.7.2.1).
— RegistryID BDBCaptureDevice { get; set; } (see 5.13).
— RegistryID BDBFeatureExtractionAlg { get; set; } (see 5.13).
— RegistryID BDBComparisonAlg { get; set; } (see 5.13).
— RegistryID BDBCompresionAlg { get; set; } (see 5.13).
— RegistryID BDBPADTechnique { get; set; } (see 5.13).
— byte[] BDBChallengeResponse { get; set; }.
— Date BDBCreationDate { get; set; } (see 5.8).
— byte[] BDBIndex { get; set; }.
— ProcessedLevel BDBProcessedLevel { get; set; }.
— RegistryID BDBProduct { get; set; } (see 5.13).
— Purpose BDBPurpose { get; set; }.
— byte BDBQuality { get; set; }.
— RegistryID BDBQualityAlg { get; set; } (see 5.13).
— List BDBValidityPeriod { get; set; } // 2 dates (see 5.8).
4 © ISO/IEC 2020 – All rights reserved

— Date BIRCreationDate { get; set; } (see 5.8).
— byte[] BIRCreator { get; set; }.
— byte[] BIRIndex { get; set; }.
— byte[] BIRPayload { get; set; }.
— byte[] BIRPointer { get; set; }.
— List BIRValidityPeriod { get; set; } // 2 dates (see 5.8).
— RegistryID SBFormat { get; set; } (see 5.13).
— byte[] BDBData { get; set; }.
— byte[] SBData { get; set; }.
5.4.3 Method summary
5.4.3.1 virtual BIR (byte[] record)
Description: Constructs the BIR data from a byte array coded as a self-identifying record, as
indicated in the relevant clauses of ISO/IEC 19785-3 and ISO/IEC 19785-4.
Parameters: — record: The byte array containing the CBEFF record.
Exception: If the input parameters are invalid, the format is not supported or operation fails
due to error, BioAPIException (see 10.1).
5.4.3.2 virtual BIR (RegistryID bDBFormat, bool bDBEncription, bool bIRIntegrity,
BiometricType bDBBiometricType, BiometricSubtype bDBBiometricSubtype, RegistryID
bDBCaptureDevice, RegistryID bDBFeatureExtractionAlg, RegistryID bDBComparisonAlg,
RegistryID bDBCompresionAlg, RegistryID bDBPADTechnique, byte[] bDBChallengeResponse, Date
bDBCreationDate, byte[] bDBIndex, ProcessedLevel bDBProcessedLevel, RegistryID bDBProduct,
Purpose bDBPurpose, byte bDBQuality, RegistryID bDBQualityAlg, List bDBValidityPeriod,
Date bIRCreationDate, byte[] bIRCreator, byte[] bIRIndex, byte[] bIRPayload, byte[] bIRPointer,
List bIRValidityPeriod, RegistryID sBFormat, byte[] bDBData, byte[] sBData)
Description: Constructs the BIR data from its individual components.
Parameters: — Each of the properties in the BIR class.
Exception: If the input parameters are invalid, the format is not supported or operation fails
due to error, BioAPIException (see 10.1).
5.4.3.3 virtual public byte[] ToArray()
Description: Serializes a BIR record so as to provide it as a byte array representing the CBEFF
information.
Return Value: The byte array containing the CBEFF information.
Exception: If the input parameters are invalid, the format is not supported or operation fails
due to error, BioAPIException (see 10.1).
© ISO/IEC 2020 – All rights reserved 5

5.4.3.4 virtual void Dispose ()
Description: Removes all the information in the current BIR, leaving it empty for a next use.
Exception: None.
5.5 Class BSPSchema [Serializable()]
5.5.1 Description
Represents the record in the component registry that defines the properties of the BSP installed in the
system. Is a serializable class.
5.5.2 Properties Summary
— UUID BSPUUID {get;}.
— String BSPDescription {get;}: A NULL-terminated string containing a text description of the BSP.
— String Path {get;}: A pointer to a NULL-terminated string containing the path of the file containing
the BSP executable code, including the filename. The path may be a URL. This string shall consist of
ISO/IEC 10646 characters encoded in UTF-8 (see ISO/IEC 10646:2017, Annex D). When BioAPI_BSP_
SCHEMA is used within a function call, the component that receives the call allocates the memory
for the Path schema element and the calling component frees the memory.
— String SpecVersion {get;}: Major/minor version number of the BioAPI specification to which the BSP
was implemented.
— String ProductVersion {get;}: The version string of the BSP software.
— String Vendor {get;}: A NULL-terminated string containing the name of the BSP vendor.
— List BSPSupportedFormats {get;}: A list the data formats that are supported by the
BSP (see 5.13).
— List FactorsMask {get;}: A list of the biometric types supported by the BSP (see
5.7.2.2).
— List Operations {get;}: A list of the biometric operations supported by the
BSP (see 5.7.2.4).
— List Options {get;}: A list of the biometric options supported by the BSP (see
5.7.2.5).
— int AdditionalDataPolicy {get;}: Threshold setting (maximum FMR value) used to determine when
to release additionalData after successful verification.
— int MaxAdditionalDataSize {get;}: Maximum additionalData size (in bytes) that the BSP can accept.
— int DefaultVerifyTimeout {get;}: Default timeout value in milliseconds used by the BSP for Verify
operations when no timeout is specified by the application.
— int DefaultIdentifyTimeout {get;}: Default timeout value in milliseconds used by the BSP for Identify
and BioAPI_IdentifyMatch operations when no timeout is specified by the application.
— int DefaultCaptureTimeout {get;}: Default timeout value in milliseconds used by the BSP for Capture
operations when no timeout is specified by the application.
— int DefaultEnrolTimeout {get;}: Default timeout value in milliseconds used by the BSP for Enrol
operations when no timeout is specified by the application.
6 © ISO/IEC 2020 – All rights reserved

— int DefaultCalibrateTimeout {get;}: Default timeout value in milliseconds used by the BSP for sensor
calibration operations when no timeout is specified by the application.
— int MaxBSPDbSize {get;}: Maximum size of a BSP-controlled BIR database. It applies only when a BSP
is only capable of directly managing a single archive unit. A value of zero means that no information
about the database size is being provided for one of the following three reasons:
a) databases are not supported;
b) it is capable of managing multiple units (either directly or through a BFP interface), each of
which may have a different maximum size and information about these units will be
provided as part of the insert notification (part of Unit Schema); or
c) one archive unit is supported, but the information is not given here – it will be provided in the
insert notification.
— int MaxIdentify {get;}: Largest population supported by the identify function. Unlimited =
0xFFFFFFFF.
— int MaxNumEnrolInstances {get;}: The maximum number of distinct instances for which a BSP can
create reference templates in one enrol operation. This information can be useful to an application
that uses the application-controlled GUI feature.
— byte[] HostingEndpointIRI {get;}: An IRI identifying the framework for which the component registry
contains a registration of the BSP. This parameter shall be ignored by frameworks conforming to
this part of this International Standard and shall be set to NULL by an application. It is provided to
support interworking standards, which may specify the use of identical BSPs present on multiple
computers from within an application running on the same or a different computer.
— UUID BSPAccessUUID {get;}: A UUID, unique within the scope of an application, which the application
may use to refer to the BSP as an alternative to the BSP product UUID. This parameter shall be
ignored by frameworks conforming to this part of this Intern
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.