Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
PIM
Kleopatra
Commits
7b3bc559
Commit
7b3bc559
authored
Dec 18, 2020
by
Ingo Klöcker
Browse files
Add support for unblocking the PIN/card with the reset code
GnuPG-bug-id: 5138
parent
1020fcd7
Pipeline
#44519
passed with stage
in 19 minutes and 29 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/commands/changepincommand.cpp
View file @
7b3bc559
...
@@ -132,31 +132,37 @@ void ChangePinCommand::Private::changePin()
...
@@ -132,31 +132,37 @@ void ChangePinCommand::Private::changePin()
}
}
namespace
{
namespace
{
static
QString
errorMessage
(
const
std
::
string
&
keyRef
,
const
QString
&
errorText
)
static
QString
errorMessage
(
const
std
::
string
&
keyRef
,
ChangePinCommand
::
ChangePinMode
mode
,
const
QString
&
errorText
)
{
{
// see cmd_passwd() in gpg-card.c
// see cmd_passwd() in gpg-card.c
if
(
keyRef
==
PIVCard
::
pukKeyRef
())
{
if
(
keyRef
==
PIVCard
::
pukKeyRef
())
{
return
i18nc
(
"@info"
,
"Changing the PUK failed: %1"
,
errorText
);
return
i18nc
(
"@info"
,
"Changing the PUK failed: %1"
,
errorText
);
}
}
if
(
keyRef
==
OpenPGPCard
::
resetCodeKeyRef
())
{
return
i18nc
(
"@info"
,
"Unblocking the PIN failed: %1"
,
errorText
);
}
if
(
keyRef
==
OpenPGPCard
::
adminPinKeyRef
())
{
if
(
keyRef
==
OpenPGPCard
::
adminPinKeyRef
())
{
return
i18nc
(
"@info"
,
"Changing the Admin PIN failed: %1"
,
errorText
);
return
i18nc
(
"@info"
,
"Changing the Admin PIN failed: %1"
,
errorText
);
}
}
if
(
keyRef
==
OpenPGPCard
::
resetCodeKeyRef
())
{
if
(
keyRef
==
OpenPGPCard
::
resetCodeKeyRef
()
&&
mode
==
ChangePinCommand
::
ResetMode
)
{
return
i18nc
(
"@info"
,
"Changing the Reset Code failed: %1"
,
errorText
);
return
i18nc
(
"@info"
,
"Changing the Reset Code failed: %1"
,
errorText
);
}
}
return
i18nc
(
"@info"
,
"Changing the PIN failed: %1"
,
errorText
);
return
i18nc
(
"@info"
,
"Changing the PIN failed: %1"
,
errorText
);
}
}
static
QString
successMessage
(
const
std
::
string
&
keyRef
)
static
QString
successMessage
(
const
std
::
string
&
keyRef
,
ChangePinCommand
::
ChangePinMode
mode
)
{
{
// see cmd_passwd() in gpg-card.c
// see cmd_passwd() in gpg-card.c
if
(
keyRef
==
PIVCard
::
pukKeyRef
())
{
if
(
keyRef
==
PIVCard
::
pukKeyRef
())
{
return
i18nc
(
"@info"
,
"PUK successfully changed."
);
return
i18nc
(
"@info"
,
"PUK successfully changed."
);
}
}
if
(
keyRef
==
OpenPGPCard
::
resetCodeKeyRef
())
{
return
i18nc
(
"@info"
,
"Unblocked and set a new PIN successfully."
);
}
if
(
keyRef
==
OpenPGPCard
::
adminPinKeyRef
())
{
if
(
keyRef
==
OpenPGPCard
::
adminPinKeyRef
())
{
return
i18nc
(
"@info"
,
"Admin PIN changed successfully."
);
return
i18nc
(
"@info"
,
"Admin PIN changed successfully."
);
}
}
if
(
keyRef
==
OpenPGPCard
::
resetCodeKeyRef
())
{
if
(
keyRef
==
OpenPGPCard
::
resetCodeKeyRef
()
&&
mode
==
ChangePinCommand
::
ResetMode
)
{
return
i18nc
(
"@info"
,
"Reset Code changed successfully."
);
return
i18nc
(
"@info"
,
"Reset Code changed successfully."
);
}
}
return
i18nc
(
"@info"
,
"PIN changed successfully."
);
return
i18nc
(
"@info"
,
"PIN changed successfully."
);
...
@@ -168,10 +174,10 @@ void ChangePinCommand::Private::slotResult(const GpgME::Error& err)
...
@@ -168,10 +174,10 @@ void ChangePinCommand::Private::slotResult(const GpgME::Error& err)
qCDebug
(
KLEOPATRA_LOG
)
<<
"ChangePinCommand::slotResult():"
qCDebug
(
KLEOPATRA_LOG
)
<<
"ChangePinCommand::slotResult():"
<<
err
.
asString
()
<<
"("
<<
err
.
code
()
<<
")"
;
<<
err
.
asString
()
<<
"("
<<
err
.
code
()
<<
")"
;
if
(
err
)
{
if
(
err
)
{
error
(
errorMessage
(
keyRef
,
QString
::
fromLatin1
(
err
.
asString
())),
error
(
errorMessage
(
keyRef
,
mode
,
QString
::
fromLatin1
(
err
.
asString
())),
i18nc
(
"@title"
,
"Error"
));
i18nc
(
"@title"
,
"Error"
));
}
else
if
(
!
err
.
isCanceled
())
{
}
else
if
(
!
err
.
isCanceled
())
{
information
(
successMessage
(
keyRef
),
i18nc
(
"@title"
,
"Success"
));
information
(
successMessage
(
keyRef
,
mode
),
i18nc
(
"@title"
,
"Success"
));
ReaderStatus
::
mutableInstance
()
->
updateStatus
();
ReaderStatus
::
mutableInstance
()
->
updateStatus
();
}
}
finished
();
finished
();
...
...
src/view/pgpcardwidget.cpp
View file @
7b3bc559
...
@@ -197,7 +197,7 @@ PGPCardWidget::PGPCardWidget(QWidget *parent):
...
@@ -197,7 +197,7 @@ PGPCardWidget::PGPCardWidget(QWidget *parent):
auto
actionLayout
=
new
QHBoxLayout
;
auto
actionLayout
=
new
QHBoxLayout
;
{
{
auto
generateButton
=
new
QPushButton
(
i18n
(
"Generate
n
ew Keys"
));
auto
generateButton
=
new
QPushButton
(
i18n
(
"Generate
N
ew Keys"
));
generateButton
->
setToolTip
(
i18n
(
"Create a new primary key and generate subkeys on the card."
));
generateButton
->
setToolTip
(
i18n
(
"Create a new primary key and generate subkeys on the card."
));
actionLayout
->
addWidget
(
generateButton
);
actionLayout
->
addWidget
(
generateButton
);
connect
(
generateButton
,
&
QPushButton
::
clicked
,
this
,
&
PGPCardWidget
::
genkeyRequested
);
connect
(
generateButton
,
&
QPushButton
::
clicked
,
this
,
&
PGPCardWidget
::
genkeyRequested
);
...
@@ -208,6 +208,12 @@ PGPCardWidget::PGPCardWidget(QWidget *parent):
...
@@ -208,6 +208,12 @@ PGPCardWidget::PGPCardWidget(QWidget *parent):
actionLayout
->
addWidget
(
pinButton
);
actionLayout
->
addWidget
(
pinButton
);
connect
(
pinButton
,
&
QPushButton
::
clicked
,
this
,
[
this
]
()
{
doChangePin
(
OpenPGPCard
::
pinKeyRef
());
});
connect
(
pinButton
,
&
QPushButton
::
clicked
,
this
,
[
this
]
()
{
doChangePin
(
OpenPGPCard
::
pinKeyRef
());
});
}
}
{
auto
unblockButton
=
new
QPushButton
(
i18n
(
"Unblock Card"
));
unblockButton
->
setToolTip
(
i18n
(
"Unblock the smartcard and set a new PIN."
));
actionLayout
->
addWidget
(
unblockButton
);
connect
(
unblockButton
,
&
QPushButton
::
clicked
,
this
,
[
this
]
()
{
doChangePin
(
OpenPGPCard
::
resetCodeKeyRef
());
});
}
{
{
auto
pukButton
=
new
QPushButton
(
i18n
(
"Change Admin PIN"
));
auto
pukButton
=
new
QPushButton
(
i18n
(
"Change Admin PIN"
));
pukButton
->
setToolTip
(
i18n
(
"Change the PIN required for administrative operations."
));
pukButton
->
setToolTip
(
i18n
(
"Change the PIN required for administrative operations."
));
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment