2
0
mirror of https://github.com/openkmip/pykmip synced 2026-01-07 19:13:19 +00:00
Commit Graph

392 Commits

Author SHA1 Message Date
Peter Hamilton
e48aff7b9a Add the DeleteAttribute request and response payloads
This change adds support for the DeleteAttribute operation in the
form of request and response payload structures. These will be used
in a future updates by the client and server to fully support the
DeleteAttribute operation. A new unit test suite has been added to
cover the new changes.

Partially implements #547
2019-11-01 17:41:56 -04:00
Peter Hamilton
616e683370 Add support for the CurrentAttribute structure
This change adds support for the CurrentAttribute structure added
in KMIP 2.0. The CurrentAttribute structure is a basic container
structure that contains a single attribute instance for use by
attribute operations. A new unit test suite has been added to cover
the new additions.

Partially implements #547
2019-11-01 08:32:49 -04:00
Peter Hamilton
cd1079afd5 Add integration tests for Locate using new attributes
This change adds integration tests that verify that objects can
be found by Locate when filtering off of the new ObjectGroup and
ApplicationSpecificInformation attributes. Some minor tweaks to
the database attribute models are included to simplify usage.
2019-10-11 16:45:50 -04:00
Peter Hamilton
009e8cecc9 Add ObjectGroup support to the server
This change ObjectGroup attribute support to the server, allowing
for the storage and retrieval of the new attribute in addition to
object filtering based on its value. New unit tests have been
added to cover the new changes.
2019-10-11 09:58:10 -04:00
Peter Hamilton
1b81fff431 Add ObjectGroup to the database model
This change adds a new SQLAlchemy object to the database model
representing the ObjectGroup attribute. The new object is linked
to the base ManagedObject object, allowing ObjectGroup attributes
to be associated with any managed object. A new unit test suite
has been added to verify the new object functionality and to
confirm that the object can be stored and retrieved from an
in-memory database.
2019-10-10 16:33:39 -04:00
Peter Hamilton
89e9b22c34 Update how the ObjectGroup attribute is defined and used
This change updates the attribute factory, replacing the custom
ObjectGroup class with the proper usage of the TextString
primitive. ObjectGroup attribute usage and testing has been
updated across the library to reflect this change.
2019-10-07 13:52:17 -04:00
Peter Hamilton
01eb144243 Add ApplicationSpecificInformation support to the server
This change adds ApplicationSpecificInformation attribute support
to the server, allowing for the storage and retrieval of the new
attribute in addition to object filtering based on its value. New
unit tests have been added to cover the new changes.
2019-10-03 17:00:05 -04:00
Peter Hamilton
3f84a20a0c Add ApplicationSpecificInformation to the database model
This change adds a new SQLAlchemy object to the database model
representing the ApplicationSpecificInformation attribute. The
new object is linked to the base ManagedObject object, allowing
ApplicationSpecificInformation attributes to be associated with
any managed object. This also represents how KMIP attributes
should be supported going forward. A new unit test suite has
been added to verify the new object functionality and to confirm
that the object can be stored and retrieved from an in-memory
database.
2019-09-30 12:32:10 -04:00
Peter Hamilton
b7d2cc1382 Update ApplicationSpecificInformation support to modern style
This change updates the ApplicationSpecificInformation attribute
implementation to reflect modern library style. Property methods
have been added alongside tighter read/write error checking. The
unit tests for the attribute have been updated to reflect all of
the new changes.
2019-09-27 11:15:33 -04:00
Peter Hamilton
29750cbda6 Add SplitKey server integration tests
This change adds integration tests that test registering,
retrieving, and destroying SplitKey objects with the server.
Minor updates are included for the client and server to ensure
that SplitKey operations function as expected.

Partially implements #545
2019-09-20 14:04:57 -04:00
Peter Hamilton
a8713fc909 Add conversion utilities for SplitKey objects
This change adds conversion utilities for SplitKey objects,
allowing for conversions between the Pie and Core object spaces.
The server is also updated to recognize the new Pie SplitKey
object. Unit tests have been added and tweaked to accommodate
these changes.

Partially implements #545
2019-09-20 11:11:26 -04:00
Peter Hamilton
84ab77cd8d Add SQLAlchemy-based SplitKey support
This change adds a SQLAlchemy-based implementation of the SplitKey
object that will be used by the ProxyKmipClient and PyKMIP server
to store SplitKeys. A new unit test suite is included that checks
object fields and verifies it can be persisted to and retrieved
from an in-memory SQLAlchemy-managed database.

Partially implements #545
2019-09-13 16:35:49 -04:00
Peter Hamilton
64d78dc8e3 Update encoding support for SplitKey objects
This change updates encoding support for SplitKey objects, bringing
it up-to-date with the modern conventions used in the rest of the
library. A new unit test suite has been added to cover the new
functionality.

Partially implements #545
2019-09-11 09:26:06 -04:00
Peter Hamilton
c1b816bf04 Fix a bug with how key pair names are handled in the client
This change fixes a bug with how key pair names are handled by the
ProxyKmipClient. The original implementation stored key pair names
in the 'names' field of the various template attributes used to
define the key pair attributes. However, the 'names' field is
meant for the names of existing template objects that should be
used as another source for attribute values. Before KMIP 2.0
support was added, this worked because attributes and names were
encoded the same way and were interpreted by the server correctly.
The addition of KMIP 2.0 drops the 'names' field when handling
template attributes, dropping the names from being sent to the
server when creating new key pairs. This change fixes this and
updates relevant client unit tests to detect this error in the
future.

Fixes #560
2019-08-23 17:22:27 -04:00
oleksiys
16480bc9a2 Address PR comment 2019-08-21 08:32:45 -04:00
oleksiys
c2bfd3e835 + Strip the tag to the requested tag_length.
+ Add GCM test.
2019-08-21 08:32:45 -04:00
oleksiys
ead6c431bc Address PR comments 2019-08-21 08:32:45 -04:00
oleksiys
26c1c71fff Add support for AES GCM mode. 2019-08-21 08:32:45 -04:00
Peter Hamilton
44d55f2550 Add CertificateType filtering support for Locate
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects based on the object's
Certificate Type. Unit tests and integration tests have
been added to test and verify the correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support Certificate Type filtering. Simply use the
"--certificate-type" flag to specify a Certificate Type
enumeration values for the Locate script to filter on.
2019-08-16 17:31:42 -04:00
Peter Hamilton
b5a8739157 Add CryptographicUsageMask filtering support for Locate
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects based on the object's
Cryptographic Usage Masks. Unit tests and integration tests have
been added to test and verify the correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support Cryptographic Usage Mask filtering. Simply use the
"--cryptographic-usage-mask" flag to specify one or more
Cryptographic Usage Mask enumeration values for the Locate script
to filter on.
2019-08-12 16:54:03 -04:00
Peter Hamilton
4a6a2eccc1 Add offset and maximum item filtering for the Locate operation
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects using the offset and maximum item
constraints. The offset constraint tells the server how many
matching items should be skipped before results are returned. The
maximum items constraint tells the server how many matching items
should be returned. Unit tests and integration tests have been
added to test and verify the correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support offset and maximum item filtering. Simply use the
"--offset-items" and "--maximum-items" flags to specify offset and
maximum item values for the Locate script to filter on.

Fixes #562
2019-08-09 17:13:20 -04:00
Peter Hamilton
c3c03e5091 Fix a bug with the debug logging for Initial Date filtering
This change fixes a bug in the server engine unit tests that
check the debug logs for Locate filtering on the Initial Date
attribute. Specifically, time.asctime does not use the default
'%d' notation for stringifying numerical day values. This change
updates the string notation to match the format produced by
time.asctime.

Impacts #572
2019-08-09 11:04:42 -04:00
Peter Hamilton
942d55cca9 Add OperationPolicyName filtering support for Locate
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects based on the object's Operation
Policy Name. Unit tests and integration tests have been added to
test and verify the correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support Operation Policy Name filtering. Simply use the
"--operation-policy-name" flag to specify an Operation Policy Name
string value for the Locate script to filter on.
2019-08-01 09:06:09 -04:00
Peter Hamilton
9e95d14e08 Add UniqueIdentifier filtering support for the Locate operation
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects based on the object's Unique
Identifier. Unit tests and integration tests have been added to
test and verify the correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support Unique Identifier filtering. Simply use the
"--unique-identifier" flag to specify a Unique Identifier string
value for the Locate script to filter on.
2019-07-31 16:30:47 -04:00
Peter Hamilton
6dcae13c5b Add CryptographicLength filtering support for the Locate operation
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects based on the object's
Cryptographic Length. If an object's type does not support the
Cryptographic Length attribute, the object is not a match. Unit
tests and integration tests have been added to test and verify
the correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support Cryptographic Length filtering. Simply use the
"--cryptographic-length" flag to specify a Cryptographic Length
integer value for the Locate script to filter on.
2019-07-31 13:12:43 -04:00
Peter Hamilton
bf518c8393 Add CryptographicAlgorithm filtering support for Locate
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects based on the object's
Cryptographic Algorithm. If an object's type does not support the
Cryptographic Algorithm attribute, that object is not a match.
Unit tests and integration tests have been added to test and
verify the correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support Cryptographic Algorithm filtering. Simply use the
"--cryptographic-algorithm" flag to specify a Cryptographic
Algorithm enumeration for the Locate script to filter on.
2019-07-31 09:41:48 -04:00
Peter Hamilton
d74b394261 Add ObjectType filtering support for the Locate operation
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects based on the object's Object Type.
Unit tests and integration tests have been added to test and verify
the correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support Object Type filtering. Simply use the "--object-type" flag
to specify an Object Type enumeration for the Locate script to
filter on.
2019-07-30 18:08:46 -04:00
Peter Hamilton
e5de55c0a8 Add State filtering support for the Locate operation
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects based on the object's State. Unit
tests and integration tests have been added to test and verify the
correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support State filtering. Simply use the "--state" flag to specify
a State enumeration for the Locate script to filter on.
2019-07-26 18:10:20 -04:00
Peter Hamilton
da284e932b Add InitialDate filtering support for the Locate operation
This change updates Locate operation support in the PyKMIP server,
allowing users to filter objects based on the objects InitialDate
attribute value. Specifying a single InitialDate attribute in the
Locate request will perform an exact match on objects; specifying
two InitialDate attributes will perform a ranged match. Unit tests
and integration tests have been added to test and verify the
correctness of this feature.

Additionally, the Locate demo scripts have also been updated to
support InitialDate filtering. Simply use the "--initial-date"
flag to provide one or more InitialDate values to the Locate
script to filter on those dates.
2019-07-26 16:31:37 -04:00
Peter Hamilton
df93c2f6e4 Fix Locate attribute handling for KMIP 2.0 clients
This change loosens the constraints on including attributes in
Locate messages for KMIP 2.0 clients. An early version of the KMIP
2.0 specification made attributes a required field for the Locate
payloads, breaking backwards compatibility with earlier versions
of the specification. A newer version of KMIP 2.0 reverses this
change. The library has been updated to reflect this newer version
of the specification. All relevant Locate unit tests have been
modified or removed to reflect this change.

Fixes #556
2019-06-21 15:36:36 -04:00
Peter Hamilton
8fb05bd848 Fully enable KMIP 2.0 support for the server
This changes adds all of the final core updates necessary to allow
KMIP 2.0 message encoding/decoding support for the PyKMIP server.
Request and responses now dynamically adjust the KMIP version they
encode/decode under based on the KMIP version included in their
header segments. Extra server logging has also been added to show
the KMIP version specified by the client request.

Message tests have been updated to reflect these changes.
2019-06-18 09:02:10 -04:00
Peter Hamilton
9fac723b2e Update the server to nominally support KMIP 2.0 2019-06-17 13:09:48 -04:00
Peter Hamilton
ffe5d7a86c Updating the Register payloads to properly use protection masks
This change updates the Register payloads to properly use the new
ProtectionStorageMasks structure. Unit tests have been updated to
reflect this change.
2019-05-10 16:08:09 -04:00
Peter Hamilton
bc4e4e38bd Updating the Create payloads to properly use protection masks
This change updates the Create payloads to properly use the new
ProtectionStorageMasks structure. Unit tests have been updated to
reflect this change.
2019-05-10 15:27:04 -04:00
Peter Hamilton
7280ccb1eb Update the CreateKeyPair payloads to support protection masks
This change updates the CreateKeyPair payloads to support the new
protection storage masks fields introduced in KMIP 2.0. The payload
unit tests have been updated to reflect these changes.
2019-05-10 14:20:53 -04:00
Peter Hamilton
3b7d9bc21f Update the ResponseHeader to support the server hashed password
This change updates the ResponseHeader to support the new server
hashed password field added in KMIP 2.0. Unit tests have been
added to cover the change.
2019-05-10 09:22:20 -04:00
Peter Hamilton
4a9690165a Update the RequestBatchItem to support the ephemeral field
This change updates the RequestBatchItem to support the new
ephemeral field added in KMIP 2.0. Unit tests have been added to
cover the change.
2019-05-09 12:23:13 -04:00
Peter Hamilton
cd16b20a6b Add support for the ProtectionStorageMasks structure
This change adds support for the ProtectionStorageMasks structure
which is a new addition in KMIP 2.0. A unit test suite has been
added for the new structure.
2019-05-03 16:48:07 -04:00
Peter Hamilton
b4c3980da0 Update the Query payloads to rename Protection Storage Masks
This change makes a simple renaming update to the Query response
payload, correcting how Protection Storage Masks are used and
referenced. All related unit tests have been updated to reflect
this change.
2019-05-03 12:03:16 -04:00
Peter Hamilton
a2712e7541 Update the Register payloads to support Protection Storage Masks
This change updates the Register payloads, adding support for
Protection Storage Masks which were added in KMIP 2.0. The
payload unit tests have been updated to reflect this change.
2019-05-03 09:35:42 -04:00
Peter Hamilton
cc4c1775d1 Update the Create payloads to support Protection Storage Masks
This change updates the Create payloads, adding support for
Protection Storage Masks which were added in KMIP 2.0. The
payload unit tests have been updated to reflect this change.
2019-04-30 15:51:17 -04:00
Peter Hamilton
b51c5b044b Update the Query payloads to support KMIP 2.0
This change updates the Query payloads to support KMIP 2.0, adding
in new response components including server default information
and storage protection masks. Unit tests have been added and
updated to cover these changes.
2019-04-23 18:33:15 -04:00
Peter Hamilton
314dd8761e Update the Query payloads
This change upgrades the Query payloads, fixing error messages,
comments, local variables, and internal payload structure to
bring Query support up to KMIP 1.4 standards, in addition to
compliance with the current payload format. The corresponding
unit test suite has been completely rewritten to reflect these
changes.

This change prepares the Query payloads for future updates to
support KMIP 2.0.
2019-04-23 10:00:46 -04:00
Peter Hamilton
b968378eb8 Add the CapabilityInformation structure
This change adds the CapabilityInformation structure, a KMIP 1.3
addition that is used to specify details on capabilities supported
by a KMIP server. A unit test suite is included to cover the new
structure.
2019-04-19 14:06:33 -04:00
Peter Hamilton
a778aa4224 Add the ValidationInformation structure
This change adds the ValidationInformation structure, a KMIP 1.3
addition that is used to specify details on formal validation
methods supported by a KMIP server. A unit test suite is included
to cover the new structure.
2019-04-19 08:37:10 -04:00
Peter Hamilton
b68312119f Add the ProfileInformation structure
This change adds the ProfileInformation structure, a KMIP 1.3
addition that is used to specify details for supported KMIP
profiles. A unit test suite is included to cover the new
structure.
2019-04-15 14:02:43 -04:00
Peter Hamilton
4b19fc81a3 Add the RNGParameters structure
This change adds the RNGParameters structure, a KMIP 1.3 addition
that is used to specify parameters and settings associated with a
specific random number generator. A unit test suite is included
to cover the new structure.
2019-04-12 17:29:25 -04:00
Peter Hamilton
01b724b4e2 Add the DefaultsInformation structure
This change adds the DefaultsInformation structure, a KMIP 2.0
addition that is used to specify default attribute values for
KMIP managed objects. A unit test suite is included to cover the
new structure.
2019-04-12 09:18:26 -04:00
Peter Hamilton
dae68f7e46 Add the ObjectDefaults structure
This change adds the ObjectDefaults structure, a KMIP 2.0 addition
that is used to specify default attribute values for KMIP managed
objects. A unit test suite is included to cover the new structure.
2019-04-09 15:09:56 -04:00
Peter Hamilton
790abc85cb Update the GetAttributeList payloads to support KMIP 2.0
This change updates the GetAttributeList payloads to support KMIP
2.0 features, including swapping out Attribute Names for the
Attribute Reference structure in the response payload. Unit tests
have been added to cover these changes.
2019-04-05 15:07:18 -04:00