Sample code for 30+ languages & platforms
Dart

Generate DSA SSH Key

See more SSH Key Examples

Generates a DSA SSH key and saves to various public and private key file formats (OpenSSH and PuTTY).

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  final key = CkSshKey();

  // numBits should be a minimum of 1024 and
  // a multiple of 64.  Typical values are
  // 1024 or 2048. 
  final numBits = 2048;
  try {
    key.generateDsaKey(numBits);
  } on ChilkatException {
    print('Invalid numBits passed to DSA key generation method.');
    return;
  }

  // Note: Generating a public/private key pair is CPU intensive
  // and may take a short amount of time (more than few seconds,
  // but less than a minute).

  var exportedKey = '';
  var exportEncrypted = false;

  // Export the DSA private key to OpenSSH, PuTTY, and XML and save. 
  exportEncrypted = false;
  exportedKey = key.toOpenSshPrivateKey(exportEncrypted);
  // Chilkat provides a SaveText method for convenience...
  key.saveText(exportedKey, 'privkey_openssh_unencrypted.pem');

  // Export with encryption to OpenSSH private key format:
  key.password = 'secret';
  exportEncrypted = true;
  exportedKey = key.toOpenSshPrivateKey(exportEncrypted);
  key.saveText(exportedKey, 'privkey_openssh_encrypted.pem');

  // Export the DSA private key to unencrypted PuTTY format:
  exportEncrypted = false;
  exportedKey = key.toPuttyPrivateKey(exportEncrypted);
  key.saveText(exportedKey, 'privkey_putty_unencrypted.ppk');

  // Export the DSA private key to encrypted PuTTY format:
  key.password = 'secret';
  exportEncrypted = true;
  exportedKey = key.toPuttyPrivateKey(exportEncrypted);
  key.saveText(exportedKey, 'privkey_putty_encrypted.ppk');

  // Export private key to XML:
  exportedKey = key.toXml();
  key.saveText(exportedKey, 'privkey.xml');

  // ----------------------------------------------------
  // Now for the public key....
  // ----------------------------------------------------

  // The Secure Shell (SSH) Public Key File Format
  // is documented in RFC 4716.
  exportedKey = key.toRfc4716PublicKey();
  key.saveText(exportedKey, 'pubkey_rfc4716.pub');

  // OpenSSH has a separate public-key file format, which 
  // is also supported by Chilkat SshKey:
  exportedKey = key.toOpenSshPublicKey();
  key.saveText(exportedKey, 'pubkey_openSsh.pub');

  print('Finished.');
}