encode method Null safety

String encode()

Implementation

String encode() {
  ASN1Sequence sequence = ASN1Sequence();
  ASN1Integer version = ASN1Integer(BigInt.from(0));
  ASN1Sequence algorithm = ASN1Sequence();
  ASN1Object paramsAsn1Obj =
      ASN1Object.fromBytes(Uint8List.fromList([0x5, 0x0]));
  algorithm
      .add(ASN1ObjectIdentifier.fromIdentifierString('1.2.840.113549.1.1.1'));
  algorithm.add(paramsAsn1Obj);

  ASN1Sequence privateKeySequence = ASN1Sequence();
  ASN1Integer privateKeyVersion = ASN1Integer(BigInt.from(1));
  ASN1Integer modulus = ASN1Integer(this.modulus);
  ASN1Integer publicExponent = ASN1Integer(this.publicExponent);
  ASN1Integer privateExponent = ASN1Integer(this.privateExponent);
  ASN1Integer prime1 = ASN1Integer(p);
  ASN1Integer prime2 = ASN1Integer(q);
  ASN1Integer exponent1 =
      ASN1Integer(this.privateExponent! % (p! - BigInt.from(1)));
  ASN1Integer exponent2 =
      ASN1Integer(this.privateExponent! % (q! - BigInt.from(1)));
  ASN1Integer coefficient = ASN1Integer(q!.modInverse(p!));
  privateKeySequence.add(privateKeyVersion);
  privateKeySequence.add(modulus);
  privateKeySequence.add(publicExponent);
  privateKeySequence.add(privateExponent);
  privateKeySequence.add(prime1);
  privateKeySequence.add(prime2);
  privateKeySequence.add(exponent1);
  privateKeySequence.add(exponent2);
  privateKeySequence.add(coefficient);
  privateKeySequence.encode();
  ASN1OctetString privateKeyOctet = ASN1OctetString();
  privateKeyOctet.octets = privateKeySequence.encodedBytes;

  sequence.add(version);
  sequence.add(algorithm);
  sequence.add(privateKeyOctet);
  sequence.encode();
  return base64.encode(sequence.encodedBytes!);
}