summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@inktank.com>2012-11-06 11:02:04 -0800
committerYehuda Sadeh <yehuda@inktank.com>2012-11-08 13:24:30 -0800
commita99b0fac88322f4e7505ec594fd77d25cad4e22b (patch)
tree35dfd4cf2921d252915b85126baacef6bdba5ae5
parent8fcd35185a3f3337ac2325213eebcc366d4197ed (diff)
downloadceph-a99b0fac88322f4e7505ec594fd77d25cad4e22b.tar.gz
rgw: fix build
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r--debian/control2
-rw-r--r--src/.gitignore1
-rw-r--r--src/Makefile.am17
-rw-r--r--src/common/ceph_crypto_cms.cc56
-rw-r--r--src/common/ceph_crypto_cms.h4
-rw-r--r--src/rgw/rgw_swift.cc7
-rw-r--r--src/test/ceph_crypto.cc6
-rw-r--r--src/test/crypto.cc2
8 files changed, 54 insertions, 41 deletions
diff --git a/debian/control b/debian/control
index acf3db0ab40..5512f6d7dfa 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Vcs-Git: git://github.com/ceph/ceph.git
Vcs-Browser: https://github.com/ceph/ceph
Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.hu>
Uploaders: Sage Weil <sage@newdream.net>
-Build-Depends: debhelper (>= 6.0.7~), autotools-dev, autoconf, automake, libfuse-dev, libboost-dev (>= 1.34), libedit-dev, libnss3-dev, libtool, libexpat1-dev, libfcgi-dev, libatomic-ops-dev, libgoogle-perftools-dev [i386 amd64], pkg-config, libcurl4-gnutls-dev, libkeyutils-dev, uuid-dev, libaio-dev, python (>= 2.6.6-3~), libxml2-dev
+Build-Depends: debhelper (>= 6.0.7~), autotools-dev, autoconf, automake, libfuse-dev, libboost-dev (>= 1.34), libboost-thread-dev, libedit-dev, libnss3-dev, libtool, libexpat1-dev, libfcgi-dev, libatomic-ops-dev, libgoogle-perftools-dev [i386 amd64], pkg-config, libcurl4-gnutls-dev, libkeyutils-dev, uuid-dev, libaio-dev, python (>= 2.6.6-3~), libxml2-dev
Standards-Version: 3.9.3
Package: ceph
diff --git a/src/.gitignore b/src/.gitignore
index 5a4216503ff..7548b5e47ae 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -23,6 +23,7 @@
/radosgw
/radosgw-admin
/rbdtool
+/rgw_jsonparser
/rgw_multiparser
/streamtest
/bench_log
diff --git a/src/Makefile.am b/src/Makefile.am
index ec654c7a965..1a187c7cd14 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -207,12 +207,15 @@ test_ioctls_SOURCES = client/test_ioctls.c
bin_DEBUGPROGRAMS += test_ioctls
dupstore_SOURCES = dupstore.cc
+dupstore_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
dupstore_LDADD = $(LIBOS_LDA) $(LIBGLOBAL_LDA)
streamtest_SOURCES = streamtest.cc
+streamtest_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
streamtest_LDADD = $(LIBOS_LDA) $(LIBGLOBAL_LDA)
bin_DEBUGPROGRAMS += dupstore streamtest
test_trans_SOURCES = test_trans.cc
+test_trans_CXXFLAGS= ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
test_trans_LDADD = $(LIBOS_LDA) $(LIBGLOBAL_LDA)
bin_DEBUGPROGRAMS += test_trans
@@ -878,7 +881,7 @@ bin_DEBUGPROGRAMS += test_libcephfs
test_filestore_SOURCES = test/filestore/store_test.cc
test_filestore_LDFLAGS = ${AM_LDFLAGS}
test_filestore_LDADD = ${UNITTEST_STATIC_LDADD} $(LIBOS_LDA) $(LIBGLOBAL_LDA)
-test_filestore_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE)
+test_filestore_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE) ${CRYPTO_CXXFLAGS}
bin_DEBUGPROGRAMS += test_filestore
test_filestore_workloadgen_SOURCES = \
@@ -886,11 +889,12 @@ test_filestore_workloadgen_SOURCES = \
test/filestore/TestFileStoreState.cc
test_filestore_workloadgen_LDFLAGS = ${AM_LDFLAGS}
test_filestore_workloadgen_LDADD = $(LIBOS_LDA) $(LIBGLOBAL_LDA)
+test_filestore_workloadgen_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
bin_DEBUGPROGRAMS += test_filestore_workloadgen
test_filestore_idempotent_SOURCES = test/filestore/test_idempotent.cc test/filestore/FileStoreTracker.cc test/common/ObjectContents.cc
test_filestore_idempotent_LDADD = $(LIBOS_LDA) $(LIBGLOBAL_LDA)
-test_filestore_idempotent_CXXFLAGS = $(LEVELDB_INCLUDE)
+test_filestore_idempotent_CXXFLAGS = ${CRYPTO_CXXFLAGS} $(LEVELDB_INCLUDE)
bin_DEBUGPROGRAMS += test_filestore_idempotent
test_filestore_idempotent_sequence_SOURCES = \
@@ -898,13 +902,14 @@ test_filestore_idempotent_sequence_SOURCES = \
test/filestore/DeterministicOpSequence.cc \
test/filestore/TestFileStoreState.cc \
test/filestore/FileStoreDiff.cc
+test_filestore_idempotent_sequence_CXXFLAGS = ${CRYPTO_CXXFLAGS} ${AM_CXXFLAGS}
test_filestore_idempotent_sequence_LDADD = $(LIBOS_LDA) $(LIBGLOBAL_LDA)
bin_DEBUGPROGRAMS += test_filestore_idempotent_sequence
xattr_bench_SOURCES = test/xattr_bench.cc
xattr_bench_LDFLAGS = ${AM_LDFLAGS}
xattr_bench_LDADD = ${UNITTEST_STATIC_LDADD} $(LIBOS_LDA) $(LIBGLOBAL_LDA)
-xattr_bench_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE)
+xattr_bench_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE) ${CRYPTO_CXXFLAGS}
bin_DEBUGPROGRAMS += xattr_bench
test_filejournal_SOURCES = test/test_filejournal.cc
@@ -922,13 +927,13 @@ bin_DEBUGPROGRAMS += test_stress_watch
test_object_map_SOURCES = test/ObjectMap/test_object_map.cc test/ObjectMap/KeyValueDBMemory.cc os/DBObjectMap.cc os/LevelDBStore.cc
test_object_map_LDFLAGS = ${AM_LDFLAGS}
test_object_map_LDADD = ${UNITTEST_STATIC_LDADD} $(LIBOS_LDA) $(LIBGLOBAL_LDA)
-test_object_map_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE)
+test_object_map_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE) ${CRYPTO_CXXFLAGS}
bin_DEBUGPROGRAMS += test_object_map
test_keyvaluedb_atomicity_SOURCES = test/ObjectMap/test_keyvaluedb_atomicity.cc os/LevelDBStore.cc
test_keyvaluedb_atomicity_LDFLAGS = ${AM_LDFLAGS}
test_keyvaluedb_atomicity_LDADD = ${UNITTEST_STATIC_LDADD} $(LIBOS_LDA) $(LIBGLOBAL_LDA)
-test_keyvaluedb_atomicity_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE)
+test_keyvaluedb_atomicity_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE) ${CRYPTO_CXXFLAGS}
bin_DEBUGPROGRAMS += test_keyvaluedb_atomicity
test_keyvaluedb_iterators_SOURCES = test/ObjectMap/test_keyvaluedb_iterators.cc \
@@ -936,7 +941,7 @@ test_keyvaluedb_iterators_SOURCES = test/ObjectMap/test_keyvaluedb_iterators.cc
os/LevelDBStore.cc
test_keyvaluedb_iterators_LDFLAGS = ${AM_LDFLAGS}
test_keyvaluedb_iterators_LDADD = ${UNITTEST_STATIC_LDADD} $(LIBOS_LDA) $(LIBGLOBAL_LDA)
-test_keyvaluedb_iterators_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE)
+test_keyvaluedb_iterators_CXXFLAGS = ${AM_CXXFLAGS} ${UNITTEST_CXXFLAGS} $(LEVELDB_INCLUDE) ${CRYPTO_CXXFLAGS}
bin_DEBUGPROGRAMS += test_keyvaluedb_iterators
test_cfuse_cache_invalidate_SOURCES = test/test_cfuse_cache_invalidate.cc
diff --git a/src/common/ceph_crypto_cms.cc b/src/common/ceph_crypto_cms.cc
index 7c0f5537548..4d7a4ef598b 100644
--- a/src/common/ceph_crypto_cms.cc
+++ b/src/common/ceph_crypto_cms.cc
@@ -61,7 +61,7 @@
#ifndef USE_NSS
-int ceph_decode_cms(bufferlist& cms_bl, bufferlist& decoded_bl)
+int ceph_decode_cms(CephContext *cct, bufferlist& cms_bl, bufferlist& decoded_bl)
{
return -ENOTSUP;
}
@@ -105,7 +105,7 @@ struct decodeOptionsStr {
};
static NSSCMSMessage *
-decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist& out)
+decode(CephContext *cct, SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist& out)
{
NSSCMSDecoderContext *dcx;
SECStatus rv;
@@ -124,23 +124,23 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
decodeOptions->dkcb, /* decrypt key callback */
decodeOptions->bulkkey);
if (dcx == NULL) {
- dout(0) << "ERROR: failed to set up message decoder" << dendl;
+ ldout(cct, 0) << "ERROR: failed to set up message decoder" << dendl;
return NULL;
}
rv = NSS_CMSDecoder_Update(dcx, (char *)input->data, input->len);
if (rv != SECSuccess) {
- dout(0) << "ERROR: failed to decode message" << dendl;
+ ldout(cct, 0) << "ERROR: failed to decode message" << dendl;
NSS_CMSDecoder_Cancel(dcx);
return NULL;
}
cmsg = NSS_CMSDecoder_Finish(dcx);
if (cmsg == NULL) {
- dout(0) << "ERROR: failed to decode message" << dendl;
+ ldout(cct, 0) << "ERROR: failed to decode message" << dendl;
return NULL;
}
if (decodeOptions->headerLevel >= 0) {
- dout(20) << "SMIME: " << dendl;
+ ldout(cct, 20) << "SMIME: " << dendl;
}
nlevels = NSS_CMSMessage_ContentLevelCount(cmsg);
@@ -151,7 +151,7 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
cinfo = NSS_CMSMessage_ContentLevel(cmsg, i);
typetag = NSS_CMSContentInfo_GetContentTypeTag(cinfo);
- dout(20) << "level=" << decodeOptions->headerLevel << "." << nlevels - i << dendl;
+ ldout(cct, 20) << "level=" << decodeOptions->headerLevel << "." << nlevels - i << dendl;
switch (typetag) {
case SEC_OID_PKCS7_SIGNED_DATA:
@@ -162,10 +162,10 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
int j;
if (decodeOptions->headerLevel >= 0)
- dout(20) << "type=signedData; " << dendl;
+ ldout(cct, 20) << "type=signedData; " << dendl;
sigd = (NSSCMSSignedData *)NSS_CMSContentInfo_GetContent(cinfo);
if (sigd == NULL) {
- dout(0) << "ERROR: signedData component missing" << dendl;
+ ldout(cct, 0) << "ERROR: signedData component missing" << dendl;
goto loser;
}
@@ -179,19 +179,19 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
sitem = decodeOptions->content;
if ((poolp = PORT_NewArena(1024)) == NULL) {
- dout(0) << "ERROR: Out of memory" << dendl;
+ ldout(cct, 0) << "ERROR: Out of memory" << dendl;
goto loser;
}
digestalgs = NSS_CMSSignedData_GetDigestAlgs(sigd);
if (DigestFile (poolp, &digests, &sitem, digestalgs)
!= SECSuccess) {
- dout(0) << "ERROR: problem computing message digest" << dendl;
+ ldout(cct, 0) << "ERROR: problem computing message digest" << dendl;
PORT_FreeArena(poolp, PR_FALSE);
goto loser;
}
if (NSS_CMSSignedData_SetDigests(sigd, digestalgs, digests)
!= SECSuccess) {
- dout(0) << "ERROR: problem setting message digests" << dendl;
+ ldout(cct, 0) << "ERROR: problem setting message digests" << dendl;
PORT_FreeArena(poolp, PR_FALSE);
goto loser;
}
@@ -204,14 +204,14 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
decodeOptions->options->certUsage,
decodeOptions->keepCerts)
!= SECSuccess) {
- dout(0) << "ERROR: cert import failed" << dendl;
+ ldout(cct, 0) << "ERROR: cert import failed" << dendl;
goto loser;
}
/* find out about signers */
nsigners = NSS_CMSSignedData_SignerInfoCount(sigd);
if (decodeOptions->headerLevel >= 0)
- dout(20) << "nsigners=" << nsigners << dendl;
+ ldout(cct, 20) << "nsigners=" << nsigners << dendl;
if (nsigners == 0) {
/* Might be a cert transport message
** or might be an invalid message, such as a QA test message
@@ -222,7 +222,7 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
decodeOptions->options->certHandle,
decodeOptions->options->certUsage);
if (rv != SECSuccess) {
- dout(0) << "ERROR: Verify certs-only failed!" << dendl;
+ ldout(cct, 0) << "ERROR: Verify certs-only failed!" << dendl;
goto loser;
}
return cmsg;
@@ -230,7 +230,7 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
/* still no digests? */
if (!NSS_CMSSignedData_HasDigests(sigd)) {
- dout(0) << "ERROR: no message digests" << dendl;
+ ldout(cct, 0) << "ERROR: no message digests" << dendl;
goto loser;
}
@@ -248,7 +248,7 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
signercn = NSS_CMSSignerInfo_GetSignerCommonName(si);
if (signercn == NULL)
signercn = empty;
- dout(20) << "\t\tsigner" << j << ".id=" << signercn << dendl;
+ ldout(cct, 20) << "\t\tsigner" << j << ".id=" << signercn << dendl;
if (signercn != empty)
PORT_Free(signercn);
}
@@ -258,10 +258,10 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
vs = NSS_CMSSignerInfo_GetVerificationStatus(si);
svs = NSS_CMSUtil_VerificationStatusToString(vs);
if (decodeOptions->headerLevel >= 0) {
- dout(20) << "signer" << j << "status=" << svs << dendl;
+ ldout(cct, 20) << "signer" << j << "status=" << svs << dendl;
/* goto loser ? */
} else if (bad) {
- dout(0) << "ERROR: signer " << j << " status = " << svs << dendl;
+ ldout(cct, 0) << "ERROR: signer " << j << " status = " << svs << dendl;
goto loser;
}
}
@@ -271,10 +271,10 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
{
NSSCMSEnvelopedData *envd;
if (decodeOptions->headerLevel >= 0)
- dout(20) << "type=envelopedData; " << dendl;
+ ldout(cct, 20) << "type=envelopedData; " << dendl;
envd = (NSSCMSEnvelopedData *)NSS_CMSContentInfo_GetContent(cinfo);
if (envd == NULL) {
- dout(0) << "ERROR: envelopedData component missing" << dendl;
+ ldout(cct, 0) << "ERROR: envelopedData component missing" << dendl;
goto loser;
}
}
@@ -283,17 +283,17 @@ decode(SECItem *input, const struct decodeOptionsStr *decodeOptions, bufferlist&
{
NSSCMSEncryptedData *encd;
if (decodeOptions->headerLevel >= 0)
- dout(20) << "type=encryptedData; " << dendl;
+ ldout(cct, 20) << "type=encryptedData; " << dendl;
encd = (NSSCMSEncryptedData *)NSS_CMSContentInfo_GetContent(cinfo);
if (encd == NULL) {
- dout(0) << "ERROR: encryptedData component missing" << dendl;
+ ldout(cct, 0) << "ERROR: encryptedData component missing" << dendl;
goto loser;
}
}
break;
case SEC_OID_PKCS7_DATA:
if (decodeOptions->headerLevel >= 0)
- dout(20) << "type=data; " << dendl;
+ ldout(cct, 20) << "type=data; " << dendl;
break;
default:
break;
@@ -310,7 +310,7 @@ loser:
return NULL;
}
-int ceph_decode_cms(bufferlist& cms_bl, bufferlist& decoded_bl)
+int ceph_decode_cms(CephContext *cct, bufferlist& cms_bl, bufferlist& decoded_bl)
{
NSSCMSMessage *cmsg = NULL;
struct decodeOptionsStr decodeOptions = { 0 };
@@ -332,7 +332,7 @@ int ceph_decode_cms(bufferlist& cms_bl, bufferlist& decoded_bl)
options.certHandle = CERT_GetDefaultCertDB();
if (!options.certHandle) {
- dout(0) << "ERROR: No default cert DB" << dendl;
+ ldout(cct, 0) << "ERROR: No default cert DB" << dendl;
return -EIO;
}
if (cms_verbose) {
@@ -343,9 +343,9 @@ int ceph_decode_cms(bufferlist& cms_bl, bufferlist& decoded_bl)
int ret = 0;
- cmsg = decode(&input, &decodeOptions, decoded_bl);
+ cmsg = decode(cct, &input, &decodeOptions, decoded_bl);
if (!cmsg) {
- dout(0) << "ERROR: problem decoding" << dendl;
+ ldout(cct, 0) << "ERROR: problem decoding" << dendl;
ret = -EINVAL;
}
diff --git a/src/common/ceph_crypto_cms.h b/src/common/ceph_crypto_cms.h
index 2b29dda0f96..5b0a7f5950f 100644
--- a/src/common/ceph_crypto_cms.h
+++ b/src/common/ceph_crypto_cms.h
@@ -3,6 +3,8 @@
#include "include/buffer.h"
-int ceph_decode_cms(bufferlist& cms_bl, bufferlist& decoded_bl);
+class CephContext;
+
+int ceph_decode_cms(CephContext *cct, bufferlist& cms_bl, bufferlist& decoded_bl);
#endif
diff --git a/src/rgw/rgw_swift.cc b/src/rgw/rgw_swift.cc
index 060b435dfa4..002c380444a 100644
--- a/src/rgw/rgw_swift.cc
+++ b/src/rgw/rgw_swift.cc
@@ -370,7 +370,7 @@ static int decode_b64_cms(CephContext *cct, const string& signed_b64, bufferlist
bufferlist signed_ber_bl;
signed_ber_bl.append(signed_ber);
- ret = ceph_decode_cms(signed_ber_bl, bl);
+ ret = ceph_decode_cms(cct, signed_ber_bl, bl);
if (ret < 0) {
ldout(cct, 0) << "ceph_decode_cms returned " << ret << dendl;
return ret;
@@ -570,6 +570,7 @@ int RGWSwift::validate_keystone_token(RGWRados *store, const string& token, stru
ldout(cct, 20) << "token_id=" << token_id << dendl;
+ /* check cache first */
if (keystone_token_cache->find(token_id, t)) {
rgw_set_keystone_token_auth_info(t, info);
@@ -584,7 +585,11 @@ int RGWSwift::validate_keystone_token(RGWRados *store, const string& token, stru
bufferlist bl;
+ /* check if that's a self signed token that we can decode */
if (!decode_pki_token(cct, token, bl)) {
+
+ /* can't decode, just go to the keystone server for validation */
+
RGWValidateKeystoneToken validate(&bl);
string url = g_conf->rgw_keystone_url;
diff --git a/src/test/ceph_crypto.cc b/src/test/ceph_crypto.cc
index 403f6b5400b..2c934fa848c 100644
--- a/src/test/ceph_crypto.cc
+++ b/src/test/ceph_crypto.cc
@@ -5,7 +5,7 @@
class CryptoEnvironment: public ::testing::Environment {
public:
void SetUp() {
- ceph::crypto::init();
+ ceph::crypto::init(g_ceph_context);
}
};
@@ -117,7 +117,7 @@ class ForkDeathTest : public ::testing::Test {
virtual void TearDown() {
// undo the NSS shutdown we did in the parent process, after the
// test is done
- ceph::crypto::init();
+ ceph::crypto::init(g_ceph_context);
}
};
@@ -127,7 +127,7 @@ void do_simple_crypto() {
// fork, and if you comment out the ceph::crypto::init, or if the
// trick were to fail, you would see this ending in an assert and
// not exit status 0
- ceph::crypto::init();
+ ceph::crypto::init(g_ceph_context);
ceph::crypto::MD5 h;
h.Update((const byte*)"foo", 3);
unsigned char digest[CEPH_CRYPTO_MD5_DIGESTSIZE];
diff --git a/src/test/crypto.cc b/src/test/crypto.cc
index 85150ef80a9..80a5495001d 100644
--- a/src/test/crypto.cc
+++ b/src/test/crypto.cc
@@ -10,7 +10,7 @@
class CryptoEnvironment: public ::testing::Environment {
public:
void SetUp() {
- ceph::crypto::init();
+ ceph::crypto::init(g_ceph_context);
}
};