Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 19794-7-2009 Автоматическая идентификация. Идентификация биометрическая. Форматы обмена биометрическими данными. Часть 7. Данные динамики подписи

Приложение В
(справочное)

Спецификация языка ASN.1 форматов обмена данными

В.1 Абстрактный синтаксис кодирования данных динамики подписи

Настоящий стандарт определяет полные представления на разрядном уровне полного формата и компактного формата данных динамики подписи, удобного для передачи и/или хранения. Это называется стандартным кодированием данных динамики подписи. Также рекомендуется определить формы полного и компактного форматов, независимо от их представления на разрядном уровне (абстрактный синтаксис). Это обеспечивает следующие возможности:

а) использование различных кодировок (например, кодирование на языке XML);

b) использование различных представлений в ядре операционной системы с применением структур, удобных для облегчения обработки с использованием языков программирования С, C++ или Java;

с) возможность использования более широкого диапазона инструментов при формировании записей;

d) облегчение представления в ядре операционной системы на биометрических устройствах, которые не имеют архитектуры аппаратных средств с обратным порядком байтов;

e) более понятное описание величин в форматах обмена данных.

Абстрактный синтаксис определен в данном приложении с использованием языка ASN.1. Стандартные кодировки данных динамики подписи достигаются путем применения переменных без выравнивания основных правил кодировки с уплотнением языка ASN.1 к модулям ASN.1, приведенным в В.2 и В.3, включая дополнительные указания по кодировке с использованием кодировки с уплотнением. Окончательные кодировки должны быть аналогичны указанным в настоящем стандарте.

При использовании в качестве схемы абстрактного синтаксиса допустимо выполнять преобразования между любыми кодировками величин и представлениями в ядре операционной системы при любой архитектуре аппаратных средств и для любого языка программирования. Инструменты, которые преобразуют эти спецификации в структуре данных языка программирования, называются компиляторами языка ASN.1 и поддерживаются исполнительными программами, которые будут выполнять преобразование значений внутри ядра в другие кодировки. Эти инструменты поддерживаются многими производителями. В частности, инструменты, которые выполняют преобразование стандартной кодировки данных динамики подписи в представления значений внутри ядра, являются доступными для большинства архитектур аппаратных средств и большинства языков программирования.

В.2 Полный формат данных динамики подписи

SignatureSignFullFormatModule

{iso standard 19794 signature-sign(7) modules(0) record-format(0) version(0)}

DEFINITIONS

PER INSTRUCTIONS

- - This specifies that PER Encoding Instructions are to be applied

AUTOMATIC TAGS ::=

BEGIN

SignatureSignBlock ::= SEQUENCE {

header Header,

body Body

}

Header ::= SEQUENCE {

formatld

[NULL] IA5String ("SDI"),

standardVersion [NULL]IA5String (SIZE (3)),

- - "10" (space-one-zero) for this version

channellnclusions Channellnclusions,

channelDescriptions ChannelDescriptions

}

Channellnclusions ::= SEQUENCE {

x - included

BOOLEAN,

у - included

BOOLEAN,

z - included

BOOLEAN,

vX - included

BOOLEAN,

vY - included

BOOLEAN,

aX - included

BOOLEAN,

aY - included

BOOLEAN,

t - included

BOOLEAN,

dt - included

BOOLEAN,

f - included

BOOLEAN,

s - included

BOOLEAN,

tX - included

BOOLEAN,

tY - included

BOOLEAN,

az - included

BOOLEAN,

el - included

BOOLEAN,

r - included

BOOLEAN

} (WITH COMPONENTS {x-included (TRUE), y-included (TRUE)})

ChannelDescriptions ::= [OPTIONALITY-INHeader.channellnclusions] SEQUENCE {

- - The optionality bit-map is taken from the channel inclusions.

- - The channellnclusions structure is needed because the same bit-map controls

- - the optionality in each SamplePoint SEQUENCE in the SamplePoints SEQUENCE OF.

x SignedChannelDescr

OPTIONAL,

у SignedChannelDescr

OPTIONAL,

z UnsignedChannelDescr

OPTIONAL,

vX SignedChannelDescr

OPTIONAL,

vY SignedChannelDescr

OPTIONAL,

aX SignedChannelDescr

OPTIONAL,

aY SignedChannelDescr

OPTIONAL,

t UnsignedChannelDescr

OPTIONAL,

dt UnsignedChannelDescr

OPTIONAL,

f UnsignedChannelDescr

OPTIONAL,

s UnsignedChannelDescr

OPTIONAL,

tX SignedChannelDescr

OPTIONAL,

tY SignedChannelDescr

OPTIONAL,

az UnsignedChannelDescr

OPTIONAL,

el UnsignedChannelDescr

OPTIONAL,

r UnsignedChannelDescr

OPTIONAL

}

SignedChannelDescr ::= SEQUENCE{

preamble Preamble,

channelAttributes SignedChannelAttributes

}

UnsignedChannelDescr ::= SEQUENCE {

preamble Preamble,

channelAttributes UnsignedChannelAttributes

}

Preamble ::= SEQUENCE {

scalingValue-included

BOOLEAN,

min-included

BOOLEAN,

max-included

BOOLEAN,

mean-included

BOOLEAN,

std-included

BOOLEAN,

is-constant

BOOLEAN,

IinearComp-removed

BOOLEAN,

reserved

BOOLEAN

}

SignedChannelAttributes ::= [OPTIONALITY-IN SignedChannelDescr. preamble] SEQUENCE

{ - - The optionality bit-map is taken from the channel description preamble.

scalingValue ScalingValue

OPTIONAL,

min Signedlnt16

OPTIONAL,

max Signedlnt16

OPTIONAL,

mean Signedlnt16

OPTIONAL,

std Unsignedlnt16

OPTIONAL

}

UnsignedChannelAttributes ::= [OPTIONALITY-IN

UnsignedChannelDescr.preamble]

SEQUENCE { - - The optionality bit-map is taken from the channel description preamble.

scalingValue ScalingValue

OPTIONAL,

min Unsignedlnt16

OPTIONAL,

max Unsignedlnt16

OPTIONAL,

mean Unsignedlnt16

OPTIONAL,

std Unsignedlnt16

OPTIONAL

}

ScalingValue ::= SEQUENCE{

exponent INTEGER (-16..15),

fraction INTEGER (0..2047)

}

Body ::= [SIZE 8] SEQUENCE{

- - 8 bit optionality bit-map, with only one bit used. Other bits will be set to

- - zero by encoders, ignored by decoders.

samplePoints [LENGTH 3][COUNT-OCTETS] SEQUENCE SIZE (0..16777215) OF SamplePoint,

- - Prevents optimisation for short length, forcing 3 octets in all cases

extendedData [LENGTH 2][COUNT-OCTETS] OCTET STRING OPTIONAL

- - Prevents optimisation for short length, forcing 2 octets in all cases

}

SamplePoint ::= [OPTIONALITY-IN Header.channellnclusions] SEQUENCE {

- - As above

x Signedlnt16

OPTIONAL,

у Signedlnt16

OPTIONAL,

z Unsignedlnt16

OPTIONAL,

vX Signedlnt16

OPTIONAL,

vY Signedlnt16

OPTIONAL,

aX Signedlnt16

OPTIONAL,

aY Signedlnt16

OPTIONAL,

t Unsignedlnt16

OPTIONAL,

dt Unsignedlnt16

OPTIONAL,

f Unsignedlnt16

OPTIONAL,

s Unsignedlnt8

OPTIONAL,

tX Signedlnt16

OPTIONAL,

tY Signedlnt16

OPTIONAL,

az Unsignedlnt16

OPTIONAL,

el Unsignedlnt16

OPTIONAL,

r Unsignedlnt16

OPTIONAL

}

Unsignedlnt16 ::= INTEGER (0..65535)

Signedlnt16 ::= INTEGER (-32768..32767)

Unsignedlnt8 ::= INTEGER (0..255)

END

В.3 Компактный формат данных динамики подписи

SignatureSignCompactFormatModule

{iso standard 19794 signature-sign(7) modules(0) compact-format(1) version(0)}

DEFINITIONS

AUTOMATIC TAGS ::=

BEGIN

CompactSignatureSignBlock ::= SEQUENCE OF SamplePoint

SamplePoint ::= SEQUENCE {

x

Signedlnt8

OPTIONAL,

y

Signedlnt8

OPTIONAL,

z

Unsignedlnt8

OPTIONAL,

vX

Signedlnt8

OPTIONAL,

vY

Signedlnt8

OPTIONAL,

aX

Signedlnt8

OPTIONAL,

aY

Signedlnt8

OPTIONAL,

t

Unsignedlnt8

OPTIONAL,

dt

Unsignedlnt8

OPTIONAL,

f

Unsignedlnt8

OPTIONAL,

s

Unsignedlnt8

OPTIONAL,

tX

Signedlnt8

OPTIONAL,

tY

Signedlnt8

OPTIONAL,

az

Unsignedlnt8

OPTIONAL,

el

Unsignedlnt8

OPTIONAL,

r

Unsignedlnt8

OPTIONAL

}

Signedlnt8 ::= INTEGER (-128..127)

Unsignedlnt8 ::= INTEGER (0..255)

END