Adding server.crypto package and initial API
This changes adds the kmip.services.server.crypto package and the initial API for the CryptographicEngine hierarchy.
This commit is contained in:
		
							
								
								
									
										14
									
								
								kmip/services/server/crypto/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								kmip/services/server/crypto/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | # Copyright (c) 2016 The Johns Hopkins University/Applied Physics Laboratory | ||||||
|  | # All Rights Reserved. | ||||||
|  | # | ||||||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); you may | ||||||
|  | # not use this file except in compliance with the License. You may obtain | ||||||
|  | # a copy of the License at | ||||||
|  | # | ||||||
|  | #    http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | # | ||||||
|  | # Unless required by applicable law or agreed to in writing, software | ||||||
|  | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||||||
|  | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||||||
|  | # License for the specific language governing permissions and limitations | ||||||
|  | # under the License. | ||||||
							
								
								
									
										68
									
								
								kmip/services/server/crypto/api.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								kmip/services/server/crypto/api.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,68 @@ | |||||||
|  | # Copyright (c) 2016 The Johns Hopkins University/Applied Physics Laboratory | ||||||
|  | # All Rights Reserved. | ||||||
|  | # | ||||||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); you may | ||||||
|  | # not use this file except in compliance with the License. You may obtain | ||||||
|  | # a copy of the License at | ||||||
|  | # | ||||||
|  | #    http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | # | ||||||
|  | # Unless required by applicable law or agreed to in writing, software | ||||||
|  | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||||||
|  | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||||||
|  | # License for the specific language governing permissions and limitations | ||||||
|  | # under the License. | ||||||
|  |  | ||||||
|  | from abc import ABCMeta | ||||||
|  | from abc import abstractmethod | ||||||
|  |  | ||||||
|  | import six | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @six.add_metaclass(ABCMeta) | ||||||
|  | class CryptographicEngine(object): | ||||||
|  |     """ | ||||||
|  |     The abstract base class of the cryptographic engine hierarchy. | ||||||
|  |  | ||||||
|  |     A cryptographic engine is responsible for generating all cryptographic | ||||||
|  |     objects and conducting all cryptographic operations for a KMIP server | ||||||
|  |     instance. | ||||||
|  |     """ | ||||||
|  |  | ||||||
|  |     @abstractmethod | ||||||
|  |     def create_symmetric_key(self, algorithm, length): | ||||||
|  |         """ | ||||||
|  |         Create a symmetric key. | ||||||
|  |  | ||||||
|  |         Args: | ||||||
|  |             algorithm(CryptographicAlgorithm): An enumeration specifying the | ||||||
|  |                 algorithm for which the created key will be compliant. | ||||||
|  |             length(int): The length of the key to be created. This value must | ||||||
|  |                 be compliant with the constraints of the provided algorithm. | ||||||
|  |  | ||||||
|  |         Returns: | ||||||
|  |             dict: A dictionary containing the key data, with the following | ||||||
|  |                 key/value fields: | ||||||
|  |                 * value - the bytes of the key | ||||||
|  |                 * format - a KeyFormatType enumeration for the bytes format | ||||||
|  |         """ | ||||||
|  |  | ||||||
|  |     @abstractmethod | ||||||
|  |     def create_asymmetric_key_pair(self, algorithm, length): | ||||||
|  |         """ | ||||||
|  |         Create an asymmetric key pair. | ||||||
|  |  | ||||||
|  |         Args: | ||||||
|  |             algorithm(CryptographicAlgorithm): An enumeration specifying the | ||||||
|  |                 algorithm for which the created keys will be compliant. | ||||||
|  |             length(int): The length of the keys to be created. This value must | ||||||
|  |                 be compliant with the constraints of the provided algorithm. | ||||||
|  |  | ||||||
|  |         Returns: | ||||||
|  |             dict: A dictionary containing the public key data, with the | ||||||
|  |                 following key/value fields: | ||||||
|  |                 * value - the bytes of the key | ||||||
|  |                 * format - a KeyFormatType enumeration for the bytes format | ||||||
|  |             dict: A dictionary containing the private key data, identical in | ||||||
|  |                 structure to the public key dictionary. | ||||||
|  |         """ | ||||||
		Reference in New Issue
	
	Block a user
	 Peter
					Peter