Спецификация языка 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 |