| Type | Description |
|---|---|
TAsnTag | Tanımlayıcı oluşturma ve doğrulamada kullanılan evrensel tag sabitleri (BOOLEAN, INTEGER, OCTET STRING, OID, SEQUENCE, SET, zaman ve dize biçimleri) |
TAsnClass | Tanımlayıcı sınıfı: asnClassUniversal, asnClassApplication, asnClassContextSpecific veya asnClassPrivate |
TAsnIdentifier | Tanımlayıcı sınıfı, constructed bayrağı ve high-tag-number formu dahil 64 bitlik tag numarası |
TDerTlv | Kaynak tamponu kopyalamadan Offset, HeaderLength, ContentOffset, ContentLength, NextOffset ve Identifier alanlarını taşıyan ayrıştırılmış TLV |
TDerWriter | Yeniden kullanılabilir DER çıktı tamponu ve türlü kodlayıcı |
TDerReader | Peek, ilerleme, atlama, beklenen tag, alt pencere, dilim ve türlü çözme işlemleri sunan sınırlı okuyucu |
TDerByteArrays | ConcatMany ve diğer çoklu tampon yardımcılarının kullandığı TBytes dinamik dizisi |
TDerValidationErrorKind | Doğrulama hata kategorileri: dvekMalformedTlv, dvekTrailingData, derinlik, düğüm ve içerik limitleri (dvekDepthLimit, dvekNodeLimit, dvekContentLimit), dvekUniversalForm, türe özgü kanonik hatalar (dvekBoolean, dvekInteger, dvekBitString, dvekNull, dvekOid, dvekString, dvekTime) ve dvekSetOrder |
TDerValidationError | Uzaklık ve Depth bilgisi taşıyan, Kind ile insan okunur ileti metnine sahip hata kaydı |
TDerValidationErrors | TDerValidationResult içinde döndürülen TDerValidationError dinamik dizisi |
TDerValidationOptions | MaxDepth, MaxNodes, MaxContentLength, MaxErrors limitleri, RequireSingleRoot bayrağı, isteğe bağlı ValidateSetOrder ve Default class function |
TDerValidationResult | IsValid, NodeCount, MaximumDepth ve uzaklık bilgisi içeren Errors alanlarıyla doğrulama durumu; ayrıca ErrorCount ve FirstError yardımcıları |
| API | Description |
|---|---|
Clear, IsEmpty, Count, Capacity, Bytes, Finish | Tampon veriyi sıfırlar ya da inceler, bir anlık görüntü kopyalar veya tamamlanmış diziyi devredip yazıcıyı sıfırlar |
Reserve, Append, AppendMany, AppendByte | Tek seferde büyür ve taşma kontrolleriyle dizi, çağıranın sahip olduğu tamponlar, birden çok dizi ya da tek bir bayt ekler |
Wrap, WrapIdentifier, WrapConstructed | İçeriği ham bir tanımlayıcı oktetiyle, herhangi bir tanımlayıcı sınıfı ve 64 bitlik tag numarasıyla ya da bir constructed tanımlayıcıyla sarar |
ContextSpecific, ApplicationSpecific, PrivateSpecific | Tanımlayıcıyı kesmeden düşük ya da yüksek tag numaralarını kodlar |
Sequence, SequenceOf, SetOf, SetOfSorted | Kodlanmış değerleri SEQUENCE ya da SET kapsayıcıları olarak birleştirir; SetOfSorted değerleri kodlanmış baytlara göre sıralar |
BooleanOf, IntegerOf, UnsignedIntegerOf, IntegerBytes, EnumeratedOf | BOOLEAN, işaretli veya işaretsiz INTEGER, doğrulanmış keyfi INTEGER içeriği ve ENUMERATED değerlerini kodlar |
OctetString, OctetStringOf, BitString, Null, OID | İkili, bit dizisi, NULL ve nesne tanımlayıcı değerlerini bağımsız TLV'ler olarak kodlar |
PrintableString, Ia5String, Utf8String | Desteklenen ASN.1 karakter dizesi biçimlerini kodlar |
UTCTime, GeneralizedTime, UTCTimeOf, GeneralizedTimeOf, TimeOf | Kanonik zaman metnini ya da UTC TDateTime değerlerini kodlar; TimeOf doğru DER zaman türünü seçer |
AlgId, AlgIdWithParams | NULL ya da açık parametrelerle bir AlgorithmIdentifier SEQUENCE kurar |
| API | Description |
|---|---|
Initialize, AtEnd, EffectiveLimit, Remaining | Bir okuyucuyu başlatır ve sınırlı penceresini ile kalan bayt sayısını inceler |
TryReadTlvAt, PeekTlv | Position değerini değiştirmeden düşük ya da yüksek tag numaralarını ve en kısa definite uzunlukları ayrıştırır |
ReadNextTlv, SkipTlv | Yalnızca eksiksiz geçerli bir TLV mevcutken ilerler |
TryReadExpected | Yalnızca sınıf, constructed form ve tag numarasının tümü eşleştiğinde ilerler |
EnterConstructed | İçeriği kopyalamadan aynı kaynak dizi üzerinde bir alt okuyucu penceresi açar |
ContentBytes, EncodedBytes | Sahiplik gerektiğinde doğrulanmış içerik ya da eksiksiz TLV dilimini kopyalar |
TryReadBoolean, TryReadUnsignedInteger, TryReadBitString | Aralık ve kullanılmayan bit kontrolleriyle kanonik ilkel değerleri çözer |
TryReadString, TryReadTime, TryReadNull | Doğrulanmış UTF8String, PrintableString, IA5String, DER zamanı ya da NULL içeriğini çözer |
ReadTlv, TryReadOID, ReadOID, TryReadInteger, ReadInteger | Ham TLV uzaklıklarına uyumluluk erişimi sunar; ayrıca nesne tanımlayıcı ve işaretli tam sayı çözmeyi sağlar |
function ValidateDer(const Data: TBytes): TDerValidationResult; overload;
function ValidateDer(const Data: TBytes; const Options: TDerValidationOptions): TDerValidationResult; overload;
ValidateDer, tanımlayıcı ve uzunluk en azlığını, tampon sınırlarını, evrensel ilkel biçimleri, BOOLEAN, INTEGER, ENUMERATED, BIT STRING, NULL, OBJECT IDENTIFIER, desteklenen dize türlerini ve kanonik zaman değerlerini denetler
Varsayılan limitler tek bir kök TLV zorunluluğuyla en çok 64 derinlik, 100000 düğüm, içerik değeri başına 64 MiB ve 32 raporlanan hataya izin verir
ValidateSetOrder varsayılan olarak devre dışıdır, çünkü şemasız DER her SET ile SET OF ayrımını yapamaz; CMS öznitelik koleksiyonları gibi bilinen SET OF kapsayıcıları için etkinleştirin
TDerValidationOptions.Default sınırlı varsayılanları sağlar; TDerValidationResult.ErrorCount ve FirstError ise tanılama işlemlerini basitleştirir
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 | Sınıf, tag numarası ve constructed bayrağından bir TAsnIdentifier kurar; TDerReader.TryReadExpected çağrılarını yönlendirmek için kullanılır |
EncodeIdentifier | Bir TAsnIdentifier değerini high-tag-number formu dahil DER tanımlayıcı baytlarına kodlar |
ConcatBytes, Concat3, Concat4, ConcatMany | İki, üç, dört ya da dinamik bir TBytes dizisini tek bir tahsis içinde birleştirir; CMS oluşturucusunda yoğun biçimde kullanılır |
EncodeOIDContent | Noktalı ondalık bir OID dizesini tag ve uzunluk olmadan içerik baytlarına kodlar; böylece çağıranlar bir OID'yi inceleyebilir ya da yeniden sarabilir |
DerValidationErrorKindName | Tanılama için bir TDerValidationErrorKind görünen adını döndürür |
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, isteğe bağlı kesirli saniyeleri yalnızca son kesir basamağı sıfır olmadığında kabul ederReadTlv, TryReadOID ve işaretli TryReadInteger mevcut çağıranlar için kullanılabilir kalırFPdfAsn1 öğesini de dışa aktarır