53 lines
1.6 KiB
Dart
53 lines
1.6 KiB
Dart
import 'dart:typed_data';
|
|
|
|
import 'package:pointycastle/asn1/asn1_encoding_rule.dart';
|
|
import 'package:pointycastle/asn1/asn1_object.dart';
|
|
import 'package:pointycastle/asn1/asn1_tags.dart';
|
|
import 'package:pointycastle/asn1/unsupported_asn1_encoding_rule_exception.dart';
|
|
|
|
///
|
|
/// An ASN1 Null object
|
|
///
|
|
class ASN1Null extends ASN1Object {
|
|
///
|
|
/// Creates an empty [ASN1Null] entity with only the [tag] set.
|
|
///
|
|
ASN1Null({int tag = ASN1Tags.NULL}) : super(tag: tag);
|
|
|
|
///
|
|
/// Creates an [ASN1Null] entity from the given [encodedBytes].
|
|
///
|
|
ASN1Null.fromBytes(Uint8List super.encodedBytes) : super.fromBytes();
|
|
|
|
///
|
|
/// Encode the [ASN1Null] to the byte representation.
|
|
///
|
|
/// This basically returns **[0x05, 0x00]** or **[0x05, 0x81, 0x00]** depending on the [encodingRule] and will not call the *super.encode()* method.
|
|
///
|
|
/// Supported encoding rules are :
|
|
/// * [ASN1EncodingRule.ENCODING_DER]
|
|
/// * [ASN1EncodingRule.ENCODING_BER_LONG_LENGTH_FORM]
|
|
///
|
|
@override
|
|
Uint8List encode(
|
|
{ASN1EncodingRule encodingRule = ASN1EncodingRule.ENCODING_DER}) {
|
|
switch (encodingRule) {
|
|
case ASN1EncodingRule.ENCODING_DER:
|
|
return Uint8List.fromList([tag!, 0x00]);
|
|
case ASN1EncodingRule.ENCODING_BER_LONG_LENGTH_FORM:
|
|
return Uint8List.fromList([tag!, 0x81, 0x00]);
|
|
default:
|
|
throw UnsupportedAsn1EncodingRuleException(encodingRule);
|
|
}
|
|
}
|
|
|
|
@override
|
|
String dump({int spaces = 0}) {
|
|
var sb = StringBuffer();
|
|
for (var i = 0; i < spaces; i++) {
|
|
sb.write(' ');
|
|
}
|
|
sb.write('NULL');
|
|
return sb.toString();
|
|
}
|
|
}
|