Page MenuHome GnuPG
Feed Advanced Search

Jan 15 2024

gniibe committed rC18e5c0d268b1: cipher: Put the original Kyber implementation. (authored by gniibe).
cipher: Put the original Kyber implementation.
Jan 15 2024, 6:09 AM
gniibe committed rCbdadd65d440b: cipher: Allow standalone use of SNTRUP761 implementation. (authored by gniibe).
cipher: Allow standalone use of SNTRUP761 implementation.
Jan 15 2024, 6:09 AM

Jan 8 2024

gniibe committed rCdbfb7cc76ef3: Avoid use of C99 feature for enum. (authored by gniibe).
Avoid use of C99 feature for enum.
Jan 8 2024, 5:47 AM

Jan 2 2024

gniibe added a comment to T6811: gpgv: Read-only trustedkeys.kbx should not be compressed.
Jan 2 2024, 7:55 AM · gnupg24 (gnupg-2.4.5), gnupg22, gpgv, Bug Report

Dec 29 2023

gniibe added a project to T6811: gpgv: Read-only trustedkeys.kbx should not be compressed: backport.

Bug is in 2.2, too.

Dec 29 2023, 3:04 AM · gnupg24 (gnupg-2.4.5), gnupg22, gpgv, Bug Report
gniibe renamed T6811: gpgv: Read-only trustedkeys.kbx should not be compressed from gpgv does not correctly fallback to trustedkeys.kbx to gpgv: Read-only trustedkeys.kbx should not be compressed.
Dec 29 2023, 3:04 AM · gnupg24 (gnupg-2.4.5), gnupg22, gpgv, Bug Report
gniibe committed rG591a53d716aa: gpg: Don't call keybox_compress when KEYDB_RESOURCE_FLAG_READONLY. (authored by gniibe).
gpg: Don't call keybox_compress when KEYDB_RESOURCE_FLAG_READONLY.
Dec 29 2023, 3:03 AM
gniibe changed the status of T6811: gpgv: Read-only trustedkeys.kbx should not be compressed from Open to Testing.

Fixed in rG591a53d716aa: gpg: Don't call keybox_compress when KEYDB_RESOURCE_FLAG_READONLY..

Dec 29 2023, 3:03 AM · gnupg24 (gnupg-2.4.5), gnupg22, gpgv, Bug Report
gniibe added a comment to T6811: gpgv: Read-only trustedkeys.kbx should not be compressed.

I found that the warning is emitted when it tries to call keybox_compress.
It should not be called when it's READONLY (which gpgv specifies).

Dec 29 2023, 2:56 AM · gnupg24 (gnupg-2.4.5), gnupg22, gpgv, Bug Report

Dec 28 2023

gniibe added projects to T4770: pinentry option no-global-grab: pinentry, Documentation.
Dec 28 2023, 6:25 AM · Documentation, pinentry
gniibe triaged T6910: pinentry: Possibly add pinentry-gtk with GTK 4, and Drop pinentry-gtk-2 as Wishlist priority.
Dec 28 2023, 6:13 AM

Dec 27 2023

gniibe committed rP6efd0951dcbb: Remove Windows CE support. (authored by gniibe).
Remove Windows CE support.
Dec 27 2023, 5:31 AM
gniibe committed rPae23c8b3dc33: doc: Address --no-global-grab limited support. (authored by gniibe).
doc: Address --no-global-grab limited support.
Dec 27 2023, 5:31 AM
gniibe committed rP78fe882aafc7: doc: Fix "i.e." with comma. (authored by gniibe).
doc: Fix "i.e." with comma.
Dec 27 2023, 5:31 AM
gniibe triaged T6909: pinentry: Drop pinentry-emacs support as Normal priority.
Dec 27 2023, 4:01 AM · Feature Request, pinentry, Emacs
gniibe closed T5109: Initial socket connection to server as Resolved.
Dec 27 2023, 1:43 AM · gnupg24, gnupg (gpg23)
gniibe changed the status of T6641: pinentry-tty & pinentry-curses breaks tty when timeout occurs or CTRL-C is pressed from Open to Testing.
Dec 27 2023, 1:33 AM · gnupg, pinentry
gniibe changed the status of T6737: libgpg-error: String filter should *NOT* be called with non-nul-terminated string from Open to Testing.
Dec 27 2023, 1:26 AM · gpgrt, Bug Report
gniibe changed the status of T6843: after enable kdf-setup impossible change user/admin pin from Open to Testing.

It would be good to apply this to 2.2, so adding "backport" tag.

Dec 27 2023, 1:25 AM · gnupg22, scd, yubikey

Dec 26 2023

gniibe lowered the priority of T6425: improve pinentry behavior and texts in smart card context from High to Normal.
Dec 26 2023, 7:17 AM · gnupg24 (gnupg-2.4.5), scd, Bug Report, Restricted Project
gniibe changed the status of T6425: improve pinentry behavior and texts in smart card context from Open to Testing.
Dec 26 2023, 7:17 AM · gnupg24 (gnupg-2.4.5), scd, Bug Report, Restricted Project
gniibe changed the status of T6425: improve pinentry behavior and texts in smart card context , a subtask of T6785: Kleopatra: Improvements related to smart cards, from Open to Testing.
Dec 26 2023, 7:17 AM · kleopatra
gniibe changed the status of T6734: gnupg: Use gpgrt_b64* API from Open to Testing.
Dec 26 2023, 7:09 AM · gnupg26
gniibe committed rG6ddaf2be9f48: common: Remove t-b64.c. (authored by gniibe).
common: Remove t-b64.c.
Dec 26 2023, 7:09 AM
gniibe closed T2440: scdaemon grabs card exclusively; it'd be nice if it didn't as Resolved.

GnuPG 2.2 and 2.4 now have --pcsc-shared option for a user who can control his action in detail.
So, closing this bug report.

Dec 26 2023, 7:00 AM · scd, gnupg, Feature Request
gniibe committed rG7cde533ce8ea: agent,kbx: Fix reliable_homedir_inotify (2/2). (authored by gniibe).
agent,kbx: Fix reliable_homedir_inotify (2/2).
Dec 26 2023, 5:37 AM
gniibe committed rGc44f0bc91e7c: agent,kbx: Fix reliable_homedir_inotify (1/2). (authored by gniibe).
agent,kbx: Fix reliable_homedir_inotify (1/2).
Dec 26 2023, 5:37 AM
gniibe triaged T6908: Windows: file watching to support things like inotify as Wishlist priority.
Dec 26 2023, 5:27 AM · gnupg, Windows

Dec 25 2023

gniibe changed the status of T6902: gpgconf: the questionable value 256 for flags in gpgrt_opt_t from Open to Testing.

Fixed in rG2be53b214d1c: tools: Fix argparse table of gpgconf..
It would be good to apply this to 2.2, so, adding "backport" tag.

Dec 25 2023, 2:11 AM · gnupg22 (gnupg-2.2.43), gnupg24 (gnupg-2.4.4)
gniibe committed rG2be53b214d1c: tools: Fix argparse table of gpgconf. (authored by gniibe).
tools: Fix argparse table of gpgconf.
Dec 25 2023, 2:11 AM

Dec 23 2023

gniibe claimed T6902: gpgconf: the questionable value 256 for flags in gpgrt_opt_t.
Dec 23 2023, 4:19 AM · gnupg22 (gnupg-2.2.43), gnupg24 (gnupg-2.4.4)

Dec 22 2023

gniibe committed rG2376cdff1318: scd:openpgp: Add the length check for new PIN. (authored by gniibe).
scd:openpgp: Add the length check for new PIN.
Dec 22 2023, 5:35 AM
gniibe edited projects for T6843: after enable kdf-setup impossible change user/admin pin, added: gnupg, scd; removed Support, Windows.

Thank you for the bug report. Although it's a corner case, it is a discrepancy in the implementation which results unrecoverable situation of the device.

Dec 22 2023, 3:44 AM · gnupg22, scd, yubikey
gniibe claimed T6843: after enable kdf-setup impossible change user/admin pin.
Dec 22 2023, 3:16 AM · gnupg22, scd, yubikey
gniibe awarded T6892: libgcrypt-1.10.3 build failure on x86 with -Og a Yellow Medal token.
Dec 22 2023, 3:02 AM · libgcrypt, Bug Report

Dec 21 2023

gniibe committed rG91255c3afd33: tools: Remove the dotlock tool. (authored by gniibe).
tools: Remove the dotlock tool.
Dec 21 2023, 4:38 AM
gniibe added a comment to T6692: agent: Clean up check_own_socket to monitor socket takeover.

I see the reason.

Dec 21 2023, 1:52 AM · keyboxd, gnupg26, gpgagent

Dec 20 2023

gniibe committed rG4dd4e9d2f1ac: agent: Fix homedir check wrt --disable-check-own-socket option. (authored by gniibe).
agent: Fix homedir check wrt --disable-check-own-socket option.
Dec 20 2023, 8:21 AM
gniibe committed rG93b5ba38dc3a: tools: Integrate the dotlock tool into gpgconf. (authored by gniibe).
tools: Integrate the dotlock tool into gpgconf.
Dec 20 2023, 3:08 AM
gniibe committed rGb298322d36d4: common: Clean up the temporary file at dotlock_destroy. (authored by gniibe).
common: Clean up the temporary file at dotlock_destroy.
Dec 20 2023, 3:08 AM
gniibe committed rG1f04993cd0ac: common: Add dotlock util under libexec. (authored by gniibe).
common: Add dotlock util under libexec.
Dec 20 2023, 3:08 AM
gniibe committed rG5488ad051742: common: Fix a possible resource leak for dotlock. (authored by gniibe).
common: Fix a possible resource leak for dotlock.
Dec 20 2023, 3:08 AM
gniibe committed rG2f6fec3f482d: common: Support not-removing the lockfile by dotlock_destroy. (authored by gniibe).
common: Support not-removing the lockfile by dotlock_destroy.
Dec 20 2023, 3:08 AM
gniibe created T6902: gpgconf: the questionable value 256 for flags in gpgrt_opt_t.
Dec 20 2023, 1:32 AM · gnupg22 (gnupg-2.2.43), gnupg24 (gnupg-2.4.4)

Dec 19 2023

gniibe committed rG6b4fd3a5da7e: common: Enhance dotlock, so that we can have a CLI util. (authored by gniibe).
common: Enhance dotlock, so that we can have a CLI util.
Dec 19 2023, 8:09 AM
gniibe committed rG1c5584c395d7: kbx: Create public-keys.d, after creating the homedir. (authored by gniibe).
kbx: Create public-keys.d, after creating the homedir.
Dec 19 2023, 8:09 AM
gniibe changed the status of T6892: libgcrypt-1.10.3 build failure on x86 with -Og from Open to Testing.
Dec 19 2023, 12:44 AM · libgcrypt, Bug Report

Dec 18 2023

gniibe added a comment to T6892: libgcrypt-1.10.3 build failure on x86 with -Og.

@jukivili Thanks a lot. Please push the change to 1.10 branch and master.

Dec 18 2023, 7:51 AM · libgcrypt, Bug Report
gniibe committed rG4e94b004a69e: scd: Debug output is only enabled with an option. (authored by gniibe).
scd: Debug output is only enabled with an option.
Dec 18 2023, 3:33 AM

Dec 15 2023

gniibe added a comment to T6892: libgcrypt-1.10.3 build failure on x86 with -Og.

Thank you for your report.

Dec 15 2023, 8:37 AM · libgcrypt, Bug Report

Dec 12 2023

gniibe committed rC4a104752d8a2: tests: Update digest values following input changes. (authored by gniibe).
tests: Update digest values following input changes.
Dec 12 2023, 7:55 AM
gniibe added a comment to T6863: [patch] libgcrypt copyright header cleanup.

Ah... it fails by make check because it does change the text in tests/basic.c which requires update of hash value.
I'm going to take care of this regressions.

Dec 12 2023, 7:42 AM · patch, libgcrypt, Bug Report
gniibe committed rCcd056b4d1614: Point to gnu.org as canonical license location. (authored by ametzler1).
Point to gnu.org as canonical license location.
Dec 12 2023, 6:56 AM
gniibe committed rC25e93a02268b: Fix license header inconsistency (authored by ametzler1).
Fix license header inconsistency
Dec 12 2023, 6:56 AM
gniibe committed rCca5689367a83: Unify capitalization of LGPL copyright statements. (authored by ametzler1).
Unify capitalization of LGPL copyright statements.
Dec 12 2023, 6:56 AM
gniibe committed rG6b93b92111cb: doc: Fix description of scdaemon for --disable-ccid. (authored by gniibe).
doc: Fix description of scdaemon for --disable-ccid.
Dec 12 2023, 6:44 AM
gniibe committed rG37fa36a3291f: doc: Fix description of scdaemon for --disable-ccid. (authored by gniibe).
doc: Fix description of scdaemon for --disable-ccid.
Dec 12 2023, 6:44 AM
gniibe changed the status of T6863: [patch] libgcrypt copyright header cleanup from Open to Testing.

Thank you. All applied and pushed to master.

Dec 12 2023, 6:38 AM · patch, libgcrypt, Bug Report
gniibe added a project to T6871: SmartCard stopped working in 2.4: Documentation.

In 2.4, a user need to specify disable-ccid in scdaemon.conf when scdaemon is built with integrated CCID driver (using libusb) but the user wants to use PC/SC driver instead.

Dec 12 2023, 6:29 AM · gnupg, scd, Support, Documentation

Dec 8 2023

gniibe committed rCebc9aaacd62b: cipher: Fix sntrup761.h, so that it can be used outside. (authored by gniibe).
cipher: Fix sntrup761.h, so that it can be used outside.
Dec 8 2023, 6:56 AM
gniibe committed rC947ad42450ea: cipher: Add sntrup761 to KEM API. (authored by gniibe).
cipher: Add sntrup761 to KEM API.
Dec 8 2023, 12:49 AM
gniibe committed rC2149888d47af: cipher: Minor fix for C90 compiler. (authored by gniibe).
cipher: Minor fix for C90 compiler.
Dec 8 2023, 12:49 AM
gniibe committed rCcf9923e1a59f: cipher: Add Streamlined NTRU Prime sntrup761. (authored by jas).
cipher: Add Streamlined NTRU Prime sntrup761.
Dec 8 2023, 12:49 AM

Dec 7 2023

gniibe committed rC7e503fa9170f: Add an API for Key Encapsulation Mechanism. (authored by gniibe).
Add an API for Key Encapsulation Mechanism.
Dec 7 2023, 6:48 AM
gniibe committed rGfa677a37cef0: po: Fix quotes in Polish Translation. (authored by Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>).
po: Fix quotes in Polish Translation.
Dec 7 2023, 4:13 AM
gniibe committed rG1ded50dd5b58: po: Fix quotes in Polish Translation. (authored by Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>).
po: Fix quotes in Polish Translation.
Dec 7 2023, 4:13 AM

Dec 1 2023

gniibe committed rG548d4aad5fb0: po: Update Portuguese Translation. (authored by Daniel Cerqueira <dan.git@brilhante.top>).
po: Update Portuguese Translation.
Dec 1 2023, 7:25 AM

Nov 30 2023

gniibe committed rGa14f73a1921e: po: Update Portuguese Translation. (authored by Daniel Cerqueira <dan.git@brilhante.top>).
po: Update Portuguese Translation.
Nov 30 2023, 1:08 AM

Nov 27 2023

gniibe added a comment to T6465: Store the ECDH parameters in the key file.

It's true that for KEYTOCARD command, there is optional argument for ECDH.
My point is that for PKDECRYPT command, it will be needed to add mechanism for getting such a parameter (when we use KEM API in gpg-agent).

Nov 27 2023, 10:23 AM · gnupg26, OpenPGP, scd, Bug Report
gniibe added a comment to T6465: Store the ECDH parameters in the key file.

Considering the design of gpg-agent which focuses on private key operations and data, it would be better to enhance the gpg-agent protocol to inquire public key data of any format defined by the client (including ECDH KDF parameters of OpenPGP). I mean, instead of storing data in the key file (originally designed for private key + some additional data), we will enhance the protocol.

Nov 27 2023, 2:18 AM · gnupg26, OpenPGP, scd, Bug Report

Nov 22 2023

gniibe committed rCdc1c916da4ba: tests: Fix t-x448 for error handling. (authored by gniibe).
tests: Fix t-x448 for error handling.
Nov 22 2023, 2:37 AM

Nov 20 2023

gniibe committed rG6236a52d0e24: po: Update Japanese Translation. (authored by gniibe).
po: Update Japanese Translation.
Nov 20 2023, 2:54 AM
gniibe committed rG2fa916ebff0b: po: Update Japanese Translation. (authored by gniibe).
po: Update Japanese Translation.
Nov 20 2023, 2:54 AM

Nov 17 2023

gniibe changed the status of T6481: BEGIN_ENCRYPTION status output happens later in 2.4.1 (breaks Emacs's EasyPG) from Open to Testing.

Applied to 2.4, too.

Nov 17 2023, 12:57 AM · Emacs, gnupg, Bug Report
gniibe committed rG960877b10f42: gpg: Report BEGIN_* status before examining the input. (authored by gniibe).
gpg: Report BEGIN_* status before examining the input.
Nov 17 2023, 12:42 AM

Nov 16 2023

gniibe committed rC354e53558e55: cipher: Fix return type of _gcry_ecc_mul_point. (authored by gniibe).
cipher: Fix return type of _gcry_ecc_mul_point.
Nov 16 2023, 7:23 AM
gniibe committed rG42ee84197695: doc: Update for gpgv. (authored by gniibe).
doc: Update for gpgv.
Nov 16 2023, 5:32 AM
gniibe changed the status of T6810: gpgv: missing entry in "FILES" section in gpgv.texi from Open to Testing.
Nov 16 2023, 5:32 AM · gnupg, Documentation
gniibe claimed T6810: gpgv: missing entry in "FILES" section in gpgv.texi.

To align the documentation of GnuPG, we should not use GNUPGHOME in FILES section.
It may be controlled by --homedir as well as GNUPGHOME.
GNUPGHOME is addressed in the ENVIRONMENT section, so, I don't think it makes sense using $GNUPGHOME}/trustedkeys.kbx.

Nov 16 2023, 5:29 AM · gnupg, Documentation
gniibe committed rG260004747016: gpgv: Update used keyrings in doc FILES section (authored by Max-Julian Pogner <max-julian@pogner.at>).
gpgv: Update used keyrings in doc FILES section
Nov 16 2023, 5:26 AM
gniibe added a comment to T6810: gpgv: missing entry in "FILES" section in gpgv.texi.

Thank you. Applied and pushed in: rG260004747016: gpgv: Update used keyrings in doc FILES section

Nov 16 2023, 5:26 AM · gnupg, Documentation
gniibe committed rEf83eac17363a: yat2m: Fix HTML output for backslash. (authored by gniibe).
yat2m: Fix HTML output for backslash.
Nov 16 2023, 3:42 AM

Nov 15 2023

gniibe committed rM185ab7d7ba8c: doc: Fix for e.g. and i.e. (authored by gniibe).
doc: Fix for e.g. and i.e.
Nov 15 2023, 7:23 AM
gniibe committed rEe31d65345bcb: yat2m: Implement @item handling with @table item specification. (authored by gniibe).
yat2m: Implement @item handling with @table item specification.
Nov 15 2023, 6:41 AM
gniibe committed rEcfb1871240c4: yat2m: Also handle @file treating '-' as minus. (authored by gniibe).
yat2m: Also handle @file treating '-' as minus.
Nov 15 2023, 6:41 AM
gniibe changed the status of T6674: doc: U+2010 HYPHEN vs. U+002D HYPHEN-MINUS for man pages from Open to Testing.

@item handling with @table has been pushed.

Nov 15 2023, 6:40 AM · gpgrt
gniibe closed T3264: Possible RSA improvement as Invalid.

RSA improvement is not that worth now.

Nov 15 2023, 1:14 AM · libgcrypt
gniibe closed T3269: (Constant-time) modular reduction as Resolved.

OK. When we will need and do, I will open new one.

Nov 15 2023, 1:12 AM · libgcrypt
gniibe closed T3269: (Constant-time) modular reduction, a subtask of T3264: Possible RSA improvement, as Resolved.
Nov 15 2023, 1:12 AM · libgcrypt
gniibe closed T6539: The digest&sign/verify API with SHAKE-class digests does not work as Resolved.

The fix is in 1.10.3.

Nov 15 2023, 1:02 AM · libgcrypt, FIPS, Bug Report
gniibe closed T6507: SCRYPT does not work in FIPS mode as Resolved.

Fix is in 1.10.3.

Nov 15 2023, 12:54 AM · libgcrypt, FIPS, Bug Report

Nov 14 2023

gniibe added a comment to T6674: doc: U+2010 HYPHEN vs. U+002D HYPHEN-MINUS for man pages.

I learned about how @item is handled by TeX. By @table command, user specifies how to handle the item line. In the case of GnuPG, it is like:

@table @gnupgtabopt
@item --version
...
@item --help

(Emacs uses @table @samp, while GCC uses @table @gcctabopt.)
And @gnupgtabopt is a macro which is expanded to @code{\body\}

Nov 14 2023, 7:16 AM · gpgrt
gniibe committed rE7375b4c0aced: yat2m: Output \- for @samp, @kbd, and @env, too. (authored by gniibe).
yat2m: Output \- for @samp, @kbd, and @env, too.
Nov 14 2023, 3:19 AM

Nov 10 2023

gniibe added a comment to D569: pinentry-qt: Add support for external password manager with libsecret.

I think that tried_password_cache in the documentation is wrong. The text:

and @code{tried_password_cache} is false

Nov 10 2023, 9:00 AM · pinentry

Nov 9 2023

gniibe committed rE3534e2cc73f9: yat2m: Generate \- for roff for some commands. (authored by gniibe).
yat2m: Generate \- for roff for some commands.
Nov 9 2023, 8:20 AM
gniibe changed the status of T6654: gpgsm: p12 passphrase visible in debug output from Open to Testing.

Pushed the change to master/2.4.

Nov 9 2023, 5:41 AM · gnupg24 (gnupg-2.4.4), gnupg22 (gnupg-2.2.42), vsd32 (vsd-3.2.0), S/MIME, Restricted Project
gniibe committed rGbafa7bf27f7d: gpg,sm: Set confidential in assuan communication for password. (authored by gniibe).
gpg,sm: Set confidential in assuan communication for password.
Nov 9 2023, 5:40 AM
gniibe committed rGec1446f94465: gpg,sm: Set confidential in assuan communication for password. (authored by gniibe).
gpg,sm: Set confidential in assuan communication for password.
Nov 9 2023, 5:39 AM

Nov 8 2023

gniibe claimed T6425: improve pinentry behavior and texts in smart card context .
Nov 8 2023, 6:54 AM · gnupg24 (gnupg-2.4.5), scd, Bug Report, Restricted Project
gniibe added a comment to T6654: gpgsm: p12 passphrase visible in debug output.

I guess that it's a case of specifying static passphrase. If so, here is the patch:

diff --git a/g10/call-agent.c b/g10/call-agent.c
index cb7053396..c44c1cddb 100644
--- a/g10/call-agent.c
+++ b/g10/call-agent.c
@@ -161,6 +161,7 @@ default_inq_cb (void *opaque, const char *line)
             || has_leading_keyword (line, "NEW_PASSPHRASE"))
            && opt.pinentry_mode == PINENTRY_MODE_LOOPBACK)
     {
+      assuan_begin_confidential (parm->ctx);
       if (have_static_passphrase ())
         {
           s = get_static_passphrase ();
@@ -187,6 +188,7 @@ default_inq_cb (void *opaque, const char *line)
             err = assuan_send_data (parm->ctx, pw, strlen (pw));
           xfree (pw);
         }
+      assuan_end_confidential (parm->ctx);
     }
   else if ((s = has_leading_keyword (line, "CONFIRM"))
            && opt.pinentry_mode == PINENTRY_MODE_LOOPBACK
diff --git a/sm/call-agent.c b/sm/call-agent.c
index 883c0c644..7f7205f26 100644
--- a/sm/call-agent.c
+++ b/sm/call-agent.c
@@ -222,7 +222,9 @@ default_inq_cb (void *opaque, const char *line)
            && have_static_passphrase ())
     {
       const char *s = get_static_passphrase ();
+      assuan_begin_confidential (parm->ctx);
       err = assuan_send_data (parm->ctx, s, strlen (s));
+      assuan_end_confidential (parm->ctx);
     }
   else
     log_error ("ignoring gpg-agent inquiry '%s'\n", line);

(I also found similar case for gpg as well as gpgsm.)

Nov 8 2023, 6:04 AM · gnupg24 (gnupg-2.4.4), gnupg22 (gnupg-2.2.42), vsd32 (vsd-3.2.0), S/MIME, Restricted Project