diff --git a/BUILD b/BUILD
index 7273b17d739bc2a17854d786205ef135d1c02fc0..83130eabb31b95e5442da0591fe231908c3ac8e5 100644
--- a/BUILD
+++ b/BUILD
@@ -892,9 +892,31 @@ objc_library(
 
 
 objc_library(
-  name = "grpc_unsecure_objc",
+  name = "grpc_objc",
   srcs = [
-    "src/core/surface/init_unsecure.c",
+    "src/core/httpcli/format_request.c",
+    "src/core/httpcli/httpcli.c",
+    "src/core/httpcli/httpcli_security_connector.c",
+    "src/core/httpcli/parser.c",
+    "src/core/security/base64.c",
+    "src/core/security/client_auth_filter.c",
+    "src/core/security/credentials.c",
+    "src/core/security/credentials_metadata.c",
+    "src/core/security/credentials_posix.c",
+    "src/core/security/credentials_win32.c",
+    "src/core/security/google_default_credentials.c",
+    "src/core/security/json_token.c",
+    "src/core/security/secure_endpoint.c",
+    "src/core/security/secure_transport_setup.c",
+    "src/core/security/security_connector.c",
+    "src/core/security/security_context.c",
+    "src/core/security/server_auth_filter.c",
+    "src/core/security/server_secure_chttp2.c",
+    "src/core/surface/init_secure.c",
+    "src/core/surface/secure_channel_create.c",
+    "src/core/tsi/fake_transport_security.c",
+    "src/core/tsi/ssl_transport_security.c",
+    "src/core/tsi/transport_security.c",
     "src/core/census/grpc_context.c",
     "src/core/channel/channel_args.c",
     "src/core/channel/channel_stack.c",
@@ -996,12 +1018,29 @@ objc_library(
     "src/core/census/initialize.c",
   ],
   hdrs = [
+    "include/grpc/grpc_security.h",
     "include/grpc/byte_buffer.h",
     "include/grpc/byte_buffer_reader.h",
     "include/grpc/compression.h",
     "include/grpc/grpc.h",
     "include/grpc/status.h",
     "include/grpc/census.h",
+    "src/core/httpcli/format_request.h",
+    "src/core/httpcli/httpcli.h",
+    "src/core/httpcli/httpcli_security_connector.h",
+    "src/core/httpcli/parser.h",
+    "src/core/security/auth_filters.h",
+    "src/core/security/base64.h",
+    "src/core/security/credentials.h",
+    "src/core/security/json_token.h",
+    "src/core/security/secure_endpoint.h",
+    "src/core/security/secure_transport_setup.h",
+    "src/core/security/security_connector.h",
+    "src/core/security/security_context.h",
+    "src/core/tsi/fake_transport_security.h",
+    "src/core/tsi/ssl_transport_security.h",
+    "src/core/tsi/transport_security.h",
+    "src/core/tsi/transport_security_interface.h",
     "src/core/census/grpc_context.h",
     "src/core/channel/census_filter.h",
     "src/core/channel/channel_args.h",
@@ -1095,6 +1134,7 @@ objc_library(
   ],
   deps = [
     ":gpr_objc",
+    "//external:libssl_objc",
   ],
   sdk_dylibs = ["libz"],
 )
diff --git a/templates/BUILD.template b/templates/BUILD.template
index 98ad08a01c84bafa3ee8ce1c43f5148e37c8ebf4..76f06c2caab21530508a36f97489bef895cdb7de 100644
--- a/templates/BUILD.template
+++ b/templates/BUILD.template
@@ -64,7 +64,7 @@ ${cc_library(lib)}
 % endfor
 
 % for lib in libs:
-% if lib.name in ("grpc_unsecure", "gpr"):
+% if lib.name in ("grpc", "gpr"):
 ${objc_library(lib)}
 % endif
 % endfor
@@ -127,6 +127,9 @@ objc_library(
 % for dep in lib.get("deps", []):
     ":${dep}_objc",
 % endfor
+% if lib.get('secure', 'no') == 'yes':
+    "//external:libssl_objc",
+% endif
   ],
 % if lib.get("baselib", false):
   sdk_dylibs = ["libz"],