# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/package.gni")

package("openssh-tools") {
  deps = [
    ":scp",
    ":ssh",
    ":ssh-keygen",
  ]

  binaries = [
    {
      name = "scp"
      shell = true
    },
    {
      name = "ssh"
      shell = true
    },
    {
      name = "ssh-keygen"
      shell = true
    },
  ]
}

config("fuchsia") {
  include_dirs = [
    ".",
    "fuchsia",
  ]
  defines = [
    "u_int64_t=uint64_t",
    "SSHDIR=\"/pkg/data/ssh\"",
  ]
  cflags = [
    "-include",
    rebase_path("fuchsia/fuchsia-compat.h"),
    "-Wno-newline-eof",
    "-Wno-pointer-sign",
  ]

  configs = [
    "//third_party/boringssl:boringssl_config",
    "//third_party/zlib:zlib_config",
  ]
}

source_set("fuchsia-compat") {
  sources = [
    "fuchsia/fuchsia-compat.c",
    "fuchsia/fuchsia-compat.h",
  ]
  public_deps = [
    "//zircon/public/fidl/fuchsia.hardware.pty:fuchsia.hardware.pty_c",
    "//zircon/public/lib/async",
    "//zircon/public/lib/async-loop",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/loader-service",
  ]
  configs += [ ":fuchsia" ]
}

# This needs to be a static library because some of its symbols are replaced
# when it is linked into executables.
static_library("libopenssh") {
  sources = [
    "bitmap.c",
    "bitmap.h",
    "krl.c",
    "krl.h",
    "ssh_api.c",
    "ssh_api.h",
    "sshbuf-getput-basic.c",
    "sshbuf-getput-crypto.c",
    "sshbuf-misc.c",
    "sshbuf.c",
    "sshbuf.h",
    "ssherr.c",
    "ssherr.h",
    "sshkey.c",
    "sshkey.h",
  ]
  configs += [ ":fuchsia" ]

  deps = [
    "//third_party/boringssl",
    "//third_party/zlib:zlib_static",
  ]
}

config("umac128_config") {
  defines = [
    "UMAC_OUTPUT_LEN=16",
    "umac_new=umac128_new",
    "umac_update=umac128_update",
    "umac_final=umac128_final",
    "umac_delete=umac128_delete",
    "umac_ctx=umac128_ctx",
  ]
}

source_set("umac128") {
  sources = [
    "umac.c",
  ]
  configs += [
    ":umac128_config",
    ":fuchsia",
  ]
}

# This needs to be a static library because some of its symbols are replaced
# when it is linked into executables.
static_library("libssh") {
  sources = [
    "addrmatch.c",
    "atomicio.c",
    "atomicio.h",
    "authfd.c",
    "authfd.h",
    "authfile.c",
    "authfile.h",
    "canohost.c",
    "canohost.h",
    "chacha.c",
    "chacha.h",
    "channels.c",
    "channels.h",
    "cipher-aes.c",
    "cipher-aesctr.c",
    "cipher-aesctr.h",
    "cipher-chachapoly.c",
    "cipher-chachapoly.h",
    "cipher-ctr.c",
    "cipher.c",
    "cipher.h",
    "cleanup.c",
    "compat.c",
    "compat.h",
    "crc32.c",
    "crc32.h",
    "dh.c",
    "dh.h",
    "digest-libc.c",
    "digest-openssl.c",
    "dispatch.c",
    "dispatch.h",
    "dns.c",
    "dns.h",
    "ed25519.c",
    "entropy.c",
    "entropy.h",
    "fatal.c",
    "fe25519.c",
    "fe25519.h",
    "ge25519.c",
    "ge25519.h",
    "gss-genr.c",
    "hash.c",
    "hmac.c",
    "hmac.h",
    "hostfile.c",
    "hostfile.h",
    "kex.c",
    "kex.h",
    "kexc25519.c",
    "kexc25519c.c",
    "kexc25519s.c",
    "kexdh.c",
    "kexdhc.c",
    "kexdhs.c",
    "kexecdh.c",
    "kexecdhc.c",
    "kexecdhs.c",
    "kexgex.c",
    "kexgexc.c",
    "kexgexs.c",
    "key.h",
    "log.c",
    "log.h",
    "mac.c",
    "mac.h",
    "match.c",
    "match.h",
    "misc.c",
    "misc.h",
    "moduli.c",
    "monitor_fdpass.c",
    "monitor_fdpass.h",
    "msg.c",
    "msg.h",
    "nchan.c",
    "opacket.c",
    "opacket.h",
    "packet.c",
    "packet.h",
    "platform-misc.c",
    "platform-pledge.c",
    "platform-tracing.c",
    "poly1305.c",
    "poly1305.h",
    "progressmeter.c",
    "progressmeter.h",
    "readpass.c",
    "rijndael.c",
    "rijndael.h",
    "sc25519.c",
    "sc25519.h",
    "smult_curve25519_ref.c",
    "ssh-dss.c",
    "ssh-ecdsa.c",
    "ssh-ed25519.c",
    "ssh-pkcs11.c",
    "ssh-pkcs11.h",
    "ssh-rsa.c",
    "ttymodes.c",
    "ttymodes.h",
    "uidswap.c",
    "uidswap.h",
    "umac.c",
    "umac.h",
    "utf8.c",
    "utf8.h",
    "uuencode.c",
    "uuencode.h",
    "verify.c",
    "xmalloc.c",
    "xmalloc.h",
  ]

  deps = [
    ":fuchsia-compat",
    ":libopenssh",
    ":openbsd-compat",
    ":umac128",
    "//third_party/boringssl",
  ]
  configs += [ ":fuchsia" ]
}

config("openbsd-compat-config") {
  include_dirs = [ "openbsd-compat" ]
}

source_set("openbsd-compat") {
  sources = [
    "openbsd-compat/arc4random.c",
    "openbsd-compat/base64.c",
    "openbsd-compat/base64.h",
    "openbsd-compat/basename.c",
    "openbsd-compat/bcrypt_pbkdf.c",
    "openbsd-compat/bindresvport.c",
    "openbsd-compat/blowfish.c",
    "openbsd-compat/bsd-asprintf.c",
    "openbsd-compat/bsd-closefrom.c",
    "openbsd-compat/bsd-cygwin_util.c",
    "openbsd-compat/bsd-cygwin_util.h",
    "openbsd-compat/bsd-err.c",
    "openbsd-compat/bsd-getpeereid.c",
    "openbsd-compat/bsd-misc.c",
    "openbsd-compat/bsd-misc.h",
    "openbsd-compat/bsd-nextstep.c",
    "openbsd-compat/bsd-nextstep.h",
    "openbsd-compat/bsd-openpty.c",
    "openbsd-compat/bsd-poll.c",
    "openbsd-compat/bsd-poll.h",
    "openbsd-compat/bsd-setres_id.c",
    "openbsd-compat/bsd-setres_id.h",
    "openbsd-compat/bsd-snprintf.c",
    "openbsd-compat/bsd-statvfs.c",
    "openbsd-compat/bsd-statvfs.h",
    "openbsd-compat/bsd-waitpid.c",
    "openbsd-compat/bsd-waitpid.h",
    "openbsd-compat/daemon.c",
    "openbsd-compat/dirname.c",
    "openbsd-compat/explicit_bzero.c",
    "openbsd-compat/fake-rfc2553.c",
    "openbsd-compat/fake-rfc2553.h",
    "openbsd-compat/fmt_scaled.c",
    "openbsd-compat/freezero.c",
    "openbsd-compat/getcwd.c",
    "openbsd-compat/getgrouplist.c",
    "openbsd-compat/getopt_long.c",
    "openbsd-compat/getrrsetbyname-ldns.c",
    "openbsd-compat/getrrsetbyname.c",
    "openbsd-compat/getrrsetbyname.h",
    "openbsd-compat/glob.c",
    "openbsd-compat/glob.h",
    "openbsd-compat/inet_aton.c",
    "openbsd-compat/inet_ntoa.c",
    "openbsd-compat/inet_ntop.c",
    "openbsd-compat/kludge-fd_set.c",
    "openbsd-compat/md5.c",
    "openbsd-compat/md5.h",
    "openbsd-compat/mktemp.c",
    "openbsd-compat/openssl-compat.c",
    "openbsd-compat/openssl-compat.h",
    "openbsd-compat/pwcache.c",
    "openbsd-compat/readpassphrase.c",
    "openbsd-compat/readpassphrase.h",
    "openbsd-compat/reallocarray.c",
    "openbsd-compat/realpath.c",
    "openbsd-compat/recallocarray.c",
    "openbsd-compat/rmd160.c",
    "openbsd-compat/rmd160.h",
    "openbsd-compat/rresvport.c",
    "openbsd-compat/setenv.c",
    "openbsd-compat/setproctitle.c",
    "openbsd-compat/sha1.c",
    "openbsd-compat/sha1.h",
    "openbsd-compat/sha2.c",
    "openbsd-compat/sha2.h",
    "openbsd-compat/sigact.c",
    "openbsd-compat/sigact.h",
    "openbsd-compat/strcasestr.c",
    "openbsd-compat/strlcat.c",
    "openbsd-compat/strlcpy.c",
    "openbsd-compat/strmode.c",
    "openbsd-compat/strnlen.c",
    "openbsd-compat/strptime.c",
    "openbsd-compat/strsep.c",
    "openbsd-compat/strtoll.c",
    "openbsd-compat/strtonum.c",
    "openbsd-compat/strtoul.c",
    "openbsd-compat/strtoull.c",
    "openbsd-compat/timingsafe_bcmp.c",
    "openbsd-compat/vis.c",
    "openbsd-compat/vis.h",
  ]
  configs += [
    ":fuchsia",
    ":openbsd-compat-config",
  ]
  public_deps = [
    "//zircon/public/lib/fdio",
  ]
}

executable("ssh") {
  sources = [
    "clientloop.c",
    "mux.c",
    "readconf.c",
    "ssh.c",
    "sshconnect.c",
    "sshconnect2.c",
    "sshtty.c",
  ]
  deps = [
    ":libssh",
  ]
  configs += [ ":fuchsia" ]
}

executable("sshd") {
  sources = [
    "audit-bsm.c",
    "audit-linux.c",
    "audit.c",
    "audit.h",
    "auth-bsdauth.c",
    "auth-krb5.c",
    "auth-options.c",
    "auth-options.h",
    "auth-pam.c",
    "auth-pam.h",
    "auth-passwd.c",
    "auth-rhosts.c",
    "auth-shadow.c",
    "auth-sia.c",
    "auth-sia.h",
    "auth-skey.c",
    "auth.c",
    "auth.h",
    "auth2-chall.c",
    "auth2-gss.c",
    "auth2-hostbased.c",
    "auth2-kbdint.c",
    "auth2-none.c",
    "auth2-passwd.c",
    "auth2-pubkey.c",
    "auth2.c",
    "groupaccess.c",
    "groupaccess.h",
    "gss-serv-krb5.c",
    "gss-serv.c",
    "loginrec.c",
    "loginrec.h",
    "md5crypt.c",
    "md5crypt.h",
    "monitor.c",
    "monitor.h",
    "monitor_wrap.c",
    "monitor_wrap.h",
    "platform.c",
    "platform.h",
    "sandbox-capsicum.c",
    "sandbox-darwin.c",
    "sandbox-null.c",
    "sandbox-pledge.c",
    "sandbox-rlimit.c",
    "sandbox-seccomp-filter.c",
    "sandbox-solaris.c",
    "sandbox-systrace.c",
    "servconf.c",
    "servconf.h",
    "serverloop.c",
    "serverloop.h",
    "session.c",
    "session.h",
    "sftp-common.c",
    "sftp-common.h",
    "sftp-server.c",
    "sshd.c",
    "sshlogin.c",
    "sshlogin.h",
    "sshpty.c",
    "sshpty.h",
  ]
  configs += [ ":fuchsia" ]
  deps = [
    ":libssh",
    "//zircon/public/lib/fdio",
  ]
  public_deps = [
    "//zircon/public/fidl/fuchsia.hardware.pty:fuchsia.hardware.pty_c",
  ]
}

executable("ssh-keygen") {
  configs += [ ":fuchsia" ]
  sources = [
    "ssh-keygen.c",
  ]
  deps = [
    ":libssh",
  ]
}

executable("hostkeygen") {
  configs += [ ":fuchsia" ]
  sources = [
    "fuchsia/hostkeygen/hostkeygen.c",
  ]
  deps = [
    ":libssh",
  ]
}

executable("sftp-server") {
  sources = [
    "sftp-common.c",
    "sftp-server-main.c",
    "sftp-server.c",
  ]
  configs += [ ":fuchsia" ]
  deps = [
    ":libssh",
  ]
}

executable("scp") {
  sources = [
    "progressmeter.c",
    "scp.c",
  ]
  configs += [ ":fuchsia" ]
  deps = [
    ":libssh",
  ]
}
