diff options
| author | android-build-team Robot <android-build-team-robot@google.com> | 2017-12-31 08:25:35 +0000 |
|---|---|---|
| committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-12-31 08:25:35 +0000 |
| commit | fb1eca649023105c20d0cd866ff6b7905e65adc9 (patch) | |
| tree | 2f63fb722e4499042119e75ad0eea642657368bf | |
| parent | 7acd97fbede6d0dddbb1c26c40854019928cfa8f (diff) | |
| parent | abaf4d88d8ef3061de05da7034fc28b2ba880e71 (diff) | |
Snap for 4521654 from abaf4d88d8ef3061de05da7034fc28b2ba880e71 to pi-release
Change-Id: I03a2a585d1109aa848e7fe13a2265bc4e52c4b76
| -rw-r--r-- | keystore/KeyAttestationPackageInfo.cpp | 14 | ||||
| -rw-r--r-- | keystore/include/keystore/KeyAttestationPackageInfo.h | 8 | ||||
| -rw-r--r-- | keystore/keystore_attestation_id.cpp | 15 |
3 files changed, 23 insertions, 14 deletions
diff --git a/keystore/KeyAttestationPackageInfo.cpp b/keystore/KeyAttestationPackageInfo.cpp index 8092828..75fbb7a 100644 --- a/keystore/KeyAttestationPackageInfo.cpp +++ b/keystore/KeyAttestationPackageInfo.cpp @@ -25,17 +25,15 @@ namespace keymaster { KeyAttestationPackageInfo::KeyAttestationPackageInfo() = default; -KeyAttestationPackageInfo::KeyAttestationPackageInfo( - const String16& packageName, int32_t versionCode, - SharedSignaturesVector signatures) : - packageName_(new String16(packageName)), versionCode_(versionCode), - signatures_(signatures) { -} +KeyAttestationPackageInfo::KeyAttestationPackageInfo(const String16& packageName, + int64_t versionCode, + SharedSignaturesVector signatures) + : packageName_(new String16(packageName)), versionCode_(versionCode), signatures_(signatures) {} status_t KeyAttestationPackageInfo::writeToParcel(Parcel* parcel) const { auto rc = parcel->writeString16(packageName_); if (rc != NO_ERROR) return rc; - rc = parcel->writeInt32(versionCode_); + rc = parcel->writeInt64(versionCode_); if (rc != NO_ERROR) return rc; return parcel->writeParcelableVector(signatures_); } @@ -43,7 +41,7 @@ status_t KeyAttestationPackageInfo::writeToParcel(Parcel* parcel) const { status_t KeyAttestationPackageInfo::readFromParcel(const Parcel* parcel) { auto rc = parcel->readString16(&packageName_); if (rc != NO_ERROR) return rc; - rc = parcel->readInt32(&versionCode_); + rc = parcel->readInt64(&versionCode_); if (rc != NO_ERROR) return rc; std::unique_ptr<SignaturesVector> temp_vector; diff --git a/keystore/include/keystore/KeyAttestationPackageInfo.h b/keystore/include/keystore/KeyAttestationPackageInfo.h index efc33a6..92d4863 100644 --- a/keystore/include/keystore/KeyAttestationPackageInfo.h +++ b/keystore/include/keystore/KeyAttestationPackageInfo.h @@ -37,22 +37,22 @@ class KeyAttestationPackageInfo : public Parcelable { SignaturesVector; typedef std::shared_ptr<SignaturesVector> SharedSignaturesVector; - KeyAttestationPackageInfo( - const String16& packageName, int32_t versionCode, SharedSignaturesVector signatures); + KeyAttestationPackageInfo(const String16& packageName, int64_t versionCode, + SharedSignaturesVector signatures); KeyAttestationPackageInfo(); status_t writeToParcel(Parcel*) const override; status_t readFromParcel(const Parcel* parcel) override; const std::unique_ptr<String16>& package_name() const { return packageName_; } - int32_t version_code() const { return versionCode_; } + int64_t version_code() const { return versionCode_; } ConstSignatureIterator sigs_begin() const { return ConstSignatureIterator(signatures_); } ConstSignatureIterator sigs_end() const { return ConstSignatureIterator(); } private: std::unique_ptr<String16> packageName_; - int32_t versionCode_; + int64_t versionCode_; SharedSignaturesVector signatures_; }; diff --git a/keystore/keystore_attestation_id.cpp b/keystore/keystore_attestation_id.cpp index 7f9c38d..3d34ac5 100644 --- a/keystore/keystore_attestation_id.cpp +++ b/keystore/keystore_attestation_id.cpp @@ -37,6 +37,7 @@ #include <private/android_filesystem_config.h> /* for AID_SYSTEM */ #include <openssl/asn1t.h> +#include <openssl/bn.h> #include <openssl/sha.h> #include <utils/String8.h> @@ -148,10 +149,20 @@ status_t build_attestation_package_info(const KeyAttestationPackageInfo& pinfo, return UNKNOWN_ERROR; } - if (!ASN1_INTEGER_set(attestation_package_info->version, pinfo.version_code())) { + BIGNUM* bn_version = BN_new(); + if (bn_version == nullptr) { + return NO_MEMORY; + } + if (BN_set_u64(bn_version, static_cast<uint64_t>(pinfo.version_code())) != 1) { + BN_free(bn_version); return UNKNOWN_ERROR; } - return NO_ERROR; + status_t retval = NO_ERROR; + if (BN_to_ASN1_INTEGER(bn_version, attestation_package_info->version) == nullptr) { + retval = UNKNOWN_ERROR; + } + BN_free(bn_version); + return retval; } StatusOr<std::vector<uint8_t>> |
