aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorDavid Benjamin <davidben@chromium.org>2021-03-05 15:00:24 -0500
committerCommit Bot <commit-bot@chromium.org>2021-03-05 21:35:08 +0000
commit4c03793ebf20af9cae9c096320e3efe73f0733f3 (patch)
treeb526553b1cd0988f3fbc8955416f9748e6f64b1c /util
parent17cbee80d86c0354fc86f2a6b9592f272b43e38f (diff)
downloadopenscreen-4c03793ebf20af9cae9c096320e3efe73f0733f3.tar.gz
Fix a few more X509 struct accesses
I missed these earlier. Change-Id: I53873874f850193839003c8cb812a0bf68074453 Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/2740099 Reviewed-by: Brandon Tolsch <btolsch@chromium.org> Commit-Queue: Brandon Tolsch <btolsch@chromium.org>
Diffstat (limited to 'util')
-rw-r--r--util/crypto/certificate_utils.cc15
-rw-r--r--util/crypto/certificate_utils.h2
2 files changed, 10 insertions, 7 deletions
diff --git a/util/crypto/certificate_utils.cc b/util/crypto/certificate_utils.cc
index a9b7d9ad..f5018042 100644
--- a/util/crypto/certificate_utils.cc
+++ b/util/crypto/certificate_utils.cc
@@ -218,25 +218,28 @@ ErrorOr<bssl::UniquePtr<EVP_PKEY>> ImportRSAPrivateKey(
}
std::string GetSpkiTlv(X509* cert) {
- int len = i2d_X509_PUBKEY(cert->cert_info->key, nullptr);
+ X509_PUBKEY* key = X509_get_X509_PUBKEY(cert);
+ int len = i2d_X509_PUBKEY(key, nullptr);
if (len <= 0) {
return {};
}
std::string x(len, 0);
uint8_t* data = reinterpret_cast<uint8_t*>(&x[0]);
- if (!i2d_X509_PUBKEY(cert->cert_info->key, &data)) {
+ if (!i2d_X509_PUBKEY(key, &data)) {
return {};
}
return x;
}
-ErrorOr<uint64_t> ParseDerUint64(ASN1_INTEGER* asn1int) {
- if (asn1int->length > 8 || asn1int->length == 0) {
+ErrorOr<uint64_t> ParseDerUint64(const ASN1_INTEGER* asn1int) {
+ const uint8_t* data = ASN1_STRING_get0_data(asn1int);
+ int length = ASN1_STRING_length(asn1int);
+ if (length > 8 || length <= 0) {
return Error::Code::kParameterInvalid;
}
uint64_t result = 0;
- for (int i = 0; i < asn1int->length; ++i) {
- result = (result << 8) | asn1int->data[i];
+ for (int i = 0; i < length; ++i) {
+ result = (result << 8) | data[i];
}
return result;
}
diff --git a/util/crypto/certificate_utils.h b/util/crypto/certificate_utils.h
index 22da0330..6d9a08fd 100644
--- a/util/crypto/certificate_utils.h
+++ b/util/crypto/certificate_utils.h
@@ -52,7 +52,7 @@ ErrorOr<bssl::UniquePtr<EVP_PKEY>> ImportRSAPrivateKey(
std::string GetSpkiTlv(X509* cert);
-ErrorOr<uint64_t> ParseDerUint64(ASN1_INTEGER* asn1int);
+ErrorOr<uint64_t> ParseDerUint64(const ASN1_INTEGER* asn1int);
} // namespace openscreen