blob: ae4d3a7fcc65b443509dbcf65cca32c7656b16bc [file] [log] [blame]
import 'dart:typed_data';
import 'package:pointycastle/asn1.dart';
///
///```
/// DigestInfo ::= SEQUENCE {
/// digestAlgorithm DigestAlgorithmIdentifier,
/// digest Digest
/// }
///
/// Digest ::= OCTET STRING
///```
///
class ASN1DigestInfo extends ASN1Object {
late ASN1AlgorithmIdentifier digestAlgorithm;
late Uint8List digest;
ASN1DigestInfo(this.digest, this.digestAlgorithm);
ASN1DigestInfo.fromSequence(ASN1Sequence seq) {
if (seq.elements!.length != 2) {
throw ArgumentError('Sequence has not enough elements');
}
digestAlgorithm = ASN1AlgorithmIdentifier.fromSequence(
seq.elements!.elementAt(0) as ASN1Sequence);
var o = seq.elements!.elementAt(1) as ASN1OctetString;
if (o.valueBytes != null) {
digest = o.valueBytes!;
}
}
@override
Uint8List encode(
{ASN1EncodingRule encodingRule = ASN1EncodingRule.ENCODING_DER}) {
var tmp = ASN1Sequence(elements: [
digestAlgorithm,
ASN1OctetString(octets: digest),
]);
return tmp.encode(encodingRule: encodingRule);
}
}