@ -113,34 +113,26 @@ int TRUST_TOKEN_generate_key(const TRUST_TOKEN_METHOD *method,
size_t * out_pub_key_len , size_t max_pub_key_len ,
uint32_t id ) {
// Prepend the key ID in front of the PMBTokens format.
int ret = 0 ;
CBB priv_cbb , pub_cbb ;
CBB_zero ( & priv_cbb ) ;
CBB_zero ( & pub_cbb ) ;
if ( ! CBB_init_fixed ( & priv_cbb , out_priv_key , max_priv_key_len ) | |
! CBB_init_fixed ( & pub_cbb , out_pub_key , max_pub_key_len ) | |
! CBB_add_u32 ( & priv_cbb , id ) | |
CBB_init_fixed ( & priv_cbb , out_priv_key , max_priv_key_len ) ;
CBB_init_fixed ( & pub_cbb , out_pub_key , max_pub_key_len ) ;
if ( ! CBB_add_u32 ( & priv_cbb , id ) | | //
! CBB_add_u32 ( & pub_cbb , id ) ) {
OPENSSL_PUT_ERROR ( TRUST_TOKEN , TRUST_TOKEN_R_BUFFER_TOO_SMALL ) ;
goto err ;
return 0 ;
}
if ( ! method - > generate_key ( & priv_cbb , & pub_cbb ) ) {
goto err ;
return 0 ;
}
if ( ! CBB_finish ( & priv_cbb , NULL , out_priv_key_len ) | |
! CBB_finish ( & pub_cbb , NULL , out_pub_key_len ) ) {
OPENSSL_PUT_ERROR ( TRUST_TOKEN , TRUST_TOKEN_R_BUFFER_TOO_SMALL ) ;
goto err ;
return 0 ;
}
ret = 1 ;
err :
CBB_cleanup ( & priv_cbb ) ;
CBB_cleanup ( & pub_cbb ) ;
return ret ;
return 1 ;
}
int TRUST_TOKEN_derive_key_from_secret (
@ -149,35 +141,27 @@ int TRUST_TOKEN_derive_key_from_secret(
size_t * out_pub_key_len , size_t max_pub_key_len , uint32_t id ,
const uint8_t * secret , size_t secret_len ) {
// Prepend the key ID in front of the PMBTokens format.
int ret = 0 ;
CBB priv_cbb , pub_cbb ;
CBB_zero ( & priv_cbb ) ;
CBB_zero ( & pub_cbb ) ;
if ( ! CBB_init_fixed ( & priv_cbb , out_priv_key , max_priv_key_len ) | |
! CBB_init_fixed ( & pub_cbb , out_pub_key , max_pub_key_len ) | |
! CBB_add_u32 ( & priv_cbb , id ) | |
CBB_init_fixed ( & priv_cbb , out_priv_key , max_priv_key_len ) ;
CBB_init_fixed ( & pub_cbb , out_pub_key , max_pub_key_len ) ;
if ( ! CBB_add_u32 ( & priv_cbb , id ) | | //
! CBB_add_u32 ( & pub_cbb , id ) ) {
OPENSSL_PUT_ERROR ( TRUST_TOKEN , TRUST_TOKEN_R_BUFFER_TOO_SMALL ) ;
goto err ;
return 0 ;
}
if ( ! method - > derive_key_from_secret ( & priv_cbb , & pub_cbb , secret ,
secret_len ) ) {
goto err ;
return 0 ;
}
if ( ! CBB_finish ( & priv_cbb , NULL , out_priv_key_len ) | |
! CBB_finish ( & pub_cbb , NULL , out_pub_key_len ) ) {
OPENSSL_PUT_ERROR ( TRUST_TOKEN , TRUST_TOKEN_R_BUFFER_TOO_SMALL ) ;
goto err ;
return 0 ;
}
ret = 1 ;
err :
CBB_cleanup ( & priv_cbb ) ;
CBB_cleanup ( & pub_cbb ) ;
return ret ;
return 1 ;
}
TRUST_TOKEN_CLIENT * TRUST_TOKEN_CLIENT_new ( const TRUST_TOKEN_METHOD * method ,