| Type | Description |
|---|---|
TAsnTag | Konstante univerzalnih oznak (BOOLEAN, INTEGER, OCTET STRING, OID, SEQUENCE, SET, časovne in nizne oblike), ki jih uporabljata izgradnja in preverjanje identifikatorjev |
TAsnClass | Razred identifikatorja: asnClassUniversal, asnClassApplication, asnClassContextSpecific ali asnClassPrivate |
TAsnIdentifier | Razred identifikatorja, zastavica constructed in 64-bitna številka oznake, vključno z obliko high-tag-number |
TDerTlv | Razčlenjen TLV s polji Offset, HeaderLength, ContentOffset, ContentLength, NextOffset in Identifier, brez kopiranja izvornega medpomnilnika |
TDerWriter | Ponovno uporabljiv izhodni medpomnilnik DER s tipiziranim kodirnikom |
TDerReader | Omejen bralnik z operacijami za ogled (peek), napredovanje, preskok, pričakovano oznako, podrejeno okno, rezino in tipizirano dekodiranje |
TDerByteArrays | Dinamično polje TBytes, ki ga uporablja ConcatMany in drugi pomočniki z več medpomnilniki |
TDerValidationErrorKind | Kategorije napak preverjanja: dvekMalformedTlv, dvekTrailingData, omejitve globine, vozlišč in vsebine (dvekDepthLimit, dvekNodeLimit, dvekContentLimit), dvekUniversalForm, kanonične napake po posameznih tipih (dvekBoolean, dvekInteger, dvekBitString, dvekNull, dvekOid, dvekString, dvekTime) in dvekSetOrder |
TDerValidationError | Zapis napake, ki upošteva odmik in Depth, s poljem Kind in človeku berljivim besedilom sporočila |
TDerValidationErrors | Dinamično polje TDerValidationError, vrnjeno znotraj TDerValidationResult |
TDerValidationOptions | Omejitve v MaxDepth, MaxNodes, MaxContentLength in MaxErrors, zastavica RequireSingleRoot, neobvezna ValidateSetOrder in class funkcija Default |
TDerValidationResult | Stanje preverjanja s IsValid, NodeCount, MaximumDepth in odmikom upoštevajočimi Errors, poleg tega pa pomočnika ErrorCount in FirstError |
| API | Description |
|---|---|
Clear, IsEmpty, Count, Capacity, Bytes, Finish | Ponastavite ali pregledajte medpomnjene podatke, prekopirajte posnetek ali prenesite dokončano polje in ponastavite pisalnik |
Reserve, Append, AppendMany, AppendByte | Zmogljivost povečajte na enkrat in pripnite polja, medpomnilnik v lasti klicatelja, več polj ali en bajt s preverjanjem preliva |
Wrap, WrapIdentifier, WrapConstructed | Vsebino ovijte s surovim identifikacijskim oktetom, s poljubnim razredom identifikatorja in 64-bitno številko oznake ali s konstruiranim identifikatorjem |
ContextSpecific, ApplicationSpecific, PrivateSpecific | Kodirajte nizke ali visoke številke oznak, ne da bi odrezali identifikator |
Sequence, SequenceOf, SetOf, SetOfSorted | Kodirane vrednosti sestavite v vsebnike SEQUENCE ali SET; SetOfSorted razvrsti vrednosti po kodiranih bajtih |
BooleanOf, IntegerOf, UnsignedIntegerOf, IntegerBytes, EnumeratedOf | Kodirajte BOOLEAN, predznačeni ali nepredznačeni INTEGER, preverjeno poljubno vsebino INTEGER in vrednosti ENUMERATED |
OctetString, OctetStringOf, BitString, Null, OID | Kodirajte binarne vrednosti, bitne nize, NULL in identifikatorje objektov kot samostojne TLV |
PrintableString, Ia5String, Utf8String | Kodirajte podprte oblike znakovnih nizov ASN.1 |
UTCTime, GeneralizedTime, UTCTimeOf, GeneralizedTimeOf, TimeOf | Kodirajte kanonično časovno besedilo ali vrednosti UTC TDateTime, pri čemer TimeOf izbere pravi časovni tip DER |
AlgId, AlgIdWithParams | Zgradite SEQUENCE AlgorithmIdentifier z NULL ali izrecnimi parametri |
| API | Description |
|---|---|
Initialize, AtEnd, EffectiveLimit, Remaining | Inicializirajte bralnik in preglejte njegovo omejeno okno ter preostalo število bajtov |
TryReadTlvAt, PeekTlv | Razčlenite nizke ali visoke številke oznak in minimalne določene dolžine, brez spreminjanja Position |
ReadNextTlv, SkipTlv | Napredujte šele, ko je na voljo popoln veljaven TLV |
TryReadExpected | Napredujte šele, ko se ujemajo razred, konstruirana oblika in številka oznake |
EnterConstructed | Ustvarite podrejeno okno bralnika nad istim izvornim poljem, brez kopiranja vsebine |
ContentBytes, EncodedBytes | Prekopirajte preverjeno vsebino ali celotno rezino TLV, kadar je potrebna lastnina |
TryReadBoolean, TryReadUnsignedInteger, TryReadBitString | Dekodirajte kanonične primitivne vrednosti s preverjanjem obsega in neuporabljenih bitov |
TryReadString, TryReadTime, TryReadNull | Dekodirajte preverjeno vsebino UTF8String, PrintableString, IA5String, DER čas ali NULL |
ReadTlv, TryReadOID, ReadOID, TryReadInteger, ReadInteger | Zagotovite združljivostni dostop do surovih odmikov TLV ter dekodiranja identifikatorjev objektov in predznačenih celih števil |
function ValidateDer(const Data: TBytes): TDerValidationResult; overload;
function ValidateDer(const Data: TBytes; const Options: TDerValidationOptions): TDerValidationResult; overload;
ValidateDer preverja minimalnost identifikatorjev in dolžin, meje medpomnilnika, univerzalne primitivne oblike, BOOLEAN, INTEGER, ENUMERATED, BIT STRING, NULL, OBJECT IDENTIFIER, podprte nize in kanonične časovne vrednosti
Privzete omejitve dovoljujejo največjo globino 64, 100000 vozlišč, 64 MiB na vrednost vsebine in 32 prijavljenih napak, hkrati pa zahtevajo en korenski TLV
ValidateSetOrder je privzeto onemogočen, ker DER brez sheme ne more razlikovati vsakega SET od SET OF; omogočite ga za znane vsebnike SET OF, kot so zbirke atributov CMS
TDerValidationOptions.Default zagotavlja privzete omejene vrednosti, TDerValidationResult.ErrorCount in FirstError pa poenostavita diagnostično ravnanje
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 | Zgradi TAsnIdentifier iz razreda, številke oznake in zastavice constructed, uporablja se za vodenje TDerReader.TryReadExpected |
EncodeIdentifier | Kodira TAsnIdentifier v njegove identifikacijske bajte DER, vključno z obliko high-tag-number |
ConcatBytes, Concat3, Concat4, ConcatMany | Združi dve, tri, štiri ali dinamično polje vrednosti TBytes v eno dodelitev; široko jo uporablja izgrajevalnik CMS |
EncodeOIDContent | Kodira niz OID s pikami ločenih decimalk v njegove vsebinske bajte brez oznake in dolžine, tako da lahko klicatelji pregledajo ali znova ovijejo OID |
DerValidationErrorKindName | Vrne prikazno ime vrednosti TDerValidationErrorKind za diagnostiko |
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 sprejme neobvezne sekunde z ulomkom samo, kadar zadnja ulomkovna številka ni ničReadTlv, TryReadOID in predznačeni TryReadInteger ostanejo na voljo obstoječim klicateljemFPdfAsn1 skupaj z glavnimi enotami PDFium Delphi Component