From b233e471ad35d941a515e90b2bc51989255f1380 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Tue, 11 Jun 2019 14:42:14 +0800 Subject: [PATCH] common/ceph_crypto: add digest_size to digest classes prepare for extracting the digest methods from ceph::buffer::list, so we can use them in a templated implementation. Signed-off-by: Kefu Chai --- src/common/ceph_crypto.h | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/common/ceph_crypto.h b/src/common/ceph_crypto.h index 810af086381..2c064b64477 100644 --- a/src/common/ceph_crypto.h +++ b/src/common/ceph_crypto.h @@ -59,13 +59,13 @@ namespace ceph { namespace nss { + template class NSSDigest { private: PK11Context *ctx; - size_t digest_size; public: - NSSDigest (SECOidTag _type, size_t _digest_size) - : digest_size(_digest_size) { + static constexpr size_t digest_size = DigestSize; + NSSDigest (SECOidTag _type) { ctx = PK11_CreateDigestContext(_type); if (! ctx) { throw DigestException("PK11_CreateDigestContext() failed"); @@ -103,24 +103,24 @@ namespace ceph { } }; - class MD5 : public NSSDigest { + class MD5 : public NSSDigest { public: - MD5 () : NSSDigest(SEC_OID_MD5, CEPH_CRYPTO_MD5_DIGESTSIZE) { } + MD5 () : NSSDigest{SEC_OID_MD5} { } }; - class SHA1 : public NSSDigest { + class SHA1 : public NSSDigest { public: - SHA1 () : NSSDigest(SEC_OID_SHA1, CEPH_CRYPTO_SHA1_DIGESTSIZE) { } + SHA1 () : NSSDigest{SEC_OID_SHA1} { } }; - class SHA256 : public NSSDigest { + class SHA256 : public NSSDigest { public: - SHA256 () : NSSDigest(SEC_OID_SHA256, CEPH_CRYPTO_SHA256_DIGESTSIZE) { } + SHA256 () : NSSDigest{SEC_OID_SHA256} { } }; - class SHA512 : public NSSDigest { + class SHA512 : public NSSDigest { public: - SHA512 () : NSSDigest(SEC_OID_SHA512, CEPH_CRYPTO_SHA512_DIGESTSIZE) { } + SHA512 () : NSSDigest{SEC_OID_SHA512} { } }; } } @@ -145,21 +145,25 @@ namespace ceph { class MD5 : public OpenSSLDigest { public: + static constexpr size_t digest_size = CEPH_CRYPTO_MD5_DIGESTSIZE; MD5 () : OpenSSLDigest(EVP_md5()) { } }; class SHA1 : public OpenSSLDigest { public: + static constexpr size_t digest_size = CEPH_CRYPTO_SHA1_DIGESTSIZE; SHA1 () : OpenSSLDigest(EVP_sha1()) { } }; class SHA256 : public OpenSSLDigest { public: + static constexpr size_t digest_size = CEPH_CRYPTO_SHA256_DIGESTSIZE; SHA256 () : OpenSSLDigest(EVP_sha256()) { } }; class SHA512 : public OpenSSLDigest { public: + static constexpr size_t digest_size = CEPH_CRYPTO_SHA512_DIGESTSIZE; SHA512 () : OpenSSLDigest(EVP_sha512()) { } }; } -- 2.39.5