blob: 3f774a5a368dc752158d6cd23fab5385fd9e3703 [file] [log] [blame]
#ifndef _NR_SERVICE_IDL
#define _NR_SERVICE_IDL
#pragma prefix "omg.org"
#include <SecurityLevel2.idl>
module NRService {
typedef Security::MechanismType NRMech;
typedef Security::ExtensibleFamily NRPolicyId;
enum EvidenceType {
SecProofofCreation,
SecProofofReceipt,
SecProofofApproval,
SecProofofRetrieval,
SecProofofOrigin,
SecProofofDelivery,
SecNoEvidence // used when request-only token desired
};
enum NRVerificationResult {
SecNRInvalid,
SecNRValid,
SecNRConditionallyValid
};
// the following are used for evidence validity duration
typedef unsigned long DurationInMinutes;
const DurationInMinutes DurationHour = 60;
const DurationInMinutes DurationDay = 1440;
const DurationInMinutes DurationWeek = 10080;
const DurationInMinutes DurationMonth = 43200;// 30 days;
const DurationInMinutes DurationYear = 525600;//365 days;
typedef long TimeOffsetInMinutes;
struct NRPolicyFeatures {
NRPolicyId policy_id;
unsigned long policy_version;
NRMech mechanism;
};
typedef sequence <NRPolicyFeatures> NRPolicyFeaturesList;
// features used when generating requests
struct RequestFeatures {
NRPolicyFeatures requested_policy;
EvidenceType requested_evidence;
string requested_evidence_generators;
string requested_evidence_recipients;
boolean include_this_token_in_evidence;
};
struct EvidenceDescriptor {
EvidenceType evidence_type;
DurationInMinutes evidence_validity_duration;
boolean must_use_trusted_time;
};
typedef sequence <EvidenceDescriptor> EvidenceDescriptorList;
struct AuthorityDescriptor {
string authority_name;
string authority_role;
TimeOffsetInMinutes last_revocation_check_offset;
// may be >0 or <0; add this to evid. gen. time to
// get latest time at which mech. will check to see
// if this authority's key has been revoked.
};
typedef sequence <AuthorityDescriptor> AuthorityDescriptorList;
struct MechanismDescriptor {
NRMech mech_type;
AuthorityDescriptorList authority_list;
TimeOffsetInMinutes max_time_skew;
// max permissible difference between evid. gen. time
// and time of time service countersignature
// ignored if trusted time not reqd.
};
typedef sequence <MechanismDescriptor> MechanismDescriptorList;
interface NRCredentials : SecurityLevel2::Credentials{
boolean set_NR_features(
in NRPolicyFeaturesList requested_features,
out NRPolicyFeaturesList actual_features
);
NRPolicyFeaturesList get_NR_features ();
void generate_token(
in Security::Opaque input_buffer,
in EvidenceType generate_evidence_type,
in boolean include_data_in_token,
in boolean generate_request,
in RequestFeatures request_features,
in boolean input_buffer_complete,
out Security::Opaque nr_token,
out Security::Opaque evidence_check
);
NRVerificationResult verify_evidence(
in Security::Opaque input_token_buffer,
in Security::Opaque evidence_check,
in boolean form_complete_evidence,
in boolean token_buffer_complete,
out Security::Opaque output_token,
out Security::Opaque data_included_in_token,
out boolean evidence_is_complete,
out boolean trusted_time_used,
out Security::TimeT complete_evidence_before,
out Security::TimeT complete_evidence_after
);
void get_token_details(
in Security::Opaque token_buffer,
in boolean token_buffer_complete,
out string token_generator_name,
out NRPolicyFeatures policy_features,
out EvidenceType evidence_type,
out Security::UtcT evidence_generation_time,
out Security::UtcT evidence_valid_start_time,
out DurationInMinutes evidence_validity_duration,
out boolean data_included_in_token,
out boolean request_included_in_token,
out RequestFeatures request_features
);
boolean form_complete_evidence(
in Security::Opaque input_token,
out Security::Opaque output_token,
out boolean trusted_time_used,
out Security::TimeT complete_evidence_before,
out Security::TimeT complete_evidence_after
);
};
interface NRPolicy : CORBA::Policy{
void get_NR_policy_info(
out Security::ExtensibleFamily NR_policy_id,
out unsigned long policy_version,
out Security::TimeT policy_effective_time,
out Security::TimeT policy_expiry_time,
out EvidenceDescriptorList supported_evidence_types,
out MechanismDescriptorList supported_mechanisms
);
boolean set_NR_policy_info(
in MechanismDescriptorList requested_mechanisms,
out MechanismDescriptorList actual_mechanisms
);
};
};
#endif /* _NR_SERVICE_IDL */