diff --git a/attestation_record.cpp b/attestation_record.cpp
index befb8e2..8aed9ad 100644
--- a/attestation_record.cpp
+++ b/attestation_record.cpp
@@ -28,6 +28,28 @@
 
 namespace keymaster {
 
+namespace {
+
+bool Uint64ToBignum(uint64_t value, BIGNUM* bn) {
+    static_assert(sizeof(unsigned long) == sizeof(uint64_t) ||
+                      sizeof(unsigned long) == sizeof(uint32_t),
+                  "Only 32 and 64-bit platforms supported");
+
+    if (sizeof(unsigned long) == sizeof(uint64_t)) {
+        return BN_set_word(bn, value);
+    } else if (sizeof(unsigned long) == sizeof(uint32_t)) {
+        uint32_t low_order = value & 0xFFFFFFFF;
+        uint32_t high_order = value >> 32;
+        return BN_set_word(bn, high_order) &&  //
+               BN_lshift(bn, bn, 32) &&        //
+               BN_add_word(bn, low_order);
+    } else {
+        return false;
+    }
+}
+
+}  // anonymous namespace
+
 struct stack_st_ASN1_TYPE_Delete {
     void operator()(stack_st_ASN1_TYPE* p) { sk_ASN1_TYPE_free(p); }
 };
@@ -333,20 +355,22 @@
             assert((keymaster_tag_repeatable(entry.tag) && integer_set) ||
                    (!keymaster_tag_repeatable(entry.tag) && integer_ptr));
 
-            UniquePtr<BIGNUM, BIGNUM_Delete> exponent(BN_new());
-            if (!exponent.get())
+            UniquePtr<BIGNUM, BIGNUM_Delete> bn_value(BN_new());
+            if (!bn_value.get())
                 return KM_ERROR_MEMORY_ALLOCATION_FAILED;
 
             if (type == KM_DATE) {
-                if (!BN_set_word(exponent.get(), entry.date_time))
+                if (!Uint64ToBignum(entry.date_time, bn_value.get())) {
                     return TranslateLastOpenSslError();
+                }
             } else {
-                if (!BN_set_word(exponent.get(), entry.long_integer))
+                if (!Uint64ToBignum(entry.long_integer, bn_value.get())) {
                     return TranslateLastOpenSslError();
+                }
             }
 
             UniquePtr<ASN1_INTEGER, ASN1_INTEGER_Delete> value(
-                BN_to_ASN1_INTEGER(exponent.get(), nullptr));
+                BN_to_ASN1_INTEGER(bn_value.get(), nullptr));
             if (!value.get())
                 return KM_ERROR_MEMORY_ALLOCATION_FAILED;
 
diff --git a/include/keymaster/android_keymaster_utils.h b/include/keymaster/android_keymaster_utils.h
index 17688a6..a1cbf51 100644
--- a/include/keymaster/android_keymaster_utils.h
+++ b/include/keymaster/android_keymaster_utils.h
@@ -36,7 +36,7 @@
     // The exact meaning of a time_t value is implementation-dependent.  If this code is ported to a
     // platform that doesn't define it as "seconds since Jan 1, 1970 UTC", this function will have
     // to be revised.
-    return time * 1000;
+    return static_cast<int64_t>(time) * 1000;
 }
 
 /*
