|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T q
Length: 25361 (0x6311) Types: TextFile Names: »q-syntax.tex«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/doc/manual/q-syntax.tex«
% run this through LaTeX with the appropriate wrapper \chapter {Attribute Syntaxes} \label{syntaxes} All attributes recognised by Quipu have an associated ``string'' representation, that is used to store the data in the DSA. This Chapter describes all the currently recognised syntaxes. For most of the syntaxes, as BNF description is given, using the following base description:- \begin{quote}\small\begin{verbatim} <a> ::= any of the 52 upper and lower case IA5 letters <d> ::= any IA5 digit 0-9 <k> ::= any of the 52 upper and lower case IA5 letters, IA5 digits, and "-" (hyphen) <p> ::= any IA5 character in ASN.1 PrintableSting <CRLF> ::= IA5 Newline <letterstring> ::= <a> | <a> <letterstring> <numericstring> ::= <d> | <d> <numericstring> <keystring> ::= <k> | <k> <keystring> <printablestring> ::= <p> | <p> <printablestring> \end{verbatim}\end{quote} The BNF description of attributes can be found in Appendix~\ref{bnf}, but this does not repeat the BNF used for syntaxes given below. \section{Standard Syntaxes} This section describes the Attribute Syntaxes defined by X.500. There are many attributes that are represented by a sequence of printable characters. There are various was in which the contents of the string is restricted, each is represented by a different syntax, which are described below. \subsection{PrintableString} \index{PrintableString} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline serialNumber\\ \hline \end{tabular} \end{center} The printable string characters are: \begin{quote}\begin{tabular}{l} \verb"A" through \verb"Z"\\ \verb"a" through \verb"z"\\ \verb"0" through \verb"9"\\ \verb"'" (apostrophe)\\ \verb"(" (left parenthesis)\\ \verb")" (right parenthesis)\\ \verb"+" (plus-sign)\\ \verb"," (comma)\\ \verb"-" (hyphen)\\ \verb"." (period)\\ \verb"/" (solidus)\\ \verb":" (colon)\\ \verb"?" (question-mark)\\ space \end{tabular}\end{quote} The value can be any character listed above, with matching as for CaseExactString. When matching multiple white spaces and tabs are treated as a single space character. Approximate matching is supported for this syntax. The only attribute of this type is \verb+serialNumber+, this is used in the \verb+device+ objectClass, and represents the serial number of the device. \subsection{CaseExactString} \index{CaseExactString} No attributes currently use this syntax. \label{T61String} The value for this syntax can be one of two types, either a printable string, or a T.61 string represented as follows: \begin{verbatim} <StringValue> ::= "{T.61}" <T61String> | <printablestring> <T61String> ::= Any character defined to be in T.61 String. \end{verbatim} Characters in T.61 string that can not be represented by an equivalent ASCII character are quoted, using ``\verb+\xx+'' where ``\verb+xx+'' is the hexadecimal value of the character. Matching is as for PrintableString. \subsection{CaseIgnoreString} \index{CaseIgnoreString} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline knowledgeInformation\\ commonName\\ surname\\ localityName\\ stateOrProvinceName\\ streetAddress\\ organizationName\\ organizationalUnitName\\ title\\ description\\ businessCategory\\ postalCode\\ postOfficeBox\\ physicalDeliveryOfficeName\\ \hline \end{tabular} \end{center} \begin{center} \begin{tabular}{|l|}\hline RARE Attributes \\ \hline userid\\ textEncodedORaddress\\ info\\ favouriteDrink\\ roomNumber\\ userClass\\ host\\ documentIdentifier\\ documentTitle\\ documentVersion\\ documentLocation\\ durName\\ wkdName\\ protocolProfile\\ objectID\\ friendlyCountryName\\ \hline \end{tabular} \end{center} The syntax is the same as CaseExactString, except that when matching ``characters that differ only in their case are considered identical''. Approximate matching is supported for this syntax. The use of some of the attributes is now described, the more obvious ones are omitted. \begin{describe} \item [knowledgeInformation] A description of knowledge mastered by a DSA. \item [localityName] Used to identify the geographical area or locality in which the object is physically located e.g., \begin{quote}\small\begin{verbatim} London \end{verbatim}\end{quote} \item [stateOrProvinceName] describes the state in which the \verb"locality" is found; e.g., \begin{quote}\small\begin{verbatim} New York \end{verbatim}\end{quote} \item [title] An objects job title, e.g., \begin{quote}\small\begin{verbatim} Technical Manager \end{verbatim}\end{quote} \item [businessCategory] describes the business of the object, e.g., \begin{quote}\small\begin{verbatim} networking \end{verbatim}\end{quote} This is used to find people sharing the same occupation. \item [physicalDeliveryOfficeName] describes the geographical location of the physical delivery office which services the postal address of this object; e.g., \begin{quote}\small\begin{verbatim} Troy \end{verbatim}\end{quote} \item [friendlyCountryName] A `nice' name for countries, as opposed to the two letter codes enforced by use of \verb+CountryName+, for example \begin{quote}\small\begin{verbatim} Great Britain \end{verbatim}\end{quote} \end{describe} \subsection{CountryString} \index{CountryString} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline countryName\\ \hline \end{tabular} \end{center} This syntax is treated as a PrintableString, with matching rules as for CaseIgnoreString, and the restriction that the string must consist of exactly two characters. \subsection{IA5String} \index{IA5String}\index{quipuVrsion attribute} \begin{center} \begin{tabular}{|l|}\hline QUIPU Attributes \\ \hline control\\ quipuVersion\\ \hline \end{tabular} \end{center} \begin{center} \begin{tabular}{|l|}\hline RARE Attributes \\ \hline aRecord\\ mDRecord\\ mXRecord\\ nSRecord\\ sOARecord\\ cNAMERecord\\ \hline \end{tabular} \end{center} This syntax is handled as PrintableString, except a wider range of characters are recognised (i.e any character in IA5 string, characters such as NewLine are quoted using the same mechanism as described for T61 string in Section~\ref{T61String}), with matching rules as for CaseExactString. \subsection{VisibleString} \index{VisibleString} \begin{center} \begin{tabular}{|l|}\hline RARE Attributes \\ \hline nRSSystemDescription\\ \hline \end{tabular} \end{center} This is currently treated as an ASN attribute (see Section~\ref{ASN_syntax}). \subsection{OctetString} \index{OctetString} No attributes use this syntax directly. Characters that can not be printed as an ACSII are represented using the quoting mechanism described in Section~\ref{T61String}. \subsection{NumericString} \index{NumericString} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline x121Address\\ internationaliSDNNumber\\ \hline \end{tabular} \end{center} The value is simply a numeric string: \begin{verbatim} <NumericValue> ::= <numericstring> \end{verbatim} The two attributes are used thus: \begin{describe} \item[x121Address] defines the X.121 Address of an object as defined by the CCITT Recommendation X.121 \item[internationaliSDNNumber] An International ISDN Number as defined by CCITT Recommendation E.164. \end{describe} \subsection{DestinationString} \index{DestinationString} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline destinationIndicator\\ \hline \end{tabular} \end{center} Behaves as a \verb+<printablestring>+, with CaseIgnoreString matching rules. The only attribute of the type \verb+destinationIndicator+ is used to define the addressee as required by the Public Telegram Service. \subsection{TelephoneNumber} \index{TelephoneNumber} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline telephoneNumber\\ \hline \end{tabular} \end{center} \begin{center} \begin{tabular}{|l|}\hline RARE Attributes \\ \hline homePhone\\ \hline \end{tabular} \end{center} \begin{center} \begin{tabular}{|l|}\hline NYSER Attributes \\ \hline mobileTelephoneNumber\\ pagerTelephoneNumber\\ \hline \end{tabular} \end{center} The value should be a string describing the phone number of the object using the international notation; e.g., \begin{quote}\begin{verbatim} +1 518-283-8860 \end{verbatim}\end{quote} or \begin{quote}\begin{verbatim} +1 518-283-8860 x1234 \end{verbatim}\end{quote} In general, the syntax is: \begin{quote}\begin{verbatim} "+" <country code> <national number> [ "x" <extension> ] \end{verbatim}\end{quote} Matching is as defined for CaseExactString, except that all space and `-' characters are skipped during the comparison. \subsection{PostalAddress} \index{PostalAddress} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline postalAddress\\ registeredAddress\\ homePostalAddress\\ \hline \end{tabular} \end{center} \begin{verbatim} <PostalAddressValue> ::= <address_component> | <address_component> `$' <address> <address_component> = <StringValue> \end{verbatim} For example \verb+UCL $ Gower Street $ London+. You are limited to a maximum of 6 \verb+<address_component>+'s, each with a maximum of 30 characters. (Note each \verb+<address_component>+ can include T61 strings -- see Section~\ref{T61String} for details of this). Please note: substring matching is not supported by Quipu for this syntax. \subsection{DN} \index{DN}\index{masterDSA attribute} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline aliasedObjectName\\ member\\ owner\\ roleOccupant\\ seeAlso\\ \hline \end{tabular} \end{center} \begin{center} \begin{tabular}{|l|}\hline QUIPU Attributes \\ \hline masterDSA\\ slaveDSA\\ \hline \end{tabular} \end{center} \begin{center} \begin{tabular}{|l|}\hline RARE Attributes \\ \hline manager\\ documentAuthor\\ secretary\\ lastModifiedBy\\ associatedName\\ \hline \end{tabular} \end{center} \begin{center} \begin{tabular}{|l|}\hline MHS Attributes \\ \hline mhsMessageStoreName\\ \hline \end{tabular} \end{center} \begin{verbatim} <DNValue> ::= <name> \end{verbatim} Distinguished names are discussed in Section~\ref{quipu_name}, the BNF is repeated for completeness: \begin{verbatim} <DNValue> ::= <rdn> | <rdn> "@" <DNValue> <rdn> ::= <attribute> | <attribute> "%" <rdn> \end{verbatim} The DNs held by the attribute have the following meanings:- \begin{describe} \item[aliasedObjectName] The name of an aliased object. \item[member] Specifies a member of a \verb+gruopOfNames+. \item[owner] The name of the person responsible for the associated object. \item[roleOccupant] The person that fills an organisational role. \item[seeAlso] Other objects that may be of interest. \item[masterDSA] The DSA holding the master EDB file. \item[slaveDSA] DSAs holding slave EDB files. \item[manager] The manager of a DSA. \item[documentAuthor] Author of a document! \item[secretary] The name of an person Secretary. \item[lastModifiedBy] The object that last modified the referenced object! \end{describe} \subsection{OID} \index{OID} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline supportedApplicationContext\\ \hline \end{tabular} \end{center} \begin{center} \begin{tabular}{|l|}\hline MHS Attributes \\ \hline mhsDeliverableContentTypes\\ mhsDeliverableEits\\ mhsSupportedAutomaticActions\\ mhsSupportedContentTypes\\ mhsSupportedOptionalAttributes\\ \hline \end{tabular} \end{center} \begin{verbatim} <OIDValue> ::= <oid> \end{verbatim} All the syntaxes in this section are represented by OIDs as follows: \begin{verbatim} <oid> ::= <keystring> "." <numericoid> | <keystring> | <numericoid> <numericoid> ::= <numericstring> | <numericstring> "." <numericoid> \end{verbatim} For example \verb+2.3.4.2+ or \verb+attribute.6+. In general, the value will be a string using oidtable mappings. \subsection{ObjectClass} \index{objectClass attribute} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline objectClass\\ \hline \end{tabular} \end{center} Although essentially an OID, a separate syntax is provided an OID has additional semantics when used as an object class. \subsection{TelexNumber} \index{TelexNumber} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline telexNumber\\ \hline \end{tabular} \end{center} \begin{verbatim} <TelexNumberValue> ::= <printablestring> "$" <printablestring> "$" <printablestring> \end{verbatim} This is used to represent \verb+number $ country $ answerback+, for example \verb+28722 $ G $ UCLPHYS+. \subsection{TeletexTerminalIdentifier} \index{TeletexTerminalIdentifier} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline teletexTerminalIdentifier\\ \hline \end{tabular} \end{center} \begin{verbatim} <TeletexTerminalIdentifierValue> ::= <printablestring> "$" <optstr> "$" <optstr> "$" <optstr> "$" <optstr> "$" <optstr> <optstr> ::= <printablestring> | (null) \end{verbatim} Used to represent \begin{quote}\begin{verbatim} terminal $ graphic $ control $ page $ misc $ private \end{verbatim}\end{quote} \subsection{FacsimileTelephoneNumber} \index{FacsimileTelephoneNumber} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline facsimileTelephoneNumber\\ \hline \end{tabular} \end{center} \begin{verbatim} <FacsimileTelephoneNumberValue> ::= <printablestring> [ "$" <faxparameters> ] <faxparameters> ::= <faxparm> | <faxparm> "$" <faxparameters> <faxparm> ::= "twoDimensional" | "fineResolution" | "unlimitedLength" | "b4Length" | "a3Width" | "b4Width" | "uncompressed" \end{verbatim} For example \verb+123-4567 $ twoDimensional+ \subsection{DeliveryMethod} \index{DeliveryMethod} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline preferredDeliveryMethod\\ \hline \end{tabular} \end{center} \begin{center} \begin{tabular}{|l|}\hline MHS Attributes \\ \hline mhsPreferredDeliveryMethods\\ \hline \end{tabular} \end{center} \begin{verbatim} <DeliveryValue> = <pdm_component> | <pdm_component> "$" <pdm> pdm_component = "any" | "mhs" | "physical" | "telex" | "teletex" | "g3fax" | "g4fax" | "ia5" | "videotex" | "telephone" \end{verbatim} For example \verb+mhs $ telephone+. \subsection{PresentationAddress} \index{presentation addresses} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline presentationAddress\\ \hline \end{tabular} \end{center} For more details see \volone/ of this manual and \cite{String.Addresses}. \subsection{Password} \index{Password}\index{user password attribute} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline userPassword\\ \hline \end{tabular} \end{center} See Section~\ref{Passwords} for a discussion of this attribute. \subsection{Certificate} \index{Certificate} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline userCertificate\\ cACertificate\\ \hline \end{tabular} \end{center} \begin{verbatim} <CertificateValue> ::= <Algorithm> "#" <EncryptedValue> "#" <Issuer> "#" <Subject> "#" <Algorithm> "#" <ProtocolVersion> "#" <Serial> "#" <Validity> "#" <Algorithm> "#" <EncryptedValue> \end{verbatim} % Give LaTeX a sporting chance of pagebreaking sensibly. \begin{verbatim} <Algorithm> ::= <OID> "#" <AlgorithmParameters> <AlgorithmParameters> ::= | <IntegerValue> | "{ASN}" <HexString> <Issuer> ::= <DN> <Subject> ::= <DN> <ProtocolVersion> ::= <IntegerValue> <Serial> ::= <IntegerValue> <Validity> ::= <UTCTime> "#" <UTCTime> <EncryptedValue> ::= <HexString> | <HexString> "-" <Digit> \end{verbatim} \subsection{CertificatePair} \index{CertificatePair} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline crossCertificatePair\\ \hline \end{tabular} \end{center} \begin{verbatim} <CertificatePairValue> ::= [<CertificateValue>] "|" [<CertificateValue>] \end{verbatim} At least one certificate should be present, although QUIPU will not enforce this. \subsection{CertificateList} \index{CertificateList} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline authorityRevocationList\\ certificateRevocationList\\ \hline \end{tabular} \end{center} \begin{verbatim} <CertificateListValue> ::= <AlgorithmValue> "#" <Issuer> "#" <AlgorithmValue> "#" <EncryptedValue> "#" <UTCTime> ["#" <RevokedCertificates>] <RevokedCertificates> ::= <AlgorithmValue> "#" <EncryptedValue> [ "#" *(<RevokedCertificate> "#") ] <RevokedCertificate> ::= <Subject> "#" <AlgorithmValue> "#" <SerialNumber> "#" <UTCTime> \end{verbatim} \subsection{Guide} \index{Guide} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline searchGuide\\ \hline \end{tabular} \end{center} \begin{verbatim} <GuideValue> ::= [<objectClass> "#"] <Criteria> <Criteria> ::= <CriteriaItem> | <CriteriaSet> | "!" <Criteria> <CrtieriaSet> ::= ["("] Criteria "@" CriteriaSet [")"] | ["("] Criteria "|" CriteriaSet [")"] <CriteriaItem> ::= ["("] <attributetype> "$" <matchType> [")"] <matchType> ::= "EQ" | "SUBSTR" | "GE" | "LE" | "APPROX" \end{verbatim} Note the use of \verb+@+ for `and', as the \verb+&+ symbol has other meaning here. Some examples of Search Guide are: \begin{quote}\begin{verbatim} Person # commonName $ APPROX ( organization $ EQ ) @ (commonName $ SUBSTR) ( organization $ EQ ) @ ((commonName $ SUBSTR) | \ (commonName $ EQ)) \end{verbatim}\end{quote} \subsection{UTCTime} \index{UTCTime} \begin{center} \begin{tabular}{|l|}\hline Standard Attributes \\ \hline lastModifiedTime\\ \hline \end{tabular} \end{center} \begin{verbatim} <UTCTimeValue> ::= <printablestring> \end{verbatim} The string should be formatted using the template \verb+yymmddhhmmssz+ where \verb+yy+ represents the year; \verb+mm+ represents the month; \verb+dd+ represents the day; \verb+hh+ represents hours; \verb+mm+ represents minutes; \verb+ss+ represents seconds; \verb+z+ represents the timezone. For example the string \verb+890602093221Z+ is used to represent 09:32:21 at GMT, on June~$2^{\underline{\mbox{\scriptsize nd}}}$, {\oldstyle 1989}. \subsection{Boolean} \index{Boolean} No attributes use this syntax. \begin{verbatim} <BooleanValue> ::= <boolean> <boolean> ::= "TRUE" | "FALSE" \end{verbatim} \subsection{Integer} \index{Integer} \begin{center} \begin{tabular}{|l|}\hline MHS Attributes \\ \hline mhsDeliverableContentLength\\ \hline \end{tabular} \end{center} \begin{verbatim} <IntegerValue> ::= <d> \end{verbatim} \section{QUIPU Attribute Syntaxes} \subsection{ACL} \label{acl_syntax} \index{acl attribute}\ \begin{center} \begin{tabular}{|l|}\hline QUIPU Attributes \\ \hline accessControlList\\ \hline \end{tabular} \end{center} \begin{verbatim} <aclvalue> ::= <aclwho> "#" <aclwhat> "#" <acltype> ["#"] <aclwho> ::= "self" | "others" | "group #" <namelist> | "prefix #" <namelist> <aclwhat> ::= "none" | "detect" | "compare" | "read" | "add" | "write" <acltype> ::= "child" | "entry" | "default" | "attributes #" <oidlist> <oidlist> ::= <oid> | <oidlist> "$" <oid> \end{verbatim} The use of ACL is discussed in Section~\ref{disc_acl}. \subsection{Schema} \label{tree_struct} \index{Schema}\index{treeStructure attribute} \begin{center} \begin{tabular}{|l|}\hline QUIPU Attributes \\ \hline treeStructure\\ \hline \end{tabular} \end{center} Schema is currently represented by a single OID, and discussed fully in Section~\ref{adding_data}. \subsection{ProtectedPassword} \index{ProtectedPassword} \begin{center} \begin{tabular}{|l|}\hline QUIPU Attributes \\ \hline protectedPassword\\ \hline \end{tabular} \end{center} \begin{verbatim} <ProtectedPasswordValue> ::= <StringValue> \end{verbatim} The password encryption mechanism is encapsulated within the matching rules for this attribute; two values are `equal' if they are identically equal or if one is an encrypted representation of the other. Note that `equals' is not transitive for this attribute: If $a = b$ and $b = c$, testing $a = c$ may give `incomparable' rather than `true' as the result. The reason for this is that in some circumstances properly testing this attribute for equality would consume an unacceptable amount of time. The security of the encryption mechanism depends on this! \subsection{SecurityPolicy} \index{SecurityPolicy} \begin{center} \begin{tabular}{|l|}\hline QUIPU Attributes \\ \hline entrySecurityPolicy\\ dsaDefaultSecurityPolicy\\ dsaPermittedSecurityPolicy\\ \hline \end{tabular} \end{center} This attribute is currently handled as ``ASN'', see Section~\ref{ASN_syntax}. \subsection{EdbInfo} \index{edbInfo attribute} \begin{center} \begin{tabular}{|l|}\hline QUIPU Attributes \\ \hline eDBinfo\\ \hline \end{tabular} \end{center} \begin{verbatim} <EdbInfoValue> ::= <name> "#" <name> "#" <namelist> ["#"] \end{verbatim} This attribute is discussed in Section~\ref{slave_update}. \section{RARE Attribute Syntaxes} These syntaxes are also described in \cite{thorn-na}. \subsection{Mailbox} \index{Mailbox} \begin{center} \begin{tabular}{|l|}\hline RARE Attributes \\ \hline otherMailbox\\ \hline \end{tabular} \end{center} \begin{verbatim} <MailboxValue> ::= <printablestring> "$" <IA5String> \end{verbatim} For example \verb+internet $ quipu-support@cs.ucl.ac.uk+. \subsection{CaseIgnoreIA5String} \index{CaseIgnoreIA5String} \begin{center} \begin{tabular}{|l|}\hline RARE Attributes \\ \hline rfc822Mailbox\\ domainComponent\\ nRSTextualDescription\\ associatedDomain\\ \hline \end{tabular} \end{center} These attributes are handled as IA5Strings, but use the matching rules for the CaseIgnoreString syntax. \subsection{Photo} \index{Photo}\index{ASN} \begin{center} \begin{tabular}{|l|}\hline RARE Attributes \\ \hline photo\\ \hline \end{tabular} \end{center} Photos are a special case of ``ASN'' (see Section~\ref{ASN_syntax}), but the output format is different. Your attention is drawn to Section~\ref{file_attr} which discusses storing large attributes in a separate file. The attribute should be encoded as a bitstring, in a G3FacsimilePage encoding (as per Recommendation T.4). \section{THORN System Attribute Syntaxes} Syntaxes in this section are not recognised by Quipu, and are thus handled as ASN --- see Section~\ref{ASN_syntax}. However, Quipu compatible syntax handlers for them are available as part of the THORN\index{thorn}\cite{thorn} project. \subsection{ThornACL} \begin{center} \begin{tabular}{|l|}\hline THORN System Attributes \\ \hline thornACL\\ \hline \end{tabular} \end{center} \subsection{RDType} \begin{center} \begin{tabular}{|l|}\hline THORN System Attributes \\ \hline ruleDescription\\ \hline \end{tabular} \end{center} \subsection{ODType} \begin{center} \begin{tabular}{|l|}\hline THORN System Attributes \\ \hline objectDescription\\ \hline \end{tabular} \end{center} \subsection{ADType} \begin{center} \begin{tabular}{|l|}\hline THORN System Attributes \\ \hline attributeDescription\\ \hline \end{tabular} \end{center} \subsection{KnowledgeReference} \begin{center} \begin{tabular}{|l|}\hline THORN System Attributes \\ \hline knowledgeReference\\ \hline \end{tabular} \end{center} \subsection{NRSInformation} \begin{center} \begin{tabular}{|l|}\hline THORN System Attributes \\ \hline forwardOnlyInformation\\ reverseOnlyInformation\\ forwardAndReverseInformation\\ \hline \end{tabular} \end{center} (There is not a syntax handler for this from THORN [yet!].) \section{MHS Attribute Syntaxes} Syntaxes in this section are not currently recognised by Quipu, and are thus handled as raw ASN (see Section~\ref{ASN_syntax}). \subsection{ORAddress} \index{ORAddress} \begin{center} \begin{tabular}{|l|}\hline MHS Attributes \\ \hline mhsORaddresses\\ \hline \end{tabular} \end{center} \subsection{ORName} \index{ORName} \begin{center} \begin{tabular}{|l|}\hline MHS Attributes \\ \hline mhsDLMembers\\ \hline \end{tabular} \end{center} \subsection{DLSubmitPermissions} \index{DLSubmitPermissions} \begin{center} \begin{tabular}{|l|}\hline MHS Attributes \\ \hline mhsDLSubmitPermissions\\ \hline \end{tabular} \end{center} \section{ASN} \label{ASN_syntax} As the preceding Sections in this Chapter have mentioned, not all syntaxes have a string representation defined by Quipu, so are represented by the raw ASN. An example would be: \begin{verbatim} photo= {ASN} 0308207b4001488001fd... \end{verbatim} where \verb+0308+\ldots is a hexadecimal representation (encoded using the ``Basic Encoding Rules'') of the ASN.1 defined attribute. Attributes stored as ASN.1, will usually be matched correctly, with the following exceptions: \begin{itemize} \item There is an IMPLICIT Set in the ASN.1. The DSA will not detect the set, and so will not know to match components in arbitrary order. \item If special matching rules apply: for example, special rules to determine equivalence of telephone numbers. Such rules would need to be represented by code in the DSA. \end{itemize}