platform/core/security/key-manager.git
8 months agoRelease 0.1.58.12 13/318913/1 accepted/tizen_7.0_unified tizen_7.0 accepted/tizen/7.0/unified/20241014.165021
Krzysztof Jackiewicz [Thu, 10 Oct 2024 10:08:29 +0000 (12:08 +0200)]
Release 0.1.58.12

* Add more 32 to 64bit migration issue tests
* Fix 32-bit/64-bit compatibility issue
* Add database 32/64-bit compatibility check
* Remove unused DataCommand&DataCommandHandler methods

Change-Id: I80d174a5a9f04b73f602fe6318ab8182d77f80df

8 months agoAdd more 32 to 64bit migration issue tests 12/318912/1
Jan Wojtkowski [Tue, 1 Oct 2024 13:52:33 +0000 (15:52 +0200)]
Add more 32 to 64bit migration issue tests

Change-Id: Ide0ed57a1c6aa905487b03063eff29c8719be863

8 months agoFix 32-bit/64-bit compatibility issue 11/318911/1
Krzysztof Jackiewicz [Fri, 27 Sep 2024 08:30:59 +0000 (10:30 +0200)]
Fix 32-bit/64-bit compatibility issue

Message serialization uses size_t to represent the size of the complete message
On 32-bit and 64-bit architecture this will produce buffers of different sizes:

MessageSerializer::Writer::Writer(size_t size)
{
    m_buffer.reserve(sizeof(size_t) + size);
    Serialization::Serialize(*this, size);
}

Message serialization is used to pack/unpack the binary data stored in the
database. See Store::unpack and Store::pack in SW and TZ backend.

To support both formats regardless of the architecture we have to detect the
format somehow.

* SW backend case

  32-bit (12 bytes):
  4B size(size_t) | 4B Enc. scheme | 4B data size(int) | ...

  64-bit (16 bytes)
  8B size(size_t)                  | 4B Enc. scheme | 4B data size(int) | ...

  Reading 32-bit data as 64-bit -> may get huge size value if encryption
  scheme > 0 leading to overflows.

  Reading 64-bit data as 32-bit -> will get 0 encryption scheme and 0B or 1B
  data size (depending on the scheme) and there will be at least 1B left in the
  buffer.

  To handle it, the packed buffer size must always be written and read as a
  32-bit number. If there is some data left in the buffer after the read, it
  means it's a 64-bit buffer and we have to re-read it using the 64-bit method.

* TZ backend case

  32-bit:
  4B size(size_t) | 4B Enc. scheme | 4B keyId size  | ...

  64-bit
  8B size(size_t)                  | 4B Enc. scheme | 4B keyId size | ...

  To handle it, the packed buffer size must always be written and read as a
  32-bit number. The keyId size is fixed (64B). If after deserialization the
  size is different, we can assume that it's a 64-bit format and we have to
  re-read it using 64-bit method.

Change-Id: I149bcf0691a56ccdbb8ddbe7106cca48f03d5614

8 months agoAdd database 32/64-bit compatibility check 10/318910/1
Jan Wojtkowski [Mon, 7 Oct 2024 12:35:41 +0000 (14:35 +0200)]
Add database 32/64-bit compatibility check

* Reading a 64bit database on 32bit architecture
  and reading a 32bit database on 64bit architecture
  should work after the fix

Change-Id: Ibe9b23fc0b9dcf374707822aa72b31cca2c31563

8 months agoRemove unused DataCommand&DataCommandHandler methods 09/318909/1
Daniel Kita [Fri, 20 Sep 2024 11:23:14 +0000 (13:23 +0200)]
Remove unused DataCommand&DataCommandHandler methods

Change-Id: I95874df17a9073dfd5430de2bb2fc961e97358ee

8 months agoRelease 0.1.58.11 08/318908/1
Krzysztof Jackiewicz [Wed, 25 Sep 2024 06:00:29 +0000 (08:00 +0200)]
Release 0.1.58.11

* Fix typo in ckmc-extended.h
* Add unit test for errorDump() for increased coverage
* Remove unused code
* Add unit tests for increased code coverage
* Reuse prepared sqlite3_stmt when possible
* Fix typo in doc
* Key-manager documentation enhancements for code.i
* Add efficiency test

Change-Id: I1bf92734ce24ed52ee7fa50c6a0eadd2c0c46fba

8 months agoFix typo in ckmc-extended.h 07/318907/1
Krzysztof Jackiewicz [Wed, 25 Sep 2024 05:59:07 +0000 (07:59 +0200)]
Fix typo in ckmc-extended.h

Change-Id: I4fa0d8a790e133330217cbed64ed105be0c393db

8 months agoAdd unit test for errorDump() for increased coverage 06/318906/1
Tomasz Swierczek [Tue, 17 Sep 2024 12:52:35 +0000 (14:52 +0200)]
Add unit test for errorDump() for increased coverage

Change-Id: I5e2d35e82d0a057db781a373cad57768183b32f7

8 months agoRemove unused code 05/318905/1
Tomasz Swierczek [Tue, 17 Sep 2024 12:42:10 +0000 (14:42 +0200)]
Remove unused code

Change-Id: Ic843e8e8512837e1aed3d6d8ef1a6cc2e9249308

8 months agoAdd unit tests for increased code coverage 04/318904/1
Tomasz Swierczek [Tue, 17 Sep 2024 10:40:05 +0000 (12:40 +0200)]
Add unit tests for increased code coverage

Change-Id: I5ac2ce309cf55e0d98220f3d4525cbb440ea0fc2

8 months agoReuse prepared sqlite3_stmt when possible 03/318903/1
Daniel Kita [Wed, 26 Jun 2024 15:34:16 +0000 (17:34 +0200)]
Reuse prepared sqlite3_stmt when possible

Efficiency test results (tested on 2024/08/13 tizen image on RPi4):
-Average insert statement preparation time: 7[µs]
-Average select statement preparation time: 4[µs]
-Average delete statement preparation time: 4[µs]
-Average insert statement preparation&execution time: 1811[µs]
-Average select statement preparation&execution time: 56[µs]
-Average delete statement preparation&execution time: 1481[µs]
-Average new insert statement preparation time: 20[µs]
-Average new select statement preparation time: 30[µs]
-Average new delete statement preparation time: 51[µs]

Each average was calculated on the basis of 100 measurements.

Change-Id: Iba3b14ef693837fbb0330c356c4438761dc6cb8c

8 months agoFix typo in doc 02/318902/1
Krzysztof Jackiewicz [Fri, 20 Sep 2024 06:15:17 +0000 (08:15 +0200)]
Fix typo in doc

Change-Id: Iddd2b8a7f2e4e6f2ea267bbda47a45d81340503e

8 months agoKey-manager documentation enhancements for code.i 01/318901/1
Jan Wojtkowski [Wed, 11 Sep 2024 13:23:36 +0000 (15:23 +0200)]
Key-manager documentation enhancements for code.i

Change-Id: I56823951ecd923a0a8aa21131e36149cca267fd4

8 months agoAdd efficiency test 00/318900/1
Daniel Kita [Fri, 9 Aug 2024 10:27:48 +0000 (12:27 +0200)]
Add efficiency test

Efficiency test results (tested on 2024/08/13 tizen image on RPi4):
-Average insert statement preparation time: 18[µs]
-Average select statement preparation time: 22[µs]
-Average delete statement preparation time: 44[µs]
-Average insert statement preparation&execution time: 1802[µs]
-Average select statement preparation&execution time: 81[µs]
-Average delete statement preparation&execution time: 1520[µs]

Each average was calculated on the basis of 100 measurements.

Change-Id: I256e515899b31a47d20ee9988253510b84794dfa

9 months agoRelease 0.1.58.10 accepted/tizen/7.0/unified/20240911.163908
Dariusz Michaluk [Tue, 10 Sep 2024 09:10:05 +0000 (11:10 +0200)]
Release 0.1.58.10

* Update PQC API comments

Change-Id: I032dd2e3bdab34e07b48844c2db1803970d9fdd4

9 months agoUpdate PQC API comments
Jakub Wlostowski [Wed, 4 Sep 2024 07:31:08 +0000 (09:31 +0200)]
Update PQC API comments

Change-Id: If37bedea064de53d4b45808faa64a1e54e9d5e5d

9 months agoRelease 0.1.58.9 accepted/tizen/7.0/unified/20240905.165637
Dariusz Michaluk [Tue, 6 Aug 2024 11:26:32 +0000 (13:26 +0200)]
Release 0.1.58.9

* Allow saving exportable public keys in TZ
* Ensure async thread join
* Allow adding new data types
* PQC API sw-backend implementation
* PQC API tz-backend implementation

Change-Id: I50cdbae9072e2817c1f40dff69788cb9a13bf485

9 months agoAdd ML-KEM derive hybrid tz-backend implementation
Dariusz Michaluk [Thu, 22 Aug 2024 11:44:31 +0000 (13:44 +0200)]
Add ML-KEM derive hybrid tz-backend implementation

Change-Id: I1b807e0fcef017c9ee8725230eb7430a49f74d39

9 months agoAdd ML-KEM (en/de)capsulation tz-backend implementation
Jan Wojtkowski [Thu, 1 Aug 2024 15:08:49 +0000 (17:08 +0200)]
Add ML-KEM (en/de)capsulation tz-backend implementation

Change-Id: Ibf4edadd8ef700030880edd27a0e41741b151c9b

9 months agoAdd ML-KEM keypair creation tz-backend implementation
Jan Wojtkowski [Fri, 19 Jul 2024 13:55:30 +0000 (15:55 +0200)]
Add ML-KEM keypair creation tz-backend implementation

Change-Id: If3d92ed99ff4dffd5cea930354b8463246880b8a

9 months agoAdd ML-KEM derive hybrid sw-backend implementation
Jan Wojtkowski [Fri, 19 Jul 2024 13:55:30 +0000 (15:55 +0200)]
Add ML-KEM derive hybrid sw-backend implementation

Change-Id: Ica9e6e6a778d293ff8d0ca66e06a3d2299ad6e64

9 months agoAdd ML-KEM (en/de)capsulation sw-backend implementation
Jan Wojtkowski [Thu, 27 Jun 2024 10:04:13 +0000 (12:04 +0200)]
Add ML-KEM (en/de)capsulation sw-backend implementation

Change-Id: I50f72fec57e89f8898ff904d94a77236f131506f

9 months agoAdd ML-KEM keypair creation sw-backend implementation
Jan Wojtkowski [Thu, 27 Jun 2024 10:04:13 +0000 (12:04 +0200)]
Add ML-KEM keypair creation sw-backend implementation

Change-Id: I9102452d64ef09b82b09aad0da287f247bad729e

9 months agoPQC API draft
Jan Wojtkowski [Thu, 27 Jun 2024 10:04:13 +0000 (12:04 +0200)]
PQC API draft

Change-Id: I6260b0d410e26af5c42c60a54c62c8b776822cd4

9 months agoAllow adding new data types
Jakub Wlostowski [Tue, 20 Aug 2024 09:49:11 +0000 (11:49 +0200)]
Allow adding new data types

Change-Id: I5416aa02045af3448c19c5c66a90ee0c2f165f04

9 months agoEnsure async thread join
Krzysztof Jackiewicz [Tue, 2 Jul 2024 12:59:59 +0000 (14:59 +0200)]
Ensure async thread join

ConnectionThread destructor calls EventFd::notify() which may throw. In
such case the thread will be destroyed before joining, which will
result in program termination. Make sure that the std::thread::join()
is called even if EventFd::notify throws.

Change-Id: Ieb5cbcf4440b2c9d22c2d30410fd2b9263070b2f

9 months agoAllow saving exportable public keys in TZ
Andrei Vakulich [Fri, 14 Jun 2024 13:13:40 +0000 (15:13 +0200)]
Allow saving exportable public keys in TZ

Save RSA and ECDSA keys in TZ if only private key is unexportable.
Save DSA key pair in TZ if only both keys are unexportable.

Change-Id: I2cfd6a22386e265a1bb65b3d3e0dfe052f5b0aaa

11 months agoRelease 0.1.58.8 49/313849/1 accepted/tizen/7.0/unified/20240703.011754
Dariusz Michaluk [Tue, 2 Jul 2024 11:44:08 +0000 (13:44 +0200)]
Release 0.1.58.8

* Protect concatenated data (un)wrapping
  with the keymanager.extended privilege

Change-Id: I3031197f509119ea1a351f4ed4ff7381eacd7f44

11 months agoProtect concatenated data (un)wrapping with the keymanager.extended privilege 48/313848/1
Filip Skrzeczkowski [Tue, 25 Jun 2024 14:24:28 +0000 (16:24 +0200)]
Protect concatenated data (un)wrapping with the keymanager.extended privilege

Create an additional socket for processing requests made with the
extended API and check the keymanager.extended privilege

Change-Id: Ic548d195012ab2d4fd8d5a888bf20c45602b8bd2

11 months agoRelease 0.1.58.7 97/313397/1 accepted/tizen/7.0/unified/20240626.161550
Dariusz Michaluk [Tue, 25 Jun 2024 09:19:19 +0000 (11:19 +0200)]
Release 0.1.58.7

* Remove double checking of key type
* Documentation improvement for Escrow Vault 2.0 support
* Add EXTENDED_MODULE defgroup in docs
* Rename client extended module

Change-Id: I9f067d0371cb241143b0bf91cd17c571901ceb44

11 months agoRename client extended module 96/313396/1
Filip Skrzeczkowski [Thu, 20 Jun 2024 10:30:51 +0000 (12:30 +0200)]
Rename client extended module

Change-Id: Iaf90c2081bd1e131b629c0dead037beb79df08ad

11 months agoAdd EXTENDED_MODULE defgroup in docs 95/313395/1
Filip Skrzeczkowski [Tue, 18 Jun 2024 10:59:40 +0000 (12:59 +0200)]
Add EXTENDED_MODULE defgroup in docs

Change-Id: I6e92dbeff5bc910f0bc9427babb7076e2a572d02

11 months agoDocumentation improvement for Escrow Vault 2.0 support 94/313394/1
Filip Skrzeczkowski [Fri, 14 Jun 2024 14:56:01 +0000 (16:56 +0200)]
Documentation improvement for Escrow Vault 2.0 support

The following changes in the CAPI documentation were made according
to requests made during the ACR approval process:
 - CAPI_KEY_MANAGER_CLIENT_EXTENDED_MODULE description
 - concatenated data (un)wrapping: code examples of memory handling
 - 3072 bit RSA clarification: minimum Tizen release

Change-Id: I095c088534e56d032041e46a263791877f1176e9

11 months agoRemove double checking of key type 93/313393/1
Dariusz Michaluk [Wed, 5 Jun 2024 11:11:18 +0000 (13:11 +0200)]
Remove double checking of key type

Change-Id: Iae2c23f0c8f8124d8c6cae843385cd8722019af8

12 months agoRelease 0.1.58.6 17/312317/1 accepted/tizen/7.0/unified/20240610.163828
Dariusz Michaluk [Thu, 6 Jun 2024 10:05:31 +0000 (12:05 +0200)]
Release 0.1.58.6

* Adjust coverage script after lcov upgrade
* Add RSA 3072 support
* Dont return aliases with only REMOVE permission
* Concatenated wrapping API & sw-backend & tz-backend implementation
* Allow using SHA384 & SHA512 with RSA OAEP

Change-Id: I78a9018590e80f9166565731d5d6fbcb6fc30cc1

12 months agoAllow using SHA384 & SHA512 with RSA OAEP 16/312316/1
Dariusz Michaluk [Thu, 9 May 2024 13:47:58 +0000 (15:47 +0200)]
Allow using SHA384 & SHA512 with RSA OAEP

Change-Id: I784c42ccd6d2cf8fb8452944e90d4234c299e121

12 months agoConcatenated wrapping tz-backend implementation 15/312315/1
Dariusz Michaluk [Fri, 10 May 2024 10:17:59 +0000 (12:17 +0200)]
Concatenated wrapping tz-backend implementation

Change-Id: I4e524f72b5cbc011c503f74172615e87e03fab18

12 months agoConcatenated wrapping sw-backend implementation 14/312314/1
Dariusz Michaluk [Fri, 19 Apr 2024 13:24:49 +0000 (15:24 +0200)]
Concatenated wrapping sw-backend implementation

Change-Id: I28856286c05c2ec1919674b0e7cf8add90cc20e1

12 months agoConcatenated wrapping API draft 13/312313/1
Dariusz Michaluk [Tue, 16 Apr 2024 14:44:36 +0000 (16:44 +0200)]
Concatenated wrapping API draft

Change-Id: Ie154b19b3c59727ec9bf5b8ece91ce9a549d2feb

12 months agoDont return aliases with only REMOVE permission 12/312312/1
Andrei Vakulich [Tue, 14 May 2024 08:36:45 +0000 (10:36 +0200)]
Dont return aliases with only REMOVE permission

Change-Id: I6558ff299deb5166ef90f2ba8191521d901f0a24

12 months agoAdd RSA 3072 support 11/312311/1
Jan Wojtkowski [Thu, 18 Apr 2024 10:32:32 +0000 (12:32 +0200)]
Add RSA 3072 support

Change-Id: Ic6616d1e67bc612f0f168f3d1d628b2f86689132

12 months agoAdd vscode settings to .gitignore 10/312310/1
Jan Wojtkowski [Thu, 18 Apr 2024 13:40:08 +0000 (15:40 +0200)]
Add vscode settings to .gitignore

Change-Id: Ic2d94c8cfc0de934ebe00774db6591c78625c46c

12 months agoAdjust coverage script after lcov upgrade 09/312309/1
Dariusz Michaluk [Fri, 5 Apr 2024 10:15:39 +0000 (12:15 +0200)]
Adjust coverage script after lcov upgrade

Change-Id: I8d03eb3e0fc2092fb99bf5bf90fd037f1a9c3fe2

14 months agoRelease 0.1.58.5 10/308210/1 accepted/tizen_6.5_unified tizen_6.5 accepted/tizen/6.5/unified/20240401.011503 accepted/tizen/7.0/unified/20240322.094845
Krzysztof Jackiewicz [Tue, 19 Mar 2024 19:30:49 +0000 (20:30 +0100)]
Release 0.1.58.5

* Revert "Fix AES GCM IV setting in KeyProvider"

Change-Id: I584b432d9b73d270410a2d923332ef9ee13b37e7

14 months agoRevert "Fix AES GCM IV setting in KeyProvider" 09/308209/1
Krzysztof Jackiewicz [Tue, 19 Mar 2024 19:28:10 +0000 (20:28 +0100)]
Revert "Fix AES GCM IV setting in KeyProvider"

This reverts commit cb384fdaca572cabf03210b3e5219713b33ab9bd.

Change-Id: I34692b47da5a53d3969be087802f962d9bb84ccb

15 months agoRelease 0.1.58.4 48/307248/1 accepted/tizen/7.0/unified/20240313.080102 accepted/tizen/7.0/unified/20240313.111059
Krzysztof Jackiewicz [Wed, 6 Mar 2024 09:08:49 +0000 (10:08 +0100)]
Release 0.1.58.4

* Exit with error when file lock is busy

Change-Id: Ic29fbe2543e4711c76c289cbc2a298f34af11f3a

15 months agoExit with error when file lock is busy 47/307247/1
Krzysztof Jackiewicz [Tue, 5 Mar 2024 08:56:15 +0000 (09:56 +0100)]
Exit with error when file lock is busy

Change-Id: Iee78ef372a3315c8eedbf80b0579508edb1c3843

20 months agoRelease 0.1.58.3 72/299872/1
Krzysztof Jackiewicz [Wed, 11 Oct 2023 08:56:41 +0000 (10:56 +0200)]
Release 0.1.58.3

* Serialize AES key size as int
* Scheme tests fix
* Fix AES GCM IV setting in KeyProvider

Change-Id: I1d381796433a452148c2e15a23aa52b66174b363

20 months agoSerialize AES key size as int 71/299871/1
Krzysztof Jackiewicz [Mon, 9 Oct 2023 07:42:02 +0000 (09:42 +0200)]
Serialize AES key size as int

It was converted to size_t at some point which led to errors on 64-bit
architectures.

Change-Id: Id905e9b06219642355050cfdb5a69d2cb2162ee7

20 months agoScheme tests fix 70/299870/1
Krzysztof Jackiewicz [Thu, 28 Sep 2023 09:42:26 +0000 (11:42 +0200)]
Scheme tests fix

Change-Id: I49b8fc6c24fde53e637e1431c2b49c9022249e66

20 months agoFix AES GCM IV setting in KeyProvider 69/299869/1
Krzysztof Jackiewicz [Fri, 29 Sep 2023 05:09:19 +0000 (07:09 +0200)]
Fix AES GCM IV setting in KeyProvider

The proper order of setting an IV of custom length in GCM is to firstly
pass the length and then the IV during both encryption and decryption.
The KeyProvider code was doing the opposite which resulted in
truncating the IV to 12B. In openssl3.0 The effect is somewhat
diffferent but the output is also invalid.

Openssl silently ignores this issue allowing to call the API in wrong
order and get invalid encryption/decryption results.

The issue was not detected until now because the IV truncation was
working the same way during encryption and decryption and no other
module beside key-manager was accessing the encrypted keys.

This commit modifies KeyProvider code in 2 ways:
* Modify encryption and decryption to set the IV length properly.
* If decryption fails retry it with IV truncated to 12B to handle data
  encrypted the old way.

Change-Id: I72e237b0842234d80579f3e93b5e1012a0613140

20 months agoRelease 0.1.58.2 52/299352/1 accepted/tizen/6.5/unified/20231013.130102 accepted/tizen/7.0/unified/20231005.155625
Krzysztof Jackiewicz [Tue, 26 Sep 2023 08:37:43 +0000 (10:37 +0200)]
Release 0.1.58.2

* Implement hash selection in RSA OAEP
* Prevent using public key for decryption
* Specify the RSA OAEP encryption padding
* Check mandatory KBKFD params in TZ

Change-Id: I05527d23f175ffd21cd3639a414b65ccec776373

20 months agoImplement hash selection in RSA OAEP 51/299351/1
Krzysztof Jackiewicz [Fri, 22 Sep 2023 09:34:00 +0000 (11:34 +0200)]
Implement hash selection in RSA OAEP

SW and TZ backend implementation
Unit-tests included

Change-Id: I6efd8a0477fe3137491c889d0c70eabc0d861097

20 months agoPrevent using public key for decryption 50/299350/1
Krzysztof Jackiewicz [Wed, 20 Sep 2023 10:57:56 +0000 (12:57 +0200)]
Prevent using public key for decryption

We could leave it for backends but since we have all the info, let's
fail early.

Change-Id: I7d3257370124ad19d423b859f380ce60f6da4d95

20 months agoSpecify the RSA OAEP encryption padding 49/299349/1
Krzysztof Jackiewicz [Wed, 20 Sep 2023 09:52:25 +0000 (11:52 +0200)]
Specify the RSA OAEP encryption padding

Change-Id: I88abe53b11230121f594728abf64c0cf1c38895f

20 months agoCheck mandatory KBKFD params in TZ 48/299348/1
Krzysztof Jackiewicz [Tue, 19 Sep 2023 12:56:06 +0000 (14:56 +0200)]
Check mandatory KBKFD params in TZ

Change-Id: I151207b55b1051ac3cc870c885a33b951331bc61

21 months agoRelease version 0.1.58.1 49/298749/1 accepted/tizen/6.5/unified/20230914.102333 accepted/tizen/7.0/unified/20230914.170404
Krzysztof Jackiewicz [Wed, 13 Sep 2023 06:22:37 +0000 (08:22 +0200)]
Release version 0.1.58.1

* Revert "Test proper GCM IV length handling"
* Revert "Fix GCM IV length setting"
* Revert "Workaround for GCM IV length issue"
* Don't use IVs shorter than 12B in tests
* Fix key-wrapping documentation
* Adjust scheme tests to TZ

Change-Id: Ifd889aeabb0ee70aa73531189c465b360e6eb052

21 months agoRevert "Test proper GCM IV length handling" 98/298698/2
Krzysztof Jackiewicz [Tue, 12 Sep 2023 10:36:35 +0000 (12:36 +0200)]
Revert "Test proper GCM IV length handling"

This reverts commit 61b910797b706b3e8494eb5841e4462bf1356125.

Change-Id: Ifb7e276f1dee253c606800049ef97aea5c3bec77

21 months agoRevert "Fix GCM IV length setting" 97/298697/2
Krzysztof Jackiewicz [Tue, 12 Sep 2023 10:36:11 +0000 (12:36 +0200)]
Revert "Fix GCM IV length setting"

This reverts commit 1e6e268703fc313a973f06581e21cf62c112e903.

Change-Id: Ibb87d42af732735413bdbffa9fadc15e7457eb59

21 months agoRevert "Workaround for GCM IV length issue" 96/298696/2
Krzysztof Jackiewicz [Tue, 12 Sep 2023 10:31:15 +0000 (12:31 +0200)]
Revert "Workaround for GCM IV length issue"

This reverts commit d6606535ac51bb3e574312106088f3f15843536e.

Change-Id: Iac1edf23290c19d0866f06138a31f6181093ba92

21 months agoDon't use IVs shorter than 12B in tests 08/298708/2
Krzysztof Jackiewicz [Tue, 12 Sep 2023 15:12:08 +0000 (17:12 +0200)]
Don't use IVs shorter than 12B in tests

Change-Id: I086fb913be53eeb0891a2a0a9013d768939f0b0a

21 months agoFix key-wrapping documentation 82/298682/1
Krzysztof Jackiewicz [Mon, 11 Sep 2023 12:03:30 +0000 (14:03 +0200)]
Fix key-wrapping documentation

Change-Id: I67d762c719e2fc1a7cae7f3537f69760fa9eef3f

21 months agoAdjust scheme tests to TZ 07/297207/2
Krzysztof Jackiewicz [Fri, 11 Aug 2023 11:29:45 +0000 (13:29 +0200)]
Adjust scheme tests to TZ

TZ does not support saving asymmetric keys with password.

Change-Id: Ia6ec92b610908a52079d2f22f32a9387237faee7

21 months agoRelease 0.1.58 09/297509/1 accepted/tizen/6.5/unified/20230822.101627 accepted/tizen/7.0/unified/20230822.163532 accepted/tizen/8.0/unified/20231005.093640 accepted/tizen/unified/20230822.043339
Dongsun Lee [Mon, 21 Aug 2023 06:41:03 +0000 (15:41 +0900)]
Release 0.1.58

* Add compiler flags for build warnings
* Check RSA padding in TZ
* Check KBKDF parameters on key-manager side
* Pass password to CMD_GET_DATA_SIZE
* Pass public key curve info to TZ's ECDH
* Use default CTR length in TZ encryption

Change-Id: Ibe2928a9b18bba49764a9779eaed1712b9bf5b36

21 months agoSet initial values to remove build warnings 87/297487/1
Dongsun Lee [Mon, 21 Aug 2023 01:16:45 +0000 (10:16 +0900)]
Set initial values to remove build warnings

Change-Id: Icf793bed432aeb72de8471bd770feb9326450936

22 months agoCheck RSA padding in TZ 36/297136/2
Krzysztof Jackiewicz [Thu, 10 Aug 2023 18:27:44 +0000 (20:27 +0200)]
Check RSA padding in TZ

The only supported padding method is PKCS1

Change-Id: I3cd769d68f67b3ee2afb959bca2e74db8e6295c4

22 months agoCheck KBKDF parameters on key-manager side 62/297062/3
Krzysztof Jackiewicz [Wed, 9 Aug 2023 15:39:38 +0000 (17:39 +0200)]
Check KBKDF parameters on key-manager side

Change-Id: I1afb107d6fd286f5524561c1631ef65c2043f3c2

22 months agoPass password to CMD_GET_DATA_SIZE 61/297061/2
Krzysztof Jackiewicz [Wed, 9 Aug 2023 15:31:21 +0000 (17:31 +0200)]
Pass password to CMD_GET_DATA_SIZE

In case of encrypted objects the password may be necessary do get the
actual size.

Change-Id: I5636325a8a120c0226ab5cc06ddef2aa05b96992

22 months agoPass public key curve info to TZ's ECDH 60/297060/2
Krzysztof Jackiewicz [Wed, 9 Aug 2023 15:26:24 +0000 (17:26 +0200)]
Pass public key curve info to TZ's ECDH

This is needed to compare curve with private EC curve in TZ.

Change-Id: I5c42b7395683bd14c391415537e31efc3dcb6fc4

22 months agoUse default CTR length in TZ encryption 94/296994/2
Krzysztof Jackiewicz [Tue, 8 Aug 2023 15:00:00 +0000 (17:00 +0200)]
Use default CTR length in TZ encryption

According to API documentation the counter length parameter is optional.
TZ implementation should not assume its existence.

Change-Id: I89ef3b78e95f2a3a8c79688ee21c9d04a43a5116

22 months agoRelease 0.1.57 76/296776/1 accepted/tizen/6.5/unified/20230809.042946 accepted/tizen/7.0/unified/20230808.172155 accepted/tizen/unified/20230808.170151
Krzysztof Jackiewicz [Fri, 4 Aug 2023 06:18:40 +0000 (08:18 +0200)]
Release 0.1.57

* Deserialize tags only if password was given
* Add context cleanup command for TZ
* Fix bugs during exporting a wrapped key
* Use default tag length for wrapping if not given
* Allow only symmetric key wraping/unwrapping
* Add type parameter to "get" commands
* Call TA to get the max chunk size
* Pass key length to KBKDF in TZ backend
* Fix secret pwd passing in TZ backend KBKDF

Change-Id: Ia17f64eacf32400ef0f53c0d2cf82ceb1c07e45c

22 months agoDeserialize tags only if password was given 15/296715/1
Krzysztof Jackiewicz [Thu, 3 Aug 2023 08:55:48 +0000 (10:55 +0200)]
Deserialize tags only if password was given

Change-Id: I1c598e17740785e4bd49edc120b6844ebe65e88a

22 months agoAdd context cleanup command for TZ 92/296592/1
Krzysztof Jackiewicz [Tue, 1 Aug 2023 13:26:47 +0000 (15:26 +0200)]
Add context cleanup command for TZ

If encryption fails and the "finalize" is not called the context will
not removed on TA side. Fix it by adding new command.

Change-Id: Id6bfb6821ba2c83565eb79d825fa98c096a346fc

22 months agoFix bugs during exporting a wrapped key 97/296497/1
Dongsun Lee [Sat, 29 Jul 2023 07:26:10 +0000 (16:26 +0900)]
Fix bugs during exporting a wrapped key

- generous output size check
- enlarged encryption overhead for RSA
- use type of wrap to key

Change-Id: I64367edf00d58e67df62a682a05c58dae5e2327b

22 months agoUse default tag length for wrapping if not given 75/296475/1
Krzysztof Jackiewicz [Fri, 28 Jul 2023 11:13:19 +0000 (13:13 +0200)]
Use default tag length for wrapping if not given

Change-Id: I2ad6e13383621522af2de8500814f6d01868c828

22 months agoAllow only symmetric key wraping/unwrapping 61/296261/2
Krzysztof Jackiewicz [Mon, 24 Jul 2023 10:59:40 +0000 (12:59 +0200)]
Allow only symmetric key wraping/unwrapping

Change-Id: I36549b09d891d0d3e34667c71aa0294389441f76

22 months agoAdd type parameter to "get" commands 59/296259/3
Krzysztof Jackiewicz [Mon, 24 Jul 2023 10:44:00 +0000 (12:44 +0200)]
Add type parameter to "get" commands

CMD_GET_DATA
CMD_GET_DATA_SIZE
CMD_EXPORT_WRAPPED_KEY

This may be necessary if data is encrypted.

Change-Id: Ie34d33c11e9c55958cb44adcb0bf5371c36e8a68

22 months agoCall TA to get the max chunk size 51/296251/4
Krzysztof Jackiewicz [Mon, 24 Jul 2023 09:42:18 +0000 (11:42 +0200)]
Call TA to get the max chunk size

Change-Id: Iec297646564b0a49d2966fcec1ec922bac1b7615

22 months agoPass key length to KBKDF in TZ backend 50/296150/2
Krzysztof Jackiewicz [Thu, 20 Jul 2023 12:20:20 +0000 (14:20 +0200)]
Pass key length to KBKDF in TZ backend

Change-Id: I5cd90b8754b7aa89371e515ffac79cd35c9b5004

22 months agoFix secret pwd passing in TZ backend KBKDF 49/296149/2
Krzysztof Jackiewicz [Thu, 20 Jul 2023 12:05:22 +0000 (14:05 +0200)]
Fix secret pwd passing in TZ backend KBKDF

Change-Id: I6f1a4d588a6a0679b88f967fdbc71b436329153f

23 months agoRelease 0.1.56 72/295872/1 accepted/tizen/6.5/unified/20230717.164352 accepted/tizen/7.0/unified/20230717.162659 accepted/tizen/unified/20230718.162136
Krzysztof Jackiewicz [Fri, 14 Jul 2023 12:39:59 +0000 (14:39 +0200)]
Release 0.1.56

* Documentation fixes
* Retrieve TZ raw key data only when needed
* Reserve enough space for GCM tag in TZ backend
* Use proper memory type in TZ backend's addGcmAAD()

Change-Id: I38b89ee3a76a62420f148a2dd836d7ffe1d1072d

23 months agoDocumentation fixes 54/295754/1
Krzysztof Jackiewicz [Thu, 13 Jul 2023 07:55:15 +0000 (09:55 +0200)]
Documentation fixes

* Do not use @see inside other tags
* Add missing parenthesis

Change-Id: I4b7492eb410c6f510b6848689faf622dd0b8dc5b

23 months agoRetrieve TZ raw key data only when needed 84/295684/1
Krzysztof Jackiewicz [Wed, 12 Jul 2023 08:59:31 +0000 (10:59 +0200)]
Retrieve TZ raw key data only when needed

Change-Id: Ia1ef537b9696e39c53c1f4972f96ead4cb0fb81a

23 months agoReserve enough space for GCM tag in TZ backend 51/295651/2
Krzysztof Jackiewicz [Wed, 12 Jul 2023 06:58:38 +0000 (08:58 +0200)]
Reserve enough space for GCM tag in TZ backend

Change-Id: I36f9718cfdc37f7fdac1e47fc056aeaabdeee242

23 months agoUse proper memory type in TZ backend's addGcmAAD() 02/295602/2
Krzysztof Jackiewicz [Tue, 11 Jul 2023 11:05:27 +0000 (13:05 +0200)]
Use proper memory type in TZ backend's addGcmAAD()

We need TEEC_VALUE_INOUT to properly read the return code from
op.params[0].value.a.

Change-Id: I95eb5fd757f9e3235bb855269dd0a804ac7bb135

23 months agoRelease 0.1.55 96/295596/2 accepted/tizen/unified/dev/20230726.115846
Krzysztof Jackiewicz [Tue, 11 Jul 2023 10:07:18 +0000 (12:07 +0200)]
Release 0.1.55

* Fix TZ backend issues
* Fixed the build error using gcc 13
* Modify decider logic
* Allow EC keys to be imported to TZ backend

Change-Id: I409287a6d1b9f14deb34041dcce904bcbb43f7ba

23 months agoFix TZ backend issues 48/295548/2
Krzysztof Jackiewicz [Mon, 10 Jul 2023 15:31:33 +0000 (17:31 +0200)]
Fix TZ backend issues

* Add missing namespaces
* Include ctx.cpp in TZ source list
* Add missing operation id to internal TZ calls

Change-Id: I59e71b7af5a1c418f797e7d915b8a9d1fc456edf

23 months agoFixed the build error using gcc 13 08/295208/4
wchang kim [Mon, 3 Jul 2023 23:06:34 +0000 (08:06 +0900)]
Fixed the build error using gcc 13

Change-Id: I716b3be00e9e2015591af34b33031726fa1b5969

23 months agoModify decider logic 99/295199/3
Krzysztof Jackiewicz [Mon, 3 Jul 2023 11:59:21 +0000 (13:59 +0200)]
Modify decider logic

Allow importing of all types of asymmetric keys to TZ backend.

Add unit-test

Change-Id: Iebbd0d5f37b4568b8c2473cdfe178d1ddad85a86

23 months agoAllow EC keys to be imported to TZ backend 98/295198/2
Krzysztof Jackiewicz [Mon, 3 Jul 2023 12:32:23 +0000 (14:32 +0200)]
Allow EC keys to be imported to TZ backend

Change-Id: I54ab75a7d30817aea1054fd13b81f2519d0bdc13

23 months agoRelease 0.1.54 93/294993/1 accepted/tizen/6.0/unified/20230630.050042 accepted/tizen/6.5/unified/20230719.174754 accepted/tizen/7.0/unified/20230630.105250 accepted/tizen/unified/20230630.124050
Krzysztof Jackiewicz [Thu, 29 Jun 2023 08:32:17 +0000 (10:32 +0200)]
Release 0.1.54

* Implement public key extraction in TZ backend
* add ALGO_ECDSA_SV to MAX_KEY_SIZE in tz_backend
* Return proper error for wrong wrapped key type
* Update ckmc_import_wrapped_key description
* Add missing exception guard to C++ API
* Simplify serialization calls
* Fix wrong fuction name in the documentation
* Fix typo in ckmc-manager.h
* Enable -Wshadow and fix warnings

Change-Id: I1009a607df537d843cc59fa8148f4912262480cc

23 months agoImplement public key extraction in TZ backend 97/294897/3
Krzysztof Jackiewicz [Wed, 28 Jun 2023 08:21:21 +0000 (10:21 +0200)]
Implement public key extraction in TZ backend

Public keys are not secrets and there are scenarios like ECDH when they
have to be extracted in raw form. Exportability logic still applies.

* Separate the object id and the raw data in TZ backend objects.
* Rename function arguments to make their meaning more adequate.
* Use object id when making operations using given key or binary data.
* Return raw data only to CKMLogic via getBinary() method.
* Make getBinary() return an empty buffer for private and symmetric keys.
* Move m_type to AKey where it's used.

Change-Id: Idf6db51387d98f6560f0da18e2fc1d9bbc3abc4f

23 months agoadd ALGO_ECDSA_SV to MAX_KEY_SIZE in tz_backend 70/294970/2
Dongsun Lee [Thu, 29 Jun 2023 07:42:00 +0000 (16:42 +0900)]
add ALGO_ECDSA_SV to MAX_KEY_SIZE in tz_backend

Change-Id: I484312a778a8587d3197132e5182af8b842646ce

23 months agoReturn proper error for wrong wrapped key type 53/294853/1
Krzysztof Jackiewicz [Tue, 27 Jun 2023 15:00:29 +0000 (17:00 +0200)]
Return proper error for wrong wrapped key type

Change-Id: I72e888e9808865c9ac3178ec8821dbf79aad9fd5

23 months agoUpdate ckmc_import_wrapped_key description 47/294847/1
Krzysztof Jackiewicz [Tue, 27 Jun 2023 11:39:48 +0000 (13:39 +0200)]
Update ckmc_import_wrapped_key description

The remark allows passing a wrapped key without any type letting the
backend autodetect it. Current implementation in SW backend does not
support it. In case of TZ backend such autodetection would unnecessarily
complicate the code.

Since the feature is not actually needed, the value CKMC_KEY_NONE option
will be forbidden from now on.

Change-Id: I2396d03bd28b0eeef0a1e922029808061beb71c8

23 months agoAdd missing exception guard to C++ API 55/294655/1
Krzysztof Jackiewicz [Thu, 22 Jun 2023 09:04:18 +0000 (11:04 +0200)]
Add missing exception guard to C++ API

Change-Id: Ie9164be51dbea8cf8b6f1524808fbb8841c2f2bf

23 months agoSimplify serialization calls 19/294619/2
Krzysztof Jackiewicz [Tue, 13 Jun 2023 14:47:07 +0000 (16:47 +0200)]
Simplify serialization calls

Remove unnecessary casts and use type deduction.

Change-Id: I88d8ae4b8060a509984a6883289c4bb05a9c1015

23 months agoFix wrong fuction name in the documentation 20/294620/1
Krzysztof Jackiewicz [Wed, 21 Jun 2023 18:50:26 +0000 (20:50 +0200)]
Fix wrong fuction name in the documentation

Change-Id: Ib83d88de1d17bd32b86cd7c99b5dd12247d0aaf8

23 months agoFix typo in ckmc-manager.h 15/294615/1
Krzysztof Jackiewicz [Wed, 21 Jun 2023 15:16:19 +0000 (17:16 +0200)]
Fix typo in ckmc-manager.h

Change-Id: I76c95dcf4c32f3fc70abea680f757edd45676c07

23 months agoEnable -Wshadow and fix warnings 23/294523/4
Krzysztof Jackiewicz [Tue, 20 Jun 2023 15:52:03 +0000 (17:52 +0200)]
Enable -Wshadow and fix warnings

The flag is used in products an our code causes warnings/errors. Fix
existing code and enable the flag to detect possible errors in future.

Change-Id: I830696231f9a6f1b80d390f7bf3df4fff1814691