| Type | Description |
|---|---|
TAsnTag | Universaliosios žymos konstantos (BOOLEAN, INTEGER, OCTET STRING, OID, SEQUENCE, SET, laiko ir eilučių formos), kurias naudoja identifikatorių konstravimas ir tikrinimas |
TAsnClass | Identifikatoriaus klasė: asnClassUniversal, asnClassApplication, asnClassContextSpecific arba asnClassPrivate |
TAsnIdentifier | Identifikatoriaus klasė, sukonstravimo vėliava ir 64 bitų žymos numeris, įskaitant aukšto žymos numerio formą |
TDerTlv | Išanalizuota TLV su Offset, HeaderLength, ContentOffset, ContentLength, NextOffset ir Identifier, nekopijuojant šaltinio buferio |
TDerWriter | Pakartotinai naudojamas DER išvesties buferis ir tipizuotas koduotuvas |
TDerReader | Ribotas skaitytuvas su peržiūros, pažangos, praleidimo, tikėtinos žymos, antrinio lango, iškarpos ir tipizuoto dekodavimo operacijomis |
TDerByteArrays | Dinaminis TBytes masyvas, kurį naudoja ConcatMany ir kiti kelių buferių pagalbininkai |
TDerValidationErrorKind | Tikrinimo klaidų kategorijos: dvekMalformedTlv, dvekTrailingData, gylio, mazgų ir turinio ribos (dvekDepthLimit, dvekNodeLimit, dvekContentLimit), dvekUniversalForm, atskirų tipų kanoniniai nesėkmingi atvejai (dvekBoolean, dvekInteger, dvekBitString, dvekNull, dvekOid, dvekString, dvekTime) ir dvekSetOrder |
TDerValidationError | Klaidos įrašas, žinantis poslinkį ir Depth, su Kind ir žmogui skaitomu pranešimo tekstu |
TDerValidationErrors | Dinaminis TDerValidationError masyvas, grąžinamas TDerValidationResult viduje |
TDerValidationOptions | Ribos laukuose MaxDepth, MaxNodes, MaxContentLength, MaxErrors, vėliava RequireSingleRoot, pasirenkamas ValidateSetOrder ir klasės funkcija Default |
TDerValidationResult | Tikrinimo būsena su IsValid, NodeCount, MaximumDepth, poslinkius žinančiu Errors, taip pat pagalbininkais ErrorCount ir FirstError |
| API | Description |
|---|---|
Clear, IsEmpty, Count, Capacity, Bytes, Finish | Atstato arba apžiūri buferizuotus duomenis, nukopijuoja momentinę kopiją arba perduoda užbaigtą masyvą ir atstato rašytuvą |
Reserve, Append, AppendMany, AppendByte | Padidina vieną kartą ir prideda masyvus, kreipėjo valdomus buferius, kelis masyvus arba vieną baitą su perpildymo patikrinimais |
Wrap, WrapIdentifier, WrapConstructed | Apvynioja turinį žaliu identifikatoriaus oktetu, bet kuria identifikatoriaus klase ir 64 bitų žymos numeriu arba sukonstruotu identifikatoriumi |
ContextSpecific, ApplicationSpecific, PrivateSpecific | Koduoja žemo arba aukšto žymos numerio reikšmes nesutrumpindamos identifikatoriaus |
Sequence, SequenceOf, SetOf, SetOfSorted | Sudeda koduotas reikšmes į SEQUENCE arba SET konteinerius; SetOfSorted surikiuoja reikšmes pagal koduotus baitus |
BooleanOf, IntegerOf, UnsignedIntegerOf, IntegerBytes, EnumeratedOf | Koduoja BOOLEAN, signed arba unsigned INTEGER, patikrintą savavališką INTEGER turinį ir ENUMERATED reikšmes |
OctetString, OctetStringOf, BitString, Null, OID | Koduoja dvejetaines, bitų eilutės, NULL ir objekto identifikatoriaus reikšmes kaip atskiras TLV |
PrintableString, Ia5String, Utf8String | Koduoja palaikomas ASN.1 simbolių eilučių formas |
UTCTime, GeneralizedTime, UTCTimeOf, GeneralizedTimeOf, TimeOf | Koduoja kanoninį laiko tekstą arba UTC TDateTime reikšmes, o TimeOf parenka teisingą DER laiko tipą |
AlgId, AlgIdWithParams | Sudaro AlgorithmIdentifier SEQUENCE su NULL arba aiškiais parametrais |
| API | Description |
|---|---|
Initialize, AtEnd, EffectiveLimit, Remaining | Inicijuoja skaitytuvą ir leidžia apžiūrėti jo ribotą langą bei likusį baitų skaičių |
TryReadTlvAt, PeekTlv | Išanalizuoja žemo arba aukšto žymos numerio reikšmes ir minimalius determinuotus ilgius nepakeisdamos Position |
ReadNextTlv, SkipTlv | Žengia pirmyn tik tada, kai prieinama pilna teisinga TLV |
TryReadExpected | Žengia pirmyn tik tada, kai klasė, sukonstravimo forma ir žymos numeris visi sutampa |
EnterConstructed | Sukuria antrinio skaitytuvo langą virš to paties šaltinio masyvo nekopijuodama turinio |
ContentBytes, EncodedBytes | Nukopijuoja patikrintą turinio arba pilną TLV iškarpos fragmentą, kai reikia turėti nuosavybę |
TryReadBoolean, TryReadUnsignedInteger, TryReadBitString | Dekoduoja kanonines primityviąsias reikšmes su rėžių ir nepanaudotų bitų patikrinimais |
TryReadString, TryReadTime, TryReadNull | Dekoduoja patikrintą UTF8String, PrintableString, IA5String, DER laiko arba NULL turinį |
ReadTlv, TryReadOID, ReadOID, TryReadInteger, ReadInteger | Suteikia suderinamumo prieigą prie žalių TLV poslinkių ir objekto identifikatoriaus bei signed sveikųjų dekodavimo |
function ValidateDer(const Data: TBytes): TDerValidationResult; overload;
function ValidateDer(const Data: TBytes; const Options: TDerValidationOptions): TDerValidationResult; overload;
ValidateDer patikrina identifikatorių ir ilgių minimalumą, buferio ribas, universalias primityviąsias formas, BOOLEAN, INTEGER, ENUMERATED, BIT STRING, NULL, OBJECT IDENTIFIER, palaikomas eilutes ir kanonines laiko reikšmes
Numatytosios ribos leidžia ne daugiau kaip 64 gylį, 100000 mazgų, po 64 MiB kiekvienai turinio reikšmei ir 32 pranešamas klaidas, kartu reikalaudamos vienos šakninės TLV
ValidateSetOrder pagal nutylėjimą išjungta, nes DER be schemos negali atskirti kiekvieno SET nuo SET OF; įjunkite ją žinomiems SET OF konteineriams, pavyzdžiui, CMS atributų rinkiniams
TDerValidationOptions.Default pateikia ribotas numatytąsias reikšmes, o TDerValidationResult.ErrorCount ir FirstError palengvina diagnostikos apdorojimą
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 | Sudaro TAsnIdentifier iš klasės, žymos numerio ir sukonstravimo vėliavos; naudojama TDerReader.TryReadExpected valdyti |
EncodeIdentifier | TAsnIdentifier užkoduoja į jo DER identifikatoriaus baitus, įskaitant aukšto žymos numerio formą |
ConcatBytes, Concat3, Concat4, ConcatMany | Sujungia du, tris, keturis arba dinaminį TBytes masyvą į vieną išskyrimą; plačiai naudojama CMS sudarytojo |
EncodeOIDContent | Užkoduoja dotted-decimal OID eilutę į jos turinio baitus be žymos ir ilgio, todėl kreipėjas gali apžiūrėti arba iš naujo apvynioti OID |
DerValidationErrorKindName | Grąžina TDerValidationErrorKind rodomą pavadinimą diagnostikai |
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 pasirinktines trupmenines sekundes priima tik tada, kai paskutinis trupmeninis skaitmuo ne nulisReadTlv, TryReadOID ir signed TryReadInteger lieka prieinami esamiems kreipėjamsFPdfAsn1 kartu su pagrindiniais PDFium Delphi Component moduliais