IBR-DTNSuite
0.10
Main Page
Namespaces
Classes
Files
File List
File Members
IBR-DTNSuite
Namespaces
Classes
Files
File List
daemon
ibrcommon
ibrdtn
ibrdtn
api
data
security
BundleAuthenticationBlock.cpp
BundleAuthenticationBlock.h
ExtensionSecurityBlock.cpp
ExtensionSecurityBlock.h
MutualSerializer.cpp
MutualSerializer.h
PayloadConfidentialBlock.cpp
PayloadConfidentialBlock.h
PayloadIntegrityBlock.cpp
PayloadIntegrityBlock.h
SecurityBlock.cpp
SecurityBlock.h
SecurityKey.cpp
SecurityKey.h
StrictSerializer.cpp
StrictSerializer.h
streams
utils
config.h
ibrdtn.h
tools
File Members
PayloadIntegrityBlock.h
Go to the documentation of this file.
1
/*
2
* PayloadIntegrityBlock.h
3
*
4
* Copyright (C) 2011 IBR, TU Braunschweig
5
*
6
* Written-by: Johannes Morgenroth <morgenroth@ibr.cs.tu-bs.de>
7
*
8
* Licensed under the Apache License, Version 2.0 (the "License");
9
* you may not use this file except in compliance with the License.
10
* You may obtain a copy of the License at
11
*
12
* http://www.apache.org/licenses/LICENSE-2.0
13
*
14
* Unless required by applicable law or agreed to in writing, software
15
* distributed under the License is distributed on an "AS IS" BASIS,
16
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
* See the License for the specific language governing permissions and
18
* limitations under the License.
19
*
20
*/
21
22
#ifndef _PAYLOAD_INTEGRITY_BLOCK_H_
23
#define _PAYLOAD_INTEGRITY_BLOCK_H_
24
25
#include "
ibrdtn/security/SecurityBlock.h
"
26
#include "
ibrdtn/security/SecurityKey.h
"
27
#include "
ibrdtn/data/ExtensionBlock.h
"
28
#include "
ibrdtn/data/Bundle.h
"
29
#include <openssl/evp.h>
30
31
namespace
dtn
32
{
33
namespace
security
34
{
43
class
PayloadIntegrityBlock
:
public
SecurityBlock
44
{
45
friend
class
dtn::data::Bundle
;
46
public
:
47
class
Factory
:
public
dtn::data::ExtensionBlock::Factory
48
{
49
public
:
50
Factory
() : dtn::data::ExtensionBlock::
Factory
(
PayloadIntegrityBlock
::
BLOCK_TYPE
) {};
51
virtual
~Factory
() {};
52
virtual
dtn::data::Block
*
create
();
53
};
54
56
static
const
dtn::data::block_t
BLOCK_TYPE
;
57
60
virtual
~PayloadIntegrityBlock
();
61
67
static
void
sign
(
dtn::data::Bundle
&bundle,
const
SecurityKey
&key,
const
dtn::data::EID
& destination);
68
77
static
void
verify
(
const
dtn::data::Bundle
&bundle,
const
SecurityKey
&key);
78
85
static
void
strip
(
dtn::data::Bundle
& bundle,
const
SecurityKey
&key,
const
bool
all =
false
);
86
91
static
void
strip
(
dtn::data::Bundle
& bundle);
92
97
virtual
std::istream &
deserialize
(std::istream &stream,
const
dtn::data::Length
&length);
98
99
protected
:
104
PayloadIntegrityBlock
();
105
111
virtual
dtn::data::Length
getSecurityResultSize
()
const
;
112
113
private
:
117
dtn::data::Length
result_size;
118
125
static
const
std::string calcHash(
const
dtn::data::Bundle
&bundle,
const
SecurityKey
&key,
PayloadIntegrityBlock
& ignore);
126
137
static
void
verify
(
const
dtn::data::Bundle
& bundle,
const
SecurityKey
&key,
const
PayloadIntegrityBlock
&sb,
const
bool
use_eid =
true
);
138
146
void
setResultSize(
const
SecurityKey
&key);
147
};
148
152
static
PayloadIntegrityBlock::Factory
__PayloadIntegrityBlockFactory__;
153
}
154
}
155
#endif
/* _PAYLOAD_INTEGRITY_BLOCK_H_ */
ibrdtn
ibrdtn
security
PayloadIntegrityBlock.h
Generated on Mon Jul 22 2013 15:16:01 for IBR-DTNSuite by
1.8.3.1