AuthorizedKeysStore.parse constructor

AuthorizedKeysStore.parse(
  1. String text
)

Parses an AuthorizedKeysStore from the line-based text format.

Implementation

factory AuthorizedKeysStore.parse(String text) {
  final entries = <AuthorizedKey>[];
  for (final rawLine in text.split('\n')) {
    final line = rawLine.trim();
    if (line.isEmpty || line.startsWith('#')) continue;
    final parts = line.split(RegExp(r'\s+'));
    if (parts.length < 2) continue;
    final roles = parts.length >= 3
        ? parts[2]
              .split(',')
              .map((r) => r.trim())
              .where((r) => r.isNotEmpty)
              .toSet()
        : <String>{};
    entries.add(
      AuthorizedKey(
        principal: PrincipalId(parts[0]),
        publicKey: Ed25519PublicKey.fromBase64(parts[1]),
        roles: roles,
        displayName: parts.length >= 4 ? parts.sublist(3).join(' ') : '',
      ),
    );
  }
  return AuthorizedKeysStore(entries);
}