in src/vtok_rpc/src/api.rs [216:230]
fn validate_token(token: &schema::Token) -> Result<(), Error> {
validate_token_pin(token.pin.as_str())?;
validate_token_label(token.label.as_str())?;
let mut ids = HashSet::new();
let mut labels = HashSet::new();
for k in token.keys.iter() {
if !ids.insert(k.id) {
return Err(Error::DuplicateKeyId(k.id));
}
if !labels.insert(k.label.as_str()) {
return Err(Error::DuplicateKeyLabel(k.label.clone()));
}
}
Ok(())
}