123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- #
- # This file is part of pyasn1-modules software.
- #
- # Created by Russ Housley with assistance from asn1ate v.0.6.0.
- # Modified by Russ Housley to add maps for use with opentypes.
- #
- # Copyright (c) 2019, Vigil Security, LLC
- # License: http://snmplabs.com/pyasn1/license.html
- #
- # Logotypes in X.509 Certificates
- #
- # ASN.1 source from:
- # https://www.rfc-editor.org/rfc/rfc3709.txt
- #
- from pyasn1.type import char
- from pyasn1.type import constraint
- from pyasn1.type import namedtype
- from pyasn1.type import namedval
- from pyasn1.type import tag
- from pyasn1.type import univ
- from pyasn1_modules import rfc5280
- from pyasn1_modules import rfc6170
- MAX = float('inf')
- class HashAlgAndValue(univ.Sequence):
- pass
- HashAlgAndValue.componentType = namedtype.NamedTypes(
- namedtype.NamedType('hashAlg', rfc5280.AlgorithmIdentifier()),
- namedtype.NamedType('hashValue', univ.OctetString())
- )
- class LogotypeDetails(univ.Sequence):
- pass
- LogotypeDetails.componentType = namedtype.NamedTypes(
- namedtype.NamedType('mediaType', char.IA5String()),
- namedtype.NamedType('logotypeHash', univ.SequenceOf(
- componentType=HashAlgAndValue()).subtype(
- sizeSpec=constraint.ValueSizeConstraint(1, MAX))),
- namedtype.NamedType('logotypeURI', univ.SequenceOf(
- componentType=char.IA5String()).subtype(
- sizeSpec=constraint.ValueSizeConstraint(1, MAX)))
- )
- class LogotypeAudioInfo(univ.Sequence):
- pass
- LogotypeAudioInfo.componentType = namedtype.NamedTypes(
- namedtype.NamedType('fileSize', univ.Integer()),
- namedtype.NamedType('playTime', univ.Integer()),
- namedtype.NamedType('channels', univ.Integer()),
- namedtype.OptionalNamedType('sampleRate', univ.Integer().subtype(
- implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 3))),
- namedtype.OptionalNamedType('language', char.IA5String().subtype(
- implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)))
- )
- class LogotypeAudio(univ.Sequence):
- pass
- LogotypeAudio.componentType = namedtype.NamedTypes(
- namedtype.NamedType('audioDetails', LogotypeDetails()),
- namedtype.OptionalNamedType('audioInfo', LogotypeAudioInfo())
- )
- class LogotypeImageType(univ.Integer):
- pass
- LogotypeImageType.namedValues = namedval.NamedValues(
- ('grayScale', 0),
- ('color', 1)
- )
- class LogotypeImageResolution(univ.Choice):
- pass
- LogotypeImageResolution.componentType = namedtype.NamedTypes(
- namedtype.NamedType('numBits',
- univ.Integer().subtype(implicitTag=tag.Tag(
- tag.tagClassContext, tag.tagFormatSimple, 1))),
- namedtype.NamedType('tableSize',
- univ.Integer().subtype(implicitTag=tag.Tag(
- tag.tagClassContext, tag.tagFormatSimple, 2)))
- )
- class LogotypeImageInfo(univ.Sequence):
- pass
- LogotypeImageInfo.componentType = namedtype.NamedTypes(
- namedtype.DefaultedNamedType('type', LogotypeImageType().subtype(
- implicitTag=tag.Tag(tag.tagClassContext,
- tag.tagFormatSimple, 0)).subtype(value='color')),
- namedtype.NamedType('fileSize', univ.Integer()),
- namedtype.NamedType('xSize', univ.Integer()),
- namedtype.NamedType('ySize', univ.Integer()),
- namedtype.OptionalNamedType('resolution', LogotypeImageResolution()),
- namedtype.OptionalNamedType('language', char.IA5String().subtype(
- implicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 4)))
- )
- class LogotypeImage(univ.Sequence):
- pass
- LogotypeImage.componentType = namedtype.NamedTypes(
- namedtype.NamedType('imageDetails', LogotypeDetails()),
- namedtype.OptionalNamedType('imageInfo', LogotypeImageInfo())
- )
- class LogotypeData(univ.Sequence):
- pass
- LogotypeData.componentType = namedtype.NamedTypes(
- namedtype.OptionalNamedType('image', univ.SequenceOf(
- componentType=LogotypeImage())),
- namedtype.OptionalNamedType('audio', univ.SequenceOf(
- componentType=LogotypeAudio()).subtype(
- implicitTag=tag.Tag(tag.tagClassContext,
- tag.tagFormatSimple, 1)))
- )
- class LogotypeReference(univ.Sequence):
- pass
- LogotypeReference.componentType = namedtype.NamedTypes(
- namedtype.NamedType('refStructHash', univ.SequenceOf(
- componentType=HashAlgAndValue()).subtype(
- sizeSpec=constraint.ValueSizeConstraint(1, MAX))),
- namedtype.NamedType('refStructURI', univ.SequenceOf(
- componentType=char.IA5String()).subtype(
- sizeSpec=constraint.ValueSizeConstraint(1, MAX)))
- )
- class LogotypeInfo(univ.Choice):
- pass
- LogotypeInfo.componentType = namedtype.NamedTypes(
- namedtype.NamedType('direct',
- LogotypeData().subtype(implicitTag=tag.Tag(tag.tagClassContext,
- tag.tagFormatConstructed, 0))),
- namedtype.NamedType('indirect', LogotypeReference().subtype(
- implicitTag=tag.Tag(tag.tagClassContext,
- tag.tagFormatConstructed, 1)))
- )
- # Other logotype type and associated object identifiers
- id_logo_background = univ.ObjectIdentifier('1.3.6.1.5.5.7.20.2')
- id_logo_loyalty = univ.ObjectIdentifier('1.3.6.1.5.5.7.20.1')
- id_logo_certImage = rfc6170.id_logo_certImage
- class OtherLogotypeInfo(univ.Sequence):
- pass
- OtherLogotypeInfo.componentType = namedtype.NamedTypes(
- namedtype.NamedType('logotypeType', univ.ObjectIdentifier()),
- namedtype.NamedType('info', LogotypeInfo())
- )
- # Logotype Certificate Extension
- id_pe_logotype = univ.ObjectIdentifier('1.3.6.1.5.5.7.1.12')
- class LogotypeExtn(univ.Sequence):
- pass
- LogotypeExtn.componentType = namedtype.NamedTypes(
- namedtype.OptionalNamedType('communityLogos', univ.SequenceOf(
- componentType=LogotypeInfo()).subtype(
- explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatSimple, 0))),
- namedtype.OptionalNamedType('issuerLogo', LogotypeInfo().subtype(
- explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
- namedtype.OptionalNamedType('subjectLogo', LogotypeInfo().subtype(
- explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
- namedtype.OptionalNamedType('otherLogos', univ.SequenceOf(
- componentType=OtherLogotypeInfo()).subtype(explicitTag=tag.Tag(
- tag.tagClassContext, tag.tagFormatSimple, 3)))
- )
- # Map of Certificate Extension OIDs to Extensions added to the
- # ones that are in rfc5280.py
- _certificateExtensionsMapUpdate = {
- id_pe_logotype: LogotypeExtn(),
- }
- rfc5280.certificateExtensionsMap.update(_certificateExtensionsMapUpdate)
|