+
+
+class GeneralName(Choice):
+ schema = (
+ # ('otherName', AnotherName(impl=tag_ctxc(0))),
+ # ('rfc822Name', IA5String(impl=tag_ctxp(1))),
+ ('dNSName', IA5String(impl=tag_ctxp(2))),
+ # ('x400Address', ORAddress(impl=tag_ctxp(3))),
+ # ('x400Address', OctetString(impl=tag_ctxp(3))),
+ # ('directoryName', Name(expl=tag_ctxc(4))),
+ # ('ediPartyName', EDIPartyName(impl=tag_ctxc(5))),
+ # ('uniformResourceIdentifier', IA5String(impl=tag_ctxp(6))),
+ # ('iPAddress', OctetString(impl=tag_ctxp(7))),
+ # ('registeredID', ObjectIdentifier(impl=tag_ctxp(8))),
+ )
+
+
+class GeneralNames(SequenceOf):
+ schema = GeneralName()
+ bounds = (1, float('+inf'))
+
+
+class SubjectAltName(GeneralNames):
+ pass