Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
ae43c949
Commit
ae43c949
authored
Jun 08, 2016
by
danh-arm
Browse files
Merge pull request #642 from soby-mathew/sm/override_rotpk
Allow dynamic overriding of ROTPK verification
parents
174baeed
04943d33
Changes
3
Hide whitespace changes
Inline
Side-by-side
docs/porting-guide.md
View file @
ae43c949
...
...
@@ -631,10 +631,19 @@ In case the function returns a hash of the key:
digest OCTET STRING
}
The function returns 0 on success. Any other value means the ROTPK could not be
retrieved from the platform. The function also reports extra information related
to the ROTPK in the flags parameter.
The function returns 0 on success. Any other value is treated as error by the
Trusted Board Boot. The function also reports extra information related
to the ROTPK in the flags parameter:
ROTPK_IS_HASH : Indicates that the ROTPK returned by the platform is a
hash.
ROTPK_NOT_DEPLOYED : This allows the platform to skip certificate ROTPK
verification while the platform ROTPK is not deployed.
When this flag is set, the function does not need to
return a platform ROTPK, and the authentication
framework uses the ROTPK in the certificate without
verifying it against the platform value. This flag
must not be used in a deployed production environment.
### Function: plat_get_nv_ctr()
...
...
drivers/auth/auth_mod.c
View file @
ae43c949
...
...
@@ -199,8 +199,9 @@ static int auth_signature(const auth_method_param_sig_t *param,
}
return_if_error
(
rc
);
/* If the PK is a hash of the key, retrieve the key from the image */
if
(
flags
&
ROTPK_IS_HASH
)
{
if
(
flags
&
(
ROTPK_IS_HASH
|
ROTPK_NOT_DEPLOYED
))
{
/* If the PK is a hash of the key or if the ROTPK is not
deployed on the platform, retrieve the key from the image */
pk_hash_ptr
=
pk_ptr
;
pk_hash_len
=
pk_len
;
rc
=
img_parser_get_auth_param
(
img_desc
->
img_type
,
...
...
@@ -215,9 +216,14 @@ static int auth_signature(const auth_method_param_sig_t *param,
pk_ptr
,
pk_len
);
return_if_error
(
rc
);
/* Ask the crypto-module to verify the key hash */
rc
=
crypto_mod_verify_hash
(
pk_ptr
,
pk_len
,
pk_hash_ptr
,
pk_hash_len
);
if
(
flags
&
ROTPK_NOT_DEPLOYED
)
{
NOTICE
(
"ROTPK is not deployed on platform. "
"Skipping ROTPK verification.
\n
"
);
}
else
{
/* Ask the crypto-module to verify the key hash */
rc
=
crypto_mod_verify_hash
(
pk_ptr
,
pk_len
,
pk_hash_ptr
,
pk_hash_len
);
}
}
else
{
/* Ask the crypto module to verify the signature */
rc
=
crypto_mod_verify_signature
(
data_ptr
,
data_len
,
...
...
include/plat/common/platform.h
View file @
ae43c949
...
...
@@ -49,6 +49,9 @@ struct image_desc;
* plat_get_rotpk_info() flags
******************************************************************************/
#define ROTPK_IS_HASH (1 << 0)
/* Flag used to skip verification of the certificate ROTPK while the platform
ROTPK is not deployed */
#define ROTPK_NOT_DEPLOYED (1 << 1)
/*******************************************************************************
* Function declarations
...
...
Write
Preview
Markdown
is supported
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