Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Security.SecureRepository / Tizen.Security.SecureRepository / Crypto / CipherParameters.cs
1 /*
2  *  Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License
15  */
16
17 using System;
18
19 namespace Tizen.Security.SecureRepository.Crypto
20 {
21     /// <summary>
22     /// A abstract class holding parameters for encryption and decryption.
23     /// </summary>
24     /// <since_tizen> 3 </since_tizen>
25     abstract public class CipherParameters
26     {
27         private SafeCipherParametersHandle _handle;
28
29         /// <summary>
30         /// Cipher algorithm type.
31         /// </summary>
32         /// <since_tizen> 3 </since_tizen>
33         public CipherAlgorithmType Algorithm
34         {
35             get
36             {
37                 return (CipherAlgorithmType)GetInteger(
38                     CipherParameterName.AlgorithmType);
39             }
40         }
41
42         // for inherited in internal only
43         internal CipherParameters()
44         {
45         }
46
47         internal CipherParameters(CipherAlgorithmType algorithm)
48         {
49             this._handle = new SafeCipherParametersHandle(algorithm);
50         }
51
52         internal void Add(CipherParameterName name, long value)
53         {
54             this._handle.SetInteger(name, value);
55         }
56
57         internal void Add(CipherParameterName name, byte[] value)
58         {
59             this._handle.SetBuffer(name, value);
60         }
61
62         internal long GetInteger(CipherParameterName name)
63         {
64             return this._handle.GetInteger(name);
65         }
66
67         internal byte[] GetBuffer(CipherParameterName name)
68         {
69             return this._handle.GetBuffer(name);
70         }
71
72         internal IntPtr Ptr
73         {
74             get { return this._handle.Ptr; }
75         }
76     }
77 }