privateKeyFromASN1Sequence static method

RSAPrivateKey privateKeyFromASN1Sequence(
  1. ASN1Sequence asnSequence
)

Decode the given asnSequence into an RSAPrivateKey.

Implementation

static RSAPrivateKey privateKeyFromASN1Sequence(ASN1Sequence asnSequence) {
  var objects = asnSequence.elements!;

  var asnIntegers = objects.take(9).map((o) => o as ASN1Integer).toList();

  var version = asnIntegers.first;
  if (version.integer != BigInt.zero) {
    throw ArgumentError('Expected version 0, got: ${version.integer}.');
  }

  var key = RSAPrivateKey(asnIntegers[1].integer!, asnIntegers[2].integer!,
      asnIntegers[4].integer, asnIntegers[5].integer);

  var bitLength = key.n!.bitLength;
  if (bitLength != 1024 && bitLength != 2048 && bitLength != 4096) {
    throw ArgumentError('The RSA modulus has a bit length of $bitLength. '
        'Only 1024, 2048 and 4096 are supported.');
  }
  return key;
}