| Type | Description |
|---|---|
TAsnTag | Universelle tag-konstanter (BOOLEAN, INTEGER, OCTET STRING, OID, SEQUENCE, SET, tids- og strengformer) brukt ved identifikatorkonstruksjon og validering |
TAsnClass | Identifikatorklasse: asnClassUniversal, asnClassApplication, asnClassContextSpecific eller asnClassPrivate |
TAsnIdentifier | Identifikatorklasse, constructed-flagg og 64-bit tag-nummer, inkludert high-tag-number-formen |
TDerTlv | Parsede TLV-er med Offset, HeaderLength, ContentOffset, ContentLength, NextOffset og Identifier uten å kopiere kildebufferen |
TDerWriter | Gjenbrukbar DER-utdatabuffer og typet encoder |
TDerReader | Avgrenset leser med peek, advance, skip, expected-tag, child-window, slice og typede dekodeoperasjoner |
TDerByteArrays | Dynamisk array av TBytes brukt av ConcatMany og andre flerbuffers-hjelpere |
TDerValidationErrorKind | Kategorier for valideringsfeil: dvekMalformedTlv, dvekTrailingData, dybde-, node- og innholdsgrenser (dvekDepthLimit, dvekNodeLimit, dvekContentLimit), dvekUniversalForm, kanoniske feil per type (dvekBoolean, dvekInteger, dvekBitString, dvekNull, dvekOid, dvekString, dvekTime) og dvekSetOrder |
TDerValidationError | Feilrecord som kjenner offset og Depth, med Kind og menneskelesbar meldingstekst |
TDerValidationErrors | Dynamisk array av TDerValidationError returnert inne i TDerValidationResult |
TDerValidationOptions | Grenser i MaxDepth, MaxNodes, MaxContentLength og MaxErrors, RequireSingleRoot-flagget, valgfri ValidateSetOrder og Default-klassefunksjonen |
TDerValidationResult | Valideringsstatus med IsValid, NodeCount, MaximumDepth og offset-kjente Errors, pluss hjelperne ErrorCount og FirstError |
| API | Description |
|---|---|
Clear, IsEmpty, Count, Capacity, Bytes, Finish | Nullstill eller undersøk bufrede data, kopier et øyeblikksbilde, eller overfør den ferdige arrayen og nullstill writeren |
Reserve, Append, AppendMany, AppendByte | Utvid én gang og legg til arrays, kaller-eide buffere, flere arrays eller én byte, med overløpskontroller |
Wrap, WrapIdentifier, WrapConstructed | Pakk innhold inn med en rå identifikatoroktett, vilkårlig identifikatorklasse og 64-bit tag-nummer, eller en constructed-identifikator |
ContextSpecific, ApplicationSpecific, PrivateSpecific | Kod lave eller høye tag-numre uten å avkorte identifikatoren |
Sequence, SequenceOf, SetOf, SetOfSorted | Komponer kodede verdier som SEQUENCE- eller SET-containere; SetOfSorted sorterer verdier etter kodede bytes |
BooleanOf, IntegerOf, UnsignedIntegerOf, IntegerBytes, EnumeratedOf | Kod BOOLEAN, signert eller usignert INTEGER, validert vilkårlig INTEGER-innhold og ENUMERATED-verdier |
OctetString, OctetStringOf, BitString, Null, OID | Kod binære verdier, bitstrenger, NULL og objektidentifikatorer som selvstendige TLV-er |
PrintableString, Ia5String, Utf8String | Kod de støttede ASN.1-tegnstrengformene |
UTCTime, GeneralizedTime, UTCTimeOf, GeneralizedTimeOf, TimeOf | Kod kanonisk tidstekst eller UTC-TDateTime-verdier, der TimeOf velger riktig DER-tidstype |
AlgId, AlgIdWithParams | Bygger en AlgorithmIdentifier-SEQUENCE med NULL eller eksplisitte parametere |
| API | Description |
|---|---|
Initialize, AtEnd, EffectiveLimit, Remaining | Initialiser en leser og undersøk dens avgrensede vindu og gjenstående byteantall |
TryReadTlvAt, PeekTlv | Analyser lave eller høye tag-numre og minimale definite lengder uten å endre Position |
ReadNextTlv, SkipTlv | Går videre først når en komplett gyldig TLV er tilgjengelig |
TryReadExpected | Går videre bare når klasse, constructed-form og tag-nummer alle samsvarer |
EnterConstructed | Oppretter et underordnet leservindu over samme kildearray uten å kopiere innhold |
ContentBytes, EncodedBytes | Kopierer et validert innholdsutsnitt eller en komplett TLV når eierskap kreves |
TryReadBoolean, TryReadUnsignedInteger, TryReadBitString | Dekoder kanoniske primitive verdier med kontroll av område og ubrukte biter |
TryReadString, TryReadTime, TryReadNull | Dekoder validert UTF8String-, PrintableString-, IA5String-, DER-tids- eller NULL-innhold |
ReadTlv, TryReadOID, ReadOID, TryReadInteger, ReadInteger | Gir kompatibilitetstilgang til rå TLV-offsets samt dekoding av objektidentifikatorer og signerte heltall |
function ValidateDer(const Data: TBytes): TDerValidationResult; overload;
function ValidateDer(const Data: TBytes; const Options: TDerValidationOptions): TDerValidationResult; overload;
ValidateDer kontrollerer minimalitet i identifikator og lengde, buffergrenser, universelle primitive former, BOOLEAN, INTEGER, ENUMERATED, BIT STRING, NULL, OBJECT IDENTIFIER, støttede strenger og kanoniske tidsverdier
Standardgrensene tillater maksimal dybde 64, 100000 noder, 64 MiB per innholdsverdi og 32 rapporterte feil, samtidig som én rot-TLV kreves
ValidateSetOrder er deaktivert som standard fordi skjemafri DER ikke kan skille alle SET fra SET OF; aktiver den for kjente SET OF-containere som CMS-attributtsamlinger
TDerValidationOptions.Default leverer standardgrensene, mens TDerValidationResult.ErrorCount og FirstError forenkler diagnostisk håndtering
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 fra klasse, tag-nummer og constructed-flagg, brukt til å drive TDerReader.TryReadExpected |
EncodeIdentifier | Koder en TAsnIdentifier til sine DER-identifikatorbytes, inkludert high-tag-number-formen |
ConcatBytes, Concat3, Concat4, ConcatMany | Konkatenerer to, tre, fire eller en dynamisk array av TBytes til én allokering; brukes mye av CMS-byggeren |
EncodeOIDContent | Koder en OID-streng med punkterte desimaltall til innholdsbytes uten tag og lengde, slik at kallere kan undersøke eller pakke inn en OID på nytt |
DerValidationErrorKindName | Returnerer visningsnavnet til en TDerValidationErrorKind for diagnostikk |
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 godtar valgfrie brøkdelsekunder bare når siste brøksiffer ikke er nullReadTlv, TryReadOID og signert TryReadInteger forblir tilgjengelige for eksisterende kallereFPdfAsn1 sammen med hovedenhetene i PDFium Delphi Component