| Type | Description |
|---|---|
TAsnTag | Yleiset tagivakiot (BOOLEAN, INTEGER, OCTET STRING, OID, SEQUENCE, SET sekä aika- ja merkkijonomuodot), joita tunnisteen muodostus ja validointi käyttävät |
TAsnClass | Tunnisteen luokka: asnClassUniversal, asnClassApplication, asnClassContextSpecific tai asnClassPrivate |
TAsnIdentifier | Tunnisteluokka, constructed-lippu ja 64-bittinen taginumero, myös high-tag-number-muoto |
TDerTlv | Jäsennelty TLV, jossa on Offset, HeaderLength, ContentOffset, ContentLength, NextOffset ja Identifier kopioimatta lähdepuskuria |
TDerWriter | Uudelleenkäytettävä DER-tulostuspuskuri ja tyyppitetty koodaaja |
TDerReader | Rajattu lukija, jossa on esikatselu, eteneminen, ohitus, odotetun tagin tarkistus, alikansiikkuna, viipalointi ja tyyppitetty dekoodaus |
TDerByteArrays | Dynaaminen TBytes-taulukko, jota ConcatMany ja muut monipuskuriapurit käyttävät |
TDerValidationErrorKind | Validointivirheluokat: dvekMalformedTlv, dvekTrailingData, syvyys-, solmu- ja sisältörajat (dvekDepthLimit, dvekNodeLimit, dvekContentLimit), dvekUniversalForm, tyyppikohtaiset kanoniset virheet (dvekBoolean, dvekInteger, dvekBitString, dvekNull, dvekOid, dvekString, dvekTime) ja dvekSetOrder |
TDerValidationError | Siirtymän ja Depth-arvon tunteva virhetietue, jossa on Kind ja ihmisluettava viestiteksti |
TDerValidationErrors | Dynaaminen TDerValidationError-taulukko, joka palautetaan TDerValidationResult-rakenteen sisällä |
TDerValidationOptions | Rajat kentissä MaxDepth, MaxNodes, MaxContentLength ja MaxErrors, RequireSingleRoot-lippu, valinnainen ValidateSetOrder sekä Default-luokkafunktio |
TDerValidationResult | Validointitila kenttinä IsValid, NodeCount, MaximumDepth ja siirtymätietoinen Errors sekä apurit ErrorCount ja FirstError |
| API | Description |
|---|---|
Clear, IsEmpty, Count, Capacity, Bytes, Finish | Nollaa tai tutki puskuroitua dataa, kopioi tilannekuva tai siirrä valmis taulukko ja nollaa kirjoittaja |
Reserve, Append, AppendMany, AppendByte | Kasva kerralla ja liitä taulukoita, kutsujan omistamia puskureita, useita taulukoita tai yksi tavu ylivuototarkistuksilla |
Wrap, WrapIdentifier, WrapConstructed | Kääri sisältö raakatunnisteen oktetilla, millä tahansa tunnisteluokalla ja 64-bittisellä taginumerolla tai constructed-tunnisteella |
ContextSpecific, ApplicationSpecific, PrivateSpecific | Koodaa matalat tai korkeat taginumerot katkaisematta tunnistetta |
Sequence, SequenceOf, SetOf, SetOfSorted | Yhdistä koodatut arvot SEQUENCE- tai SET-konteiksi; SetOfSorted lajittelee arvot koodattujen tavujen mukaan |
BooleanOf, IntegerOf, UnsignedIntegerOf, IntegerBytes, EnumeratedOf | Koodaa BOOLEAN-, etumerkillisen tai etumerkittömän INTEGER-, validoidun mielivaltaisen INTEGER-sisällön ja ENUMERATED-arvot |
OctetString, OctetStringOf, BitString, Null, OID | Koodaa binääri-, bittijono-, NULL- ja objektitunnistearvot erillisiksi TLV-rakenteiksi |
PrintableString, Ia5String, Utf8String | Koodaa tuetut ASN.1-merkkijonomuodot |
UTCTime, GeneralizedTime, UTCTimeOf, GeneralizedTimeOf, TimeOf | Koodaa kanonisen aikatekstin tai UTC-muotoisia TDateTime-arvoja, jolloin TimeOf valitsee oikean DER-aikatyypin |
AlgId, AlgIdWithParams | Rakentaa AlgorithmIdentifier-SEQUENCE-rakenteen NULL- tai eksplisiittisillä parametreilla |
| API | Description |
|---|---|
Initialize, AtEnd, EffectiveLimit, Remaining | Alusta lukija ja tutki sen rajattua ikkunaa ja jäljellä olevaa tavumäärää |
TryReadTlvAt, PeekTlv | Jäsennä matalat tai korkeat taginumerot ja minimaaliset täsmälliset pituudet muuttamatta Position-arvoa |
ReadNextTlv, SkipTlv | Etene vasta, kun täydellinen kelvollinen TLV on käytettävissä |
TryReadExpected | Etene vain, kun luokka, constructed-muoto ja taginumero täsmäävät kaikki |
EnterConstructed | Luo alilukijan ikkuna saman lähdetaulukon ylle kopioimatta sisältöä |
ContentBytes, EncodedBytes | Kopioi validoitu sisältö- tai kokonainen TLV-viipale, kun omistajuus vaaditaan |
TryReadBoolean, TryReadUnsignedInteger, TryReadBitString | Pura kanoniset primitiiviarvot alue- ja käyttämättömien bittien tarkistuksilla |
TryReadString, TryReadTime, TryReadNull | Pura validoidut UTF8String-, PrintableString-, IA5String-, DER-aika- tai NULL-sisällöt |
ReadTlv, TryReadOID, ReadOID, TryReadInteger, ReadInteger | Tarjoavat yhteensopivuuspääsyn raakoihin TLV-siirtymiin sekä objektitunnisteen ja etumerkillisen kokonaisluvun purkuun |
function ValidateDer(const Data: TBytes): TDerValidationResult; overload;
function ValidateDer(const Data: TBytes; const Options: TDerValidationOptions): TDerValidationResult; overload;
ValidateDer tarkistaa tunnisteen ja pituuden minimaalisuuden, puskurirajat, yleiset primitiivimuodot, BOOLEAN-, INTEGER-, ENUMERATED-, BIT STRING-, NULL-, OBJECT IDENTIFIER-, tuetut merkkijonot ja kanoniset aika-arvot
Oletusrajat sallivat enintään syvyyden 64, 100000 solmua, 64 MiB sisältöarvoa kohden ja 32 raportoitua virhettä vaatien samalla yhden juuri-TLV:n
ValidateSetOrder on oletuksena poissa käytöstä, koska skeematon DER ei erota jokaista SET-rakennetta SET OF -rakenteesta; ota se käyttöön tunnetuissa SET OF -konteissa, kuten CMS-attribuuttikokoelmissa
TDerValidationOptions.Default tarjoaa rajatut oletusarvot, kun taas TDerValidationResult.ErrorCount ja FirstError helpottavat diagnostiikan käsittelyä
function AsnIdentifier(TagClass: TAsnClass; TagNumber: UInt64; Constructed: Boolean = False): TAsnIdentifier;
function EncodeIdentifier(const Identifier: TAsnIdentifier): TBytes;
function ConcatBytes(const A, B: TBytes): TBytes;
function Concat3(const A, B, C: TBytes): TBytes;
function Concat4(const A, B, C, D: TBytes): TBytes;
function ConcatMany(const Values: TDerByteArrays): TBytes;
function EncodeOIDContent(const Dotted: AnsiString): TBytes;
function DerValidationErrorKindName(Kind: TDerValidationErrorKind): string;
| Function | Description |
|---|---|
AsnIdentifier | Rakentaa TAsnIdentifier-tietueen luokasta, taginumerosta ja constructed-lipusta; käytetään ohjaamaan TDerReader.TryReadExpected-kutsua |
EncodeIdentifier | Koodaa TAsnIdentifier-tietueen DER-tunnistetavuiksi, mukaan lukien high-tag-number-muoto |
ConcatBytes, Concat3, Concat4, ConcatMany | Yhdistää kaksi, kolme, neljä tai dynaamisen taulukon TBytes-arvoja yhdeksi allokoinniksi; CMS-rakentaja käyttää sitä laajasti |
EncodeOIDContent | Koodaa pisteellisen desimaalin OID-merkkijonon sisältötavuiksi ilman tagia ja pituutta, joten kutsujat voivat tutkia tai kääriä OID:n uudelleen |
DerValidationErrorKindName | Palauttaa TDerValidationErrorKind-luokan näyttönimen diagnostiikkaa varten |
uses FPdfAsn1;
var
Child: TDerReader;
Data: TBytes;
Reader: TDerReader;
Tlv: TDerTlv;
Validation: TDerValidationResult;
Writer: TDerWriter;
begin
Writer := TDerWriter.Create;
try
Data := Writer.Sequence(Writer.UnsignedIntegerOf(42));
finally
Writer.Free;
end;
Validation := ValidateDer(Data);
if not Validation.IsValid then
raise EConvertError.Create(Validation.Errors[0].MessageText);
Reader.Initialize(Data);
if Reader.TryReadExpected(AsnIdentifier(asnClassUniversal, 16, True), Tlv) then
Reader.EnterConstructed(Tlv, Child);
end;
GeneralizedTime hyväksyy valinnaiset murtosekunnit vain, kun viimeinen murtodesimaali on nollasta poikkeavaReadTlv, TryReadOID ja etumerkillinen TryReadInteger ovat edelleen käytettävissä olemassa oleville kutsujilleFPdfAsn1-yksikön mukanaan myös PDFium Delphi Componentin pääyksiköt