| Type | Description |
|---|---|
TAsnTag | ثابتهای تگ Universal (یعنی BOOLEAN، INTEGER، OCTET STRING، OID، SEQUENCE، SET و شکلهای زمان و رشته) که ساخت و اعتبارسنجی شناسه از آنها استفاده میکند |
TAsnClass | کلاس شناسه: asnClassUniversal، asnClassApplication، asnClassContextSpecific یا asnClassPrivate |
TAsnIdentifier | کلاس شناسه، پرچم constructed و شمارهٔ تگ ۶۴ بیتی، از جمله شکل high-tag-number |
TDerTlv | TLV تجزیهشده با Offset، HeaderLength، ContentOffset، ContentLength، NextOffset و Identifier، بدون رونوشت از بافر منبع |
TDerWriter | بافر خروجی DER قابل استفادهٔ مجدد و کدگذار نوعدار |
TDerReader | خوانندهٔ کراندار با عملیاتهای peek، advance، skip، expected-tag، پنجرهٔ فرزند، slice و رمزگشایی نوعدار |
TDerByteArrays | آرایهٔ پویای TBytes که ConcatMany و دیگر کمکتابعهای چندبافری از آن استفاده میکنند |
TDerValidationErrorKind | دستههای خطای اعتبارسنجی: dvekMalformedTlv، dvekTrailingData، کرانهای عمق، گره و محتوا (dvekDepthLimit، dvekNodeLimit، dvekContentLimit)، dvekUniversalForm، شکستهای کانونیک هر نوع (dvekBoolean، dvekInteger، dvekBitString، dvekNull، dvekOid، dvekString، dvekTime) و dvekSetOrder |
TDerValidationError | رکورد خطای آگاه از آفست و Depth با Kind و متن پیام قابل فهم برای انسان |
TDerValidationErrors | آرایهٔ پویای TDerValidationError که درون TDerValidationResult برگردانده میشود |
TDerValidationOptions | کرانها در MaxDepth، MaxNodes، MaxContentLength، MaxErrors، پرچم RequireSingleRoot، ValidateSetOrder اختیاری و تابع کلاسی Default |
TDerValidationResult | وضعیت اعتبارسنجی با IsValid، NodeCount، MaximumDepth، خطاهای آگاه از آفست در Errors، بهعلاوهٔ کمکتابعهای ErrorCount و FirstError |
| API | Description |
|---|---|
Clear، IsEmpty، Count، Capacity، Bytes، Finish | بازنشانی یا بازرسی دادهٔ بافرشده، رونوشت یک تصویر لحظهای، یا تحویل آرایهٔ کاملشده و بازنشانی writer |
Reserve، Append، AppendMany، AppendByte | یکباره بزرگشدن و افزودن آرایهها، بافرهای متعلق به فراخواننده، چندین آرایه یا یک بایت با بررسیهای سرریز |
Wrap، WrapIdentifier، WrapConstructed | پیچیدن محتوا با یک اکتت شناسهٔ خام، هر کلاس شناسه و شمارهٔ تگ ۶۴ بیتی، یا یک شناسهٔ constructed |
ContextSpecific، ApplicationSpecific، PrivateSpecific | کدگذاری شمارهٔ تگ کم یا بالا بدون بریدن شناسه |
Sequence، SequenceOf، SetOf، SetOfSorted | ترکیب مقادیر کدگذاریشده بهصورت ظرف SEQUENCE یا SET؛ SetOfSorted مقادیر را بر اساس بایتهای کدگذاریشده مرتب میکند |
BooleanOf، IntegerOf، UnsignedIntegerOf، IntegerBytes، EnumeratedOf | کدگذاری BOOLEAN، INTEGER علامتدار یا بیعلامت، محتوای INTEGER دلخواهِ اعتبارسنجیشده و مقادیر ENUMERATED |
OctetString، OctetStringOf، BitString، Null، OID | کدگذاری مقادیر باینری، bit-string، NULL و شناسهٔ شیء بهصورت TLVهای مستقل |
PrintableString، Ia5String، Utf8String | کدگذاری شکلهای رشتهٔ نویسهای پشتیبانیشدهٔ ASN.1 |
UTCTime، GeneralizedTime، UTCTimeOf، GeneralizedTimeOf، TimeOf | کدگذاری متن زمان کانونیک یا مقادیر TDateTime بر پایهٔ UTC، که در آن TimeOf نوع زمان DER درست را برمیگزیند |
AlgId، AlgIdWithParams | ساخت یک SEQUENCE از نوع AlgorithmIdentifier با پارامترهای NULL یا صریح |
| API | Description |
|---|---|
Initialize، AtEnd، EffectiveLimit، Remaining | مقداردهی اولیهٔ خواننده و بازرسی پنجرهٔ کراندار و شمار بایت باقیمانده |
TryReadTlvAt، PeekTlv | تجزیهٔ شمارههای تگ کم یا بالا و طولهای معین حداقلی بدون تغییر Position |
ReadNextTlv، SkipTlv | پیشروی تنها پس از در دست بودن یک TLV کامل و معتبر |
TryReadExpected | پیشروی تنها وقتی کلاس، شکل constructed و شمارهٔ تگ همه مطابقت دارند |
EnterConstructed | ساخت یک پنجرهٔ خوانندهٔ فرزند روی همان آرایهٔ منبع، بدون رونوشت محتوا |
ContentBytes، EncodedBytes | رونوشت یک برشِ محتوای اعتبارسنجیشده یا یک TLV کامل وقتی مالکیت لازم است |
TryReadBoolean، TryReadUnsignedInteger، TryReadBitString | رمزگشایی مقادیر اولیهٔ کانونیک با بررسی بازه و بیتهای بلااستفاده |
TryReadString، TryReadTime، TryReadNull | رمزگشایی محتوای UTF8String، PrintableString، IA5String، زمان DER یا NULLِ اعتبارسنجیشده |
ReadTlv، TryReadOID، ReadOID، TryReadInteger، ReadInteger | فراهمکردن دسترسی سازگاری به آفستهای خام TLV بهعلاوهٔ رمزگشایی شناسهٔ شیء و عدد صحیح علامتدار |
function ValidateDer(const Data: TBytes): TDerValidationResult; overload;
function ValidateDer(const Data: TBytes; const Options: TDerValidationOptions): TDerValidationResult; overload;
ValidateDer کمینگی شناسه و طول، کرانهای بافر، شکلهای اولیهٔ universal، BOOLEAN، INTEGER، ENUMERATED، BIT STRING، NULL، OBJECT IDENTIFIER، رشتههای پشتیبانیشده و مقادیر زمان کانونیک را بررسی میکند
کرانهای پیشفرض حداکثر عمق ۶۴، ۱۰۰۰۰۰ گره، ۶۴ MiB بهازای هر مقدار محتوا و ۳۲ خطای گزارششده را مجاز میدارند، در حالی که وجود یک TLV ریشه را الزامی میکنند
ValidateSetOrder بهطور پیشفرض غیرفعال است، چون DER بدون شِما نمیتواند هر SET را از SET OF بازشناسد؛ برای ظرفهای شناختهشدهٔ SET OF مانند مجموعههای attribute در CMS آن را فعال کنید
TDerValidationOptions.Default پیشفرضهای کراندار را فراهم میکند و TDerValidationResult.ErrorCount و FirstError مدیریت تشخیصی را ساده میکنند
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 | از کلاس، شمارهٔ تگ و پرچم constructed یک TAsnIdentifier میسازد و برای راندن TDerReader.TryReadExpected به کار میرود |
EncodeIdentifier | یک TAsnIdentifier را به بایتهای شناسهٔ DER آن کدگذاری میکند، از جمله شکل high-tag-number |
ConcatBytes، Concat3، Concat4، ConcatMany | دو، سه، چهار یا یک آرایهٔ پویا از TBytes را در یک تخصیص به هم میچسبانند؛ سازندهٔ CMS از آنها بهطور گسترده استفاده میکند |
EncodeOIDContent | رشتهٔ OID نقطهدهدهی را به بایتهای محتوایش کدگذاری میکند، بدون تگ و طول، تا فراخواننده بتواند یک OID را بازرسی یا دوباره بپیچد |
DerValidationErrorKindName | نام نمایشی یک TDerValidationErrorKind را برای اهداف تشخیصی برمیگرداند |
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 ثانیههای اعشاری اختیاری را تنها وقتی آخرین رقم اعشاری صفر نباشد میپذیردReadTlv، TryReadOID و TryReadInteger علامتدار برای فراخوانندههای موجود در دسترس میمانندFPdfAsn1 را در کنار واحد اصلی PDFium Delphi Component صادر میکند