diff --git a/WORKSPACE b/WORKSPACE
index 1834866b9c168a715b568209f7a04ed84bb021a7..d730ff6c733c853ee652861e9cc928fe85965e0b 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -517,3 +517,6 @@ http_archive(
 load("@io_bazel_rules_go//go:def.bzl", "go_rules_dependencies", "go_register_toolchains")
 go_rules_dependencies()
 go_register_toolchains()
+
+load("@io_bazel_rules_go//proto:def.bzl", "proto_register_toolchains")
+proto_register_toolchains()
diff --git a/go/aead/aead_factory_test.go b/go/aead/aead_factory_test.go
index 4aad462af0723137f8876d670e4d895a3972778c..55b9a0c7572b7e9cd9caf06bff10af8863771d03 100644
--- a/go/aead/aead_factory_test.go
+++ b/go/aead/aead_factory_test.go
@@ -25,7 +25,7 @@ import (
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/testutil"
 	"github.com/google/tink/go/util/util"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"strings"
 	"testing"
 )
diff --git a/go/aead/aead_key_templates.go b/go/aead/aead_key_templates.go
index 294ae4fe6dcf9f14b18875e58711d0abde02255f..2d499dad0ff0afbdab4b40bde7e123be4180cab2 100644
--- a/go/aead/aead_key_templates.go
+++ b/go/aead/aead_key_templates.go
@@ -18,8 +18,8 @@ package aead
 
 import (
 	"github.com/golang/protobuf/proto"
-	gcmpb "github.com/google/tink/proto/aes_gcm_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	gcmpb "github.com/google/tink/proto/aes_gcm_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 // This file contains pre-generated KeyTemplate for Aead keys. One can use these templates
diff --git a/go/aead/aead_key_templates_test.go b/go/aead/aead_key_templates_test.go
index f012509bfe2483e138b2f27abaefb2fc6c50d9bc..fb828c30c260f26da58a7781393f19dca93e0920 100644
--- a/go/aead/aead_key_templates_test.go
+++ b/go/aead/aead_key_templates_test.go
@@ -20,8 +20,8 @@ import (
 	"fmt"
 	"github.com/golang/protobuf/proto"
 	"github.com/google/tink/go/aead/aead"
-	gcmpb "github.com/google/tink/proto/aes_gcm_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	gcmpb "github.com/google/tink/proto/aes_gcm_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"testing"
 )
 
diff --git a/go/aead/aes_gcm_key_manager.go b/go/aead/aes_gcm_key_manager.go
index 9f950274e7a0df7d4855d7b41e2f514ab572c2d2..04d4aafa2082fcd891d19c6764fd24ebc017abd9 100644
--- a/go/aead/aes_gcm_key_manager.go
+++ b/go/aead/aes_gcm_key_manager.go
@@ -23,8 +23,8 @@ import (
 	"github.com/google/tink/go/subtle/random"
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/util"
-	gcmpb "github.com/google/tink/proto/aes_gcm_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	gcmpb "github.com/google/tink/proto/aes_gcm_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 const (
diff --git a/go/aead/aes_gcm_key_manager_test.go b/go/aead/aes_gcm_key_manager_test.go
index 631753c56c081d668e2ad564d745c5ff2dce05bf..31d56cbe8c0de55b127bda2b774d193e011bb7ec 100644
--- a/go/aead/aes_gcm_key_manager_test.go
+++ b/go/aead/aes_gcm_key_manager_test.go
@@ -25,8 +25,8 @@ import (
 	"github.com/google/tink/go/subtle/random"
 	"github.com/google/tink/go/util/testutil"
 	"github.com/google/tink/go/util/util"
-	gcmpb "github.com/google/tink/proto/aes_gcm_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	gcmpb "github.com/google/tink/proto/aes_gcm_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"testing"
 )
 
diff --git a/go/mac/hmac_key_manager.go b/go/mac/hmac_key_manager.go
index 35b8a36342347eb14289411fda64dce0880416ca..65fcb99c3d1119750184022860553013e36e5b90 100644
--- a/go/mac/hmac_key_manager.go
+++ b/go/mac/hmac_key_manager.go
@@ -23,8 +23,8 @@ import (
 	"github.com/google/tink/go/subtle/random"
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/util"
-	hmacpb "github.com/google/tink/proto/hmac_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	hmacpb "github.com/google/tink/proto/hmac_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 const (
diff --git a/go/mac/hmac_key_manager_test.go b/go/mac/hmac_key_manager_test.go
index 3488ed061d1b5cd7d7adbac0770112abc40e1ac6..e7b7dbcd477d55bfeb955e865769c20e3b4f027e 100644
--- a/go/mac/hmac_key_manager_test.go
+++ b/go/mac/hmac_key_manager_test.go
@@ -27,9 +27,9 @@ import (
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/testutil"
 	"github.com/google/tink/go/util/util"
-	commonpb "github.com/google/tink/proto/common_go_proto"
-	hmacpb "github.com/google/tink/proto/hmac_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	commonpb "github.com/google/tink/proto/common_proto"
+	hmacpb "github.com/google/tink/proto/hmac_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"reflect"
 	"testing"
 )
diff --git a/go/mac/mac_factory_test.go b/go/mac/mac_factory_test.go
index 2203f79567abe28ccdc7d96ccbf41e1c7de86993..a3d94896369507ce2bdc21d329418468e85f4e6e 100644
--- a/go/mac/mac_factory_test.go
+++ b/go/mac/mac_factory_test.go
@@ -22,7 +22,7 @@ import (
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/testutil"
 	"github.com/google/tink/go/util/util"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"strings"
 	"testing"
 )
diff --git a/go/mac/mac_key_templates.go b/go/mac/mac_key_templates.go
index f08721341a7350ed3d4c95db94b3579ba04f2323..772a108c1c40ee5e45fc29fcff5a18cc46d0326a 100644
--- a/go/mac/mac_key_templates.go
+++ b/go/mac/mac_key_templates.go
@@ -18,9 +18,9 @@ package mac
 
 import (
 	"github.com/golang/protobuf/proto"
-	commonpb "github.com/google/tink/proto/common_go_proto"
-	hmacpb "github.com/google/tink/proto/hmac_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	commonpb "github.com/google/tink/proto/common_proto"
+	hmacpb "github.com/google/tink/proto/hmac_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 // This file contains pre-generated KeyTemplate for MAC.
diff --git a/go/mac/mac_key_templates_test.go b/go/mac/mac_key_templates_test.go
index 7c58f51fab7fde0a1e6069eb23fecf529e379ab3..5f44e33a32650f838a8f08beeedcac2f43343852 100644
--- a/go/mac/mac_key_templates_test.go
+++ b/go/mac/mac_key_templates_test.go
@@ -20,9 +20,9 @@ import (
 	"fmt"
 	"github.com/golang/protobuf/proto"
 	"github.com/google/tink/go/mac/mac"
-	commonpb "github.com/google/tink/proto/common_go_proto"
-	hmacpb "github.com/google/tink/proto/hmac_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	commonpb "github.com/google/tink/proto/common_proto"
+	hmacpb "github.com/google/tink/proto/hmac_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"testing"
 )
 
diff --git a/go/signature/ecdsa_sign_key_manager.go b/go/signature/ecdsa_sign_key_manager.go
index 29c82d7b644bef263ad9f25cd4ce9ba7928f1790..2c8054828a952d22ad8cf7c6f9da3d2b1e36b9a0 100644
--- a/go/signature/ecdsa_sign_key_manager.go
+++ b/go/signature/ecdsa_sign_key_manager.go
@@ -25,8 +25,8 @@ import (
 	"github.com/google/tink/go/subtle/subtleutil"
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/util"
-	ecdsapb "github.com/google/tink/proto/ecdsa_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	ecdsapb "github.com/google/tink/proto/ecdsa_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 const (
diff --git a/go/signature/ecdsa_sign_key_manager_test.go b/go/signature/ecdsa_sign_key_manager_test.go
index 355e8e4e3ee03f7627f58f4d73c9d88c11f14afc..658f6f0e83c029516ac7a3f6773c4ff24eef743b 100644
--- a/go/signature/ecdsa_sign_key_manager_test.go
+++ b/go/signature/ecdsa_sign_key_manager_test.go
@@ -24,9 +24,9 @@ import (
 	"github.com/google/tink/go/subtle/random"
 	"github.com/google/tink/go/util/testutil"
 	"github.com/google/tink/go/util/util"
-	commonpb "github.com/google/tink/proto/common_go_proto"
-	ecdsapb "github.com/google/tink/proto/ecdsa_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	commonpb "github.com/google/tink/proto/common_proto"
+	ecdsapb "github.com/google/tink/proto/ecdsa_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"math/big"
 	"testing"
 )
diff --git a/go/signature/ecdsa_verify_key_manager.go b/go/signature/ecdsa_verify_key_manager.go
index 5c99047a7e5e0f878f9ce92af9345532f473b008..2de8fda2538421d8a447e56677c613d2cec66ae3 100644
--- a/go/signature/ecdsa_verify_key_manager.go
+++ b/go/signature/ecdsa_verify_key_manager.go
@@ -22,8 +22,8 @@ import (
 	subtleEcdsa "github.com/google/tink/go/subtle/ecdsa"
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/util"
-	ecdsapb "github.com/google/tink/proto/ecdsa_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	ecdsapb "github.com/google/tink/proto/ecdsa_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 const (
diff --git a/go/signature/ecdsa_verify_key_manager_test.go b/go/signature/ecdsa_verify_key_manager_test.go
index 90e0e06d3a2f010a7baa1e3faf063b3b61a6a92b..bf4010ff4be0f87232a19dc04c1bdbf54c270484 100644
--- a/go/signature/ecdsa_verify_key_manager_test.go
+++ b/go/signature/ecdsa_verify_key_manager_test.go
@@ -21,7 +21,7 @@ import (
 	"github.com/google/tink/go/signature/signature"
 	"github.com/google/tink/go/subtle/ecdsa"
 	"github.com/google/tink/go/util/testutil"
-	commonpb "github.com/google/tink/proto/common_go_proto"
+	commonpb "github.com/google/tink/proto/common_proto"
 	"testing"
 )
 
diff --git a/go/signature/public_key_sign_factory.go b/go/signature/public_key_sign_factory.go
index 44348c9c8ce3a11f4d1869c288853e1ce43de5b1..69bfc00430be64d5c0bffaf57695c47dd6da5bef 100644
--- a/go/signature/public_key_sign_factory.go
+++ b/go/signature/public_key_sign_factory.go
@@ -19,7 +19,7 @@ package signature
 import (
 	"fmt"
 	"github.com/google/tink/go/tink/tink"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"sync"
 )
 
diff --git a/go/signature/public_key_sign_verify_factory_test.go b/go/signature/public_key_sign_verify_factory_test.go
index 8d3068cc4cca333f33be79c238b5eefaa1526dcd..fae58507842c63c03e586ee915ccf10ac3b6ad19 100644
--- a/go/signature/public_key_sign_verify_factory_test.go
+++ b/go/signature/public_key_sign_verify_factory_test.go
@@ -23,8 +23,8 @@ import (
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/testutil"
 	"github.com/google/tink/go/util/util"
-	commonpb "github.com/google/tink/proto/common_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	commonpb "github.com/google/tink/proto/common_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"testing"
 )
 
diff --git a/go/signature/public_key_verify_factory.go b/go/signature/public_key_verify_factory.go
index 622372b7541aa0cfd8e1cfc165bde03c259bf446..247f6bbdf2536f4bbefeba0627733130ff42d6e3 100644
--- a/go/signature/public_key_verify_factory.go
+++ b/go/signature/public_key_verify_factory.go
@@ -19,7 +19,7 @@ package signature
 import (
 	"fmt"
 	"github.com/google/tink/go/tink/tink"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"sync"
 )
 
diff --git a/go/signature/signature_key_templates.go b/go/signature/signature_key_templates.go
index 9afb758f1dfeab79f1f6e3ff9a7cbde3fbb1d0eb..a3679cf323f64dda6afc813b630633977d859ba3 100644
--- a/go/signature/signature_key_templates.go
+++ b/go/signature/signature_key_templates.go
@@ -19,9 +19,9 @@ package signature
 import (
 	"github.com/golang/protobuf/proto"
 	"github.com/google/tink/go/util/util"
-	commonpb "github.com/google/tink/proto/common_go_proto"
-	ecdsapb "github.com/google/tink/proto/ecdsa_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	commonpb "github.com/google/tink/proto/common_proto"
+	ecdsapb "github.com/google/tink/proto/ecdsa_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 // This file contains pre-generated KeyTemplate for PublicKeySign and PublicKeyVerify.
diff --git a/go/signature/signature_key_templates_test.go b/go/signature/signature_key_templates_test.go
index 33a3b7292b5578d3106393506c97f4822599f89b..982824aad234c7d020b95b41fbbe9ab80b8b9217 100644
--- a/go/signature/signature_key_templates_test.go
+++ b/go/signature/signature_key_templates_test.go
@@ -20,9 +20,9 @@ import (
 	"fmt"
 	"github.com/golang/protobuf/proto"
 	"github.com/google/tink/go/signature/signature"
-	commonpb "github.com/google/tink/proto/common_go_proto"
-	ecdsapb "github.com/google/tink/proto/ecdsa_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	commonpb "github.com/google/tink/proto/common_proto"
+	ecdsapb "github.com/google/tink/proto/ecdsa_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"testing"
 )
 
diff --git a/go/tink/cleartext_keyset_handle.go b/go/tink/cleartext_keyset_handle.go
index 8d4cc3c0a3126b343dc2ac47a2d3a2de0b400a82..f028b2f99fecd20b268cc0bd9e58dcd5083b2cff 100644
--- a/go/tink/cleartext_keyset_handle.go
+++ b/go/tink/cleartext_keyset_handle.go
@@ -19,7 +19,7 @@ package tink
 import (
 	"fmt"
 	"github.com/golang/protobuf/proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"sync"
 )
 
diff --git a/go/tink/crypto_format.go b/go/tink/crypto_format.go
index 6eccd7de316e5194642c204b913d79c4351b88b8..9d287c11dfcec905e017865cde79f135eb6605a5 100644
--- a/go/tink/crypto_format.go
+++ b/go/tink/crypto_format.go
@@ -19,7 +19,7 @@ package tink
 import (
 	"encoding/binary"
 	"fmt"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 /**
diff --git a/go/tink/crypto_format_test.go b/go/tink/crypto_format_test.go
index 7b1b1d1b9a4d88738e84ab21d702e12da97809ad..996eece40d5f59840fa690617607507c17c23747 100644
--- a/go/tink/crypto_format_test.go
+++ b/go/tink/crypto_format_test.go
@@ -18,7 +18,7 @@ package tink_test
 
 import (
 	"github.com/google/tink/go/tink/tink"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"testing"
 )
 
diff --git a/go/tink/encrypted_keyset_handle.go b/go/tink/encrypted_keyset_handle.go
index 7b2d12e67540237755d6cb77827196c2e1d7abcb..fdd6558f163ddd753639fc3d41419cfa40e88d8c 100644
--- a/go/tink/encrypted_keyset_handle.go
+++ b/go/tink/encrypted_keyset_handle.go
@@ -19,7 +19,7 @@ package tink
 import (
 	"fmt"
 	"github.com/golang/protobuf/proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"sync"
 )
 
diff --git a/go/tink/encrypted_keyset_handle_test.go b/go/tink/encrypted_keyset_handle_test.go
index 8fbe1fa6ea47ab766c43be1a7f5e9059b2974431..a71f4b94a09b0e9b73e7c75c9dd518bbc41760fc 100644
--- a/go/tink/encrypted_keyset_handle_test.go
+++ b/go/tink/encrypted_keyset_handle_test.go
@@ -24,7 +24,7 @@ import (
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/testutil"
 	"github.com/google/tink/go/util/util"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"testing"
 )
 
diff --git a/go/tink/key_manager.go b/go/tink/key_manager.go
index bf751be61ee4fcceae4c929623e9cea22bd0a6eb..170d1d1f765a36404be7c004105831211d878e01 100644
--- a/go/tink/key_manager.go
+++ b/go/tink/key_manager.go
@@ -18,7 +18,7 @@ package tink
 
 import (
 	"github.com/golang/protobuf/proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 /**
diff --git a/go/tink/keyset_handle.go b/go/tink/keyset_handle.go
index f932dbaf32b1414cd1c933cd5e3012526511f5b0..a365e17cd8da50aa0c66df90f1aafa165815c53e 100644
--- a/go/tink/keyset_handle.go
+++ b/go/tink/keyset_handle.go
@@ -19,7 +19,7 @@ package tink
 import (
 	"fmt"
 	"github.com/google/tink/go/util/util"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 var errKeysetHandleInvalidKeyset = fmt.Errorf("keyset_handle: invalid keyset")
diff --git a/go/tink/keyset_handle_test.go b/go/tink/keyset_handle_test.go
index 71645aadd43d434dadc6f144bb696e14183aea8a..cb8ec24914975a11f00a9a488b0afcaf105238a2 100644
--- a/go/tink/keyset_handle_test.go
+++ b/go/tink/keyset_handle_test.go
@@ -18,7 +18,7 @@ package tink
 
 import (
 	"github.com/google/tink/go/util/util"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"testing"
 )
 
diff --git a/go/tink/keyset_manager.go b/go/tink/keyset_manager.go
index 95f4086157ff2f52022934706b1305213450e0ad..0af98dc467798c9c3b337dc8372f594115ba753b 100644
--- a/go/tink/keyset_manager.go
+++ b/go/tink/keyset_manager.go
@@ -22,7 +22,7 @@ import (
 	proto "github.com/golang/protobuf/proto"
 	"github.com/google/tink/go/subtle/random"
 	"github.com/google/tink/go/util/util"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 // emptyAad is the additional authenticated data that is used in the encryption
diff --git a/go/tink/keyset_manager_test.go b/go/tink/keyset_manager_test.go
index ec360ffef8fc67d51f46a71d6102c79c5da00132..0664e997f056222aa79f4b2764201eeed71eb5f9 100644
--- a/go/tink/keyset_manager_test.go
+++ b/go/tink/keyset_manager_test.go
@@ -22,7 +22,7 @@ import (
 	"github.com/google/tink/go/mac/mac"
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/testutil"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"strings"
 	"testing"
 )
diff --git a/go/tink/primitive_set.go b/go/tink/primitive_set.go
index b88b8de325be19abf3c004c8b289ec1c70acf565..c3506af1a2025db55c8ee235e5f44bccd89a8dab 100644
--- a/go/tink/primitive_set.go
+++ b/go/tink/primitive_set.go
@@ -18,7 +18,7 @@ package tink
 
 import (
 	"fmt"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 // Entry represents a single entry in the keyset. In addition to the actual primitive,
diff --git a/go/tink/primitive_set_test.go b/go/tink/primitive_set_test.go
index 34dbd797b327a305c19d6e5929103096d1a5517b..34dcc31f031ba33bd36e5cde340e7c1032f03552 100644
--- a/go/tink/primitive_set_test.go
+++ b/go/tink/primitive_set_test.go
@@ -20,7 +20,7 @@ import (
 	"fmt"
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/testutil"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"reflect"
 	"testing"
 )
diff --git a/go/tink/private_key_manager.go b/go/tink/private_key_manager.go
index a36c1ca6c0b59187e05bd9e7031e24ee4cf10547..bd2b4de997ec5c85d1e5eb4201bd589aa42212b0 100644
--- a/go/tink/private_key_manager.go
+++ b/go/tink/private_key_manager.go
@@ -17,7 +17,7 @@
 package tink
 
 import (
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 // PrivateKeyManager is a special type of KeyManager that understands private key types.
diff --git a/go/tink/registry.go b/go/tink/registry.go
index 298fcd7a37b1681ef977321cec3c7e1531c4d056..5b497a7865c53ebddd14c4f25cff15ffba406bfe 100644
--- a/go/tink/registry.go
+++ b/go/tink/registry.go
@@ -20,7 +20,7 @@ import (
 	"fmt"
 	"github.com/golang/protobuf/proto"
 	"github.com/google/tink/go/util/util"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"sync"
 )
 
diff --git a/go/tink/registry_test.go b/go/tink/registry_test.go
index b42160357b36871035ed63fac18ffd055838d4c4..b1ca07f2cb008e4e643b7f26b2bbbfebd7de40bd 100644
--- a/go/tink/registry_test.go
+++ b/go/tink/registry_test.go
@@ -26,10 +26,10 @@ import (
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/testutil"
 	"github.com/google/tink/go/util/util"
-	gcmpb "github.com/google/tink/proto/aes_gcm_go_proto"
-	commonpb "github.com/google/tink/proto/common_go_proto"
-	hmacpb "github.com/google/tink/proto/hmac_go_proto"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	gcmpb "github.com/google/tink/proto/aes_gcm_proto"
+	commonpb "github.com/google/tink/proto/common_proto"
+	hmacpb "github.com/google/tink/proto/hmac_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"sync"
 	"testing"
 )
diff --git a/go/util/keyutil.go b/go/util/keyutil.go
index b537dcc16bac386fa6d37f7a84ad2ff5fea3c926..dcb0a1fd47e748a4d9435094ec54caff16efc019 100644
--- a/go/util/keyutil.go
+++ b/go/util/keyutil.go
@@ -18,7 +18,7 @@ package util
 
 import (
 	"fmt"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 )
 
 // ValidateVersion checks whether the given version is valid. The version is valid
diff --git a/go/util/keyutil_test.go b/go/util/keyutil_test.go
index 13970eac1d8fd66b1a6aaa78be93906666489e84..e5c0f70f2466d0b0b8fc779cc681e6039d32eeab 100644
--- a/go/util/keyutil_test.go
+++ b/go/util/keyutil_test.go
@@ -19,7 +19,7 @@ package util_test
 import (
 	"github.com/google/tink/go/util/testutil"
 	"github.com/google/tink/go/util/util"
-	tinkpb "github.com/google/tink/proto/tink_go_proto"
+	tinkpb "github.com/google/tink/proto/tink_proto"
 	"testing"
 )
 
diff --git a/go/util/protoutil.go b/go/util/protoutil.go
index 09646c96d9b1247ff2f24b8bfcce9fdf68a36b6b..6a136114f39e30a8faa4cb6b9ad58f47a67df91d 100644
--- a/go/util/protoutil.go
+++ b/go/util/protoutil.go
@@ -17,11 +17,11 @@
 package util
 
 import (
-	. "github.com/google/tink/proto/aes_gcm_go_proto"
-	. "github.com/google/tink/proto/common_go_proto"
-	. "github.com/google/tink/proto/ecdsa_go_proto"
-	. "github.com/google/tink/proto/hmac_go_proto"
-	. "github.com/google/tink/proto/tink_go_proto"
+	. "github.com/google/tink/proto/aes_gcm_proto"
+	. "github.com/google/tink/proto/common_proto"
+	. "github.com/google/tink/proto/ecdsa_proto"
+	. "github.com/google/tink/proto/hmac_proto"
+	. "github.com/google/tink/proto/tink_proto"
 )
 
 // Utilities for Hmac Protos
diff --git a/go/util/testutil/testutil.go b/go/util/testutil/testutil.go
index 3391d875d4a41af5b20fb1f08024d4b0ed5b096d..ccd21b905a318903d1313c7bf1bc2dcad515fc9f 100644
--- a/go/util/testutil/testutil.go
+++ b/go/util/testutil/testutil.go
@@ -28,11 +28,11 @@ import (
 	"github.com/google/tink/go/subtle/subtleutil"
 	"github.com/google/tink/go/tink/tink"
 	"github.com/google/tink/go/util/util"
-	. "github.com/google/tink/proto/aes_gcm_go_proto"
-	. "github.com/google/tink/proto/common_go_proto"
-	. "github.com/google/tink/proto/ecdsa_go_proto"
-	. "github.com/google/tink/proto/hmac_go_proto"
-	. "github.com/google/tink/proto/tink_go_proto"
+	. "github.com/google/tink/proto/aes_gcm_proto"
+	. "github.com/google/tink/proto/common_proto"
+	. "github.com/google/tink/proto/ecdsa_proto"
+	. "github.com/google/tink/proto/hmac_proto"
+	. "github.com/google/tink/proto/tink_proto"
 )
 
 // DummyAeadKeyManager is a dummy implementation of the KeyManager interface.
diff --git a/proto/BUILD b/proto/BUILD
index d0a6f6922d4014aea2c5255e3c431cf54a77cf80..fafcf1114cc4548da07a1dabaea4d8fed3620de6 100644
--- a/proto/BUILD
+++ b/proto/BUILD
@@ -2,7 +2,7 @@ package(default_visibility = ["//tools/build_defs:internal_pkg"])
 
 licenses(["notice"])  # Apache 2.0
 
-load("@io_bazel_rules_go//proto:go_proto_library.bzl", "go_proto_library")
+load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
 load("//third_party/rules_protobuf/objc:rules.bzl", "objc_proto_compile")
 load("//proto:objc.bzl", "tink_objc_proto_library")
 
@@ -10,7 +10,7 @@ load("//proto:objc.bzl", "tink_objc_proto_library")
 # common
 # -----------------------------------------------
 proto_library(
-    name = "common",
+    name = "common_proto",
     srcs = [
         "common.proto",
     ],
@@ -18,24 +18,23 @@ proto_library(
 
 cc_proto_library(
     name = "common_cc_proto",
-    deps = [":common"],
+    deps = [":common_proto"],
 )
 
 java_proto_library(
     name = "common_java_proto",
-    deps = [":common"],
+    deps = [":common_proto"],
 )
 
 java_lite_proto_library(
     name = "common_java_proto_lite",
-    deps = [":common"],
+    deps = [":common_proto"],
 )
 
 go_proto_library(
     name = "common_go_proto",
-    srcs = [
-        "common.proto",
-    ],
+    importpath = "github.com/google/tink/proto/common_proto",
+    proto = ":common_proto",
 )
 
 objc_proto_compile(
@@ -49,39 +48,35 @@ objc_proto_compile(
 # tink
 # -----------------------------------------------
 proto_library(
-    name = "tink",
+    name = "tink_proto",
     srcs = [
         "tink.proto",
     ],
     deps = [
-        ":common",
+        ":common_proto",
     ],
 )
 
 cc_proto_library(
     name = "tink_cc_proto",
-    deps = [":tink"],
+    deps = [":tink_proto"],
 )
 
 java_proto_library(
     name = "tink_java_proto",
-    deps = [":tink"],
+    deps = [":tink_proto"],
 )
 
 java_lite_proto_library(
     name = "tink_java_proto_lite",
-    deps = [":tink"],
+    deps = [":tink_proto"],
 )
 
 go_proto_library(
     name = "tink_go_proto",
-    srcs = [
-        "tink.proto",
-    ],
-    ignore_go_package_option = 1,
-    deps = [
-        ":common_go_proto",
-    ],
+    importpath = "github.com/google/tink/proto/tink_proto",
+    proto = ":tink_proto",
+    deps = [":common_go_proto"],
 )
 
 objc_proto_compile(
@@ -95,7 +90,7 @@ objc_proto_compile(
 # config
 # -----------------------------------------------
 proto_library(
-    name = "config",
+    name = "config_proto",
     srcs = [
         "config.proto",
     ],
@@ -103,34 +98,30 @@ proto_library(
 
 cc_proto_library(
     name = "config_cc_proto",
-    deps = [":config"],
+    deps = [":config_proto"],
 )
 
 java_proto_library(
     name = "config_java_proto",
-    deps = [":config"],
+    deps = [":config_proto"],
 )
 
 java_lite_proto_library(
     name = "config_java_proto_lite",
-    deps = [":config"],
+    deps = [":config_proto"],
 )
 
 go_proto_library(
     name = "config_go_proto",
-    srcs = [
-        "config.proto",
-    ],
-    deps = [
-        ":common_go_proto",
-    ],
+    importpath = "github.com/google/tink/proto/config_proto",
+    proto = ":config_proto",
 )
 
 # -----------------------------------------------
 # aes-siv
 # -----------------------------------------------
 proto_library(
-    name = "aes_siv",
+    name = "aes_siv_proto",
     srcs = [
         "aes_siv.proto",
     ],
@@ -138,24 +129,23 @@ proto_library(
 
 cc_proto_library(
     name = "aes_siv_cc_proto",
-    deps = [":aes_siv"],
+    deps = [":aes_siv_proto"],
 )
 
 java_proto_library(
     name = "aes_siv_java_proto",
-    deps = [":aes_siv"],
+    deps = [":aes_siv_proto"],
 )
 
 java_lite_proto_library(
     name = "aes_siv_java_proto_lite",
-    deps = [":aes_siv"],
+    deps = [":aes_siv_proto"],
 )
 
 go_proto_library(
     name = "aes_siv_go_proto",
-    srcs = [
-        "aes_siv.proto",
-    ],
+    importpath = "github.com/google/tink/proto/aes_siv_proto",
+    proto = ":aes_siv_proto",
 )
 
 objc_proto_compile(
@@ -169,38 +159,35 @@ objc_proto_compile(
 # ecdsa
 # -----------------------------------------------
 proto_library(
-    name = "ecdsa",
+    name = "ecdsa_proto",
     srcs = [
         "ecdsa.proto",
     ],
     deps = [
-        ":common",
+        ":common_proto",
     ],
 )
 
 cc_proto_library(
     name = "ecdsa_cc_proto",
-    deps = [":ecdsa"],
+    deps = [":ecdsa_proto"],
 )
 
 java_proto_library(
     name = "ecdsa_java_proto",
-    deps = [":ecdsa"],
+    deps = [":ecdsa_proto"],
 )
 
 java_lite_proto_library(
     name = "ecdsa_java_proto_lite",
-    deps = [":ecdsa"],
+    deps = [":ecdsa_proto"],
 )
 
 go_proto_library(
     name = "ecdsa_go_proto",
-    srcs = [
-        "ecdsa.proto",
-    ],
-    deps = [
-        ":common_go_proto",
-    ],
+    importpath = "github.com/google/tink/proto/ecdsa_proto",
+    proto = ":ecdsa_proto",
+    deps = [":common_go_proto"],
 )
 
 objc_proto_compile(
@@ -215,7 +202,7 @@ objc_proto_compile(
 # ed25519
 # -----------------------------------------------
 proto_library(
-    name = "ed25519",
+    name = "ed25519_proto",
     srcs = [
         "ed25519.proto",
     ],
@@ -223,24 +210,23 @@ proto_library(
 
 cc_proto_library(
     name = "ed25519_cc_proto",
-    deps = [":ed25519"],
+    deps = [":ed25519_proto"],
 )
 
 java_proto_library(
     name = "ed25519_java_proto",
-    deps = [":ed25519"],
+    deps = [":ed25519_proto"],
 )
 
 java_lite_proto_library(
     name = "ed25519_java_proto_lite",
-    deps = [":ed25519"],
+    deps = [":ed25519_proto"],
 )
 
 go_proto_library(
     name = "ed25519_go_proto",
-    srcs = [
-        "ed25519.proto",
-    ],
+    importpath = "github.com/google/tink/proto/ed25519_proto",
+    proto = ":ed25519_proto",
 )
 
 objc_proto_compile(
@@ -254,36 +240,33 @@ objc_proto_compile(
 # hmac
 # -----------------------------------------------
 proto_library(
-    name = "hmac",
+    name = "hmac_proto",
     srcs = [
         "hmac.proto",
     ],
-    deps = [":common"],
+    deps = [":common_proto"],
 )
 
 cc_proto_library(
     name = "hmac_cc_proto",
-    deps = [":hmac"],
+    deps = [":hmac_proto"],
 )
 
 java_proto_library(
     name = "hmac_java_proto",
-    deps = [":hmac"],
+    deps = [":hmac_proto"],
 )
 
 java_lite_proto_library(
     name = "hmac_java_proto_lite",
-    deps = [":hmac"],
+    deps = [":hmac_proto"],
 )
 
 go_proto_library(
     name = "hmac_go_proto",
-    srcs = [
-        "hmac.proto",
-    ],
-    deps = [
-        ":common_go_proto",
-    ],
+    importpath = "github.com/google/tink/proto/hmac_proto",
+    proto = ":hmac_proto",
+    deps = [":common_go_proto"],
 )
 
 objc_proto_compile(
@@ -298,7 +281,7 @@ objc_proto_compile(
 # aes_ctr
 # -----------------------------------------------
 proto_library(
-    name = "aes_ctr",
+    name = "aes_ctr_proto",
     srcs = [
         "aes_ctr.proto",
     ],
@@ -306,24 +289,23 @@ proto_library(
 
 cc_proto_library(
     name = "aes_ctr_cc_proto",
-    deps = [":aes_ctr"],
+    deps = [":aes_ctr_proto"],
 )
 
 java_proto_library(
     name = "aes_ctr_java_proto",
-    deps = [":aes_ctr"],
+    deps = [":aes_ctr_proto"],
 )
 
 java_lite_proto_library(
     name = "aes_ctr_java_proto_lite",
-    deps = [":aes_ctr"],
+    deps = [":aes_ctr_proto"],
 )
 
 go_proto_library(
     name = "aes_ctr_go_proto",
-    srcs = [
-        "aes_ctr.proto",
-    ],
+    importpath = "github.com/google/tink/proto/aes_ctr_proto",
+    proto = ":aes_ctr_proto",
 )
 
 objc_proto_compile(
@@ -337,36 +319,35 @@ objc_proto_compile(
 # aes_ctr_hmac_aead
 # -----------------------------------------------
 proto_library(
-    name = "aes_ctr_hmac_aead",
+    name = "aes_ctr_hmac_aead_proto",
     srcs = [
         "aes_ctr_hmac_aead.proto",
     ],
     deps = [
-        ":aes_ctr",
-        ":hmac",
+        ":aes_ctr_proto",
+        ":hmac_proto",
     ],
 )
 
 cc_proto_library(
     name = "aes_ctr_hmac_aead_cc_proto",
-    deps = [":aes_ctr_hmac_aead"],
+    deps = [":aes_ctr_hmac_aead_proto"],
 )
 
 java_proto_library(
     name = "aes_ctr_hmac_aead_java_proto",
-    deps = [":aes_ctr_hmac_aead"],
+    deps = [":aes_ctr_hmac_aead_proto"],
 )
 
 java_lite_proto_library(
     name = "aes_ctr_hmac_aead_java_proto_lite",
-    deps = [":aes_ctr_hmac_aead"],
+    deps = [":aes_ctr_hmac_aead_proto"],
 )
 
 go_proto_library(
     name = "aes_ctr_hmac_aead_go_proto",
-    srcs = [
-        "aes_ctr_hmac_aead.proto",
-    ],
+    importpath = "github.com/google/tink/proto/aes_ctr_hmac_aead_proto",
+    proto = ":aes_ctr_hmac_aead_proto",
     deps = [
         ":aes_ctr_go_proto",
         ":hmac_go_proto",
@@ -388,7 +369,7 @@ objc_proto_compile(
 # aes_gcm
 # -----------------------------------------------
 proto_library(
-    name = "aes_gcm",
+    name = "aes_gcm_proto",
     srcs = [
         "aes_gcm.proto",
     ],
@@ -396,24 +377,23 @@ proto_library(
 
 cc_proto_library(
     name = "aes_gcm_cc_proto",
-    deps = [":aes_gcm"],
+    deps = [":aes_gcm_proto"],
 )
 
 java_proto_library(
     name = "aes_gcm_java_proto",
-    deps = [":aes_gcm"],
+    deps = [":aes_gcm_proto"],
 )
 
 java_lite_proto_library(
     name = "aes_gcm_java_proto_lite",
-    deps = [":aes_gcm"],
+    deps = [":aes_gcm_proto"],
 )
 
 go_proto_library(
     name = "aes_gcm_go_proto",
-    srcs = [
-        "aes_gcm.proto",
-    ],
+    importpath = "github.com/google/tink/proto/aes_gcm_proto",
+    proto = ":aes_gcm_proto",
 )
 
 objc_proto_compile(
@@ -427,34 +407,33 @@ objc_proto_compile(
 # aes_ctr_hmac_streaming
 # -----------------------------------------------
 proto_library(
-    name = "aes_ctr_hmac_streaming",
+    name = "aes_ctr_hmac_streaming_proto",
     srcs = ["aes_ctr_hmac_streaming.proto"],
     deps = [
-        ":common",
-        ":hmac",
+        ":common_proto",
+        ":hmac_proto",
     ],
 )
 
 cc_proto_library(
     name = "aes_ctr_hmac_streaming_cc_proto",
-    deps = [":aes_ctr_hmac_streaming"],
+    deps = [":aes_ctr_hmac_streaming_proto"],
 )
 
 java_proto_library(
     name = "aes_ctr_hmac_streaming_java_proto",
-    deps = [":aes_ctr_hmac_streaming"],
+    deps = [":aes_ctr_hmac_streaming_proto"],
 )
 
 java_lite_proto_library(
     name = "aes_ctr_hmac_streaming_java_proto_lite",
-    deps = [":aes_ctr_hmac_streaming"],
+    deps = [":aes_ctr_hmac_streaming_proto"],
 )
 
 go_proto_library(
     name = "aes_ctr_hmac_streaming_go_proto",
-    srcs = [
-        "aes_ctr_hmac_streaming.proto",
-    ],
+    importpath = "github.com/google/tink/proto/aes_ctr_hmac_streaming_proto",
+    proto = ":aes_ctr_hmac_streaming_proto",
     deps = [
         ":common_go_proto",
         ":hmac_go_proto",
@@ -476,34 +455,31 @@ objc_proto_compile(
 # aes_gcm_hkdf_streaming
 # -----------------------------------------------
 proto_library(
-    name = "aes_gcm_hkdf_streaming",
+    name = "aes_gcm_hkdf_streaming_proto",
     srcs = ["aes_gcm_hkdf_streaming.proto"],
-    deps = [":common"],
+    deps = [":common_proto"],
 )
 
 cc_proto_library(
     name = "aes_gcm_hkdf_streaming_cc_proto",
-    deps = [":aes_gcm_hkdf_streaming"],
+    deps = [":aes_gcm_hkdf_streaming_proto"],
 )
 
 java_proto_library(
     name = "aes_gcm_hkdf_streaming_java_proto",
-    deps = [":aes_gcm_hkdf_streaming"],
+    deps = [":aes_gcm_hkdf_streaming_proto"],
 )
 
 java_lite_proto_library(
     name = "aes_gcm_hkdf_streaming_java_proto_lite",
-    deps = [":aes_gcm_hkdf_streaming"],
+    deps = [":aes_gcm_hkdf_streaming_proto"],
 )
 
 go_proto_library(
     name = "aes_gcm_hkdf_streaming_go_proto",
-    srcs = [
-        "aes_gcm_hkdf_streaming.proto",
-    ],
-    deps = [
-        ":common_go_proto",
-    ],
+    importpath = "github.com/google/tink/proto/aes_gcm_hkdf_streaming_proto",
+    proto = ":aes_gcm_hkdf_streaming_proto",
+    deps = [":common_go_proto"],
 )
 
 objc_proto_compile(
@@ -520,7 +496,7 @@ objc_proto_compile(
 # aes_eax
 # -----------------------------------------------
 proto_library(
-    name = "aes_eax",
+    name = "aes_eax_proto",
     srcs = [
         "aes_eax.proto",
     ],
@@ -528,24 +504,23 @@ proto_library(
 
 cc_proto_library(
     name = "aes_eax_cc_proto",
-    deps = [":aes_eax"],
+    deps = [":aes_eax_proto"],
 )
 
 java_proto_library(
     name = "aes_eax_java_proto",
-    deps = [":aes_eax"],
+    deps = [":aes_eax_proto"],
 )
 
 java_lite_proto_library(
     name = "aes_eax_java_proto_lite",
-    deps = [":aes_eax"],
+    deps = [":aes_eax_proto"],
 )
 
 go_proto_library(
     name = "aes_eax_go_proto",
-    srcs = [
-        "aes_eax.proto",
-    ],
+    importpath = "github.com/google/tink/proto/aes_eax_proto",
+    proto = ":aes_eax_proto",
 )
 
 objc_proto_compile(
@@ -559,7 +534,7 @@ objc_proto_compile(
 # chacha20_poly1305
 # -----------------------------------------------
 proto_library(
-    name = "chacha20_poly1305",
+    name = "chacha20_poly1305_proto",
     srcs = [
         "chacha20_poly1305.proto",
     ],
@@ -567,24 +542,23 @@ proto_library(
 
 cc_proto_library(
     name = "chacha20_poly1305_cc_proto",
-    deps = [":chacha20_poly1305"],
+    deps = [":chacha20_poly1305_proto"],
 )
 
 java_proto_library(
     name = "chacha20_poly1305_java_proto",
-    deps = [":chacha20_poly1305"],
+    deps = [":chacha20_poly1305_proto"],
 )
 
 java_lite_proto_library(
     name = "chacha20_poly1305_java_proto_lite",
-    deps = [":chacha20_poly1305"],
+    deps = [":chacha20_poly1305_proto"],
 )
 
 go_proto_library(
     name = "chacha20_poly1305_go_proto",
-    srcs = [
-        "chacha20_poly1305.proto",
-    ],
+    importpath = "github.com/google/tink/proto/chacha20_poly1305_proto",
+    proto = ":chacha20_poly1305_proto",
 )
 
 objc_proto_compile(
@@ -598,7 +572,7 @@ objc_proto_compile(
 # kms_aead
 # -----------------------------------------------
 proto_library(
-    name = "kms_aead",
+    name = "kms_aead_proto",
     srcs = [
         "kms_aead.proto",
     ],
@@ -606,24 +580,23 @@ proto_library(
 
 cc_proto_library(
     name = "kms_aead_cc_proto",
-    deps = [":kms_aead"],
+    deps = [":kms_aead_proto"],
 )
 
 java_proto_library(
     name = "kms_aead_java_proto",
-    deps = [":kms_aead"],
+    deps = [":kms_aead_proto"],
 )
 
 java_lite_proto_library(
     name = "kms_aead_java_proto_lite",
-    deps = [":kms_aead"],
+    deps = [":kms_aead_proto"],
 )
 
 go_proto_library(
     name = "kms_aead_go_proto",
-    srcs = [
-        "kms_aead.proto",
-    ],
+    importpath = "github.com/google/tink/proto/kms_aead_proto",
+    proto = ":kms_aead_proto",
 )
 
 objc_proto_compile(
@@ -637,36 +610,33 @@ objc_proto_compile(
 # kms_envelope
 # -----------------------------------------------
 proto_library(
-    name = "kms_envelope",
+    name = "kms_envelope_proto",
     srcs = [
         "kms_envelope.proto",
     ],
-    deps = [":tink"],
+    deps = [":tink_proto"],
 )
 
 cc_proto_library(
     name = "kms_envelope_cc_proto",
-    deps = [":kms_envelope"],
+    deps = [":kms_envelope_proto"],
 )
 
 java_proto_library(
     name = "kms_envelope_java_proto",
-    deps = [":kms_envelope"],
+    deps = [":kms_envelope_proto"],
 )
 
 java_lite_proto_library(
     name = "kms_envelope_java_proto_lite",
-    deps = [":kms_envelope"],
+    deps = [":kms_envelope_proto"],
 )
 
 go_proto_library(
     name = "kms_envelope_go_proto",
-    srcs = [
-        "kms_envelope.proto",
-    ],
-    deps = [
-        ":tink_go_proto",
-    ],
+    importpath = "github.com/google/tink/proto/kms_envelope_proto",
+    proto = ":kms_envelope_proto",
+    deps = [":tink_go_proto"],
 )
 
 objc_proto_compile(
@@ -683,36 +653,35 @@ objc_proto_compile(
 # ecies_aead_hkdf
 # -----------------------------------------------
 proto_library(
-    name = "ecies_aead_hkdf",
+    name = "ecies_aead_hkdf_proto",
     srcs = [
         "ecies_aead_hkdf.proto",
     ],
     deps = [
-        ":common",
-        ":tink",
+        ":common_proto",
+        ":tink_proto",
     ],
 )
 
 cc_proto_library(
     name = "ecies_aead_hkdf_cc_proto",
-    deps = [":ecies_aead_hkdf"],
+    deps = [":ecies_aead_hkdf_proto"],
 )
 
 java_proto_library(
     name = "ecies_aead_hkdf_java_proto",
-    deps = [":ecies_aead_hkdf"],
+    deps = [":ecies_aead_hkdf_proto"],
 )
 
 java_lite_proto_library(
     name = "ecies_aead_hkdf_java_proto_lite",
-    deps = [":ecies_aead_hkdf"],
+    deps = [":ecies_aead_hkdf_proto"],
 )
 
 go_proto_library(
     name = "ecies_aead_hkdf_go_proto",
-    srcs = [
-        "ecies_aead_hkdf.proto",
-    ],
+    importpath = "github.com/google/tink/proto/ecies_aead_hkdf_proto",
+    proto = ":ecies_aead_hkdf_proto",
     deps = [
         ":common_go_proto",
         ":tink_go_proto",
diff --git a/proto/aes_ctr.proto b/proto/aes_ctr.proto
index e56ad20f6b8a4d50e55b4c2be06c9d9a38b450e6..f48163662d0ad5692e17ffa97c5063ba54b80d8f 100644
--- a/proto/aes_ctr.proto
+++ b/proto/aes_ctr.proto
@@ -21,6 +21,7 @@ package google.crypto.tink;
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/aes_ctr_proto";
 
 message AesCtrParams {
   uint32 iv_size = 1;
diff --git a/proto/aes_ctr_hmac_aead.proto b/proto/aes_ctr_hmac_aead.proto
index 8ba7667e42474af25cc57363cc4fe62cfcb3f917..a8c11e1200a70d0d7e2ceb5a59376693d8e13b2f 100644
--- a/proto/aes_ctr_hmac_aead.proto
+++ b/proto/aes_ctr_hmac_aead.proto
@@ -24,6 +24,7 @@ import "proto/hmac.proto";
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/aes_ctr_hmac_aead_proto";
 
 message AesCtrHmacAeadKeyFormat {
   AesCtrKeyFormat aes_ctr_key_format = 1;
diff --git a/proto/aes_ctr_hmac_streaming.proto b/proto/aes_ctr_hmac_streaming.proto
index 149fcb3cfdaaea89044c99f61313813c250c7422..e3e4188d40311b4eca17aeadfaafc392eb81f618 100644
--- a/proto/aes_ctr_hmac_streaming.proto
+++ b/proto/aes_ctr_hmac_streaming.proto
@@ -24,6 +24,7 @@ import "proto/hmac.proto";
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/aes_ctr_hmac_streaming_proto";
 
 message AesCtrHmacStreamingParams {
   uint32 ciphertext_segment_size = 1;
diff --git a/proto/aes_eax.proto b/proto/aes_eax.proto
index c6ce11bdaf32e39fbe06ce1a1075f4a33bc69bb9..b0d80c7217a6da5a5d4eceb3b00f46a61b3ea6c8 100644
--- a/proto/aes_eax.proto
+++ b/proto/aes_eax.proto
@@ -21,6 +21,7 @@ package google.crypto.tink;
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/aes_eax_proto";
 
 // only allowing tag size in bytes = 16
 message AesEaxParams {
diff --git a/proto/aes_gcm.proto b/proto/aes_gcm.proto
index 6c62d7c156b9b7bc057f7021974cbca629f7b152..4d5a9d0f6674da3d5e2a0f5228258917f43aafd1 100644
--- a/proto/aes_gcm.proto
+++ b/proto/aes_gcm.proto
@@ -21,6 +21,7 @@ package google.crypto.tink;
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/aes_gcm_proto";
 
 // only allowing IV size in bytes = 12 and tag size in bytes = 16
 // Thus, accept no params.
diff --git a/proto/aes_gcm_hkdf_streaming.proto b/proto/aes_gcm_hkdf_streaming.proto
index a167ac25a12ef5927b34b070ed1c0b70a50d5105..2287263db698216082b3995a15a5689183d36453 100644
--- a/proto/aes_gcm_hkdf_streaming.proto
+++ b/proto/aes_gcm_hkdf_streaming.proto
@@ -24,6 +24,7 @@ import "proto/common.proto";
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/aes_gcm_hkdf_streaming_proto";
 
 message AesGcmHkdfStreamingParams {
   uint32 ciphertext_segment_size = 1;
diff --git a/proto/aes_siv.proto b/proto/aes_siv.proto
index 00e355b674d1bcbb925055199248f253e74977e5..4c6d5aa1a5ca429818dcb2407882e21cce2d02b6 100644
--- a/proto/aes_siv.proto
+++ b/proto/aes_siv.proto
@@ -21,6 +21,7 @@ package google.crypto.tink;
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/aes_siv_proto";
 
 message AesSivKeyFormat {
   // Only valid values: 48 and 64.
diff --git a/proto/chacha20_poly1305.proto b/proto/chacha20_poly1305.proto
index 530509a8cd85ef5226a27c13fb4654534c446447..351fbb7c110dbaa022948877c800bb52800bd20b 100644
--- a/proto/chacha20_poly1305.proto
+++ b/proto/chacha20_poly1305.proto
@@ -21,6 +21,7 @@ package google.crypto.tink;
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/chacha20_poly1305_proto";
 
 // key_type: type.googleapis.com/google.crypto.tink.ChaCha20Poly1305.
 // This key type actually implements ChaCha20Poly1305 as described
diff --git a/proto/common.proto b/proto/common.proto
index 1d857cffbc654cd8beb76abb170b12498421b6fb..0e3d5e38789f1723b785a38ee1970e73e6ad11fc 100644
--- a/proto/common.proto
+++ b/proto/common.proto
@@ -22,6 +22,7 @@ package google.crypto.tink;
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/common_proto";
 
 enum EllipticCurveType {
   UNKNOWN_CURVE = 0;
diff --git a/proto/config.proto b/proto/config.proto
index 9c249b386f59a7d8c773c3a187b49d2576dfa9cb..ea486fd1c67f8cd90055a3e9f8ec9e50d4acf4f9 100644
--- a/proto/config.proto
+++ b/proto/config.proto
@@ -21,6 +21,7 @@ package google.crypto.tink;
 
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
+option go_package = "github.com/google/tink/proto/config_proto";
 
 // An entry that describes a key type to be used with Tink library,
 // specifying the corresponding primitive, key manager, and deprecation status.
diff --git a/proto/ecdsa.proto b/proto/ecdsa.proto
index e6591a7a13b1fd36071f9f9cf214b7b5b55938b1..f482cdeb9afa8abe9c7be5eaad082e2002139c6a 100644
--- a/proto/ecdsa.proto
+++ b/proto/ecdsa.proto
@@ -23,6 +23,7 @@ import "proto/common.proto";
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/ecdsa_proto";
 
 enum EcdsaSignatureEncoding {
   UNKNOWN_ENCODING = 0;
diff --git a/proto/ecies_aead_hkdf.proto b/proto/ecies_aead_hkdf.proto
index c503d585f84bcd63f55cd55897b0d50e216c3d18..c673aecb791196647217b8c32daa35e8a0d4b595 100644
--- a/proto/ecies_aead_hkdf.proto
+++ b/proto/ecies_aead_hkdf.proto
@@ -24,6 +24,7 @@ import "proto/tink.proto";
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/ecies_aead_hkdf_proto";
 
 // Protos for keys for ECIES with HKDF and AEAD encryption.
 //
diff --git a/proto/ed25519.proto b/proto/ed25519.proto
index b1523d5bb4ae7262b202b0a67e09256c123001fb..eb08a34aafb270e4a71c323cfeefd69a0f1136f6 100644
--- a/proto/ed25519.proto
+++ b/proto/ed25519.proto
@@ -24,6 +24,7 @@ package google.crypto.tink;
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/ed25519_proto";
 
 // key_type: type.googleapis.com/google.crypto.tink.Ed25519PublicKey
 message Ed25519PublicKey {
diff --git a/proto/hmac.proto b/proto/hmac.proto
index fbcd1d2223388f60454a6daf72ab9ffb55cccef0..ef23bc3cc17bb145db78a4aa7640321898703634 100644
--- a/proto/hmac.proto
+++ b/proto/hmac.proto
@@ -23,6 +23,7 @@ import "proto/common.proto";
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/hmac_proto";
 
 message HmacParams {
   HashType hash = 1;    // HashType is an enum.
diff --git a/proto/kms_aead.proto b/proto/kms_aead.proto
index 7e1e811f9bd92ee74629eb66f0322e7c51159560..e05b92c46288b54870a6a0679a4e34ae3d052bf3 100644
--- a/proto/kms_aead.proto
+++ b/proto/kms_aead.proto
@@ -21,6 +21,7 @@ package google.crypto.tink;
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/kms_aead_proto";
 
 message KmsAeadKeyFormat {
   // Required.
diff --git a/proto/kms_envelope.proto b/proto/kms_envelope.proto
index 0e9360c2a389072cdd5ec34d7d4dad7861a8fa6e..1543c364d23883bbbd18b850e39ccf7da6e54359 100644
--- a/proto/kms_envelope.proto
+++ b/proto/kms_envelope.proto
@@ -23,6 +23,7 @@ import "proto/tink.proto";
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
+option go_package = "github.com/google/tink/proto/kms_envelope_proto";
 
 message KmsEnvelopeAeadKeyFormat {
   // Required.
diff --git a/proto/tink.proto b/proto/tink.proto
index cfc125fe82f31e49988faf544f143c3d8b0b40a9..691635a6b80030c2ddafa55755eab68be24eea35 100644
--- a/proto/tink.proto
+++ b/proto/tink.proto
@@ -22,7 +22,7 @@ package google.crypto.tink;
 option java_package = "com.google.crypto.tink.proto";
 option java_multiple_files = true;
 option objc_class_prefix = "TINKPB";
-option go_package = "github.com/google/tink/proto/tink_go_proto";
+option go_package = "github.com/google/tink/proto/tink_proto";
 
 // Each instantiation of a Tink primitive is identified by type_url,
 // which is a global URL pointing to a *Key-proto that holds key material
diff --git a/proto/tink_go_proto/tink.pb.go b/proto/tink_go_proto/tink.pb.go
deleted file mode 100644
index c3b17a2afa8d31fb0b73cc5910cb7d54e1ba64ed..0000000000000000000000000000000000000000
--- a/proto/tink_go_proto/tink.pb.go
+++ /dev/null
@@ -1,450 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: tink.proto
-
-/*
-Package tink_go_proto is a generated protocol buffer package.
-
-It is generated from these files:
-	tink.proto
-
-It has these top-level messages:
-	KeyTemplate
-	KeyData
-	Keyset
-	KeysetInfo
-	EncryptedKeyset
-*/
-package tink_go_proto
-
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
-
-type KeyStatusType int32
-
-const (
-	KeyStatusType_UNKNOWN_STATUS KeyStatusType = 0
-	KeyStatusType_ENABLED        KeyStatusType = 1
-	KeyStatusType_DISABLED       KeyStatusType = 2
-	KeyStatusType_DESTROYED      KeyStatusType = 3
-)
-
-var KeyStatusType_name = map[int32]string{
-	0: "UNKNOWN_STATUS",
-	1: "ENABLED",
-	2: "DISABLED",
-	3: "DESTROYED",
-}
-var KeyStatusType_value = map[string]int32{
-	"UNKNOWN_STATUS": 0,
-	"ENABLED":        1,
-	"DISABLED":       2,
-	"DESTROYED":      3,
-}
-
-func (x KeyStatusType) String() string {
-	return proto.EnumName(KeyStatusType_name, int32(x))
-}
-func (KeyStatusType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-// Tink produces and accepts ciphertexts or signatures that consist
-// of a prefix and a payload. The payload and its format is determined
-// entirely by the primitive, but the prefix has to be one of the following
-// 4 types:
-//   - Legacy: prefix is 5 bytes, starts with \x00 and followed by a 4-byte
-//             key id that is computed from the key material.
-//   - Crunchy: prefix is 5 bytes, starts with \x00 and followed by a 4-byte
-//             key id that is generated randomly.
-//   - Tink  : prefix is 5 bytes, starts with \x01 and followed by 4-byte
-//             key id that is generated randomly.
-//   - Raw   : prefix is 0 byte, i.e., empty.
-type OutputPrefixType int32
-
-const (
-	OutputPrefixType_UNKNOWN_PREFIX OutputPrefixType = 0
-	OutputPrefixType_TINK           OutputPrefixType = 1
-	OutputPrefixType_LEGACY         OutputPrefixType = 2
-	OutputPrefixType_RAW            OutputPrefixType = 3
-	// CRUNCHY is like LEGACY, but with two differences:
-	//   - Its key id is generated randomly (like TINK)
-	//   - Its signature schemes don't append zero to sign messages
-	OutputPrefixType_CRUNCHY OutputPrefixType = 4
-)
-
-var OutputPrefixType_name = map[int32]string{
-	0: "UNKNOWN_PREFIX",
-	1: "TINK",
-	2: "LEGACY",
-	3: "RAW",
-	4: "CRUNCHY",
-}
-var OutputPrefixType_value = map[string]int32{
-	"UNKNOWN_PREFIX": 0,
-	"TINK":           1,
-	"LEGACY":         2,
-	"RAW":            3,
-	"CRUNCHY":        4,
-}
-
-func (x OutputPrefixType) String() string {
-	return proto.EnumName(OutputPrefixType_name, int32(x))
-}
-func (OutputPrefixType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-type KeyData_KeyMaterialType int32
-
-const (
-	KeyData_UNKNOWN_KEYMATERIAL KeyData_KeyMaterialType = 0
-	KeyData_SYMMETRIC           KeyData_KeyMaterialType = 1
-	KeyData_ASYMMETRIC_PRIVATE  KeyData_KeyMaterialType = 2
-	KeyData_ASYMMETRIC_PUBLIC   KeyData_KeyMaterialType = 3
-	KeyData_REMOTE              KeyData_KeyMaterialType = 4
-)
-
-var KeyData_KeyMaterialType_name = map[int32]string{
-	0: "UNKNOWN_KEYMATERIAL",
-	1: "SYMMETRIC",
-	2: "ASYMMETRIC_PRIVATE",
-	3: "ASYMMETRIC_PUBLIC",
-	4: "REMOTE",
-}
-var KeyData_KeyMaterialType_value = map[string]int32{
-	"UNKNOWN_KEYMATERIAL": 0,
-	"SYMMETRIC":           1,
-	"ASYMMETRIC_PRIVATE":  2,
-	"ASYMMETRIC_PUBLIC":   3,
-	"REMOTE":              4,
-}
-
-func (x KeyData_KeyMaterialType) String() string {
-	return proto.EnumName(KeyData_KeyMaterialType_name, int32(x))
-}
-func (KeyData_KeyMaterialType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-type KeyTemplate struct {
-	// Required.
-	TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl" json:"type_url,omitempty"`
-	// Optional.
-	// If missing, it means the key type doesn't require a *KeyFormat proto.
-	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	// Optional.
-	// If missing, uses OutputPrefixType.TINK.
-	OutputPrefixType OutputPrefixType `protobuf:"varint,3,opt,name=output_prefix_type,json=outputPrefixType,enum=google.crypto.tink.OutputPrefixType" json:"output_prefix_type,omitempty"`
-}
-
-func (m *KeyTemplate) Reset()                    { *m = KeyTemplate{} }
-func (m *KeyTemplate) String() string            { return proto.CompactTextString(m) }
-func (*KeyTemplate) ProtoMessage()               {}
-func (*KeyTemplate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-func (m *KeyTemplate) GetTypeUrl() string {
-	if m != nil {
-		return m.TypeUrl
-	}
-	return ""
-}
-
-func (m *KeyTemplate) GetValue() []byte {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-func (m *KeyTemplate) GetOutputPrefixType() OutputPrefixType {
-	if m != nil {
-		return m.OutputPrefixType
-	}
-	return OutputPrefixType_UNKNOWN_PREFIX
-}
-
-// The actual *Key-proto is wrapped in a KeyData message, which in addition
-// to this serialized proto contains also type_url identifying the
-// definition of *Key-proto (as in KeyFormat-message), and some extra metadata
-// about the type key material.
-type KeyData struct {
-	// Required.
-	TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl" json:"type_url,omitempty"`
-	// Required.
-	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-	// Required.
-	KeyMaterialType KeyData_KeyMaterialType `protobuf:"varint,3,opt,name=key_material_type,json=keyMaterialType,enum=google.crypto.tink.KeyData_KeyMaterialType" json:"key_material_type,omitempty"`
-}
-
-func (m *KeyData) Reset()                    { *m = KeyData{} }
-func (m *KeyData) String() string            { return proto.CompactTextString(m) }
-func (*KeyData) ProtoMessage()               {}
-func (*KeyData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-func (m *KeyData) GetTypeUrl() string {
-	if m != nil {
-		return m.TypeUrl
-	}
-	return ""
-}
-
-func (m *KeyData) GetValue() []byte {
-	if m != nil {
-		return m.Value
-	}
-	return nil
-}
-
-func (m *KeyData) GetKeyMaterialType() KeyData_KeyMaterialType {
-	if m != nil {
-		return m.KeyMaterialType
-	}
-	return KeyData_UNKNOWN_KEYMATERIAL
-}
-
-// A Tink user works usually not with single keys, but with keysets,
-// to enable key rotation.  The keys in a keyset can belong to different
-// implementations/key types, but must all implement the same primitive.
-// Any given keyset (and any given key) can be used for one primitive only.
-type Keyset struct {
-	// Identifies key used to generate new crypto data (encrypt, sign).
-	// Required.
-	PrimaryKeyId uint32 `protobuf:"varint,1,opt,name=primary_key_id,json=primaryKeyId" json:"primary_key_id,omitempty"`
-	// Actual keys in the Keyset.
-	// Required.
-	Key []*Keyset_Key `protobuf:"bytes,2,rep,name=key" json:"key,omitempty"`
-}
-
-func (m *Keyset) Reset()                    { *m = Keyset{} }
-func (m *Keyset) String() string            { return proto.CompactTextString(m) }
-func (*Keyset) ProtoMessage()               {}
-func (*Keyset) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
-
-func (m *Keyset) GetPrimaryKeyId() uint32 {
-	if m != nil {
-		return m.PrimaryKeyId
-	}
-	return 0
-}
-
-func (m *Keyset) GetKey() []*Keyset_Key {
-	if m != nil {
-		return m.Key
-	}
-	return nil
-}
-
-type Keyset_Key struct {
-	// Contains the actual, instantiation specific key proto.
-	// By convention, each key proto contains a version field.
-	KeyData *KeyData      `protobuf:"bytes,1,opt,name=key_data,json=keyData" json:"key_data,omitempty"`
-	Status  KeyStatusType `protobuf:"varint,2,opt,name=status,enum=google.crypto.tink.KeyStatusType" json:"status,omitempty"`
-	// Identifies a key within a keyset, is a part of metadata
-	// of a ciphertext/signature.
-	KeyId uint32 `protobuf:"varint,3,opt,name=key_id,json=keyId" json:"key_id,omitempty"`
-	// Determines the prefix of the ciphertexts/signatures produced by this key.
-	// This value is copied verbatim from the key template.
-	OutputPrefixType OutputPrefixType `protobuf:"varint,4,opt,name=output_prefix_type,json=outputPrefixType,enum=google.crypto.tink.OutputPrefixType" json:"output_prefix_type,omitempty"`
-}
-
-func (m *Keyset_Key) Reset()                    { *m = Keyset_Key{} }
-func (m *Keyset_Key) String() string            { return proto.CompactTextString(m) }
-func (*Keyset_Key) ProtoMessage()               {}
-func (*Keyset_Key) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
-
-func (m *Keyset_Key) GetKeyData() *KeyData {
-	if m != nil {
-		return m.KeyData
-	}
-	return nil
-}
-
-func (m *Keyset_Key) GetStatus() KeyStatusType {
-	if m != nil {
-		return m.Status
-	}
-	return KeyStatusType_UNKNOWN_STATUS
-}
-
-func (m *Keyset_Key) GetKeyId() uint32 {
-	if m != nil {
-		return m.KeyId
-	}
-	return 0
-}
-
-func (m *Keyset_Key) GetOutputPrefixType() OutputPrefixType {
-	if m != nil {
-		return m.OutputPrefixType
-	}
-	return OutputPrefixType_UNKNOWN_PREFIX
-}
-
-// Represents a "safe" Keyset that doesn't contain any actual key material,
-// thus can be used for logging or monitoring. Most fields are copied from
-// Keyset.
-type KeysetInfo struct {
-	// See Keyset.primary_key_id.
-	PrimaryKeyId uint32 `protobuf:"varint,1,opt,name=primary_key_id,json=primaryKeyId" json:"primary_key_id,omitempty"`
-	// KeyInfos in the KeysetInfo.
-	// Each KeyInfo is corresponding to a Key in the corresponding Keyset.
-	KeyInfo []*KeysetInfo_KeyInfo `protobuf:"bytes,2,rep,name=key_info,json=keyInfo" json:"key_info,omitempty"`
-}
-
-func (m *KeysetInfo) Reset()                    { *m = KeysetInfo{} }
-func (m *KeysetInfo) String() string            { return proto.CompactTextString(m) }
-func (*KeysetInfo) ProtoMessage()               {}
-func (*KeysetInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
-
-func (m *KeysetInfo) GetPrimaryKeyId() uint32 {
-	if m != nil {
-		return m.PrimaryKeyId
-	}
-	return 0
-}
-
-func (m *KeysetInfo) GetKeyInfo() []*KeysetInfo_KeyInfo {
-	if m != nil {
-		return m.KeyInfo
-	}
-	return nil
-}
-
-type KeysetInfo_KeyInfo struct {
-	// the type url of this key,
-	// e.g., type.googleapis.com/google.crypto.tink.HmacKey.
-	TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl" json:"type_url,omitempty"`
-	// See Keyset.Key.status.
-	Status KeyStatusType `protobuf:"varint,2,opt,name=status,enum=google.crypto.tink.KeyStatusType" json:"status,omitempty"`
-	// See Keyset.Key.key_id.
-	KeyId uint32 `protobuf:"varint,3,opt,name=key_id,json=keyId" json:"key_id,omitempty"`
-	// See Keyset.Key.output_prefix_type.
-	OutputPrefixType OutputPrefixType `protobuf:"varint,4,opt,name=output_prefix_type,json=outputPrefixType,enum=google.crypto.tink.OutputPrefixType" json:"output_prefix_type,omitempty"`
-}
-
-func (m *KeysetInfo_KeyInfo) Reset()                    { *m = KeysetInfo_KeyInfo{} }
-func (m *KeysetInfo_KeyInfo) String() string            { return proto.CompactTextString(m) }
-func (*KeysetInfo_KeyInfo) ProtoMessage()               {}
-func (*KeysetInfo_KeyInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3, 0} }
-
-func (m *KeysetInfo_KeyInfo) GetTypeUrl() string {
-	if m != nil {
-		return m.TypeUrl
-	}
-	return ""
-}
-
-func (m *KeysetInfo_KeyInfo) GetStatus() KeyStatusType {
-	if m != nil {
-		return m.Status
-	}
-	return KeyStatusType_UNKNOWN_STATUS
-}
-
-func (m *KeysetInfo_KeyInfo) GetKeyId() uint32 {
-	if m != nil {
-		return m.KeyId
-	}
-	return 0
-}
-
-func (m *KeysetInfo_KeyInfo) GetOutputPrefixType() OutputPrefixType {
-	if m != nil {
-		return m.OutputPrefixType
-	}
-	return OutputPrefixType_UNKNOWN_PREFIX
-}
-
-// Represents a keyset that is encrypted with a master key.
-type EncryptedKeyset struct {
-	// Required.
-	EncryptedKeyset []byte `protobuf:"bytes,2,opt,name=encrypted_keyset,json=encryptedKeyset,proto3" json:"encrypted_keyset,omitempty"`
-	// Optional.
-	KeysetInfo *KeysetInfo `protobuf:"bytes,3,opt,name=keyset_info,json=keysetInfo" json:"keyset_info,omitempty"`
-}
-
-func (m *EncryptedKeyset) Reset()                    { *m = EncryptedKeyset{} }
-func (m *EncryptedKeyset) String() string            { return proto.CompactTextString(m) }
-func (*EncryptedKeyset) ProtoMessage()               {}
-func (*EncryptedKeyset) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
-
-func (m *EncryptedKeyset) GetEncryptedKeyset() []byte {
-	if m != nil {
-		return m.EncryptedKeyset
-	}
-	return nil
-}
-
-func (m *EncryptedKeyset) GetKeysetInfo() *KeysetInfo {
-	if m != nil {
-		return m.KeysetInfo
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*KeyTemplate)(nil), "google.crypto.tink.KeyTemplate")
-	proto.RegisterType((*KeyData)(nil), "google.crypto.tink.KeyData")
-	proto.RegisterType((*Keyset)(nil), "google.crypto.tink.Keyset")
-	proto.RegisterType((*Keyset_Key)(nil), "google.crypto.tink.Keyset.Key")
-	proto.RegisterType((*KeysetInfo)(nil), "google.crypto.tink.KeysetInfo")
-	proto.RegisterType((*KeysetInfo_KeyInfo)(nil), "google.crypto.tink.KeysetInfo.KeyInfo")
-	proto.RegisterType((*EncryptedKeyset)(nil), "google.crypto.tink.EncryptedKeyset")
-	proto.RegisterEnum("google.crypto.tink.KeyStatusType", KeyStatusType_name, KeyStatusType_value)
-	proto.RegisterEnum("google.crypto.tink.OutputPrefixType", OutputPrefixType_name, OutputPrefixType_value)
-	proto.RegisterEnum("google.crypto.tink.KeyData_KeyMaterialType", KeyData_KeyMaterialType_name, KeyData_KeyMaterialType_value)
-}
-
-func init() { proto.RegisterFile("tink.proto", fileDescriptor0) }
-
-var fileDescriptor0 = []byte{
-	// 657 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x54, 0xcd, 0x6e, 0xd3, 0x4c,
-	0x14, 0xad, 0xed, 0x34, 0x49, 0x6f, 0xda, 0x64, 0x3a, 0xdf, 0x57, 0x08, 0x05, 0x55, 0x21, 0xaa,
-	0x50, 0x28, 0x52, 0x8a, 0x82, 0x84, 0xc4, 0x0a, 0x39, 0xc9, 0x00, 0x96, 0xf3, 0xa7, 0x89, 0x43,
-	0x09, 0x1b, 0xcb, 0x6d, 0xa6, 0xc1, 0x72, 0x12, 0x5b, 0xce, 0x18, 0xe1, 0x05, 0x0f, 0xc0, 0x96,
-	0x47, 0xe0, 0x51, 0x58, 0xb0, 0xe0, 0x35, 0x78, 0x11, 0x34, 0x63, 0xb7, 0x6a, 0x43, 0x5b, 0x81,
-	0x58, 0xb1, 0x9a, 0xb9, 0x77, 0xce, 0xfd, 0x39, 0xc7, 0xf7, 0x1a, 0x80, 0xbb, 0x0b, 0xaf, 0x1e,
-	0x84, 0x3e, 0xf7, 0x31, 0x9e, 0xfa, 0xfe, 0x74, 0xc6, 0xea, 0x27, 0x61, 0x1c, 0x70, 0xbf, 0x2e,
-	0x5e, 0xaa, 0x9f, 0x15, 0x28, 0x98, 0x2c, 0xb6, 0xd8, 0x3c, 0x98, 0x39, 0x9c, 0xe1, 0x3b, 0x90,
-	0xe7, 0x71, 0xc0, 0xec, 0x28, 0x9c, 0x95, 0x95, 0x8a, 0x52, 0xdb, 0xa0, 0x39, 0x61, 0x8f, 0xc2,
-	0x19, 0xfe, 0x1f, 0xd6, 0xdf, 0x3b, 0xb3, 0x88, 0x95, 0xd5, 0x8a, 0x52, 0xdb, 0xa4, 0x89, 0x81,
-	0x29, 0x60, 0x3f, 0xe2, 0x41, 0xc4, 0xed, 0x20, 0x64, 0xa7, 0xee, 0x07, 0x5b, 0xc0, 0xcb, 0x5a,
-	0x45, 0xa9, 0x15, 0x1b, 0xfb, 0xf5, 0x5f, 0x2b, 0xd6, 0xfb, 0x12, 0x3d, 0x90, 0x60, 0x2b, 0x0e,
-	0x18, 0x45, 0xfe, 0x8a, 0xa7, 0xfa, 0x49, 0x85, 0x9c, 0xc9, 0xe2, 0xb6, 0xc3, 0x9d, 0x3f, 0x6f,
-	0xe8, 0x08, 0xb6, 0x3d, 0x16, 0xdb, 0x73, 0x87, 0xb3, 0xd0, 0x75, 0x66, 0x17, 0xfb, 0x79, 0x74,
-	0x55, 0x3f, 0x69, 0x21, 0x71, 0x76, 0xd3, 0x18, 0xd9, 0x56, 0xc9, 0xbb, 0xec, 0xa8, 0x72, 0x28,
-	0xad, 0x60, 0xf0, 0x6d, 0xf8, 0x6f, 0xd4, 0x33, 0x7b, 0xfd, 0xa3, 0x9e, 0x6d, 0x92, 0x71, 0x57,
-	0xb7, 0x08, 0x35, 0xf4, 0x0e, 0x5a, 0xc3, 0x5b, 0xb0, 0x31, 0x1c, 0x77, 0xbb, 0xc4, 0xa2, 0x46,
-	0x0b, 0x29, 0xf8, 0x16, 0x60, 0xfd, 0xdc, 0xb6, 0x07, 0xd4, 0x78, 0xad, 0x5b, 0x04, 0xa9, 0x78,
-	0x07, 0xb6, 0x2f, 0xfa, 0x47, 0xcd, 0x8e, 0xd1, 0x42, 0x1a, 0x06, 0xc8, 0x52, 0xd2, 0xed, 0x5b,
-	0x04, 0x65, 0xaa, 0xdf, 0x54, 0xc8, 0x9a, 0x2c, 0x5e, 0x32, 0x8e, 0xf7, 0xa1, 0x18, 0x84, 0xee,
-	0xdc, 0x09, 0x63, 0x5b, 0x30, 0x74, 0x27, 0x52, 0x90, 0x2d, 0xba, 0x99, 0x7a, 0x4d, 0x16, 0x1b,
-	0x13, 0xfc, 0x18, 0x34, 0x8f, 0xc5, 0x65, 0xb5, 0xa2, 0xd5, 0x0a, 0x8d, 0xbd, 0x6b, 0x18, 0x2f,
-	0x19, 0x17, 0x07, 0x15, 0xd0, 0xdd, 0x1f, 0x0a, 0x68, 0x26, 0x8b, 0xf1, 0x53, 0xc8, 0x8b, 0xbc,
-	0x13, 0x87, 0x3b, 0x32, 0x73, 0xa1, 0x71, 0xf7, 0x06, 0xc1, 0x68, 0xce, 0x4b, 0x3f, 0xd1, 0x33,
-	0xc8, 0x2e, 0xb9, 0xc3, 0xa3, 0xa5, 0xfc, 0x10, 0xc5, 0xc6, 0xfd, 0x6b, 0xa2, 0x86, 0x12, 0x24,
-	0xc5, 0x4d, 0x03, 0xf0, 0x0e, 0x64, 0x53, 0x2a, 0x9a, 0xa4, 0xb2, 0xee, 0x49, 0x0e, 0x57, 0x0f,
-	0x55, 0xe6, 0xaf, 0x86, 0xea, 0xab, 0x0a, 0x90, 0x30, 0x37, 0x16, 0xa7, 0xfe, 0x6f, 0x8a, 0xa9,
-	0x27, 0x92, 0xb8, 0x8b, 0x53, 0x3f, 0x55, 0xf4, 0xc1, 0xf5, 0x8a, 0x8a, 0xbc, 0xe2, 0x2a, 0x4e,
-	0xa9, 0x8e, 0xb8, 0xec, 0x7e, 0x57, 0xe4, 0x30, 0xcb, 0xa2, 0x37, 0x0c, 0xf3, 0xbf, 0x21, 0xe2,
-	0x47, 0x28, 0x91, 0x85, 0x8c, 0x61, 0x93, 0x74, 0x2a, 0x1f, 0x02, 0x62, 0x67, 0x2e, 0x21, 0xe5,
-	0x92, 0xf1, 0x74, 0x21, 0x4b, 0x6c, 0x05, 0xfa, 0x1c, 0x0a, 0x09, 0x20, 0x11, 0x54, 0x93, 0x33,
-	0xb6, 0x77, 0xb3, 0xa0, 0x14, 0xbc, 0xf3, 0xfb, 0x41, 0x17, 0xb6, 0x2e, 0x49, 0x80, 0x31, 0x14,
-	0xcf, 0x16, 0x70, 0x68, 0xe9, 0xd6, 0x68, 0x88, 0xd6, 0x70, 0x01, 0x72, 0xa4, 0xa7, 0x37, 0x3b,
-	0xa4, 0x8d, 0x14, 0xbc, 0x09, 0xf9, 0xb6, 0x31, 0x4c, 0x2c, 0x55, 0xac, 0x65, 0x9b, 0x0c, 0x2d,
-	0xda, 0x1f, 0x93, 0x36, 0xd2, 0x0e, 0x28, 0xa0, 0x55, 0xce, 0x17, 0x33, 0x0e, 0x28, 0x79, 0x61,
-	0xbc, 0x41, 0x6b, 0x38, 0x0f, 0x19, 0xcb, 0xe8, 0x99, 0x48, 0x11, 0x9b, 0xd9, 0x21, 0x2f, 0xf5,
-	0xd6, 0x18, 0xa9, 0x38, 0x07, 0x1a, 0xd5, 0x8f, 0x90, 0x26, 0x0a, 0xb6, 0xe8, 0xa8, 0xd7, 0x7a,
-	0x35, 0x46, 0x99, 0xe6, 0x08, 0xee, 0x9d, 0xf8, 0xf3, 0xab, 0x38, 0xc9, 0x9f, 0xf0, 0x40, 0x79,
-	0x7b, 0x30, 0x75, 0xf9, 0xbb, 0xe8, 0xb8, 0x7e, 0xe2, 0xcf, 0x0f, 0x13, 0xd8, 0xa1, 0x78, 0x3f,
-	0x94, 0xef, 0xf2, 0x6a, 0x4f, 0x7d, 0x5b, 0x5a, 0x5f, 0xd4, 0xac, 0x28, 0x3c, 0x68, 0x1e, 0x67,
-	0xa5, 0xfd, 0xe4, 0x67, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbe, 0x4d, 0x63, 0xa1, 0xd0, 0x05, 0x00,
-	0x00,
-}