| Type | Description |
|---|---|
TAsnTag | Universella taggkonstanter (BOOLEAN, INTEGER, OCTET STRING, OID, SEQUENCE, SET, tids- och strängformer) som används vid identifierarkonstruktion och validering |
TAsnClass | Identifierarklass: asnClassUniversal, asnClassApplication, asnClassContextSpecific eller asnClassPrivate |
TAsnIdentifier | Identifierarklass, constructed-flagga och 64-bitars taggnummer, inklusive formen med höga taggnummer |
TDerTlv | Tolvad TLV med Offset, HeaderLength, ContentOffset, ContentLength, NextOffset och Identifier utan att kopiera källbufferten |
TDerWriter | Återanvändbar DER-utdatabuffer och typad encoder |
TDerReader | Avgränsad läsare med peek-, advance-, skip-, expected-tag-, child-window-, slice- och typade avkodningsoperationer |
TDerByteArrays | Dynamiskt fält av TBytes som används av ConcatMany och andra flerbuffershjälpare |
TDerValidationErrorKind | Kategorier för valideringsfel: dvekMalformedTlv, dvekTrailingData, gränser för djup, noder och innehåll (dvekDepthLimit, dvekNodeLimit, dvekContentLimit), dvekUniversalForm, per typ kanoniska fel (dvekBoolean, dvekInteger, dvekBitString, dvekNull, dvekOid, dvekString, dvekTime) och dvekSetOrder |
TDerValidationError | Felpost med känsla för Depth och offset, med Kind och mänskligt läsbar meddelandetext |
TDerValidationErrors | Dynamiskt fält av TDerValidationError som returneras inuti TDerValidationResult |
TDerValidationOptions | Gränser i MaxDepth, MaxNodes, MaxContentLength, MaxErrors, flaggan RequireSingleRoot, valfri ValidateSetOrder och klassfunktionen Default |
TDerValidationResult | Valideringsstatus med IsValid, NodeCount, MaximumDepth, offsetkänsliga Errors, plus hjälparna ErrorCount och FirstError |
| API | Description |
|---|---|
Clear, IsEmpty, Count, Capacity, Bytes, Finish | Nollställ eller inspektera buffrad data, kopiera en ögonblicksbild, eller överföra den färdiga fältet och nollställa skrivaren |
Reserve, Append, AppendMany, AppendByte | Väx en gång och bifoga fält, buffertar som ägs av anroparen, flera fält eller en byte med spillkontroller |
Wrap, WrapIdentifier, WrapConstructed | Slå in innehåll med en rå identifieraroktett, valfri identifierarklass och 64-bitars taggnummer, eller en constructed-identifierare |
ContextSpecific, ApplicationSpecific, PrivateSpecific | Koda låga eller höga taggnummer utan att klippa identifieraren |
Sequence, SequenceOf, SetOf, SetOfSorted | Komponera kodade värden som SEQUENCE- eller SET-behållare; SetOfSorted sorterar värdena på deras kodade bytes |
BooleanOf, IntegerOf, UnsignedIntegerOf, IntegerBytes, EnumeratedOf | Koda BOOLEAN, teckenförsedda eller teckenlösa INTEGER, validerat godtyckligt INTEGER-innehåll och ENUMERATED-värden |
OctetString, OctetStringOf, BitString, Null, OID | Koda binära värden, bitsträngar, NULL och objektidentifierare som fristående TLV:er |
PrintableString, Ia5String, Utf8String | Koda de ASN.1-teckensträngsformer som stöds |
UTCTime, GeneralizedTime, UTCTimeOf, GeneralizedTimeOf, TimeOf | Koda kanonisk tidstext eller UTC-TDateTime-värden, där TimeOf väljer rätt DER-tidstyp |
AlgId, AlgIdWithParams | Bygg en AlgorithmIdentifier-SEQUENCE med NULL eller explicita parametrar |
| API | Description |
|---|---|
Initialize, AtEnd, EffectiveLimit, Remaining | Initiera en läsare och inspektera dess avgränsade fönster och antalet återstående bytes |
TryReadTlvAt, PeekTlv | Tolka låga eller höga taggnummer och minimala definitiva längder utan att ändra Position |
ReadNextTlv, SkipTlv | Gå framåt först när en komplett giltig TLV finns tillgänglig |
TryReadExpected | Gå framåt bara när klass, constructed-form och taggnummer alla matchar |
EnterConstructed | Skapa ett underläsarfönster över samma källfält utan att kopiera innehållet |
ContentBytes, EncodedBytes | Kopiera en validerad innehålls- eller komplett TLV-sekvens när ägarskap krävs |
TryReadBoolean, TryReadUnsignedInteger, TryReadBitString | Avkoda kanoniska primitiva värden med kontroller av intervall och oanvända bitar |
TryReadString, TryReadTime, TryReadNull | Avkoda validerat UTF8String-, PrintableString-, IA5String-, DER-tids- eller NULL-innehåll |
ReadTlv, TryReadOID, ReadOID, TryReadInteger, ReadInteger | Erbjud kompatibilitetsåtkomst till råa TLV-offset plus avkodning av objektidentifierare och teckenförsedda heltal |
function ValidateDer(const Data: TBytes): TDerValidationResult; overload;
function ValidateDer(const Data: TBytes; const Options: TDerValidationOptions): TDerValidationResult; overload;
ValidateDer kontrollerar identifierar- och längdminimalitet, buffergränser, universella primitiva former, BOOLEAN, INTEGER, ENUMERATED, BIT STRING, NULL, OBJECT IDENTIFIER, strängformer som stöds och kanoniska tidsvärden
Standardgränserna tillåter ett maxdjup på 64, 100000 noder, 64 MiB per innehållsvärde och 32 rapporterade fel samtidigt som exakt en rot-TLV krävs
ValidateSetOrder är avstängt som standard eftersom schemafri DER inte kan skilja alla SET från SET OF; aktivera det för kända SET OF-behållare som CMS-attributsamlingar
TDerValidationOptions.Default tillhandahåller de avgränsade standardvärdena, medan TDerValidationResult.ErrorCount och FirstError förenklar feldiagnostik
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 | Bygger en TAsnIdentifier från klass, taggnummer och constructed-flagga, och används för att styra TDerReader.TryReadExpected |
EncodeIdentifier | Kodar en TAsnIdentifier till dess DER-identifierarbytes, inklusive formen med höga taggnummer |
ConcatBytes, Concat3, Concat4, ConcatMany | Sammankedjar två, tre, fyra eller ett dynamiskt fält av TBytes till en enda allokering; används flitigt av CMS-byggaren |
EncodeOIDContent | Kodar en OID-sträng med punktseparerade decimaltal till sina innehållsbytes utan tagg och längd, så att anropare kan inspektera eller slå in en OID på nytt |
DerValidationErrorKindName | Returnerar visningsnamnet för en TDerValidationErrorKind för diagnostik |
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 accepterar valfria decimaldelar av sekunder bara när den sista decimalssiffran inte är nollReadTlv, TryReadOID och teckenförsedda TryReadInteger finns kvar för befintliga anropareFPdfAsn1 vid sidan av huvudenheterna i PDFium Delphi Component