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

ISO/IEC 30106-3:2016 specifies an interface of a BioAPI C# framework and BioAPI C# BSP which will mirror the corresponding components specified in ISO/IEC 30106‑1. The semantic equivalence of this part of ISO/IEC 30106 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
Withdrawn
Publication Date
22-Mar-2016
Withdrawal Date
22-Mar-2016
Current Stage
9599 - Withdrawal of International Standard
Start Date
04-Nov-2020
Completion Date
30-Oct-2025
Ref Project

Relations

Standard
ISO/IEC 30106-3:2016 - Information technology -- Object oriented BioAPI
English language
56 pages
sale 15% off
Preview
sale 15% off
Preview
Standard
ISO/IEC 30106-3:2016 - Information technology -- Object oriented BioAPI
English language
56 pages
sale 15% off
Preview
sale 15% off
Preview

Frequently Asked Questions

ISO/IEC 30106-3:2016 is a standard published by the International Organization for Standardization (ISO). Its full title is "Information technology - Object oriented BioAPI - Part 3: C# implementation". This standard covers: ISO/IEC 30106-3:2016 specifies an interface of a BioAPI C# framework and BioAPI C# BSP which will mirror the corresponding components specified in ISO/IEC 30106‑1. The semantic equivalence of this part of ISO/IEC 30106 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.

ISO/IEC 30106-3:2016 specifies an interface of a BioAPI C# framework and BioAPI C# BSP which will mirror the corresponding components specified in ISO/IEC 30106‑1. The semantic equivalence of this part of ISO/IEC 30106 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.

ISO/IEC 30106-3:2016 is classified under the following ICS (International Classification for Standards) categories: 35.040 - Information coding; 35.240.15 - Identification cards. Chip cards. Biometrics. The ICS classification helps identify the subject area and facilitates finding related standards.

ISO/IEC 30106-3:2016 has the following relationships with other standards: It is inter standard links to ISO/IEC 30106-3:2020. Understanding these relationships helps ensure you are using the most current and applicable version of the standard.

You can purchase ISO/IEC 30106-3:2016 directly from iTeh Standards. The document is available in PDF format and is delivered instantly after payment. Add the standard to your cart and complete the secure checkout process. iTeh Standards is an authorized distributor of ISO standards.

Standards Content (Sample)


DRAFT INTERNATIONAL STANDARD
ISO/IEC DIS 30106-3
ISO/IEC JTC 1/SC 37 Secretariat: ANSI
Voting begins on: Voting terminates on:
2014-12-04 2015-03-04
Information Technology — Object oriented BioAPI —
Part 3:
C# implementation
Titre manque
ICS: 35.040
THIS DOCUMENT IS A DRAFT CIRCULATED
FOR COMMENT AND APPROVAL. IT IS
THEREFORE SUBJECT TO CHANGE AND MAY
NOT BE REFERRED TO AS AN INTERNATIONAL
STANDARD UNTIL PUBLISHED AS SUCH.
IN ADDITION TO THEIR EVALUATION AS
BEING ACCEPTABLE FOR INDUSTRIAL,
TECHNOLOGICAL, COMMERCIAL AND
USER PURPOSES, DRAFT INTERNATIONAL
STANDARDS MAY ON OCCASION HAVE TO
BE CONSIDERED IN THE LIGHT OF THEIR
POTENTIAL TO BECOME STANDARDS TO
WHICH REFERENCE MAY BE MADE IN
Reference number
NATIONAL REGULATIONS.
ISO/IEC DIS 30106-3:2014(E)
RECIPIENTS OF THIS DRAFT ARE INVITED
TO SUBMIT, WITH THEIR COMMENTS,
NOTIFICATION OF ANY RELEVANT PATENT
RIGHTS OF WHICH THEY ARE AWARE AND TO
©
PROVIDE SUPPORTING DOCUMENTATION. ISO/IEC 2014

ISO/IEC DIS 30106-3:2014(E)
Copyright notice
This ISO document is a Draft International Standard and is copyright-protected by ISO. Except as
permitted under the applicable laws of the user’s country, neither this ISO draft nor any extract
from it may be reproduced, stored in a retrieval system or transmitted in any form or by any means,
electronic, photocopying, recording or otherwise, without prior written permission being secured.
Requests for permission to reproduce should be addressed to either ISO at the address below or ISO’s
member body in the country of the requester.
ISO copyright office
Case postale 56 • CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.org
Web www.iso.org
Reproduction may be subject to royalty payments or a licensing agreement.
Violators may be prosecuted.
ii © ISO 2014 – All rights reserved

ISO/IEC DIS 30106-3
Contents Page
Foreword . ix
Introduction . x
1 Scope . 1
2 BioAPI C# Namespace Structure . 1
2.1 Namespace BioAPI . 1
2.1.1 Namespace description . 1
2.1.2 Structure . 1
2.2 Namespace BioAPI.Data . 2
2.2.1 Namespace description . 2
2.2.2 Structure . 2
3 Data types and constants . 3
3.1 Class ACBioParameters . 3
3.1.1 Description . 3
3.1.2 Properties Summary . 3
3.2 Class BFPListElement . 3
3.2.1 Description . 3
3.2.2 Properties Summary . 3
3.3 Class BFPSchema [Serializable()] . 3
3.3.1 Description . 3
3.3.2 Properties Summary . 3
3.4 Class BIR . 4
3.4.1 Description . 4
3.4.2 Properties Summary . 4
3.4.3 Method Summary . 5
3.4.3.1 virtual void BIRFromByteArray (byte[] record) . 5
3.4.3.2 virtual byte[] BIRToByteArray () . 5
3.4.3.3 virtual void Destroy () . 5
3.5 Class BSPSchema [Serializable()] . 6
3.5.1 Description . 6
3.5.2 Properties Summary . 6
3.6 Class Candidate . 7
3.6.1 Description . 7
3.6.2 Properties Summary . 7
3.7 Class DataTypes . 8
3.7.1 Description . 8
3.7.2 Enumerations . 8
3.7.2.1 BiometricSubtype . 8
3.7.2.2 BiometricType . 8
3.7.2.3 BIRDatabaseAccess. 9
3.7.2.4 BSPSchemaOperations . 9
3.7.2.5 BSPSchemaOptions. 9
3.7.2.6 EventKind . 10
3.7.2.7 Facility . 10
3.7.2.8 GUIEnrolType . 10
3.7.2.9 GUIMoment . 10
3.7.2.10 GUIOperation . 11
3.7.2.11 GUIResponse . 11
3.7.2.12 GUISuboperation . 11
3.7.2.13 ProcessedLevel . 11
3.7.2.14 Purpose . 11
© ISO/IEC 2014 – All rights reserved iii

ISO/IEC DIS 30106-3
3.7.2.15 ResultOptions . 12
3.7.2.16 SecurityOptionsType . 12
3.7.2.17 UnitCategoryType . 12
3.7.2.18 UnitIndicatorStatus . 12
3.7.2.19 UnitPowerMode . 12
3.8 Class Date . 13
3.8.1 Description . 13
3.8.2 Properties Summary . 13
3.8.3 Methods Summary . 13
3.8.3.1 virtual bool IsLowerOrEqual (int day, int month, int year) . 13
3.8.3.2 virtual bool IsLowerOrEqual (int day, int month, int year, int hour, int
minute, int second) . 13
3.8.3.3 virtual bool IsLowerOrEqual (Date date) . 13
3.8.3.4 virtual bool IsHigherOrEqual (int day, int month, int year) . 13
3.8.3.5 virtual bool IsHigherOrEqual (int day, int month, int year, int hour, int
minute, int second) . 13
3.8.3.6 virtual bool IsHigherOrEqual (Date date) . 13
3.9 Class FrameworkSchema . 14
3.9.1 Description . 14
3.9.2 Properties Summary . 14
3.10 Class GUIBitmap . 14
3.10.1 Description . 14
3.10.2 Properties . 14
3.11 Class Identifypopulation . 15
3.11.1 Description . 15
3.11.2 Properties Summary . 15
3.11.3 Method Summary . 15
3.11.3.1 virtual void AddMember (PopulationMember member) . 15
3.11.3.2 virtual void Destroy () . 15
3.11.3.3 virtual bool IsBound () . 15
3.11.3.4 virtual void Unbind () . 15
3.12 Class PopulationMember . 16
3.12.1 Description . 16
3.12.2 Properties Summary . 16
3.13 Class RegistryID . 16
3.13.1 Description . 16
3.13.2 Properties Summary . 16
3.14 Class SecurityProfileType . 16
3.14.1 Description . 16
3.14.2 Properties Summary . 16
3.15 Class UnitList . 17
3.15.1 Description . 17
3.15.2 Properties Summary . 17
3.15.3 Methods Summary . 17
3.15.3.1 void Add (UnitListElement unitListElement) . 17
3.15.3.2 int GetUnitID (UnitCategoryType unitCategoryType) . 17
3.16 Class UnitListElement . 17
3.16.1 Description . 17
3.16.2 Properties Summary . 17
3.17 Class UnitSchema. 18
3.17.1 Description . 18
3.17.2 Properties Summary . 18
3.18 Class UUID [Serializable()] . 19
3.18.1 Description . 19
3.18.2 Properties . 19
4 Object oriented interfaces for supporting BioAPI_Units . 20
4.1 Introduction . 20
4.2 Interface IArchive . 20
4.2.1 Description . 20
iv © ISO/IEC 2014 – All rights reserved

ISO/IEC DIS 30106-3
4.2.2 Method Summary . 20
4.2.2.1 void CloseDatabase (int unitID) . 20
4.2.2.2 void DeleteBIR (int unitID, UUID key) . 20
4.2.2.3 BIR GetSingleBIR (int unitID, UUID key) . 20
4.2.2.4 List ListUUIDs (int unitID) . 21
4.2.2.5 Identifypopulation NewIdentifyPopulation (int unitID) . 21
4.2.2.6 IdentifyPopulation NewIdentifyPopulation (int unitID, List
UUIDList) . 21
4.2.2.7 IdentifyPopulation NewIdentifyPopulation (int unitID, byte[] query) . 21
4.2.2.8 void OpenDatabase (int unitID, byte[] databaseID, BIRDatabaseAccess
access) . 22
4.2.2.9 UUID StoreBIR (int unitID, BIR biometricReference) . 22
4.2.2.10 void StoreBIR (int unitID, BIR biometricReference, UUID key) . 22
4.2.2.11 UUID StoreBIR (int unitID, BIR biometricReference, byte[] auxiliaryData). 23
4.2.2.12 void StoreBIR (int unitID, BIR biometricReference, byte[] auxiliaryData,
UUID key) . 23
4.3 Interface IComparison . 23
4.3.1 Description . 23
4.3.2 Method Summary . 24
4.3.2.1 BIR GetAdaptedBIR (int unitID) . 24
4.3.2.2 int GetFMRAchieved (int unitID) . 24
4.3.2.3 byte[] GetAdditionalData (int unitID) . 24
4.3.2.4 List Identify (int unitID, int maxFMRrequested, BIR
processedBIR, bool binning, int maxResults, int timeout) . 24
4.3.2.5 List Identify (int unitID, int maxFMRrequested, BIR
processedBIR, List auxiliaryBIRs, bool binning, int maxResults, int
timeout) . 24
4.3.2.6 void PresetIdentifyPopulation (int unitID, Identifypopulation population) . 25
4.3.2.7 bool Verify (int unitID, int maxFMRrequested, BIR processedBIR, BIR
referenceTemplate, List options) . 25
4.3.2.8 bool Verify (int unitID , int maxFMRrequested, BIR processedBIR, BIR
referenceTemplate, List auxiliaryBIRs, List
options) . 25
4.4 Interface IProcessing . 26
4.4.1 Description . 26
4.4.2 Method Summary . 26
4.4.2.1 BIR CreateTemplate (int unitID, BIR capturedBIR, BIR referenceTemplate,
RegistryID outputFormat, byte[] additionalData) . 26
4.4.2.2 BIR CreateTemplate (List capturedBIRs, BIR referenceTemplate,
RegistryID outputFormat, byte[] additionalData, int unitID) . 26
4.4.2.3 BIR Process (int unitID , BIR capturedBIR, RegistryID outputFormat) . 27
4.4.2.4 BIR Process (int unitID, BIR capturedBIR, List auxiliaryBIRs,
RegistryID outputFormat) . 27
4.5 Interface ISensor . 27
4.5.1 Description . 27
4.5.2 Method Summary . 27
4.5.2.1 void Calibrate (int unitID , int timeout) . 27
4.5.2.2 BIR Capture (int unitID , List purpose, BiometricSubtype
subtype, RegistryID outputFormat, int timeout, byte[] options) . 28
4.5.2.3 UnitIndicatorStatus GetIndicatorStatus (int unitID) . 28
4.5.2.4 void SetIndicatorStatus (int unitID , UnitIndicatorStatus indicatorStatus) . 28
5 BFP level. 29
5.1 Interface IBFP . 29
5.1.1 Description . 29
5.1.2 Imported Interfaces . 29
5.1.3 Properties Summary . 29
5.1.4 Events Summary . 29
5.1.5 Method Summary . 29
5.1.5.1 void BFPLoad (BFPEventCallback bfpNotifyCallback) . 29
© ISO/IEC 2014 – All rights reserved v

ISO/IEC DIS 30106-3
5.1.5.2 byte[] ControlUnit (int unitID, int controlCode, byte[] inputData) . 30
5.1.5.3 List QueryUnits () . 30
5.1.5.4 List QueryUnits (List unitCategories) . 30
5.1.5.5 void SetPowerMode (int unitID, UnitPowerMode powerMode) . 31
5.1.5.6 void UnitAttach (int unitID) . 31
5.1.5.7 void UnitDetach (int unitID) . 31
6 BSP level . 32
6.1 Interface IBSP . 32
6.1.1 Description . 32
6.1.2 Imported Interfaces. 32
6.1.3 Properties Summary . 32
6.1.4 Events Summary . 32
6.1.5 Method Summary . 33
6.1.5.1 byte CheckQuality (BIR inputBIR, RegistryID qualityAlgorithmID) . 33
6.1.5.2 byte[] ControlUnit (int unitID, int controlCode, byte[] inputData) . 33
6.1.5.3 UUID Enrol (UnitList unitList, BIR capturedBIR, BIR referenceTemplate,
List purpose, BiometricSubtype subtype, RegistryID
outputFormat, byte[] additionalData, int timeout, List
options) . 34
6.1.5.4 UUID Enrol (UnitList unitList, List capturedBIRs, BIR
referenceTemplate, List purpose, BiometricSubtype subtype,
RegistryID outputFormat, byte[] additionalData, int timeout,
List options) . 34
6.1.5.5 UUID Enrol (UnitList unitList, int numberOfSamples, BIR
referenceTemplate, List purpose, BiometricSubtype subtype,
RegistryID outputFormat, byte[] additionalData, int timeout,
List options) . 34
6.1.5.6 UUID Enrol (UnitList unitList, BIR capturedBIR, UUID referenceID,
List purpose, BiometricSubtype subtype, RegistryID
outputFormat, byte[] additionalData, int timeout, List
options) . 34
6.1.5.7 UUID Enrol (UnitList unitList, List capturedBIRs, UUID referenceID,
List purpose, BiometricSubtype subtype, RegistryID
outputFormat, byte[] additionalData, int timeout, List
options) . 34
6.1.5.8 UUID Enrol (UnitList unitList, int numberOfSamples, UUID referenceID,
List purpose, BiometricSubtype subtype, RegistryID
outputFormat, byte[] additionalData, int timeout, List
options) . 34
6.1.5.9 byte[] GetAuxiliaryData (int unitID) . 35
6.1.5.10 List IdentifyAggregated (UnitList unitList, int
maxFMRrequested, BiometricSubtype subtype, bool binning, int
maxResults, int timeout, List options) . 35
6.1.5.11 List QueryBFPs () . 36
6.1.5.12 List QueryBFPs (List
unitCategories) . 36
6.1.5.13 List QueryUnits () . 36
6.1.5.14 List QueryUnits (List unitCategories) . 36
6.1.5.15 bool VerifyAggregated (UnitList unitList, int maxFMRrequested, BIR
referenceTemplate, BiometricSubtype subtype, int timeout,
List options) . 37
6.1.5.16 bool VerifyAggregated (UnitList unitList, int maxFMRrequested, BIR
processedBIR, UUID referenceKey, BiometricSubtype subtype, int
timeout, List options) . 37
6.1.5.17 bool VerifyAggregated (UnitList unitList, int maxFMRrequested, UUID
referenceKey, BiometricSubtype subtype, int timeout,
List options) . 37
6.1.5.18 void SetPowerMode (int unitID, UnitPowerMode powerMode) . 37
vi © ISO/IEC 2014 – All rights reserved

ISO/IEC DIS 30106-3
6.1.5.19 void SubscribeToGUIEvents (GUISelectEventCallback
guiSelectEventCallback, GUIStateEventCallback guiStateEventCallback,
GUIProgressEventCallback guiProgressEventCallback). 38
6.1.5.20 void UnsubscribeFromGUIEvents () . 38
7 Framework level . 39
7.1 Interface IComponentRegistry . 39
7.1.1 Description . 39
7.1.2 Method Summary . 39
7.1.2.1 void InstallBFP (BFPSchema bfpSchema, bool update) . 39
7.1.2.2 void InstallBSP (BSPSchema bspSchema, bool update). 39
7.1.2.3 void UninstallBFP (UUID bfpUUID) . 39
7.1.2.4 void UninstallBSP (UUID bspUUID) . 40
7.2 Interface IFramework . 40
7.2.1 Description . 40
7.2.2 Inherited interfaces . 40
7.2.3 Properties Summary . 40
7.2.4 Method Summary . 40
7.2.4.1 void BSPLoad (UUID bspID, BFPEventCallback notifyCallback,
BFPEnumerationCallback bfpEnumeration, String context) . 40
7.2.4.2 void BSPUnload (UUID bspID, String context) . 41
7.2.4.3 void EnableEventNotifications (UUID bspID, List events) . 42
7.2.4.4 List EnumBFPs () . 42
7.2.4.5 List EnumBSPs () . 43
7.2.4.6 void Init (String version) . 43
7.2.4.7 List QueryBFPs (UUID bspUUID) . 43
7.2.4.8 List QueryUnits (UUID bspUUID) . 44
7.2.4.9 void Terminate () . 44
8 Application interaction . 45
8.1 class BioAPIException : Exception . 45
8.1.1 Description . 45
8.1.2 Constructor Summary . 45
8.1.2.1 public BioAPIException (Facility source, int code) . 45
8.1.2.2 public BioAPIException (Facility source, int code, string message) . 45
8.1.2.3 public BioAPIException (Facility source, int code, string message,
Exception cause) . 45
8.1.2.4 public BioAPIException (Facility source, int code, Exception cause) . 45
8.1.3 Properties Summary . 46
8.1.3.1 public int ErrorCode. 46
8.1.3.2 public Facility Source . 46
8.1.4 Method Summary . 46
8.1.4.1 public int GetErrorCode() . 46
8.1.4.2 public Facility GetSource() . 46
8.2 Callback functions . 46
8.2.1 Description . 46
8.2.2 Callback functions specification . 47
8.2.2.1 delegate void BSPEventCallback (object sender, UUID bspUUID, int
unitID, UnitSchema unitSchema, EventKind eventKind) . 47
8.2.2.2 delegate bool GUISelectEventCallback (object sender, UUID bspUUID, int
unitID, GUIEnrolType enrolType, GUIOperation operation, GUIMoment
moment, int resultCode, int maxNumEnrollSamples,
List selectableInstances, List
selectedInstances, List capturedInstances, string
text, GUIResponse response) . 47
8.2.2.3 delegate bool GUIStateEventCallback(object sender, UUID bspUUID, int
unitID, GUIOperation operation, GUISuboperation suboperation, Purpose
purpose, GUIMoment moment, int resultCode, int EnrolSampleIndex,
List bitmaps, string text, GUIResponse response, int
enrolSampleIndexToRecapture) . 48
© ISO/IEC 2014 – All rights reserved vii

ISO/IEC DIS 30106-3
8.2.2.4 delegate bool GUIProgressEventCallback(object sender, UUID bspUUID,
int unitID, GUIOperation operation, GUISuboperation suboperation,
Purpose purpose, GUIMoment moment, byte suboperationProgress,
List bitmaps, string text, GUIResponse response) . 49
8.2.2.5 delegate void BFPEventCallback(object sender, UUID bfpUUID, int unitID,
UnitSchema unitSchema, EventKind eventKind) . 50
8.2.2.6 delegate void BFPGUIProgressEventCallback(object sender, int unitID,
String context, List bitmaps, byte response) . 50
8.2.2.7 delegate List BFPEnumerationCallback() . 51
Annex A (informative) Namespace BioAPI.Template . 52
A.1 Introduction . 52
A.2 Namespace for BioAPI.Template . 52
Annex B (informative) Calling sequence examples and sample code . 54
B.1 Reference Implementation . 54
B.2 API Architecture . 54

viii © ISO/IEC 2014 – All rights reserved

ISO/IEC DIS 30106-3
Foreword
ISO (the International Organization for Standardization) is a worldwide federation of national standards bodies
(ISO member bodies). The work of preparing International Standards is normally carried out through ISO
technical committees. Each member body interested in a subject for which a technical committee has been
established has the right to be represented on that committee. International organizations, governmental and
non-governmental, in liaison with ISO, also take part in the work. ISO collaborates closely with the
International Electrotechnical Commission (IEC) on all matters of electrotechnical standardization.
International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 2.
The main task of technical committees is to prepare International Standards. Draft International Standards
adopted by the technical committees are circulated to the member bodies for voting. Publication as an
International Standard requires approval by at least 75 % of the member bodies casting a vote.
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent
rights. ISO shall not be held responsible for identifying any or all such patent rights.
ISO/IEC 30106-3 was prepared by Technical Committee ISO/TC JTC1, Information Technology,
Subcommittee SC 37, Biometrics.
This second/third/. edition cancels and replaces the first/second/. edition (), [clause(s) / subclause(s) /
table(s) / figure(s) / annex(es)] of which [has / have] been technically revised.
ISO/IEC 30106 consists of the following parts, under the general title Information Technology — Object
Oriented BioAPI:
 Part 1: Architecture
 Part 2: Java Implementation
 Part 3: C# Implementation
© ISO/IEC 2014 – All rights reserved ix

ISO/IEC DIS 30106-3
Introduction
In this part of the standard an application programming interface expressed in C# language is specified. 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),
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, etc.) with C++ but includes new characteristics
(reference and output parameters, enumerations, unified type system, etc). Besides, C# is very similar to Java
(Interfaces, Exceptions, object-orientation, etc.), 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.
x © ISO/IEC 2014 – All rights reserved

DRAFT INTERNATIONAL STANDARD ISO/IEC DIS 30106-3

Information Technology — Object Oriented BioAPI — Part 3: C#
Implementation
1 Scope
The proposed standard will specify an interface of a BioAPI C# framework and BioAPI C# BSP which will
mirror the corresponding components specified in ISO/IEC 30106-1.The semantic equivalence of this
standard 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 BioAPI C# Namespace Structure
The BioAPI C# interface will be divided into several namespaces. The following is the namespace structure:
• Namespace BioAPI: Contains functions for the attach sessions and managing units.
• Namespace BioAPI.Data: Contains all the data structures.
2.1 Namespace BioAPI
2.1.1 Namespace description
This namespace contains all the components responsible for managing and executing the functionality of
BioAPI, either in a Framework-free deployment or when an OO BioAPI Framework is used. Component
Registry interface is also defined in this namespace.
2.1.2 Structure
The description of this namespace is given explaining a bottom-up structure. In clause 4, 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 they accessible class will be either the Biometric Service
Provider (BSP) or the Biometric Function Provider (BFP), but the specifications in such 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 5) and BSP (clause 6)
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 7, with the
Framework Interface and the Component Registry) and the Application interaction (clause 8, with the
specification of the Exceptions and Callback functions). This provide the equivalence to the API interface in
ISO/IEC 19784-1.
© ISO/IEC 2014 – All rights reserved 1

ISO/IEC DIS 30106-3
2.2 Namespace BioAPI.Data
2.2.1 Namespace descrip
...


INTERNATIONAL ISO/IEC
STANDARD 30106-3
First edition
2016-03-15
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 2016
© ISO/IEC 2016, Published in Switzerland
All rights reserved. Unless otherwise specified, 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
Ch. de Blandonnet 8 • CP 401
CH-1214 Vernier, Geneva, Switzerland
Tel. +41 22 749 01 11
Fax +41 22 749 09 47
copyright@iso.org
www.iso.org
ii © ISO/IEC 2016 – All rights reserved

Contents Page
Foreword .vi
Introduction .vii
1 Scope . 1
2 Normative references . 1
3 BioAPI C# namespace structure . 1
3.1 Overall structure . 1
3.2 Namespace BioAPI . 1
3.2.1 Namespace description . 1
3.2.2 Structure . 1
3.3 Namespace BioAPI.Data . 2
3.3.1 Namespace description . 2
3.3.2 Structure . 2
4 Data types and constants . 2
4.1 Class ACBioParameters . 2
4.1.1 Description . . . 2
4.1.2 Properties summary . 2
4.2 Class BFPListElement . . 2
4.2.1 Description . . . 2
4.2.2 Properties summary . 2
4.3 Class BFPSchema [Serializable()] . 3
4.3.1 Description . . . 3
4.3.2 Properties summary . 3
4.3.3 Method summary . 3
4.4 Class BIR . 3
4.4.1 Description . . . 3
4.4.2 Properties summary . 4
4.4.3 Method summary . 5
4.5 Class BSPSchema [Serializable()] . 5
4.5.1 Description . . . 5
4.5.2 Properties summary . 6
4.5.3 Method summary . 7
4.6 Class Candidate . 7
4.6.1 Description . . . 7
4.6.2 Properties summary . 7
4.7 Class DataTypes . 7
4.7.1 Description . . . 7
4.7.2 Enumerations . 8
4.8 Class date .14
4.8.1 Description . . .14
4.8.2 Properties summary .15
4.8.3 Methods summary .15
4.9 Class FrameworkSchema .15
4.9.1 Description . . .15
4.9.2 Properties summary .15
4.9.3 Method summary .16
4.10 Class GUIBitmap .16
4.10.1 Description . . .16
4.10.2 Properties .16
4.10.3 Method summary .16
4.11 Class Identifypopulation .17
4.11.1 Description . . .17
4.11.2 Properties summary .17
4.11.3 Method summary .17
© ISO/IEC 2016 – All rights reserved iii

4.12 Class PopulationMember .17
4.12.1 Description . . .17
4.12.2 Properties summary .17
4.13 Class RegistryID .18
4.13.1 Description . . .18
4.13.2 Properties summary .18
4.14 Class SecurityProfileType .18
4.14.1 Description . . .18
4.14.2 Properties summary .18
4.14.3 Method summary .18
4.15 Class UnitList .19
4.15.1 Description . . .19
4.15.2 Properties summary .19
4.15.3 Methods summary .19
4.16 Class UnitListElement .19
4.16.1 Description . . .19
4.16.2 Properties summary .19
4.17 Class UnitSchema .19
4.17.1 Description . . .19
4.17.2 Properties summary .20
4.17.3 Method summary .20
4.18 Class UUID [Serializable()] .20
4.18.1 Description . . .20
4.18.2 Properties .21
5 Object-oriented interfaces for supporting BioAPI_Units .21
5.1 General .21
5.2 Interface IArchive .21
5.2.1 Description . . .21
5.2.2 Method summary .22
5.3 Interface IComparison .24
5.3.1 Description . . .24
5.3.2 Method summary .25
5.4 Interface IProcessing .27
5.4.1 Description . . .27
5.4.2 Method summary .28
5.5 Interface ISensor .29
5.5.1 Description . . .29
5.5.2 Method summary .29
6 BFP level .30
6.1 Interface IBFP .30
6.1.1 Description . . .30
6.1.2 Imported interfaces .30
6.1.3 Properties summary .30
6.1.4 Events summary .30
6.1.5 Method summary .31
7 BSP level .33
7.1 Interface IBSP .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 Framework level .40
8.1 Interface IComponentRegistry .40
8.1.1 Description . . .40
8.1.2 Method summary .41
iv © ISO/IEC 2016 – All rights reserved

8.2 Interface IFramework .42
8.2.1 Description . . .42
8.2.2 Inherited interfaces .42
8.2.3 Properties summary .42
8.2.4 Method summary .43
9 Application interaction .47
9.1 Class BioAPIException: Exception .47
9.1.1 Description . . .47
9.1.2 Constructor summary .48
9.1.3 Properties summary .48
9.1.4 Method summary .49
9.2 Callback functions .49
9.2.1 Description . . .49
9.2.2 Callback functions specification .50
Annex A (informative) Calling sequence examples and sample code .55
Bibliography .56
© ISO/IEC 2016 – 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. In the field of information technology, ISO and IEC have established a joint technical committee,
ISO/IEC JTC 1.
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).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation on the meaning of ISO specific terms and expressions related to conformity
assessment, as well as information about ISO’s adherence to the WTO principles in the Technical
Barriers to Trade (TBT) see the following URL: Foreword - Supplementary information
The committee responsible for this document is ISO/IEC JTC 1, Information technology, SC 37, Biometrics.
ISO/IEC 30106 consists of the following parts, under the general title Information technology — Object-
oriented BioAPI:
— Part 1: Architecture
— Part 2: Java implementation
— Part 3: C# implementation
vi © ISO/IEC 2016 – All rights reserved

Introduction
In this part of ISO/IEC 30106, an application programming interface expressed in C# language is
specified. 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 Common Language Infrastructure
(CLI), 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, etc.) with C++ but includes new
characteristics (reference and output parameters, enumerations, unified type system, etc.). Besides, C#
is very similar to Java (interfaces, exceptions, object-orientation, etc.), 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 2016 – All rights reserved vii

INTERNATIONAL STANDARD ISO/IEC 30106-3:2016(E)
Information technology — Object oriented BioAPI —
Part 3:
C# implementation
1 Scope
This part of ISO/IEC 30106 specifies an interface of a BioAPI C# framework and BioAPI C# BSP which
will mirror the corresponding components specified in ISO/IEC 30106-1. The semantic equivalence of
this part of ISO/IEC 30106 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, in whole or in part, are normatively referenced in this document and are
indispensable for its application. For dated references, only the edition cited applies. For undated
references, the latest edition of the referenced document (including any amendments) applies.
ISO/IEC 30106-1, Information technology — BioAPI for object oriented programming languages — Part 1:
Architecture
3 BioAPI C# namespace structure
3.1 Overall structure
The BioAPI C# interface will be divided into several namespaces. The following are the namespace
structure:
— namespace BioAPI: contains functionality to manage units, BSPs, BFPs, the framework and
applications;
— namespace BioAPI.Data: contains all the data structures.
3.2 Namespace BioAPI
3.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.
3.2.2 Structure
The description of this namespace is given explaining a bottom-up structure. In Clause 4, 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
such clause are common to the methods and properties to be added to the implemented BSP and/or BFP
classes.
© ISO/IEC 2016 – All rights reserved 1

This will be followed by the specification of the implementation of the BFP (Clause 5) and BSP (Clause
6) 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 7,
with the framework interface and the component registry) and the application interaction (Clause 8,
with the specification of the exceptions and callback functions). This provides the equivalence to the
API interface in ISO/IEC 19784-1.
3.3 Namespace BioAPI.Data
3.3.1 Namespace description
This namespace contains all data structures needed for the implementation of OO BioAPI.
3.3.2 Structure
Several data structures are provided to comply with the requirements of specifying this part of
ISO/IEC 30106. All the BioAPI.Data namespace is specified in Clause 3, where all needed classes and
enumerations are defined. This has to be complemented to the constants defined in ISO/IEC 30106-1.
4 Data types and constants
4.1 Class ACBioParameters
4.1.1 Description
Structure provides the information which is used to generate ACBio instances.
4.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.
4.2 Class BFPListElement
4.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.
4.2.2 Properties summary
— UnitCategoryType UnitCategory {get; set;}: The category of the unit.
— UUID BFPID {get; set;}: The UUID assigned to the BFP.
2 © ISO/IEC 2016 – All rights reserved

4.3 Class BFPSchema [Serializable()]
4.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.
4.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:2014, 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 6.1).
— List FactorsMask {get;}: A list of the biometric types supported by the BFP (see 6.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.
4.3.3 Method summary
4.3.3.1  virtual void Dispose ()
Description: Removes all the information in the current object, leaving it empty for a next use
Exception: None
4.4 Class BIR
4.4.1 Description
This interface represents Biometric Information Records (BIRs). It supports ISO/IEC 19785 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.
© ISO/IEC 2016 – All rights reserved 3

4.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 4.13)
— byte CBEFFVersion {get; set;}
— byte PatronHeaderVersion {get; set;}
— RegistryID BDBFormat {get; set;} (see 4.13)
— bool BDBEncription {get; set;}
— bool BIRIntegrity {get; set;}
— BiometricType BDBBiometricType {get; set;} (see 4.7.2.2)
— BiometricSubtype BDBBiometricSubtype {get; set;} (see 4.7.2.1)
— RegistryID BDBCaptureDevice {get; set;} (see 4.13)
— RegistryID BDBFeatureExtractionAlg {get; set;} (see 4.13)
— RegistryID BDBComparisonAlg {get; set;} (see 4.13)
— RegistryID BDBCompresionAlg {get; set;} (see 4.13)
— RegistryID BDBPADTechnique {get; set;} (see 4.13)
— byte[] BDBChallengeResponse {get; set;}
— Date BDBCreationDate {get; set;} (see 4.8)
— byte[] BDBIndex {get; set;}
— ProcessedLevel BDBProcessedLevel {get; set;}
— RegistryID BDBProduct {get; set;} (see 4.13)
— Purpose BDBPurpose {get; set;}
— byte BDBQuality {get; set;}
— RegistryID BDBQualityAlg {get; set;} (see 4.13)
— List BDBValidityPeriod {get; set;} // 2 dates (see 4.8)
— Date BIRCreationDate {get; set;} (see 4.8)
— byte[] BIRCreator {get; set;}
— byte[] BIRIndex {get; set;}
— byte[] BIRPayload { get; set;}
— byte[] BIRPointer {get; set;}
— List BIRValidityPeriod { get; set; } // 2 dates (see 4.8)
— RegistryID SBFormat {get; set;} (see 4.13)
— byte[] BDBData {get; set;}
— byte[] SBData {get; set;}
4 © ISO/IEC 2016 – All rights reserved

4.4.3 Method summary
4.4.3.1  virtual BIR (byte[] record)
Description: Constructs the BIR data from a byte array coded as an ISO/IEC 19785
self-identifying record
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 9.1)
4.4.3.2  virtual BIR (RegistryID bDBFormat, bool bDBEncription, bool bIRIntegrity, Biome-
tricType bDBBiometricType, BiometricSubtype bDBBiometricSubtype, RegistryID bDBCap-
tureDevice, RegistryID bDBFeatureExtractionAlg, RegistryID bDBComparisonAlg, RegistryID
bDBCompresionAlg, RegistryID bDBPADTechnique, byte[] bDBChallengeResponse, Date bDB-
CreationDate, byte[] bDBIndex, ProcessedLevel bDBProcessedLevel, RegistryID bDBProduct,
Purpose bDBPurpose, byte bDBQuality, RegistryID bDBQualityAlg, List bDBValidityPer-
iod, Date bIRCreationDate, byte[] bIRCreator, byte[] bIRIndex, byte[] bIRPayload, byte[] bIR-
Pointer, 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 9.1)
4.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 9.1)
4.4.3.4  virtual void Dispose ()
Description: Removes all the information in the current BIR, leaving it empty for a next use
Exception: None
4.5 Class BSPSchema [Serializable()]
4.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.
© ISO/IEC 2016 – All rights reserved 5

4.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, 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 of the data formats that are supported by the
BSP (see 4.13).
— List FactorsMask {get;}: A list of the biometric types supported by the BSP (see
4.7.2.2).
— List Operations {get;}: A list of the biometric operations supported by the
BSP (see 4.7.2.4).
— List Options {get;}: A list of the biometric options supported by the BSP (see
4.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.
— 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
6 © ISO/IEC 2016 – All rights reserved

— int MaxNumEnrolInstances {get;}: The maximum number of distinct instances that a BSP can create
reference templates for 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 whose component registry
contains a registration of the BSP. This parameter shall be ignored by frameworks conforming to
this part of ISO/IEC 30106 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 ISO/IEC 30106 and can be set to any UUID value
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.
NOTE The “BSPAccess_UUID” and the “HostingendpointIRI” are part of the definition of the C type
BioAPI_BSP_SCHEMA, but are not part of the BSP schema information stored in the component registry (see
ISO/IEC 19784-1).
— List BSPSupportedAlgorithms {get;}: Array of BioAPI_ALGORITHM_ID structures
specifying the supported algorithms.
— List< UUID> BSPSupportedTransformOperations {get;}: Array of BioAPI_UUID structures specifying
the transform operations supported within the BioAPI_Tranform operation.
4.5.3 Method summary
4.5.3.1  virtual void Dispose ()
Description: Removes all the information in the current object, leaving it empty for a next use
Exception: None
4.6 Class Candidate
4.6.1 Description
Defines each of the resulting candidates from the Identify functionality.
4.6.2 Properties summary
— UUID Key {
...

Questions, Comments and Discussion

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

Loading comments...