Path: blob/master/lib/rex/proto/crypto_asn1/x509.rb
19664 views
# -*- coding: binary -*-1require 'rasn1'2require 'rex/proto/crypto_asn1/types'34module Rex::Proto::CryptoAsn1::X5095class X121Address < RASN1::Model6numeric_string :X121Address7end89class NetworkAddress < X121Address10root_options implicit: 011end1213class TerminalIdentifier < RASN1::Model14printable_string :TerminalIdentifier, implicit: 115end1617class AdministrationDomainName < RASN1::Model18choice :AdministrationDomainName, class: :application, explicit: 2, content: [19numeric_string(:numeric),20printable_string(:printable)21]22end2324class AttributeType < RASN1::Types::ObjectId25end2627class AttributeValue < RASN1::Types::Any28end2930class AttributeTypeAndValue < RASN1::Model31sequence :AttributeTypeAndValue, content: [32wrapper(model(:type, AttributeType)),33wrapper(model(:value, AttributeValue))34]35end3637class CountryName < RASN1::Model38choice :CountryName, class: :application, explicit: 1, content: [39numeric_string(:x121_dcc_code),40printable_string(:iso_3166_alpha2_code)41]42end4344class DirectoryString < RASN1::Model45choice :DirectoryString, content: [46teletex_string(:teletexString, strict_encoding: false),47printable_string(:printableString),48universal_string(:universalString),49utf8_string(:utf8String),50bmp_string(:bmpString)51]52end5354class EDIPartyName < RASN1::Model55sequence :EDIPartyName, content: [56wrapper(model(:nameAssigner, DirectoryString), implicit: 0, optional: true),57wrapper(model(:partyName, DirectoryString), implicit: 1)58]59end6061class ExtensionAttribute < RASN1::Model62sequence :ExtensionAttribute, content: [63integer(:extension_attribute_type, implicit: 0),64any(:extension_attribute_value, implicit: 1)65]66end6768class ExtensionAttributes < RASN1::Model69set_of(:ExtensionAttributes, ExtensionAttribute)70end7172class NumericUserIdentifier < RASN1::Model73numeric_string :NumericUserIdentifier, implicit: 474end7576class OrganizationName < RASN1::Model77printable_string :OrganizationName, implicit: 378end7980class OrganizationalUnitName < RASN1::Types::PrintableString81end8283class OrganizationalUnitNames < RASN1::Model84sequence_of(:OrganizationalUnitNames, OrganizationalUnitName)85end8687class PersonalName < RASN1::Model88set :PersonalName, content: [89printable_string(:surname, implicit: 0),90printable_string(:given_name, implicit: 1),91printable_string(:initials, implicit: 2),92printable_string(:generation_qualifier, implicit: 3)93]94end9596class PrivateDomainName < RASN1::Model97choice :PrivateDomainName, content: [98numeric_string(:numeric),99printable_string(:printable)100]101end102103class SubjectPublicKeyInfo < RASN1::Model104sequence :subject_public_key_info,105explicit: 1, constructed: true, optional: true,106content: [model(:algorithm, Rex::Proto::CryptoAsn1::Cms::AlgorithmIdentifier),107bit_string(:subject_public_key)108]109end110111class BuiltinDomainDefinedAttribute < RASN1::Model112sequence :BuiltinDomainDefinedAttribute, content: [113printable_string(:type),114printable_string(:value)115]116end117118class BuiltInDomainDefinedAttributes < RASN1::Model119sequence_of(:BuiltInDomainDefinedAttributes, BuiltinDomainDefinedAttribute)120end121122class BuiltInStandardAttributes < RASN1::Model123sequence :BuiltInStandardAttributes, content: [124wrapper(model(:country_name, CountryName), explicit: 0, class: :application, optional: true),125wrapper(model(:administration_domain_name, AdministrationDomainName), explicit: 1, class: :application, optional: true),126wrapper(model(:network_address, NetworkAddress), implicit: 0, optional: true),127wrapper(model(:terminal_identifier, TerminalIdentifier), implicit: 1, optional: false),128wrapper(model(:private_domain_name, PrivateDomainName), implicit: 2, optional: true),129wrapper(model(:organization_name, OrganizationName), implicit: 3, optional: true),130wrapper(model(:numeric_user_identifier, NumericUserIdentifier), implicit: 4, optional: true),131wrapper(model(:personal_name, PersonalName), implicit: 5, optional: true),132wrapper(model(:organizational_unit_names, OrganizationalUnitNames), implicit: 6, optional: true)133]134end135136class RelativeDistinguishedName < RASN1::Model137set_of(:RelativeDistinguishedName, AttributeTypeAndValue)138end139140class RDNSequence < RASN1::Model141sequence_of(:RDNSequence, RelativeDistinguishedName)142end143144class Name < RASN1::Model145choice :Name, content: [146wrapper(model(:RDNSequence, RDNSequence))147]148end149150class ORAddress < RASN1::Model151sequence :ORAddress, implicit: 3, content: [152wrapper(model(:built_in_standard_attributes, BuiltInStandardAttributes)),153wrapper(model(:built_in_domain_defined_attributes, BuiltInDomainDefinedAttributes), optional: true),154wrapper(model(:extension_attributes, ExtensionAttributes), optional: true)155]156end157158class OtherName < RASN1::Model159sequence :OtherName, implicit: 0, content: [160objectid(:type_id),161any(:value, explicit: 0, constructed: true)162]163end164165class GeneralName < RASN1::Model166choice :GeneralName, content: [167wrapper(model(:otherName, OtherName), implicit: 0),168ia5_string(:rfc822Name, implicit: 1),169ia5_string(:dNSName, implicit: 2),170wrapper(model(:x400Address, ORAddress), implicit: 3),171wrapper(model(:directoryName, Name), implicit: 4),172wrapper(model(:ediPartyName, EDIPartyName), implicit: 5),173ia5_string(:uniformResourceIdentifier, implicit: 6),174octet_string(:iPAddress, implicit: 7),175objectid(:registeredID, implicit: 8)176]177end178179# https://datatracker.ietf.org/doc/html/rfc3280#section-4.2.1.7180class GeneralNames < RASN1::Model181sequence_of(:GeneralNames, GeneralName)182end183184# https://datatracker.ietf.org/doc/html/rfc3280#section-4.2.1.7185class SubjectAltName < GeneralNames186end187188# https://datatracker.ietf.org/doc/html/rfc3280#section-4.2.1.5189class PolicyQualifierInfo < RASN1::Model190sequence :PolicyQualifierInfo, content: [191objectid(:policyQualifierId),192any(:qualifier)193]194end195196# https://datatracker.ietf.org/doc/html/rfc3280#section-4.2.1.5197class PolicyInformation < RASN1::Model198sequence :PolicyInformation, content: [199objectid(:policyIdentifier),200sequence_of(:policyQualifiers, PolicyQualifierInfo, optional: true)201]202end203204# https://datatracker.ietf.org/doc/html/rfc3280#section-4.2.1.5205class CertificatePolicies < RASN1::Model206sequence_of(:certificatePolicies, PolicyInformation)207end208end209210211