| Tip | Opis |
|---|---|
TAsnTag | Univerzalne konstante oznaka (BOOLEAN, INTEGER, OCTET STRING, OID, SEQUENCE, SET, vremenski i nizovni oblici) koje koriste izgradnja i provjera identifikatora |
TAsnClass | Razred identifikatora: asnClassUniversal, asnClassApplication, asnClassContextSpecific ili asnClassPrivate |
TAsnIdentifier | Razred identifikatora, zastavica constructed i 64-bitni broj oznake, uključujući oblik s visokim brojem oznake |
TDerTlv | Raščlanjeni TLV s Offset, HeaderLength, ContentOffset, ContentLength, NextOffset i Identifier, bez kopiranja izvornog međuspremnika |
TDerWriter | Ponovno upotrebljivi izlazni međuspremnik DER-a i tipizirani enkoder |
TDerReader | Ograničeni čitač s operacijama peek, advance, skip, očekivana oznaka, podprozor djece, isječak i tipizirano dekodiranje |
TDerByteArrays | Dinamičko polje TBytes koje koriste ConcatMany i drugi pomoćnici za više međuspremnika |
TDerValidationErrorKind | Kategorije pogrešaka provjere: dvekMalformedTlv, dvekTrailingData, ograničenja dubine, čvorova i sadržaja (dvekDepthLimit, dvekNodeLimit, dvekContentLimit), dvekUniversalForm, pogreške kanonskih oblika po tipu (dvekBoolean, dvekInteger, dvekBitString, dvekNull, dvekOid, dvekString, dvekTime) i dvekSetOrder |
TDerValidationError | Zapis pogreške svjestan odmaka i Depth, s Kind i porukom čitljivom ljudima |
TDerValidationErrors | Dinamičko polje TDerValidationError koje se vraća unutar TDerValidationResult |
TDerValidationOptions | Ograničenja u MaxDepth, MaxNodes, MaxContentLength, MaxErrors, zastavici RequireSingleRoot, neobaveznom ValidateSetOrder i class funkciji Default |
TDerValidationResult | Status provjere s IsValid, NodeCount, MaximumDepth, poljem Errors svjesnim odmaka, te pomoćnicima ErrorCount i FirstError |
| API | Opis |
|---|---|
Clear, IsEmpty, Count, Capacity, Bytes, Finish | Poništavaju ili ispituju međuspremljene podatke, kopiraju snimku ili predaju završeno polje i poništavaju zapisivač |
Reserve, Append, AppendMany, AppendByte | Rastu jednim rezerviranjem i dodaju polja, međuspremnike u vlasništvu pozivatelja, više polja ili jedan bajt uz provjere preljeva |
Wrap, WrapIdentifier, WrapConstructed | Omotavaju sadržaj sirovim oktetom identifikatora, bilo kojim razredom identifikatora i 64-bitnim brojem oznake ili constructed identifikatorom |
ContextSpecific, ApplicationSpecific, PrivateSpecific | Kodiraju niske ili visoke brojeve oznaka bez skraćivanja identifikatora |
Sequence, SequenceOf, SetOf, SetOfSorted | Sastavljaju kodirane vrijednosti u spremnike SEQUENCE ili SET; SetOfSorted sortira vrijednosti po kodiranim bajtovima |
BooleanOf, IntegerOf, UnsignedIntegerOf, IntegerBytes, EnumeratedOf | Kodiraju vrijednosti BOOLEAN, predznačeni ili nepredznačeni INTEGER, provjereni sadržaj proizvoljnog INTEGER-a i ENUMERATED |
OctetString, OctetStringOf, BitString, Null, OID | Kodiraju binarne, bit-nizovne, NULL i vrijednosti identifikatora objekata kao samostalne TLV-ove |
PrintableString, Ia5String, Utf8String | Kodiraju podržane oblike znakovnih nizova ASN.1 |
UTCTime, GeneralizedTime, UTCTimeOf, GeneralizedTimeOf, TimeOf | Kodiraju kanonski vremenski tekst ili UTC vrijednosti TDateTime, uz TimeOf koji bira ispravni DER vremenski tip |
AlgId, AlgIdWithParams | Grade SEQUENCE AlgorithmIdentifier s NULL ili eksplicitnim parametrima |
| API | Opis |
|---|---|
Initialize, AtEnd, EffectiveLimit, Remaining | Inicijaliziraju čitač i ispituju njegov ograničeni prozor i preostali broj bajtova |
TryReadTlvAt, PeekTlv | Raščlanjuju niske ili visoke brojeve oznaka i minimalne određene duljine bez mijenjanja Position |
ReadNextTlv, SkipTlv | Napreduju samo nakon što je dostupan potpuni valjani TLV |
TryReadExpected | Napreduje samo kada se razred, constructed oblik i broj oznake svi poklapaju |
EnterConstructed | Stvara podprozor dječjeg čitača nad istim izvornim poljem bez kopiranja sadržaja |
ContentBytes, EncodedBytes | Kopiraju provjereni isječak sadržaja ili potpunog TLV-a kada je potrebno vlasništvo |
TryReadBoolean, TryReadUnsignedInteger, TryReadBitString | Dekodiraju kanonske primitivne vrijednosti uz provjere raspona i neiskorištenih bitova |
TryReadString, TryReadTime, TryReadNull | Dekodiraju provjereni sadržaj UTF8String, PrintableString, IA5String, DER vrijeme ili NULL |
ReadTlv, TryReadOID, ReadOID, TryReadInteger, ReadInteger | Nude kompatibilan pristup sirovim odmacima TLV-a uz dekodiranje identifikatora objekta i predznačenog cijelog broja |
function ValidateDer(const Data: TBytes): TDerValidationResult; overload;
function ValidateDer(const Data: TBytes; const Options: TDerValidationOptions): TDerValidationResult; overload;
ValidateDer provjerava minimalnost identifikatora i duljine, granice međuspremnika, univerzalne primitivne oblike, BOOLEAN, INTEGER, ENUMERATED, BIT STRING, NULL, OBJECT IDENTIFIER, podržane nizove i kanonske vremenske vrijednosti
Zadana ograničenja dopuštaju najveću dubinu 64, 100000 čvorova, 64 MiB po vrijednosti sadržaja i 32 prijavljene pogreške, uz zahtjev za jednim korijenskim TLV-om
ValidateSetOrder je po zadanim postavkama onemogućen jer DER bez sheme ne može razlikovati svaki SET od SET OF; omogućite ga za poznate spremnike SET OF poput zbirki CMS atributa
TDerValidationOptions.Default isporučuje zadana ograničena svojstva, a TDerValidationResult.ErrorCount i FirstError pojednostavljuju dijagnostiku
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;
| Funkcija | Opis |
|---|---|
AsnIdentifier | Gradi TAsnIdentifier iz razreda, broja oznake i zastavice constructed, za upravljanje TDerReader.TryReadExpected |
EncodeIdentifier | Kodira TAsnIdentifier u njegove DER bajtove identifikatora, uključujući oblik s visokim brojem oznake |
ConcatBytes, Concat3, Concat4, ConcatMany | Ulančavaju dva, tri, četiri ili dinamičko polje TBytes u jednu alokaciju; naširoko ih koristi CMS graditelj |
EncodeOIDContent | Kodira OID niz u točkasto-decimalnom obliku u bajtove sadržaja bez oznake i duljine, pa pozivatelj može pregledati ili ponovno omotati OID |
DerValidationErrorKindName | Vraća naziv za prikaz vrijednosti TDerValidationErrorKind za dijagnostiku |
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 prihvaća neobavezne decimalne sekunde samo kada je zadnja decimalna znamenka različita od nuleReadTlv, TryReadOID i predznačeni TryReadInteger ostaju dostupni postojećim pozivateljimaFPdfAsn1 uz glavne jedinice PDFium Delphi Component