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/