rsa_public_keys: Add SpaceCast PVT keys

The initial set of keys remains the default, it will eventually be
replaced with the PVT keys.

Google-Bug-Id: 22532514

Change-Id: I0e2766a8d19e3c54b7e10bc0c02e2bd385938134
diff --git a/lib/Kconfig b/lib/Kconfig
index 10282fc..4069e14 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -34,6 +34,18 @@
 config RSA_VERIFY
 	bool "RSA_VERIFY"
 
+choice
+	prompt "Select the RSA key set"
+	default RSA_KEY_SET_DEFAULT
+
+config RSA_KEY_SET_DEFAULT
+	bool "Default keys"
+
+config RSA_KEY_SET_SPACECAST_PVT
+	bool "SpaceCast PVT keys"
+
+endchoice
+
 endif
 
 config GENERIC_FIND_NEXT_BIT
diff --git a/lib/rsa/rsa_public_keys.c b/lib/rsa/rsa_public_keys.c
index 84e8660..8c67996 100644
--- a/lib/rsa/rsa_public_keys.c
+++ b/lib/rsa/rsa_public_keys.c
@@ -51,6 +51,7 @@
 	},
 
 	/* SpaceCast */
+#ifdef CONFIG_RSA_KEY_SET_DEFAULT
 	{ .n0inv = 810249397u,
 	  .modulus = {
 			0x6a50de63, 0x3040dda3, 0xb055e6ac, 0x6bf8de72, 0xa4a5ab53, 0x84edb6d8,
@@ -79,6 +80,40 @@
 			0xe7aac0b6, 0xd61ec12a, 0x2f88804a, 0x66968d4f
 		},
 	},
+#elif defined(CONFIG_RSA_KEY_SET_SPACECAST_PVT)
+	/* key for PVT and later */
+        { .n0inv = 195283641u,
+	  .modulus = {
+			0x00d0e477, 0xf2c79d07, 0x8e6d89f9, 0xf78e11ab, 0xc12d3843, 0x559d7cbc,
+			0x6d2af8f0, 0x4acd7f44, 0x6a5efae4, 0x8bfd2668, 0xda9dcf5d, 0xdf4f7a24,
+			0xc2e6a340, 0xc8f0d8a6, 0x5b805e11, 0x33d9501a, 0xe98ab7a5, 0xa5ea2d40,
+			0x6abfb309, 0xefc13c55, 0xcf971694, 0xe8c226e8, 0xaee9ab3e, 0x03f7e300,
+			0x6b02b6b5, 0x9c3d386e, 0x2396a7e9, 0x960c5616, 0x5e20ea20, 0xae450c6d,
+			0x9bf99a51, 0x3f17fe6e, 0x811c13cf, 0x5fadcb0b, 0xe0dc6477, 0xf36c939f,
+			0xcf37a23e, 0x664d2446, 0x586912e9, 0x48b405e7, 0x43c30911, 0x926170bd,
+			0xb4620733, 0x082fafe8, 0x08bcbe39, 0xb7bb54ed, 0xbb24cbbc, 0x7b144d1b,
+			0x7a1c3fea, 0x8df132d6, 0x0aeffcb3, 0x08bd3182, 0xf933d319, 0x319aecc3,
+			0xdc366c76, 0xca5d0406, 0x9ec2f529, 0x81b62ee4, 0xaafaa8db, 0xd93fbd7d,
+			0xec4462be, 0xb0d67c9e, 0x47baac54, 0xe7c44a68
+
+		},
+	  .rr = {
+			0xed50ac6c, 0x253c9b12, 0xf4608904, 0x604dc138, 0xbd6c2924, 0xd139fb32,
+			0x22e7bf33, 0xccb0c70a, 0x4037f129, 0xb04dd59d, 0x52de2a7f, 0x58686a91,
+			0xb0a91c3c, 0x194eb38c, 0x33c496cd, 0xd72c196f, 0x8c486bbd, 0xcd55e8b7,
+			0x02be129b, 0x59abe9f0, 0x75086721, 0x94ce8b3b, 0x2bf564e0, 0x373eadce,
+			0xd83d0f68, 0x7b76112f, 0x3ea5a135, 0x91c32326, 0x4fab0c72, 0x29c0f214,
+			0x53181873, 0x863c0247, 0x547d2e95, 0xc930f0ff, 0x446eda28, 0xf55ed8a4,
+			0xed6f32ee, 0x065fb283, 0xdc7c32d0, 0x4a0c550e, 0xb5520fa8, 0xf84d2d81,
+			0x85b7a578, 0x0c3f85f4, 0x01263508, 0xa348d505, 0xed6b3914, 0xdcae48fe,
+			0xe067b525, 0x4e83a3d3, 0x0f9ff305, 0x5aa158dc, 0xea0e7b95, 0xe75d51a3,
+			0x47cbb29e, 0x32ed0cf7, 0x075f3b6b, 0x9aba0a5c, 0x779a4ce7, 0x78cc852d,
+			0xfd686bd6, 0x0e66ca26, 0xda579162, 0x5ddf1353
+		},
+	},
+#else
+        "unknown key set";
+#endif
 };
 #else
 /* Keys to verify the signature of the Linux kernel */
@@ -114,34 +149,68 @@
 	},
 
 	/* SpaceCast */
+#ifdef CONFIG_RSA_KEY_SET_DEFAULT
 	{ .n0inv = 2823309225u,
-	    .modulus = {
-			  0xfc50b367, 0x1fb911d9, 0x288cc6c6, 0x4914e135, 0x1f5b469a, 0x471274cd,
-			  0x21806adc, 0xa139ba92, 0x442f7796, 0x44183483, 0x2c68bad2, 0x6c5ca18a,
-			  0xbafd7213, 0x505fcebf, 0x0979e4b9, 0xa4582dec, 0x10e9e4de, 0x9ca9d12e,
-			  0xeea818ed, 0x9eff1262, 0xab58d203, 0x4095c3fd, 0x4e6e012a, 0x4c39b955,
-			  0xf64e8010, 0x4fc0a794, 0x967cbf92, 0xd39e2d03, 0xe0091a07, 0x140eda30,
-			  0xaf3ac27c, 0xbe82e9ff, 0x729b12ac, 0x98fae091, 0x6350a44a, 0xe10e0548,
-			  0x7fd91960, 0x4b903720, 0x3268a194, 0x6e880413, 0x768b5297, 0x24ce8d88,
-			  0x398356b3, 0x88ca3193, 0x458ecb86, 0xf25696a6, 0xd32c8972, 0x00e876d0,
-			  0x6c5716c3, 0x0efb7e2c, 0xa7d7fac6, 0xf6ef74ac, 0xe2bf77d7, 0x9be3b4e9,
-			  0x0f49d81d, 0x206060e3, 0x2f400bbe, 0x4e2bf784, 0x0a0b38eb, 0xdc4f319f,
-			  0xff1c7f2d, 0x80a57d93, 0xd38f9d6f, 0xc4c0a36b
-		  },
-	    .rr = {
-			  0x1e81e6a8, 0x219f1c50, 0x2c0bb2f7, 0x51b3f5ff, 0x7d1af2de, 0x04c70430,
-			  0x67d2309f, 0xa6cae5a0, 0x80f18f2d, 0x1ecd7ef1, 0xbb509a3f, 0xbd37399b,
-			  0x486bd510, 0xf75f543d, 0xaeeea0a4, 0x797d3193, 0x6d88f643, 0x2b2d9034,
-			  0xaecae630, 0xcdfb16ee, 0x063a4148, 0x6ea42094, 0xca7682d4, 0xae7e5d02,
-			  0xe3010c28, 0x4f6dccfe, 0xb213e106, 0x113a5e32, 0x53dfe3f7, 0x86daefad,
-			  0x14d92242, 0xa19f3f5f, 0xb066f02f, 0x1d0f308d, 0x5602a6c1, 0x76ddf03e,
-			  0x978483d1, 0x0622cbe5, 0x0e5e2772, 0x88570f42, 0xeea9bbdc, 0xc12b4991,
-			  0xc4e63516, 0xf8e8707a, 0xecdee3bd, 0xc25c2079, 0x481f382f, 0x563c502b,
-			  0x1a341fd2, 0x8e2d10e4, 0xb2c60249, 0x3235d027, 0x32df7140, 0x9ffce524,
-			  0x1c8d6bf7, 0x003941ad, 0x74bf0d98, 0x18e77f88, 0xd8b38212, 0xc9b52ba2,
-			  0x137b5417, 0x114fddce, 0x096edf7c, 0x636ba76b
-		  },
-	  },
+	  .modulus = {
+			0xfc50b367, 0x1fb911d9, 0x288cc6c6, 0x4914e135, 0x1f5b469a, 0x471274cd,
+			0x21806adc, 0xa139ba92, 0x442f7796, 0x44183483, 0x2c68bad2, 0x6c5ca18a,
+			0xbafd7213, 0x505fcebf, 0x0979e4b9, 0xa4582dec, 0x10e9e4de, 0x9ca9d12e,
+			0xeea818ed, 0x9eff1262, 0xab58d203, 0x4095c3fd, 0x4e6e012a, 0x4c39b955,
+			0xf64e8010, 0x4fc0a794, 0x967cbf92, 0xd39e2d03, 0xe0091a07, 0x140eda30,
+			0xaf3ac27c, 0xbe82e9ff, 0x729b12ac, 0x98fae091, 0x6350a44a, 0xe10e0548,
+			0x7fd91960, 0x4b903720, 0x3268a194, 0x6e880413, 0x768b5297, 0x24ce8d88,
+			0x398356b3, 0x88ca3193, 0x458ecb86, 0xf25696a6, 0xd32c8972, 0x00e876d0,
+			0x6c5716c3, 0x0efb7e2c, 0xa7d7fac6, 0xf6ef74ac, 0xe2bf77d7, 0x9be3b4e9,
+			0x0f49d81d, 0x206060e3, 0x2f400bbe, 0x4e2bf784, 0x0a0b38eb, 0xdc4f319f,
+			0xff1c7f2d, 0x80a57d93, 0xd38f9d6f, 0xc4c0a36b
+		},
+	  .rr = {
+			0x1e81e6a8, 0x219f1c50, 0x2c0bb2f7, 0x51b3f5ff, 0x7d1af2de, 0x04c70430,
+			0x67d2309f, 0xa6cae5a0, 0x80f18f2d, 0x1ecd7ef1, 0xbb509a3f, 0xbd37399b,
+			0x486bd510, 0xf75f543d, 0xaeeea0a4, 0x797d3193, 0x6d88f643, 0x2b2d9034,
+			0xaecae630, 0xcdfb16ee, 0x063a4148, 0x6ea42094, 0xca7682d4, 0xae7e5d02,
+			0xe3010c28, 0x4f6dccfe, 0xb213e106, 0x113a5e32, 0x53dfe3f7, 0x86daefad,
+			0x14d92242, 0xa19f3f5f, 0xb066f02f, 0x1d0f308d, 0x5602a6c1, 0x76ddf03e,
+			0x978483d1, 0x0622cbe5, 0x0e5e2772, 0x88570f42, 0xeea9bbdc, 0xc12b4991,
+			0xc4e63516, 0xf8e8707a, 0xecdee3bd, 0xc25c2079, 0x481f382f, 0x563c502b,
+			0x1a341fd2, 0x8e2d10e4, 0xb2c60249, 0x3235d027, 0x32df7140, 0x9ffce524,
+			0x1c8d6bf7, 0x003941ad, 0x74bf0d98, 0x18e77f88, 0xd8b38212, 0xc9b52ba2,
+			0x137b5417, 0x114fddce, 0x096edf7c, 0x636ba76b
+		},
+	},
+#elif defined(CONFIG_RSA_KEY_SET_SPACECAST_PVT)
+	/* key for PVT and later */
+	{ .n0inv = 3300387007u,
+	  .modulus = {
+			0x53c078c1, 0xb526325e, 0x35fc4264, 0xe521532c, 0xffffdae7, 0x13a83684,
+			0x75a8dec3, 0x486c1103, 0x83413d5a, 0x5ff7284d, 0xe3edf2e3, 0xacdcfb69,
+			0x47ff89fe, 0x2e4d6ce2, 0x8d408fb4, 0x18a1b7dc, 0x036b01d0, 0x96a9d88b,
+			0x5a3f7f84, 0xa009556c, 0xdf7708a3, 0xdcb9a46c, 0x1098a771, 0x1d9a3950,
+			0x5626f4fe, 0xa29a38b7, 0xef474395, 0x068c6b19, 0x0627915e, 0x6408316e,
+			0xb8846e9f, 0x424d2353, 0x3459056c, 0xd4644766, 0xcbdd903e, 0x4ad11c03,
+			0xcca5bae0, 0x39dc5fec, 0xd6a8c26f, 0x9db73de0, 0xbe8e7a02, 0x7867afb7,
+			0xed12ea6c, 0x5389af08, 0x368253d6, 0xbdb7e3e7, 0x53a496c4, 0xe1887844,
+			0xdf8c426b, 0x4eea6d02, 0x1a1a5a5a, 0x1c9cca85, 0x3ef25ef7, 0x7bda5b27,
+			0xbb4a5a16, 0xdabee40a, 0x0dca1b83, 0xf520ca76, 0x7ac8dccd, 0x8499df2d,
+			0x88d03426, 0x7284ac78, 0x61b59b11, 0xca19e021
+		},
+	  .rr = {
+			0xa7cc85bf, 0xca308e0b, 0x983bd433, 0x91f76e99, 0x0163f6a6, 0x7cb98262,
+			0xc252aedd, 0x01903495, 0xf3f4de55, 0x755ef407, 0xedc0f2e2, 0x7d298f3f,
+			0x82513afd, 0x6c54a8a6, 0xb1039a7e, 0xbfd15569, 0x6a5a5ebc, 0xfbfd8266,
+			0xda34f5c1, 0x03109310, 0xca683a32, 0xb884a224, 0x8b9e4529, 0x2ffed4e5,
+			0x40599ce2, 0x73209335, 0x3b0799c8, 0x999a1bc7, 0x361413ce, 0xdbbfaf96,
+			0xc26caaff, 0x6f829819, 0x49752b3d, 0x658f6b37, 0x388085c4, 0x5d1d7315,
+			0xf20aa1e6, 0x4bb531f4, 0x51522975, 0x5bfddd05, 0x1a424abf, 0xb4ba7969,
+			0xf13c8e57, 0x7eae1284, 0x510a90b6, 0xf64f59e4, 0x98634700, 0xcb0bf35e,
+			0xcb739554, 0xaaae12fe, 0xa13dbc63, 0xac13a4c4, 0x2c264027, 0x1557ff1a,
+			0x4d8e21ad, 0x91dcc873, 0xe870d738, 0x796a04cd, 0x9f81f3a2, 0xa8a6e714,
+			0xfcc78693, 0xe8fdab84, 0x52a65ac1, 0x08ca4927
+		},
+	},
+#else
+        "unknown key set";
+#endif
 };
 #endif
 
@@ -153,7 +222,7 @@
 	},
 
 	/* SpaceCast */
-        { .n0inv = 2795114361u,
+	{ .n0inv = 2795114361u,
 	  .modulus = {
 			0xe17fd537, 0xa3c8cb00, 0x932ee36d, 0xc73c251a, 0xfab26fa4, 0x60c7ab00,
 			0x1468dbfd, 0xcff11b21, 0xcff22a1d, 0x98057ec2, 0x052fc7ea, 0x8adc183c,