Fix serialization and deserialization of LONG_REP tags.

Change-Id: I473e4f5b2b3dfb9451a019d464314f82806cd137
diff --git a/authorization_set_test.cpp b/authorization_set_test.cpp
index 590bbe4..ae4c2fc 100644
--- a/authorization_set_test.cpp
+++ b/authorization_set_test.cpp
@@ -101,11 +101,12 @@
                              .Authorization(TAG_PURPOSE, KM_PURPOSE_VERIFY)
                              .Authorization(TAG_ALGORITHM, KM_ALGORITHM_RSA)
                              .Authorization(TAG_USER_ID, 7)
+                             .Authorization(TAG_USER_SECURE_ID, 47727)
                              .Authorization(TAG_USER_AUTH_TYPE, HW_AUTH_PASSWORD)
                              .Authorization(TAG_APPLICATION_ID, "my_app", 6)
                              .Authorization(TAG_KEY_SIZE, 256)
                              .Authorization(TAG_AUTH_TIMEOUT, 300));
-    EXPECT_EQ(8U, set.size());
+    EXPECT_EQ(9U, set.size());
 
     int pos = set.find(TAG_PURPOSE);
     ASSERT_FALSE(pos == -1);
@@ -117,6 +118,10 @@
     EXPECT_EQ(KM_PURPOSE_VERIFY, set[pos].enumerated);
 
     EXPECT_EQ(-1, set.find(TAG_PURPOSE, pos));
+
+    pos = set.find(TAG_USER_SECURE_ID, pos);
+    EXPECT_EQ(KM_TAG_USER_SECURE_ID, set[pos].tag);
+    EXPECT_EQ(47727U, set[pos].long_integer);
 }
 
 TEST(Lookup, Indexed) {
@@ -148,6 +153,7 @@
                              .Authorization(TAG_USER_AUTH_TYPE, HW_AUTH_PASSWORD)
                              .Authorization(TAG_APPLICATION_ID, "my_app", 6)
                              .Authorization(TAG_KEY_SIZE, 256)
+                             .Authorization(TAG_USER_SECURE_ID, 47727)
                              .Authorization(TAG_AUTH_TIMEOUT, 300)
                              .Authorization(TAG_ALL_USERS)
                              .Authorization(TAG_RSA_PUBLIC_EXPONENT, 3)
@@ -448,6 +454,30 @@
     EXPECT_FALSE(set2.GetTagValue(TAG_RSA_PUBLIC_EXPONENT, &val));
 }
 
+TEST(GetValue, GetLongRep) {
+    AuthorizationSet set1(AuthorizationSetBuilder()
+                              .Authorization(TAG_PURPOSE, KM_PURPOSE_SIGN)
+                              .Authorization(TAG_PURPOSE, KM_PURPOSE_VERIFY)
+                              .Authorization(TAG_ALGORITHM, KM_ALGORITHM_RSA)
+                              .Authorization(TAG_USER_SECURE_ID, 8338)
+                              .Authorization(TAG_USER_SECURE_ID, 4334)
+                              .Authorization(TAG_RSA_PUBLIC_EXPONENT, 3));
+
+    AuthorizationSet set2(AuthorizationSetBuilder()
+                              .Authorization(TAG_PURPOSE, KM_PURPOSE_SIGN)
+                              .Authorization(TAG_PURPOSE, KM_PURPOSE_VERIFY)
+                              .Authorization(TAG_ALGORITHM, KM_ALGORITHM_RSA));
+
+    uint64_t val;
+    EXPECT_TRUE(set1.GetTagValue(TAG_USER_SECURE_ID, 0, &val));
+    EXPECT_EQ(8338U, val);
+    EXPECT_TRUE(set1.GetTagValue(TAG_USER_SECURE_ID, 1, &val));
+    EXPECT_EQ(4334U, val);
+
+    // Find one that isn't there
+    EXPECT_FALSE(set2.GetTagValue(TAG_USER_SECURE_ID, &val));
+}
+
 TEST(GetValue, GetEnum) {
     AuthorizationSet set(AuthorizationSetBuilder()
                              .Authorization(TAG_PURPOSE, KM_PURPOSE_SIGN)