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); } }