Hello.Now I started to study ASN.1.So I still beginner of
ASN.1.Please () that I'm not familiar with ASN.1.
Now I can't understand the meaning of tagged type.
According to "A Layman's Guide to a Subset of ASN.1, BER,
and DER",it describes "tagged type is derived from another
type".But what does "another type" mean?With regard to the
following example,why "Version" or "Extensions" type
shuold be defined as explicitly tagged type.From which
type the "Version" or "Extensions" type is derived?I can't
find the "underlying type".And what is the difference of
explicitly tagged type and implicitly tagged type.Why do
we need to distinguish the usage of them.
By the way how can we assign the tag number within the
class?Is there some rule?

I know this kind of question is very primitive.But Could
someone teach me.

Best Reagrds.

Example:X.509 Basic Syntax

   TBSCertificate  ::=  SEQUENCE  {
        version         [0]  EXPLICIT Version DEFAULT v1,
        serialNumber         CertificateSerialNumber,
        signature            AlgorithmIdentifier,
        issuer               Name,
        validity             Validity,
        subject              Name,
        subjectPublicKeyInfo SubjectPublicKeyInfo,
        issuerUniqueID  [1]  IMPLICIT UniqueIdentifier
OPTIONAL,
                             -- If present, version shall
be v2 or v3
        subjectUniqueID [2]  IMPLICIT UniqueIdentifier
OPTIONAL,
                             -- If present, version shall
be v2 or v3
        extensions      [3]  EXPLICIT Extensions OPTIONAL
                             -- If present, version shall
be v3
        }

   Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }

   CertificateSerialNumber  ::=  INTEGER

   Validity ::= SEQUENCE {
        notBefore      Time,
        notAfter       Time }

   Time ::= CHOICE {
        utcTime        UTCTime,
        generalTime    GeneralizedTime }

   UniqueIdentifier  ::=  BIT STRING

   SubjectPublicKeyInfo  ::=  SEQUENCE  {
        algorithm            AlgorithmIdentifier,
        subjectPublicKey     BIT STRING  }

   Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension

   Extension  ::=  SEQUENCE  {
        extnID      OBJECT IDENTIFIER,
        critical    BOOLEAN DEFAULT FALSE,
        extnValue   OCTET STRING  }


__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/

Reply via email to