a974b7bebe67a52d724730b4fd1c085b8b15a59d
[platform/framework/native/appfw.git] / inc / FSecPkcsIAlgorithmParameters.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file                FSecPkcsIAlgorithmParameters.h
20  * @brief               This is the header file for the %IAlgorithmParameters interface.
21  *
22  * This header file contains the declarations of the %IAlgorithmParameters interface.
23  */
24
25 #ifndef _FSEC_PKCS_IALGORITHM_PARAMETERS_H_
26 #define _FSEC_PKCS_IALGORITHM_PARAMETERS_H_
27
28 #include <FSecPkcsTypes.h>
29
30 namespace Tizen { namespace Security { namespace Pkcs
31 {
32
33 /**
34  * @interface   IAlgorithmParameters
35  * @brief               This interface is an interface class for cryptographic algorithm parameters such as IV, etc. It provides the generic
36  *                                      functionalities that must be supported by all derived algorithm parameters such PbKdf2Parameters, PbEs2Parameters.
37  *
38  * @since               2.1
39  *
40  * The %IAlgorithmParameters interface is an interface class for cryptographic algorithm parameters such as IV, etc. It provides the generic
41  *                                      functionalities that must be supported by all derived algorithm parameters such PbKdf2Parameters, PbEs2Parameters.
42  *                                      This is an abstract class and hence, object of this class cannot be instantiated.
43  *
44  */
45
46 class _OSP_EXPORT_ IAlgorithmParameters
47 {
48 public:
49         /**
50          * This polymorphic destructor should be overridden if required. This way, @n
51          * the destructors of the derived classes are called when the destructor of this interface is called.
52          *
53          * @since               2.1
54          */
55         virtual ~IAlgorithmParameters(void) {}
56
57         /**
58          * Gets the copy of parameters of the specified algorithm type.
59          *
60          * @since                       2.1
61          *
62          * @return              Pointer to AlgorithmParameters, containing the instance of algorithm parameter , @n
63          *                                              else @c null if an error occurs
64          * @remarks             The specific error code can be accessed using the GetLastResult() method.
65          */
66         virtual IAlgorithmParameters* CloneN(void) const = 0;
67
68         /**
69          * Gets the PKCS algorithm parameter type enumerated value.
70          *
71          * @since                       2.1
72          *
73          * @return              PkcsAlgorithmParamterType, containing the enumerated value of PkcsAlgorithmParameterType
74          *
75          */
76         virtual PkcsAlgorithmParameterType GetType(void) const = 0;
77
78
79 protected:
80         //
81         // This method is for internal use only. Using this method can cause behavioral, security-related,
82         // and consistency-related issues in the application.
83         //
84         // This method is reserved and may change its name at any time without prior notice.
85         //
86         // @since       2.1
87         //
88         virtual void IAlgorithmParameters_Reserved1(void) {}
89
90         //
91         // This method is for internal use only. Using this method can cause behavioral, security-related,
92         // and consistency-related issues in the application.
93         //
94         // This method is reserved and may change its name at any time without prior notice.
95         //
96         // @since       2.1
97         //
98         virtual void IAlgorithmParameters_Reserved2(void) {}
99
100         //
101         // This method is for internal use only. Using this method can cause behavioral, security-related,
102         // and consistency-related issues in the application.
103         //
104         // This method is reserved and may change its name at any time without prior notice.
105         //
106         // @since       2.1
107         //
108         virtual void IAlgorithmParameters_Reserved3(void) {}
109
110 }; // IAlgorithmParameters
111
112 } } } // Tizen::Security::Pkcs
113
114 #endif // _FSEC_PKCS_IAGORITHM_PARAMETERS_H_