Adjust changed design doc
authorKyungwook Tak <k.tak@samsung.com>
Fri, 19 Aug 2016 08:11:40 +0000 (17:11 +0900)
committerKyungwook Tak <k.tak@samsung.com>
Wed, 24 Aug 2016 01:22:45 +0000 (10:22 +0900)
class diagram can be checked in:
http://suprem.sec.samsung.net/confluence/display/TNET/%5B3%5D+Namespace%3A+Tizen.Security.SecureRepository

Change-Id: Ia7c6d852baafdc3cf5af2437a32ad98b3a768fc0
Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
13 files changed:
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Certificate.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/CertificateManager.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Crypto/CipherParameters.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Crypto/DsaSignatureParameters.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Crypto/EcdsaSignatureParameters.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Crypto/RsaSignatureParameters.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Crypto/SignatureAlgorithmType.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/DataManager.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/KeyManager.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Manager.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Pkcs12.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Pkcs12Manager.cs
Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/Policy.cs

index a3b9929..5e006de 100644 (file)
@@ -26,6 +26,20 @@ namespace Tizen.Security.SecureRepository
     public class Certificate : SafeHandle
     {
         /// <summary>
+        /// Load Certificate from the given file path.
+        /// </summary>
+        /// <param name="filePath">The path of certificate file to be loaded.</param>
+        static public Certificate Load(string filePath)
+        {
+            IntPtr ptr = new IntPtr();
+
+            int ret = Interop.CkmcTypes.LoadCertFromFile(filePath, out ptr);
+            Interop.CheckNThrowException(ret, "Failed to load Certificate. file=" + filePath);
+
+            return new Certificate(ptr);
+        }
+
+        /// <summary>
         /// A constructor of Certificate that takes the binary and its format.
         /// </summary>
         /// <param name="binary">The binary data of a certificate.</param>
index 15cf517..1ab0a26 100644 (file)
@@ -32,7 +32,7 @@ namespace Tizen.Security.SecureRepository
         /// If password of policy is provided in SaveCertificate(), the same password should be provided
         /// </param>
         /// <returns>A certificate specified by alias.</returns>
-        static public Certificate GetCertificate(string alias, string password)
+        static public Certificate Get(string alias, string password)
         {
             IntPtr ptr = new IntPtr();
 
@@ -46,7 +46,7 @@ namespace Tizen.Security.SecureRepository
         /// Gets all alias of certificates which the client can access.
         /// </summary>
         /// <returns>all alias of certificates which the client can access.</returns>
-        static public IEnumerable<string> GetCertificateAliases()
+        static public IEnumerable<string> GetAliases()
         {
             IntPtr ptr = new IntPtr();
             int ret = Interop.CkmcManager.GetCertAliasList(out ptr);
@@ -61,7 +61,7 @@ namespace Tizen.Security.SecureRepository
         /// <param name="alias">The name of a certificate to be stored.</param>
         /// <param name="cert">The certificate's binary value to be stored.</param>
         /// <param name="policy">The policy about how to store a certificate securely.</param>
-        static public void SaveCertificate(string alias, Certificate cert, Policy policy)
+        static public void Save(string alias, Certificate cert, Policy policy)
         {
             int ret = Interop.CkmcManager.SaveCert(alias, cert.ToCkmcCert(), policy.ToCkmcPolicy());
             Interop.CheckNThrowException(ret, "Failed to save certificate. alias=" + alias);
index bcb8da9..795dd96 100644 (file)
@@ -28,7 +28,7 @@ namespace Tizen.Security.SecureRepository.Crypto
         /// A constructor with algorithm
         /// </summary>
         /// <param name="algorithm">An algorithm that this parameters are prepared for.</param>
-        public CipherParameters(CipherAlgorithmType algorithm) : base(IntPtr.Zero, true)
+        protected CipherParameters(CipherAlgorithmType algorithm) : base(IntPtr.Zero, true)
         {
             IntPtr ptrParams;
             Interop.CkmcTypes.GenerateNewParam((int)algorithm, out ptrParams);
@@ -62,7 +62,7 @@ namespace Tizen.Security.SecureRepository.Crypto
         /// Gets integer parameter.
         /// </summary>
         /// <param name="name">Parameter name.</param>
-        protected long GetInteger(CipherParameterName name)
+        public long GetInteger(CipherParameterName name)
         {
             long value = 0;
             int ret = Interop.CkmcTypes.ParamListGetInteger(PtrCkmcParamList, (int)name, out value);
@@ -74,7 +74,7 @@ namespace Tizen.Security.SecureRepository.Crypto
         /// Gets byte array parameter.
         /// </summary>
         /// <param name="name">Parameter name.</param>
-        protected byte[] GetBuffer(CipherParameterName name)
+        public byte[] GetBuffer(CipherParameterName name)
         {
             IntPtr ptr = new IntPtr();
 
index 9b86468..4a8498f 100644 (file)
@@ -24,8 +24,7 @@ namespace Tizen.Security.SecureRepository.Crypto
         /// <summary>
         /// A default constructor
         /// </summary>
-        /// <remarks>The SignatureAlgorithmType in SignatureParameters is set to SignatureAlgorithmType.DsaSignature.</remarks>
-        public DsaSignatureParameters() : base(SignatureAlgorithmType.DsaSignature)
+        public DsaSignatureParameters() : base(SignatureAlgorithmType.Dsa)
         {
         }
     }
index faabcee..b8ea87e 100644 (file)
@@ -24,8 +24,7 @@ namespace Tizen.Security.SecureRepository.Crypto
         /// <summary>
         /// A default constructor
         /// </summary>
-        /// <remarks>The SignatureAlgorithmType in SignatureParameters is set to SignatureAlgorithmType.EcdsaSignature.</remarks>
-        public EcdsaSignatureParameters() : base(SignatureAlgorithmType.EcdsaSignature)
+        public EcdsaSignatureParameters() : base(SignatureAlgorithmType.Ecdsa)
         {
         }
     }
index 912870e..1db34d7 100644 (file)
@@ -24,9 +24,8 @@ namespace Tizen.Security.SecureRepository.Crypto
         /// <summary>
         /// A default constructor
         /// </summary>
-        /// <remarks>The SignatureAlgorithmType in SignatureParameters is set to SignatureAlgorithmType.RsaSignature.</remarks>
         /// <remarks>The RsaPadding is set to RsaPaddingAlgorithm.None.</remarks>
-        public RsaSignatureParameters() : base(SignatureAlgorithmType.RsaSignature)
+        public RsaSignatureParameters() : base(SignatureAlgorithmType.Rsa)
         {
         }
 
index a5ef15a..9eb81e5 100644 (file)
@@ -24,14 +24,14 @@ namespace Tizen.Security.SecureRepository.Crypto
         /// <summary>
         /// RSA signature algorithm
         /// </summary>
-        RsaSignature = 0x01,
+        Rsa = 0x01,
         /// <summary>
         /// DSA signature algorithm
         /// </summary>
-        DsaSignature,
+        Dsa,
         /// <summary>
         /// ECDSA signature algorithm
         /// </summary>
-        EcdsaSignature
+        Ecdsa
     }
 }
index 1a7aa46..5a09bb5 100644 (file)
@@ -32,7 +32,7 @@ namespace Tizen.Security.SecureRepository
         /// If password of policy is provided in SaveData(), the same password should be provided
         /// </param>
         /// <returns>data specified by alias.</returns>
-        static public byte[] GetData(string alias, string password)
+        static public byte[] Get(string alias, string password)
         {
             IntPtr ptr = new IntPtr();
 
@@ -46,7 +46,7 @@ namespace Tizen.Security.SecureRepository
         /// Gets all alias of data which the client can access.
         /// </summary>
         /// <returns>all alias of data which the client can access.</returns>
-        static public IEnumerable<string> GetDataAliases()
+        static public IEnumerable<string> GetAliases()
         {
             IntPtr ptr = new IntPtr();
             int ret = Interop.CkmcManager.GetDataAliasList(out ptr);
@@ -61,7 +61,7 @@ namespace Tizen.Security.SecureRepository
         /// <param name="alias">The name of data to be stored.</param>
         /// <param name="data">The binary value to be stored.</param>
         /// <param name="policy">The policy about how to store data securely.</param>
-        static public void SaveData(string alias, byte[] data, Policy policy)
+        static public void Save(string alias, byte[] data, Policy policy)
         {
             Interop.CkmcRawBuffer rawBuff = new Interop.CkmcRawBuffer(new PinnedObject(data), data.Length);
 
index c63f3b7..5077fcc 100644 (file)
@@ -32,7 +32,7 @@ namespace Tizen.Security.SecureRepository
         /// If password of policy is provided in SaveKey(), the same password should be provided
         /// </param>
         /// <returns>A key specified by alias.</returns>
-        static public Key GetKey(string alias, string password)
+        static public Key Get(string alias, string password)
         {
             IntPtr ptr = new IntPtr();
 
@@ -46,7 +46,7 @@ namespace Tizen.Security.SecureRepository
         /// Gets all alias of keys which the client can access.
         /// </summary>
         /// <returns>all alias of keys which the client can access.</returns>
-        static public IEnumerable<string> GetKeyAliases()
+        static public IEnumerable<string> GetAliases()
         {
             IntPtr ptr = new IntPtr();
             int ret = Interop.CkmcManager.GetKeyAliasList(out ptr);
@@ -63,7 +63,7 @@ namespace Tizen.Security.SecureRepository
         /// <param name="policy">The policy about how to store a key securely.</param>
         /// <remarks>Type in key may be set to KeyType.None as an input. Type is determined inside secure reposioty during storing keys.</remarks>
         /// <remarks>If password in policy is provided, the key is additionally encrypted with the password in policy.</remarks>
-        static public void SaveKey(string alias, Key key, Policy policy)
+        static public void Save(string alias, Key key, Policy policy)
         {
             int ret = Interop.CkmcManager.SaveKey(alias, key.ToCkmcKey(), policy.ToCkmcPolicy());
             Interop.CheckNThrowException(ret, "Failed to save Key. alias=" + alias);
@@ -78,7 +78,7 @@ namespace Tizen.Security.SecureRepository
         /// <param name="privateKeyPolicy">The policy about how to store a private key securely.</param>
         /// <param name="publicKeyPolicy">The policy about how to store a public key securely.</param>
         /// <remarks>If password in policy is provided, the key is additionally encrypted with the password in policy.</remarks>
-        static public void CreateKeyPairRsa(int size, string privateKeyAlias, string publicKeyAlias,
+        static public void CreateRsaKeyPair(int size, string privateKeyAlias, string publicKeyAlias,
                                             Policy privateKeyPolicy, Policy publicKeyPolicy)
         {
             int ret = Interop.CkmcManager.CreateKeyPairRsa(size, privateKeyAlias, publicKeyAlias,
@@ -95,7 +95,7 @@ namespace Tizen.Security.SecureRepository
         /// <param name="privateKeyPolicy">The policy about how to store a private key securely.</param>
         /// <param name="publicKeyPolicy">The policy about how to store a public key securely.</param>
         /// <remarks>If password in policy is provided, the key is additionally encrypted with the password in policy.</remarks>
-        static public void CreateKeyPairDsa(int size, string privateKeyAlias, string publicKeyAlias,
+        static public void CreateDsaKeyPair(int size, string privateKeyAlias, string publicKeyAlias,
                                             Policy privateKeyPolicy, Policy publicKeyPolicy)
         {
             int ret = Interop.CkmcManager.CreateKeyPairDsa(size, privateKeyAlias, publicKeyAlias,
@@ -112,7 +112,7 @@ namespace Tizen.Security.SecureRepository
         /// <param name="privateKeyPolicy">The policy about how to store a private key securely.</param>
         /// <param name="publicKeyPolicy">The policy about how to store a public key securely.</param>
         /// <remarks>If password in policy is provided, the key is additionally encrypted with the password in policy.</remarks>
-        static public void CreateKeyPairEcdsa(EllipticCurveType type, string privateKeyAlias, string publicKeyAlias,
+        static public void CreateEcdsaKeyPair(EllipticCurveType type, string privateKeyAlias, string publicKeyAlias,
                                     Policy privateKeyPolicy, Policy publicKeyPolicy)
         {
             int ret = Interop.CkmcManager.CreateKeyPairEcdsa((int)type, privateKeyAlias, publicKeyAlias,
@@ -127,7 +127,7 @@ namespace Tizen.Security.SecureRepository
         /// <param name="keyAlias">The name of key to be stored.</param>
         /// <param name="policy">The policy about how to store the key securely.</param>
         /// <remarks>If password in policy is provided, the key is additionally encrypted with the password in policy.</remarks>
-        static public void CreateKeyAes(int size, string keyAlias, Policy policy)
+        static public void CreateAesKey(int size, string keyAlias, Policy policy)
         {
             int ret = Interop.CkmcManager.CreateKeyAes(size, keyAlias, policy.ToCkmcPolicy());
             Interop.CheckNThrowException(ret, "Failed to AES Key");
index 20524ae..2e7a01a 100644 (file)
@@ -21,29 +21,26 @@ namespace Tizen.Security.SecureRepository
     /// </summary>
     public class Manager
     {
-        // ckmc_owner_id_separator
-        // ckmc_owner_id_system
-
         /// <summary>
-        /// Separator between alias and owner id.
+        /// Creates a new full alias which is concatenation of owner id and alias.
         /// </summary>
-        /// <remarks>
-        /// Alias can be provided as an alias alone, or together with owner id. 
-        /// In this case, separator " " (space bar) is used to separate id and alias.
-        /// </remarks>
-        public const string OwnerIdSeperator = " ";
+        /// <param name="ownerId">Data owner's id. This should be package id if data
+        /// owner is application. If you want to access data stored by system services,
+        /// use CreateFullSystemAlias() instead.</param>
+        /// <param name="alias">Data alias.</param>
+        static public string CreateFullAlias(string ownerId, string alias)
+        {
+            return ownerId + Manager.OwnerIdSeperator + alias;
+        }
 
         /// <summary>
-        /// The owner of system database.
+        /// Creates a new full alias which is concatenation of system service's owner id and alias.
         /// </summary>
-        /// <remarks>
-        /// SystemOwnerId constains id connected with all SYSTEM applications that run
-        /// with uid less than 5000.
-        /// Client should use SystemOwnerId to access data owned by system application
-        /// and stored in system database.
-        /// Note: Client must have permission to access proper row.
-        /// </remarks>
-        public const string SystemOwnerId = "/System";
+        /// <param name="alias">Data alias which is owned by system service.</param>
+        static public string CreateFullSystemAlias(string alias)
+        {
+            return Manager.CreateFullAlias(Manager.SystemOwnerId, alias);
+        }
 
         /// <summary>
         /// Removes a an entry (no matter of type) from the key manager.
@@ -70,5 +67,8 @@ namespace Tizen.Security.SecureRepository
             int ret = Interop.CkmcManager.SetPermission(alias, otherPackageId, permissions);
             Interop.CheckNThrowException(ret, "Failed to set permission. alias=" + alias);
         }
+
+        private const string OwnerIdSeperator = " ";
+        private const string SystemOwnerId = "/System";
     }
 }
index d693749..c6b7ce2 100644 (file)
@@ -28,12 +28,12 @@ namespace Tizen.Security.SecureRepository
     public class Pkcs12 : SafeHandle
     {
         /// <summary>
-        /// Creates a new Pkcs12from a given PKCS#12 file and returns it.
+        /// Load Pkcs12 from the given PKCS#12 file path.
         /// </summary>
         /// <param name="filePath">The path of PKCS12 file to be loaded.</param>
         /// <param name="filePassword">The passphrase used to decrypt the PCKS12 file.
         /// If PKCS12 file is not encrypted, passphrase can be null.</param>
-        static public Pkcs12 LoadPkcs12(string filePath, string filePassword)
+        static public Pkcs12 Load(string filePath, string filePassword)
         {
             IntPtr ptr = new IntPtr();
 
@@ -57,20 +57,6 @@ namespace Tizen.Security.SecureRepository
         }
 
         /// <summary>
-        /// A constructor of Key that takes a private key and its corresponding certicate.
-        /// </summary>
-        /// <param name="privateKey">A private key.</param>
-        /// <param name="certificate">A certificate corresponding the private key</param>
-        public Pkcs12(Key privateKey, Certificate certificate) : base(IntPtr.Zero, true)
-        {
-            this.SetHandle(IntPtr.Zero);
-
-            this.PrivateKey = privateKey;
-            this.Certificate = certificate;
-            this.CaChain = null;
-        }
-
-        /// <summary>
         /// A constructor of Key that takes a private key, its corresponding certicate, and CA's certificate chain.
         /// </summary>
         /// <param name="privateKey">A private key.</param>
index d52db23..e4ec008 100644 (file)
@@ -34,7 +34,7 @@ namespace Tizen.Security.SecureRepository
         /// If password of certificatePolicy is provided in SavePkcs12(), the same password should be provided
         /// </param>
         /// <returns>A Pkcs12 data specified by alias.</returns>
-        static public Pkcs12 GetPkcs12(string alias, string keyPassword, string cerificatePassword)
+        static public Pkcs12 Get(string alias, string keyPassword, string cerificatePassword)
         {
             IntPtr ptr = new IntPtr();
 
@@ -52,7 +52,7 @@ namespace Tizen.Security.SecureRepository
         /// <param name="pkcs12">The pkcs12 data to be stored.</param>
         /// <param name="keyPolicy">The policy about how to store pkcs's private key.</param>
         /// <param name="certificatePolicy">The policy about how to store pkcs's certificate.</param>
-        static public void SavePkcs12(string alias, Pkcs12 pkcs12, Policy keyPolicy, Policy certificatePolicy)
+        static public void Save(string alias, Pkcs12 pkcs12, Policy keyPolicy, Policy certificatePolicy)
         {
             int ret = Interop.CkmcManager.SavePkcs12(alias,
                                                      new PinnedObject(pkcs12.ToCkmcPkcs12()),
index c645c2a..c65532c 100644 (file)
@@ -35,28 +35,6 @@ namespace Tizen.Security.SecureRepository
         }
 
         /// <summary>
-        /// A constructor of Key that takes the flag for extractable.
-        /// </summary>
-        /// <param name="extractable">If true key may be extracted from secure repository.</param>
-        /// <remarks>The default value for Password is null.</remarks>
-        public Policy(bool extractable)
-        {
-            Password = null;
-            Extractable = extractable;
-        }
-
-        /// <summary>
-        /// A constructor of Key that takes the password.
-        /// </summary>
-        /// <param name="password">Used to encrypt data secure repository.</param>
-        /// <remarks>The default value for Extractabl is false.</remarks>
-        public Policy(String password)
-        {
-            Password = password;
-            Extractable = true;
-        }
-
-        /// <summary>
         /// A constructor of Key that takes the password and the flag for extractable.
         /// </summary>
         /// <param name="password">Used to encrypt data secure repository.</param>