DdsSecurityCore.idl

Go to the documentation of this file.
00001 /*
00002  *
00003  *
00004  * Distributed under the OpenDDS License.
00005  * See: http://www.opendds.org/license.html
00006  */
00007 
00008 #ifndef DDS_SECURITY_CORE_IDL
00009 #define DDS_SECURITY_CORE_IDL
00010 
00011 // DDS Security 1.1 Normative IDL (ptc/2017-09-26)
00012 // This file follows the spec IDL but includes changes necessary for OpenDDS.
00013 // Those changes are not expected to impact the interface between plugin
00014 // implementations and the core.  Where the spec uses the 'native' IDL keyword,
00015 // the implementation (OpenDDS) may select a mapping either in IDL or as a
00016 // special case in the compiler.
00017 // Certain parts of the spec IDL have been moved to DdsSecurityParams.idl
00018 // or to other files, as noted below.
00019 
00020 #include "DdsDcpsGuid.idl"
00021 #include "DdsDcpsInfrastructure.idl"
00022 #include "DdsDcpsPublication.idl"
00023 #include "DdsDcpsSubscription.idl"
00024 #include "DdsSecurityParams.idl"
00025 
00026 // The types in this file shall be serialized with XCDR encoding version 1
00027 module DDS {
00028   module Security {
00029 
00030     // Since DynamicData is a feature of the XTypes spec (which isn't yet supported) the
00031     // native type is replaced with an empty interface to satisfy the access-control methods
00032     // which use the type.
00033     local interface DynamicData {
00034     };
00035 
00036     // Per the security spec these types are expected to be visible in
00037     // the DDS::Security namespace. They are defined in dds/DdsDcpsCore.idl
00038     // in order to satisfy dependencies of DomainParticipantQos.
00039     typedef DDS::Property_t Property_t;
00040     typedef DDS::PropertySeq PropertySeq;
00041     typedef DDS::BinaryProperty_t BinaryProperty_t;
00042     typedef DDS::BinaryPropertySeq BinaryPropertySeq;
00043     typedef DDS::PropertyQosPolicy PropertyQosPolicy;
00044 
00045     typedef Token MessageToken;
00046     typedef MessageToken AuthRequestMessageToken;
00047     typedef MessageToken HandshakeMessageToken;
00048 
00049     typedef Token  AuthenticatedPeerCredentialToken;
00050     typedef Token  PermissionsCredentialToken;
00051 
00052     typedef Token  CryptoToken;
00053     typedef sequence<CryptoToken>  CryptoTokenSeq;
00054 
00055     typedef Token  ParticipantCryptoToken;
00056     typedef Token  DatawriterCryptoToken;
00057     typedef Token  DatareaderCryptoToken;
00058 
00059     typedef CryptoTokenSeq  ParticipantCryptoTokenSeq;
00060     typedef CryptoTokenSeq  DatawriterCryptoTokenSeq;
00061     typedef CryptoTokenSeq  DatareaderCryptoTokenSeq;
00062 
00063     struct MessageIdentity {
00064       OpenDDS::DCPS::GUID_t source_guid;
00065       long long sequence_number;
00066     };
00067 
00068     typedef string GenericMessageClassId;
00069 
00070     //@extensibility(APPENDABLE)
00071     struct ParticipantGenericMessage {
00072       MessageIdentity message_identity;
00073       MessageIdentity related_message_identity;
00074       OpenDDS::DCPS::GUID_t destination_participant_guid;
00075       OpenDDS::DCPS::GUID_t destination_endpoint_guid;
00076       OpenDDS::DCPS::GUID_t source_endpoint_guid;
00077       GenericMessageClassId message_class_id;
00078       DataHolderSeq message_data;
00079     };
00080 
00081     typedef ParticipantGenericMessage ParticipantStatelessMessage;
00082     typedef ParticipantGenericMessage ParticipantVolatileMessageSecure;
00083 
00084     const string GMCLASSID_SECURITY_AUTH_REQUEST = "dds.sec.auth_request";
00085     const string GMCLASSID_SECURITY_AUTH_HANDSHAKE = "dds.sec.auth";
00086     const string GMCLASSID_SECURITY_PARTICIPANT_CRYPTO_TOKENS = "dds.sec.participant_crypto_tokens";
00087     const string GMCLASSID_SECURITY_DATAWRITER_CRYPTO_TOKENS = "dds.sec.datawriter_crypto_tokens";
00088     const string GMCLASSID_SECURITY_DATAREADER_CRYPTO_TOKENS = "dds.sec.datareader_crypto_tokens";
00089 
00090     const ReturnCode_t RETCODE_NOT_ALLOWED_BY_SECURITY = 1000;
00091 
00092     typedef DataTags DataTagQosPolicy;
00093 
00094     /* TODO: PENDING DATA TAGS IMPLEMENTATION
00095         // See http://www.omg.org/spec/DDS-XTypes/20170301/dds-xtypes_discovery.idl
00096         @extensibility(MUTABLE)
00097         struct DataWriterQos  :  DDS::DataWriterQos {
00098             PropertyQosPolicy  property;
00099             DataTagQosPolicy   data_tags;
00100         };
00101 
00102         // See http://www.omg.org/spec/DDS-XTypes/20170301/dds-xtypes_discovery.idl
00103         @extensibility(MUTABLE)
00104         struct DataReaderQos  :  DDS::DataReaderQos {
00105             PropertyQosPolicy  property;
00106             DataTagQosPolicy   data_tags;
00107         };
00108 
00109     */
00110 
00111     // See http://www.omg.org/spec/DDS-XTypes/20170301/dds-xtypes_discovery.idl
00112     //@extensibility(MUTABLE)
00113     struct ParticipantBuiltinTopicData { //  :  DDS::ParticipantBuiltinTopicData {
00114       // in this and following structs, 'base' is used in place of struct inheritance
00115       DDS::ParticipantBuiltinTopicData base;
00116 
00117       IdentityToken     identity_token;
00118       PermissionsToken  permissions_token;
00119       PropertyQosPolicy property;
00120       ParticipantSecurityInfo  security_info;
00121     };
00122 
00123     //@extensibility(MUTABLE)
00124     struct ParticipantBuiltinTopicDataSecure { // :  ParticipantBuiltinTopicData {
00125       ParticipantBuiltinTopicData base;
00126 
00127       IdentityStatusToken identity_status_token;
00128     };
00129 
00130     //@extensibility(MUTABLE)
00131     struct PublicationBuiltinTopicData { //: DDS::PublicationBuiltinTopicData {
00132       DDS::PublicationBuiltinTopicData base;
00133 
00134       EndpointSecurityInfo  security_info;
00135     };
00136 
00137     //@extensibility(MUTABLE)
00138     struct SubscriptionBuiltinTopicData { //: DDS::SubscriptionBuiltinTopicData {
00139       DDS::SubscriptionBuiltinTopicData base;
00140 
00141       EndpointSecurityInfo  security_info;
00142     };
00143 
00144     //@extensibility(MUTABLE)
00145     struct PublicationBuiltinTopicDataSecure {// :  PublicationBuiltinTopicData {
00146       PublicationBuiltinTopicData base;
00147 
00148       DataTags data_tags;
00149     };
00150 
00151     //@extensibility(MUTABLE)
00152     struct SubscriptionBuiltinTopicDataSecure { //  :  SubscriptionBuiltinTopicData {
00153       SubscriptionBuiltinTopicData base;
00154 
00155       DataTags data_tags;
00156     };
00157 
00158     struct SecurityException {
00159       string  message;
00160       long    code;
00161       long    minor_code;
00162     };
00163 
00164     enum ValidationResult_t {
00165       VALIDATION_OK,
00166       VALIDATION_FAILED,
00167       VALIDATION_PENDING_RETRY,
00168       VALIDATION_PENDING_HANDSHAKE_REQUEST,
00169       VALIDATION_PENDING_HANDSHAKE_MESSAGE,
00170       VALIDATION_OK_FINAL_MESSAGE
00171     };
00172 
00173     typedef long IdentityHandle;
00174     typedef long HandshakeHandle;
00175     typedef long PermissionsHandle;
00176 
00177     // https://issues.omg.org/issues/DDSSEC12-2
00178     local interface SharedSecretHandle {
00179       readonly attribute OctetSeq challenge1, challenge2, sharedSecret;
00180     };
00181 
00182     typedef long ParticipantCryptoHandle;
00183     typedef sequence<ParticipantCryptoHandle> ParticipantCryptoHandleSeq;
00184 
00185     // Used internally by OpenDDS Implementation
00186     typedef long NativeCryptoHandle;
00187 
00188     typedef NativeCryptoHandle DatawriterCryptoHandle;
00189     typedef sequence<DatawriterCryptoHandle> DatawriterCryptoHandleSeq;
00190 
00191     typedef NativeCryptoHandle DatareaderCryptoHandle;
00192     typedef sequence<DatareaderCryptoHandle> DatareaderCryptoHandleSeq;
00193 
00194     local interface Authentication;
00195 
00196     enum AuthStatusKind {
00197       RESERVED_AUTH_STATUS_KIND_0,
00198       //@value(1) IDENTITY_STATUS
00199       IDENTITY_STATUS
00200     };
00201 
00202     local interface AuthenticationListener {
00203       boolean
00204       on_revoke_identity(
00205         in    Authentication     plugin,
00206         in    IdentityHandle     handle,
00207         inout SecurityException  ex);
00208 
00209       boolean
00210       on_status_changed(
00211         in    Authentication     plugin,
00212         in    IdentityHandle     handle,
00213         in    AuthStatusKind     status_kind,
00214         inout SecurityException  ex);
00215     };
00216 
00217     typedef DDS::DomainId_t DomainId_t;
00218 
00219     local interface Authentication {
00220 
00221       ValidationResult_t
00222       validate_local_identity(
00223         inout IdentityHandle        local_identity_handle,
00224         inout OpenDDS::DCPS::GUID_t adjusted_participant_guid,
00225         in    DomainId_t            domain_id,
00226         in    DomainParticipantQos  participant_qos,
00227         in    OpenDDS::DCPS::GUID_t candidate_participant_guid,
00228         inout SecurityException     ex );
00229 
00230       boolean
00231       get_identity_token(
00232         inout IdentityToken      identity_token,
00233         in    IdentityHandle     handle,
00234         inout SecurityException  ex );
00235 
00236       boolean
00237       get_identity_status_token(
00238         inout IdentityStatusToken      identity_status_token,
00239         in    IdentityHandle           handle,
00240         inout SecurityException        ex );
00241 
00242       boolean
00243       set_permissions_credential_and_token(
00244         in    IdentityHandle         handle,
00245         in    PermissionsCredentialToken  permissions_credential,
00246         in    PermissionsToken       permissions_token,
00247         inout SecurityException      ex );
00248 
00249       ValidationResult_t
00250       validate_remote_identity(
00251         inout  IdentityHandle           remote_identity_handle,
00252         inout  AuthRequestMessageToken  local_auth_request_token,
00253         in     AuthRequestMessageToken  remote_auth_request_token,
00254         in     IdentityHandle           local_identity_handle,
00255         in     IdentityToken            remote_identity_token,
00256         in     OpenDDS::DCPS::GUID_t    remote_participant_guid,
00257         inout  SecurityException        ex );
00258 
00259       ValidationResult_t
00260       begin_handshake_request(
00261         inout HandshakeHandle        handshake_handle,
00262         inout HandshakeMessageToken  handshake_message,
00263         in    IdentityHandle         initiator_identity_handle,
00264         in    IdentityHandle         replier_identity_handle,
00265         in    OctetSeq               serialized_local_participant_data,
00266         inout SecurityException      ex );
00267 
00268       ValidationResult_t
00269       begin_handshake_reply(
00270         inout HandshakeHandle        handshake_handle,
00271         inout HandshakeMessageToken  handshake_message_out,
00272         in    IdentityHandle         initiator_identity_handle,
00273         in    IdentityHandle         replier_identity_handle,
00274         in    OctetSeq               serialized_local_participant_data,
00275         inout SecurityException      ex );
00276 
00277       ValidationResult_t
00278       process_handshake(
00279         inout HandshakeMessageToken  handshake_message_out,
00280         in    HandshakeMessageToken  handshake_message_in,
00281         in    HandshakeHandle        handshake_handle,
00282         inout SecurityException      ex );
00283 
00284       SharedSecretHandle
00285       get_shared_secret(
00286         in    HandshakeHandle    handshake_handle,
00287         inout SecurityException  ex );
00288 
00289       boolean
00290       get_authenticated_peer_credential_token(
00291         inout AuthenticatedPeerCredentialToken  peer_credential_token,
00292         in    HandshakeHandle                   handshake_handle,
00293         inout SecurityException                 ex );
00294 
00295       boolean
00296       set_listener(
00297         in   AuthenticationListener  listener,
00298         inout SecurityException   ex );
00299 
00300       boolean
00301       return_identity_token(
00302         in    IdentityToken      token,
00303         inout SecurityException  ex);
00304 
00305       boolean
00306       return_identity_status_token(
00307         in    IdentityStatusToken  token,
00308         inout SecurityException    ex);
00309 
00310       boolean
00311       return_authenticated_peer_credential_token(
00312         in   AuthenticatedPeerCredentialToken peer_credential_token,
00313         inout SecurityException  ex);
00314 
00315       boolean
00316       return_handshake_handle(
00317         in    HandshakeHandle    handshake_handle,
00318         inout SecurityException  ex);
00319 
00320       boolean
00321       return_identity_handle(
00322         in   IdentityHandle      identity_handle,
00323         inout SecurityException  ex);
00324 
00325       boolean
00326       return_sharedsecret_handle(
00327         in    SharedSecretHandle  sharedsecret_handle,
00328         inout SecurityException   ex);
00329     };
00330 
00331     struct ParticipantSecurityAttributes {
00332       boolean     allow_unauthenticated_participants;
00333       boolean     is_access_protected;
00334       boolean     is_rtps_protected;
00335       boolean     is_discovery_protected;
00336       boolean     is_liveliness_protected;
00337       PluginParticipantSecurityAttributesMask plugin_participant_attributes;
00338       PropertySeq ac_endpoint_properties;
00339     };
00340 
00341     struct TopicSecurityAttributes {
00342       boolean  is_read_protected;
00343       boolean  is_write_protected;
00344       boolean  is_discovery_protected;
00345       boolean  is_liveliness_protected;
00346     };
00347 
00348     struct EndpointSecurityAttributes { //: TopicSecurityAttributes {
00349       TopicSecurityAttributes base;
00350 
00351       boolean     is_submessage_protected;
00352       boolean     is_payload_protected;
00353       boolean     is_key_protected;
00354       PluginEndpointSecurityAttributesMask  plugin_endpoint_attributes;
00355       PropertySeq ac_endpoint_properties;
00356     };
00357 
00358     local interface AccessControl;
00359 
00360     local interface AccessControlListener {
00361       boolean
00362       on_revoke_permissions(
00363         in   AccessControl plugin,
00364         in   PermissionsHandle handle);
00365     };
00366 
00367     local interface AccessControl {
00368       PermissionsHandle
00369       validate_local_permissions(
00370         in    Authentication         auth_plugin,
00371         in    IdentityHandle         identity,
00372         in    DomainId_t             domain_id,
00373         in    DomainParticipantQos   participant_qos,
00374         inout SecurityException      ex );
00375 
00376       PermissionsHandle
00377       validate_remote_permissions(
00378         in    Authentication                    auth_plugin,
00379         in    IdentityHandle                    local_identity_handle,
00380         in    IdentityHandle                    remote_identity_handle,
00381         in    PermissionsToken                  remote_permissions_token,
00382         in    AuthenticatedPeerCredentialToken  remote_credential_token,
00383         inout SecurityException                 ex );
00384 
00385       boolean
00386       check_create_participant(
00387         in    PermissionsHandle     permissions_handle,
00388         in    DomainId_t            domain_id,
00389         in    DomainParticipantQos  qos,
00390         inout SecurityException     ex );
00391 
00392       boolean
00393       check_create_datawriter(
00394         in    PermissionsHandle   permissions_handle,
00395         in    DomainId_t          domain_id,
00396         in    string              topic_name,
00397         in    DataWriterQos       qos,
00398         in    PartitionQosPolicy  partition,
00399         in    DataTags            data_tag,
00400         inout SecurityException   ex);
00401 
00402       boolean
00403       check_create_datareader(
00404         in    PermissionsHandle   permissions_handle,
00405         in    DomainId_t          domain_id,
00406         in    string              topic_name,
00407         in    DataReaderQos       qos,
00408         in    PartitionQosPolicy  partition,
00409         in    DataTags            data_tag,
00410         inout SecurityException   ex);
00411 
00412       boolean
00413       check_create_topic(
00414         in    PermissionsHandle permissions_handle,
00415         in    DomainId_t         domain_id,
00416         in    string             topic_name,
00417         in    TopicQos           qos,
00418         inout SecurityException  ex);
00419 
00420       boolean
00421       check_local_datawriter_register_instance(
00422         in    PermissionsHandle  permissions_handle,
00423         in    DataWriter         writer,
00424         in    DynamicData        key,
00425         inout SecurityException  ex);
00426 
00427       boolean
00428       check_local_datawriter_dispose_instance(
00429         in    PermissionsHandle  permissions_handle,
00430         in    DataWriter         writer,
00431         in    DynamicData        key,
00432         inout SecurityException  ex);
00433 
00434       boolean
00435       check_remote_participant(
00436         in    PermissionsHandle                  permissions_handle,
00437         in    DomainId_t                         domain_id,
00438         in    ParticipantBuiltinTopicDataSecure  participant_data,
00439         inout SecurityException                  ex);
00440 
00441       boolean
00442       check_remote_datawriter(
00443         in   PermissionsHandle                  permissions_handle,
00444         in   DomainId_t                         domain_id,
00445         in   PublicationBuiltinTopicDataSecure  publication_data,
00446         inout SecurityException                 ex);
00447 
00448       boolean
00449       check_remote_datareader(
00450         in    PermissionsHandle                   permissions_handle,
00451         in    DomainId_t                          domain_id,
00452         in    SubscriptionBuiltinTopicDataSecure  subscription_data,
00453         inout boolean                             relay_only,
00454         inout SecurityException                   ex);
00455 
00456       boolean
00457       check_remote_topic(
00458         in    PermissionsHandle      permissions_handle,
00459         in    DomainId_t             domain_id,
00460         in    TopicBuiltinTopicData  topic_data,
00461         inout SecurityException      ex);
00462 
00463       boolean
00464       check_local_datawriter_match(
00465         in    PermissionsHandle  writer_permissions_handle,
00466         in    PermissionsHandle  reader_permissions_handle,
00467         in    PublicationBuiltinTopicDataSecure  publication_data,
00468         in    SubscriptionBuiltinTopicDataSecure subscription_data,
00469         inout SecurityException  ex);
00470 
00471       boolean
00472       check_local_datareader_match(
00473         in    PermissionsHandle  reader_permissions_handle,
00474         in    PermissionsHandle  writer_permissions_handle,
00475         in    SubscriptionBuiltinTopicDataSecure subscription_data,
00476         in    PublicationBuiltinTopicDataSecure  publication_data,
00477         inout SecurityException  ex);
00478 
00479       boolean
00480       check_remote_datawriter_register_instance(
00481         in    PermissionsHandle   permissions_handle,
00482         in    DataReader          reader,
00483         in    InstanceHandle_t    publication_handle,
00484         in    DynamicData         key,
00485         in    InstanceHandle_t    instance_handle,
00486         inout SecurityException   ex);
00487 
00488       boolean
00489       check_remote_datawriter_dispose_instance(
00490         in    PermissionsHandle  permissions_handle,
00491         in    DataReader         reader,
00492         in    InstanceHandle_t   publication_handle,
00493         in    DynamicData        key,
00494         inout SecurityException  ex);
00495 
00496       boolean
00497       get_permissions_token(
00498         inout PermissionsToken   permissions_token,
00499         in    PermissionsHandle  handle,
00500         inout SecurityException  ex);
00501 
00502       boolean
00503       get_permissions_credential_token(
00504         inout PermissionsCredentialToken permissions_credential_token,
00505         in    PermissionsHandle  handle,
00506         inout SecurityException  ex);
00507 
00508       boolean
00509       set_listener(
00510         in    AccessControlListener  listener,
00511         inout SecurityException      ex);
00512 
00513       boolean
00514       return_permissions_token(
00515         in    PermissionsToken   token,
00516         inout SecurityException  ex);
00517 
00518       boolean
00519       return_permissions_credential_token(
00520         in    PermissionsCredentialToken  permissions_credential_token,
00521         inout SecurityException           ex);
00522 
00523       boolean
00524       get_participant_sec_attributes(
00525         in    PermissionsHandle              permissions_handle,
00526         inout ParticipantSecurityAttributes  attributes,
00527         inout SecurityException              ex);
00528 
00529       boolean
00530       get_topic_sec_attributes (
00531         in    PermissionsHandle           permissions_handle,
00532         in    string                      topic_name,
00533         inout TopicSecurityAttributes     attributes,
00534         inout SecurityException           ex);
00535 
00536       boolean
00537       get_datawriter_sec_attributes(
00538         in    PermissionsHandle           permissions_handle,
00539         in    string                      topic_name,
00540         in    PartitionQosPolicy          partition,
00541         in    DataTagQosPolicy            data_tag,
00542         inout EndpointSecurityAttributes  attributes,
00543         inout SecurityException           ex);
00544 
00545       boolean
00546       get_datareader_sec_attributes(
00547         in    PermissionsHandle           permissions_handle,
00548         in    string                      topic_name,
00549         in    PartitionQosPolicy          partition,
00550         in    DataTagQosPolicy            data_tag,
00551         inout EndpointSecurityAttributes  attributes,
00552         inout SecurityException           ex);
00553 
00554       boolean
00555       return_participant_sec_attributes(
00556         in ParticipantSecurityAttributes  attributes,
00557         inout SecurityException           ex);
00558 
00559       boolean
00560       return_datawriter_sec_attributes(
00561         in EndpointSecurityAttributes  attributes,
00562         inout SecurityException        ex);
00563 
00564       boolean
00565       return_datareader_sec_attributes(
00566         in EndpointSecurityAttributes  attributes,
00567         inout SecurityException        ex);
00568     };
00569 
00570 
00571 
00572     local interface CryptoKeyFactory {
00573 
00574       ParticipantCryptoHandle
00575       register_local_participant(
00576         in    IdentityHandle                 participant_identity,
00577         in    PermissionsHandle              participant_permissions,
00578         in    PropertySeq                    participant_properties,
00579         in    ParticipantSecurityAttributes  participant_security_attributes,
00580         inout SecurityException              ex  );
00581 
00582       ParticipantCryptoHandle
00583       register_matched_remote_participant(
00584         in    ParticipantCryptoHandle  local_participant_crypto_handle,
00585         in    IdentityHandle           remote_participant_identity,
00586         in    PermissionsHandle        remote_participant_permissions,
00587         in    SharedSecretHandle       shared_secret,
00588         inout SecurityException        ex);
00589 
00590       DatawriterCryptoHandle
00591       register_local_datawriter(
00592         in    ParticipantCryptoHandle  participant_crypto,
00593         in    PropertySeq              datawriter_properties,
00594         in    EndpointSecurityAttributes datawriter_security_attributes,
00595         inout SecurityException        ex);
00596 
00597       DatareaderCryptoHandle
00598       register_matched_remote_datareader(
00599         in    DatawriterCryptoHandle   local_datawritert_crypto_handle,
00600         in    ParticipantCryptoHandle  remote_participant_crypto,
00601         in    SharedSecretHandle       shared_secret,
00602         in    boolean                  relay_only,
00603         inout SecurityException        ex);
00604 
00605       DatareaderCryptoHandle
00606       register_local_datareader(
00607         in    ParticipantCryptoHandle     participant_crypto,
00608         in    PropertySeq                 datareader_properties,
00609         in    EndpointSecurityAttributes  datareader_security_attributes,
00610         inout SecurityException           ex);
00611 
00612       DatawriterCryptoHandle
00613       register_matched_remote_datawriter(
00614         in    DatareaderCryptoHandle   local_datareader_crypto_handle,
00615         in    ParticipantCryptoHandle  remote_participant_crypt,
00616         in    SharedSecretHandle       shared_secret,
00617         inout SecurityException        ex );
00618 
00619       boolean
00620       unregister_participant(
00621         in    ParticipantCryptoHandle  participant_crypto_handle,
00622         inout SecurityException        ex);
00623 
00624       boolean
00625       unregister_datawriter(
00626         in    DatawriterCryptoHandle  datawriter_crypto_handle,
00627         inout SecurityException       ex  );
00628 
00629       boolean
00630       unregister_datareader(
00631         in    DatareaderCryptoHandle  datareader_crypto_handle,
00632         inout SecurityException       ex  );
00633     };
00634 
00635     local interface CryptoKeyExchange {
00636       boolean
00637       create_local_participant_crypto_tokens(
00638         inout ParticipantCryptoTokenSeq  local_participant_crypto_tokens,
00639         in    ParticipantCryptoHandle    local_participant_crypto,
00640         in    ParticipantCryptoHandle    remote_participant_crypto,
00641         inout SecurityException          ex);
00642 
00643       boolean
00644       set_remote_participant_crypto_tokens(
00645         in    ParticipantCryptoHandle    local_participant_crypto,
00646         in    ParticipantCryptoHandle    remote_participant_crypto,
00647         in    ParticipantCryptoTokenSeq  remote_participant_tokens,
00648         inout SecurityException          ex);
00649 
00650       boolean
00651       create_local_datawriter_crypto_tokens(
00652         inout DatawriterCryptoTokenSeq  local_datawriter_crypto_tokens,
00653         in    DatawriterCryptoHandle    local_datawriter_crypto,
00654         in    DatareaderCryptoHandle    remote_datareader_crypto,
00655         inout SecurityException         ex);
00656 
00657       boolean
00658       set_remote_datawriter_crypto_tokens(
00659         in    DatareaderCryptoHandle    local_datareader_crypto,
00660         in    DatawriterCryptoHandle    remote_datawriter_crypto,
00661         in    DatawriterCryptoTokenSeq  remote_datawriter_tokens,
00662         inout SecurityException         ex);
00663 
00664       boolean
00665       create_local_datareader_crypto_tokens(
00666         inout DatareaderCryptoTokenSeq  local_datareader_cryto_tokens,
00667         in    DatareaderCryptoHandle    local_datareader_crypto,
00668         in    DatawriterCryptoHandle    remote_datawriter_crypto,
00669         inout SecurityException         ex);
00670 
00671       boolean
00672       set_remote_datareader_crypto_tokens(
00673         in    DatawriterCryptoHandle    local_datawriter_crypto,
00674         in    DatareaderCryptoHandle    remote_datareader_crypto,
00675         in    DatareaderCryptoTokenSeq  remote_datareader_tokens,
00676         inout SecurityException         ex);
00677 
00678       boolean
00679       return_crypto_tokens(
00680         in    CryptoTokenSeq     crypto_tokens,
00681         inout SecurityException  ex);
00682     };
00683 
00684     enum SecureSubmessageCategory_t {
00685       INFO_SUBMESSAGE,
00686       DATAWRITER_SUBMESSAGE,
00687       DATAREADER_SUBMESSAGE
00688     };
00689 
00690     local interface CryptoTransform {
00691       boolean
00692       encode_serialized_payload(
00693         inout OctetSeq                encoded_buffer,
00694         inout OctetSeq                extra_inline_qos,
00695         in    OctetSeq                plain_buffer,
00696         in    DatawriterCryptoHandle  sending_datawriter_crypto,
00697         inout SecurityException       ex);
00698 
00699       boolean
00700       encode_datawriter_submessage(
00701         inout OctetSeq                   encoded_rtps_submessage,
00702         in    OctetSeq                   plain_rtps_submessage,
00703         in    DatawriterCryptoHandle     sending_datawriter_crypto,
00704         in    DatareaderCryptoHandleSeq  receiving_datareader_crypto_list,
00705         inout long                       receiving_datareader_crypto_list_index,
00706         inout SecurityException          ex);
00707 
00708       boolean
00709       encode_datareader_submessage(
00710         inout OctetSeq                   encoded_rtps_submessage,
00711         in    OctetSeq                   plain_rtps_submessage,
00712         in    DatareaderCryptoHandle     sending_datareader_crypto,
00713         in    DatawriterCryptoHandleSeq  receiving_datawriter_crypto_list,
00714         inout SecurityException          ex);
00715 
00716       boolean
00717       encode_rtps_message(
00718         inout OctetSeq encoded_rtps_message,
00719         in    OctetSeq plain_rtps_message,
00720         in    ParticipantCryptoHandle sending_participant_crypto,
00721         in    ParticipantCryptoHandleSeq receiving_participant_crypto_list,
00722         inout long                       receiving_participant_crypto_list_index,
00723         inout SecurityException ex);
00724 
00725       boolean
00726       decode_rtps_message(
00727         inout OctetSeq                 plain_buffer,
00728         in    OctetSeq                 encoded_buffer,
00729         in    ParticipantCryptoHandle  receiving_participant_crypto,
00730         in    ParticipantCryptoHandle  sending_participant_crypto,
00731         inout SecurityException        ex);
00732 
00733       boolean
00734       preprocess_secure_submsg(
00735         inout DatawriterCryptoHandle         datawriter_crypto,
00736         inout DatareaderCryptoHandle         datareader_crypto,
00737         inout SecureSubmessageCategory_t     secure_submessage_category,
00738         in    OctetSeq                       encoded_rtps_submessage,
00739         in    ParticipantCryptoHandle        receiving_participant_crypto,
00740         in    ParticipantCryptoHandle        sending_participant_crypto,
00741         inout SecurityException              ex);
00742 
00743       boolean
00744       decode_datawriter_submessage(
00745         inout OctetSeq                plain_rtps_submessage,
00746         in    OctetSeq                encoded_rtps_submessage,
00747         in    DatareaderCryptoHandle  receiving_datareader_crypto,
00748         in    DatawriterCryptoHandle  sending_datawriter_crypto,
00749         inout SecurityException       ex); // DDSSEC12-21
00750 
00751       boolean
00752       decode_datareader_submessage(
00753         inout OctetSeq                plain_rtps_submessage,
00754         in    OctetSeq                encoded_rtps_submessage,
00755         in    DatawriterCryptoHandle  receiving_datawriter_crypto,
00756         in    DatareaderCryptoHandle  sending_datareader_crypto,
00757         inout SecurityException       ex);
00758 
00759       boolean
00760       decode_serialized_payload(
00761         inout OctetSeq                plain_buffer,
00762         in    OctetSeq                encoded_buffer,
00763         in    OctetSeq                inline_qos,
00764         in    DatareaderCryptoHandle  receiving_datareader_crypto,
00765         in    DatawriterCryptoHandle  sending_datawriter_crypto,
00766         inout SecurityException       ex);
00767     };
00768 
00769   };
00770 };
00771 
00772 #endif /* DDS_SECURITY_CORE_IDL */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1