diff options
| author | Jan Luebbe <[email protected]> | 2020-05-13 12:26:24 +0200 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2020-05-15 14:47:35 -0400 |
| commit | 24bf6e84ce22cd1b53cb79e4f89a4036af7e9c6b (patch) | |
| tree | 85c116fc3267a1ce16d6771f0a08675788d48ccd /lib | |
| parent | 3b84809b7b34f1f099303767a48f20cfb7c4e78c (diff) | |
lib: rsa: avoid overriding the object name when already specified
If "object=" is specified in "keydir" when using the pkcs11 engine do
not append another "object=<key-name-hint>". This makes it possible to
use object names other than the key name hint. These two string
identifiers are not necessarily equal.
Signed-off-by: Jan Luebbe <[email protected]>
Signed-off-by: Bastian Krause <[email protected]>
Reviewed-by: George McCollister <[email protected]>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/rsa/rsa-sign.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/rsa/rsa-sign.c b/lib/rsa/rsa-sign.c index 621ddc43504..40ca1e1f573 100644 --- a/lib/rsa/rsa-sign.c +++ b/lib/rsa/rsa-sign.c @@ -135,9 +135,14 @@ static int rsa_engine_get_pub_key(const char *keydir, const char *name, if (engine_id && !strcmp(engine_id, "pkcs11")) { if (keydir) - snprintf(key_id, sizeof(key_id), - "pkcs11:%s;object=%s;type=public", - keydir, name); + if (strstr(keydir, "object=")) + snprintf(key_id, sizeof(key_id), + "pkcs11:%s;type=public", + keydir); + else + snprintf(key_id, sizeof(key_id), + "pkcs11:%s;object=%s;type=public", + keydir, name); else snprintf(key_id, sizeof(key_id), "pkcs11:object=%s;type=public", @@ -255,9 +260,14 @@ static int rsa_engine_get_priv_key(const char *keydir, const char *name, if (engine_id && !strcmp(engine_id, "pkcs11")) { if (keydir) - snprintf(key_id, sizeof(key_id), - "pkcs11:%s;object=%s;type=private", - keydir, name); + if (strstr(keydir, "object=")) + snprintf(key_id, sizeof(key_id), + "pkcs11:%s;type=private", + keydir); + else + snprintf(key_id, sizeof(key_id), + "pkcs11:%s;object=%s;type=private", + keydir, name); else snprintf(key_id, sizeof(key_id), "pkcs11:object=%s;type=private", |
