encodeEcPublicKeyToPem static method

String encodeEcPublicKeyToPem(
  1. ECPublicKey publicKey
)

Enode the given elliptic curve publicKey to PEM format.

This is descripted in tools.ietf.org/html/rfc5480

SubjectPublicKeyInfo  ::=  SEQUENCE  {
    algorithm         AlgorithmIdentifier,
    subjectPublicKey  BIT STRING
}

Implementation

static String encodeEcPublicKeyToPem(ECPublicKey publicKey) {
  var outer = ASN1Sequence();
  var algorithm = ASN1Sequence();
  algorithm.add(ASN1ObjectIdentifier.fromName('ecPublicKey'));
  algorithm.add(ASN1ObjectIdentifier.fromName('prime256v1'));
  var encodedBytes = publicKey.Q!.getEncoded(false);

  var subjectPublicKey = ASN1BitString(stringValues: encodedBytes);

  outer.add(algorithm);
  outer.add(subjectPublicKey);
  var dataBase64 = base64.encode(outer.encode());
  var chunks = _chunk(dataBase64, 64);

  return '$BEGIN_EC_PUBLIC_KEY\n${chunks.join('\n')}\n$END_EC_PUBLIC_KEY';
}