From: Boaz Harrosh <bharrosh@panasas.com>
To: open-osd development <osd-dev@open-osd.org>
Cc: Benny Halevy <bhalevy@panasas.com>,
James Bottomley <James.Bottomley@HansenPartnership.com>,
Mike Christie <michaelc@cs.wisc.edu>, Pete Wyckoff <pw@osc.edu>,
Christoph Hellwig <hch@infradead.org>,
FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>,
linux-scsi <linux-scsi@vger.kernel.org>
Subject: [RFC 07/14] libosd: OSD Security processing stubs
Date: Thu, 24 Jul 2008 20:54:34 +0300 [thread overview]
Message-ID: <4888C1DA.9080202@panasas.com> (raw)
In-Reply-To: <4888BC3B.1050406@panasas.com>
Layout the signing of OSD's CDB and all-data security modes. The actual
code for signing the data and CDB is missing, but the code flow and the extra
buffer segments are all in place.
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Reviewed-by: Benny Halevy <bhalevy@panasas.com>
---
drivers/scsi/osd/osd_initiator.c | 85 ++++++++++++++++++++++++++++++++++++++
1 files changed, 85 insertions(+), 0 deletions(-)
diff --git a/drivers/scsi/osd/osd_initiator.c b/drivers/scsi/osd/osd_initiator.c
index f10f21e..10e3ac0 100644
--- a/drivers/scsi/osd/osd_initiator.c
+++ b/drivers/scsi/osd/osd_initiator.c
@@ -109,6 +109,14 @@ static osd_cdb_offset osd_req_encode_offset(struct osd_request *or,
OSDv1_OFFSET_MIN_SHIFT, OSD_OFFSET_MAX_SHIFT);
}
+static struct osd_security_parameters *
+_osd_req_sec_params(struct osd_request *or)
+{
+ struct osd_cdb *ocdb = &or->cdb;
+
+ return &ocdb->v1.sec_params;
+}
+
void osd_dev_init(struct osd_dev *osdd, struct scsi_device *scsi_dev)
{
/* FIXME: Take the device reference */
@@ -771,6 +779,64 @@ int _osd_req_finalize_attr_page(struct osd_request *or)
return ret;
}
+int _osd_req_finalize_data_integrity(struct osd_request *or,
+ bool has_in, bool has_out, const u8 *cap_key)
+{
+ struct osd_security_parameters *sec_parms = _osd_req_sec_params(or);
+ int ret;
+
+ if (!osd_is_sec_alldata(sec_parms))
+ return 0;
+
+ if (has_out) {
+ struct _osd_req_data_segment seg = {
+ .buff = &or->out_data_integ,
+ .total_bytes = sizeof(or->out_data_integ),
+ };
+ int pad;
+
+ or->out_data_integ.data_bytes = cpu_to_be64(
+ or->out.bio ? or->out.bio->bi_size : 0);
+ or->out_data_integ.set_attributes_bytes = cpu_to_be64(
+ or->set_attr.total_bytes);
+ or->out_data_integ.get_attributes_bytes = cpu_to_be64(
+ or->enc_get_attr.total_bytes);
+
+ sec_parms->data_out_integrity_check_offset =
+ osd_req_encode_offset(or, or->out.total_bytes, &pad);
+
+ ret = _req_append_segment(or, pad, &seg, or->out.last_seg,
+ &or->out);
+ if (ret)
+ return ret;
+ or->out.last_seg = NULL;
+
+ /* they are now all chained to request sign them all together */
+ osd_sec_sign_data(&or->out_data_integ, or->out.req->bio,
+ cap_key);
+ }
+
+ if (has_in) {
+ struct _osd_req_data_segment seg = {
+ .buff = &or->in_data_integ,
+ .total_bytes = sizeof(or->in_data_integ),
+ };
+ int pad;
+
+ sec_parms->data_in_integrity_check_offset =
+ osd_req_encode_offset(or, or->in.total_bytes, &pad);
+
+ ret = _req_append_segment(or, pad, &seg, or->in.last_seg,
+ &or->in);
+ if (ret)
+ return ret;
+
+ or->in.last_seg = NULL;
+ }
+
+ return 0;
+}
+
/*
* osd_finalize_request and helpers
*/
@@ -881,6 +947,12 @@ int osd_finalize_request(struct osd_request *or,
return ret;
}
+ ret = _osd_req_finalize_data_integrity(or, has_in, has_out, cap_key);
+ if (ret)
+ return ret;
+
+ osd_sec_sign_cdb(&or->cdb, cap_key);
+
or->request->cmd = or->cdb.buff;
or->request->cmd_len = _osd_req_cdb_len(or);
@@ -946,6 +1018,19 @@ void osd_set_caps(struct osd_cdb *cdb, const void *caps)
memcpy(&cdb->v1.caps, caps, OSDv1_CAP_LEN);
}
+bool osd_is_sec_alldata(struct osd_security_parameters *sec_parms)
+{
+ return false;
+}
+
+void osd_sec_sign_cdb(struct osd_cdb *ocdb, const u8 *cap_key)
+{
+}
+
+void osd_sec_sign_data(void *data_integ, struct bio *bio, const u8 *cap_key)
+{
+}
+
/*
* Declared in osd_protocol.h
* 4.12.5 Data-In and Data-Out buffer offsets
--
1.5.6.rc1.5.gadf6
next prev parent reply other threads:[~2008-07-24 17:55 UTC|newest]
Thread overview: 183+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <48876009.8010701@panasas.com>
2008-07-24 17:30 ` [RFC 00/14] open-osd: OSD Initiator library for Linux Boaz Harrosh
2008-07-24 17:40 ` [RFC 01/14] libosd: OSDv1 Headers Boaz Harrosh
2008-07-24 17:45 ` [RFC 02/14] libosd: OSDv1 preliminary implementation Boaz Harrosh
2008-07-24 17:47 ` [RFC 03/14] osd_uld: OSD scsi ULD Boaz Harrosh
2008-07-27 21:16 ` James Bottomley
2008-08-06 17:25 ` Boaz Harrosh
2008-07-24 17:49 ` [RFC 04/14] osd_ktests: Add basic OSD tests Boaz Harrosh
2008-07-24 17:51 ` [RFC 05/14] libosd: attributes Support Boaz Harrosh
2008-07-24 17:53 ` [RFC 06/14] osd_ktests: Test Attribute lists Boaz Harrosh
2008-07-24 17:54 ` Boaz Harrosh [this message]
2008-07-24 17:55 ` [RFC 08/14] libosd: Add Flush and List-objects support Boaz Harrosh
2008-07-24 17:57 ` [RFC 09/14] libosd: Not implemented commands Boaz Harrosh
2008-07-24 17:58 ` [RFC 10/14] libosd: OSD version 2 Support Boaz Harrosh
2008-07-24 17:59 ` [RFC 11/14] osd_ktests: OSDv2 auto detection Boaz Harrosh
2008-07-24 18:00 ` [RFC 12/14] osd: Kconfig file for in-tree builds Boaz Harrosh
2008-07-24 18:02 ` [RFC 13/14] osd: Documentation for OSD library Boaz Harrosh
2008-07-24 18:03 ` [RFC 14/14] scsi: Add osd library to build system Boaz Harrosh
2008-11-04 16:09 ` [PATCHSET 00/18] open-osd: OSD Initiator library for Linux Boaz Harrosh
2008-11-04 16:09 ` Boaz Harrosh
2008-11-04 16:17 ` [PATCH 01/18] major.h: char-major number for OSD device driver Boaz Harrosh
2008-11-04 16:17 ` Boaz Harrosh
2008-11-26 17:33 ` [osd-dev] " Boaz Harrosh
2008-11-26 18:07 ` Randy Dunlap
2008-11-26 18:07 ` Randy Dunlap
2008-11-04 16:42 ` [PATCH 02/18] scsi: OSD_TYPE Boaz Harrosh
2008-11-04 16:42 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 03/18] libosd: OSDv1 Headers Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 19:10 ` Andrew Morton
2008-11-04 19:42 ` Jörn Engel
2008-11-04 19:42 ` Jörn Engel
2008-11-04 20:29 ` Jörn Engel
2008-11-05 13:00 ` Boaz Harrosh
2008-11-05 13:00 ` Boaz Harrosh
2008-11-05 12:54 ` Boaz Harrosh
2008-11-05 12:54 ` Boaz Harrosh
2008-11-05 13:09 ` James Bottomley
2008-11-05 13:29 ` Boaz Harrosh
2008-11-09 14:52 ` [PATCH 03/18 ver2] " Boaz Harrosh
2008-11-09 14:52 ` Boaz Harrosh
2008-11-09 17:45 ` Jörn Engel
2008-11-09 17:45 ` Jörn Engel
2008-11-10 8:47 ` Boaz Harrosh
2008-11-10 8:47 ` Boaz Harrosh
2008-11-10 15:17 ` Jörn Engel
2008-11-10 15:17 ` Jörn Engel
2008-11-10 17:29 ` Randy Dunlap
2008-11-12 13:10 ` Boaz Harrosh
2008-11-12 13:10 ` Boaz Harrosh
2008-11-12 16:48 ` Randy Dunlap
2008-11-12 17:09 ` Boaz Harrosh
2008-11-12 17:15 ` Johannes Berg
2008-11-12 13:13 ` [PATCH 03/18 ver3] " Boaz Harrosh
2008-11-12 13:13 ` Boaz Harrosh
2008-11-12 18:59 ` Randy Dunlap
2008-11-13 9:38 ` Boaz Harrosh
2008-11-13 12:25 ` [PATCH 03/18 ver4] " Boaz Harrosh
2008-11-13 12:25 ` Boaz Harrosh
2008-11-13 18:16 ` Randy Dunlap
2008-11-13 15:41 ` [osd-dev] " Benny Halevy
2008-11-04 16:44 ` [PATCH 04/18] libosd: OSDv1 preliminary implementation Boaz Harrosh
2008-11-04 18:03 ` Sam Ravnborg
2008-11-05 13:12 ` Boaz Harrosh
2008-11-09 14:55 ` [osd-dev] " Boaz Harrosh
2008-11-10 5:37 ` Randy Dunlap
2008-11-10 9:00 ` Boaz Harrosh
2008-11-05 16:39 ` [Patch] Always include <linux/types.h> Jörn Engel
2008-11-05 17:23 ` Alexey Dobriyan
2008-11-05 19:16 ` Jörn Engel
2008-11-05 19:48 ` Andreas Schwab
2008-11-05 20:02 ` Jörn Engel
2008-11-05 20:32 ` Alexey Dobriyan
2008-11-07 8:02 ` Jörn Engel
2008-11-05 20:20 ` Alexey Dobriyan
2008-11-05 17:48 ` Boaz Harrosh
2008-11-04 19:16 ` [PATCH 04/18] libosd: OSDv1 preliminary implementation Andrew Morton
2008-11-05 13:44 ` Boaz Harrosh
2008-11-09 14:50 ` [PATCH 04/18 ver2] " Boaz Harrosh
2008-11-04 16:44 ` [PATCH 04/18] " Boaz Harrosh
2008-11-04 16:44 ` [PATCH 05/18] osd_uld: OSD scsi ULD Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 06/18] osd_uld: API for retrieving osd devices from Kernel Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 07/18] osd_test: User-mode application to run the OSD tests Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 08/18] osd_ktests: Add basic " Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 09/18] libosd: attributes Support Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 10/18] osd_ktests: Test Attribute lists Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 11/18] libosd: OSD Security processing stubs Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 12/18] libosd: Add Flush and List-objects support Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 13/18] libosd: Not implemented commands Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 15/18] libosd: OSDv2 auto detection Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 14/18] libosd: OSD version 2 Support Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 16/18] osd: Documentation for OSD library Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 17/18] osd: Kconfig file for in-tree builds Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 16:44 ` [PATCH 18/18] scsi: Add osd library to build system Boaz Harrosh
2008-11-04 16:44 ` Boaz Harrosh
2008-11-04 19:19 ` [PATCHSET 00/18] open-osd: OSD Initiator library for Linux Andrew Morton
2008-11-05 13:56 ` Boaz Harrosh
2008-11-09 14:58 ` Boaz Harrosh
2008-11-09 23:26 ` Stephen Rothwell
2008-11-10 12:52 ` Boaz Harrosh
2008-11-10 13:04 ` Stephen Rothwell
2008-12-22 12:32 ` Boaz Harrosh
2008-12-22 12:32 ` Boaz Harrosh
2008-12-22 12:37 ` [PATCH 01/18] major.h: char-major number for OSD device driver Boaz Harrosh
2008-12-22 12:37 ` Boaz Harrosh
2008-12-22 12:39 ` [PATCH 02/18] scsi: OSD_TYPE Boaz Harrosh
2008-12-22 12:39 ` Boaz Harrosh
2008-12-22 12:41 ` [PATCH 03/18] libosd: OSDv1 Headers Boaz Harrosh
2008-12-22 12:41 ` Boaz Harrosh
2008-12-22 12:43 ` [PATCH 04/18] libosd: OSDv1 preliminary implementation Boaz Harrosh
2008-12-22 12:43 ` Boaz Harrosh
2008-12-22 12:46 ` [PATCH 05/18] osd_uld: OSD scsi ULD Boaz Harrosh
2008-12-22 12:46 ` Boaz Harrosh
2008-12-22 12:49 ` [PATCH 06/18] osd_uld: API for retrieving osd devices from Kernel Boaz Harrosh
2008-12-22 12:49 ` Boaz Harrosh
2008-12-22 12:51 ` [PATCH 07/18] osd_ktests: Add basic OSD tests Boaz Harrosh
2008-12-22 12:51 ` Boaz Harrosh
2008-12-22 12:55 ` [PATCH 08/18] libosd: attributes Support Boaz Harrosh
2008-12-22 12:55 ` Boaz Harrosh
2008-12-22 12:57 ` [PATCH 09/18] osd_ktests: Test Attribute lists Boaz Harrosh
2008-12-22 12:57 ` Boaz Harrosh
2008-12-22 13:00 ` [PATCH 10/18] libosd: OSD Security processing stubs Boaz Harrosh
2008-12-22 13:00 ` Boaz Harrosh
2008-12-22 13:02 ` [PATCH 11/18] libosd: Add Flush and List-objects support Boaz Harrosh
2008-12-22 13:02 ` Boaz Harrosh
2008-12-22 13:04 ` [PATCH 12/18] libosd: Not implemented commands Boaz Harrosh
2008-12-22 13:04 ` Boaz Harrosh
2008-12-22 13:07 ` [PATCH 13/18] libosd: OSD version 2 Support Boaz Harrosh
2008-12-22 13:07 ` Boaz Harrosh
2008-12-22 13:09 ` [PATCH 14/18] libosd: OSDv2 auto detection Boaz Harrosh
2008-12-22 13:09 ` Boaz Harrosh
2008-12-22 13:13 ` [PATCH 15/18] libosd: SCSI/OSD Sense decoding support Boaz Harrosh
2008-12-22 13:13 ` Boaz Harrosh
2008-12-22 13:16 ` [PATCH 16/18] osd: Documentation for OSD library Boaz Harrosh
2008-12-22 13:16 ` Boaz Harrosh
2008-12-22 13:18 ` [PATCH 17/18] osd: Kconfig file for in-tree builds Boaz Harrosh
2008-12-22 13:18 ` Boaz Harrosh
2008-12-22 13:20 ` [PATCH 18/18] scsi: Add osd library to build system Boaz Harrosh
2008-12-22 13:20 ` Boaz Harrosh
2009-01-06 14:04 ` [PATCHSET 00/18] open-osd: OSD Initiator library for 2.6.29 Boaz Harrosh
2009-01-06 14:07 ` [PATCH 01/18] major.h: char-major number for OSD device driver Boaz Harrosh
2009-01-06 14:10 ` [PATCH 02/18] scsi: OSD_TYPE Boaz Harrosh
2009-01-06 14:11 ` [PATCH 03/18] libosd: OSDv1 Headers Boaz Harrosh
2009-01-06 14:13 ` [PATCH 04/18] libosd: OSDv1 preliminary implementation Boaz Harrosh
2009-01-06 14:14 ` [PATCH 05/18] osd_uld: OSD scsi ULD Boaz Harrosh
2009-01-06 16:47 ` [PATCH ver2 05/16] " Boaz Harrosh
2009-01-06 14:16 ` [PATCH 06/18] osd_uld: API for retrieving osd devices from Kernel Boaz Harrosh
2009-01-06 14:17 ` [PATCH 07/18] osd_ktests: Add basic OSD tests Boaz Harrosh
2009-01-06 14:42 ` FUJITA Tomonori
2009-01-06 14:56 ` Boaz Harrosh
2009-01-06 15:12 ` FUJITA Tomonori
2009-01-06 15:49 ` Boaz Harrosh
2009-01-06 16:58 ` FUJITA Tomonori
2009-01-06 17:04 ` Boaz Harrosh
2009-01-06 16:49 ` Boaz Harrosh
2009-01-06 14:19 ` [PATCH 08/18] libosd: attributes Support Boaz Harrosh
2009-01-06 14:20 ` [PATCH 09/18] osd_ktests: Test Attribute lists Boaz Harrosh
2009-01-06 16:50 ` Boaz Harrosh
2009-01-06 14:21 ` [PATCH 10/18] libosd: OSD Security processing stubs Boaz Harrosh
2009-01-06 14:23 ` [PATCH 11/18] libosd: Add Flush and List-objects support Boaz Harrosh
2009-01-06 14:24 ` [PATCH 12/18] libosd: Not implemented commands Boaz Harrosh
2009-01-06 14:25 ` [PATCH 13/18] libosd: OSD version 2 Support Boaz Harrosh
2009-01-06 14:27 ` [PATCH 14/18] libosd: OSDv2 auto detection Boaz Harrosh
2009-01-06 14:29 ` [PATCH 15/18] libosd: SCSI/OSD Sense decoding support Boaz Harrosh
2009-01-06 14:31 ` [PATCH 16/18] osd: Documentation for OSD library Boaz Harrosh
2009-01-06 14:32 ` [PATCH 17/18] osd: Kconfig file for in-tree builds Boaz Harrosh
2009-01-06 17:40 ` Randy Dunlap
2009-01-07 8:48 ` Boaz Harrosh
2009-01-07 17:10 ` Randy Dunlap
2009-01-07 8:53 ` [PATCH ver2 15/16] " Boaz Harrosh
2009-01-06 14:34 ` [PATCH 18/18] scsi: Add osd library to build system Boaz Harrosh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4888C1DA.9080202@panasas.com \
--to=bharrosh@panasas.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=bhalevy@panasas.com \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=hch@infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=michaelc@cs.wisc.edu \
--cc=osd-dev@open-osd.org \
--cc=pw@osc.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.