ietf-smime
[Top] [All Lists]

Re: Definitions: ref to X.680-9

1997-10-29 06:36:53
Section 1.3 ASN.1 definition should read as follows:  

ASN.1: Abstract Syntax Notation One, as defined in ITU-T X.680-3. 

Since ASN.1 is common text published by ISO, IEC and ITU, the correct reference 
is "ISO/IEC 8824 | ITU-T X.680-3".


the following would be used (according to X.680-2):

SMIMECapability ::= SEQUENCE {
    capabilityID CAPABILITY.&id ({SupportedCapabilities}),
    parameters CAPABILITY.&Parameter
({SupportedCapabilities}{(_at_)capabilityID}) }      

First, the following information object class would be defined:

CAPABILITY CLASS ::= {
        &id     OBJECT IDENTIFIER UNIQUE,
        &Parameter      
}
WITH SYNTAX
{
        ID      &id
        [PARAMETER &Parameter]
}

The above has the &Parameter field mandatory in the class but optional in the 
syntax, which is inconsistent, and the syntax of the CLASS definition is 
incorrect. If it should be mandatory then it is better to use the built-in 
replacement for ANY DEFINED BY, which is called TYPE-IDENTIFIER (see Annex A in 
8824-2|X.681), to give:

SMIMECapability ::= SEQUENCE {
    capabilityID CAPABILITY.&id ({SupportedCapabilities}),
    parameters CAPABILITY.&Type ({SupportedCapabilities}{(_at_)capabilityID}) }

CAPABILITY ::= TYPE-IDENTIFIER


Each capability would then be defined:

RC2-CBC OBJECT IDENTIFIER ::=
    {iso(1) member-body(2) US(840) rsadsi(113549) encryptionAlgorithm(3) 2}

As the above is a value definition its identifier must start with a lower case 
letter. To avoid confusion with the value of the CAPABILITY information object 
class, I suggest:

id-rc2-cbc OBJECT IDENTIFIER ::=
    {iso(1) member-body(2) US(840) rsadsi(113549) encryptionAlgorithm(3) 2}


The examples then become:

rc2-CBC CAPABILITY ::= { SMIMECapabilitiesParametersForRC2CBC IDENTIFIED BY 
id-rc2-cbc }
des-cbc CAPABILITY ::= { NULL IDENTIFIED BY id-des-cbc }



If the parameters field should be optional then the definitions should become:

SMIMECapability ::= SEQUENCE {
    capabilityID CAPABILITY.&id ({SupportedCapabilities}),
    parameters CAPABILITY.&Type ({SupportedCapabilities}{(_at_)capabilityID}) 
OPTIONAL }

CAPABILITY ::= CLASS {
    &id OBJECT IDENTIFIER UNIQUE,
    &Type OPTIONAL }
WITH SYNTAX { [&Type] IDENTIFIED BY &id }


and the examples become:

rc2-CBC CAPABILITY ::= { SMIMECapabilitiesParametersForRC2CBC IDENTIFIED BY 
id-rc2-cbc }
des-cbc CAPABILITY ::= { IDENTIFIED BY id-des-cbc }

<Prev in Thread] Current Thread [Next in Thread>