gss-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CVS gss/doc/specification


From: gss-commit
Subject: CVS gss/doc/specification
Date: Tue, 29 Nov 2005 22:13:45 +0100

Update of /home/cvs/gss/doc/specification
In directory dopio:/tmp/cvs-serv2987

Added Files:
        draft-ietf-kitten-gssapi-csharp-bindings-00.txt 
Log Message:
Add.


--- 
/home/cvs/gss/doc/specification/draft-ietf-kitten-gssapi-csharp-bindings-00.txt 
    2005/11/29 21:13:45     NONE
+++ 
/home/cvs/gss/doc/specification/draft-ietf-kitten-gssapi-csharp-bindings-00.txt 
    2005/11/29 21:13:45     1.1
NETWORK WORKING GROUP                                      J. C. Luciani
INTERNET-DRAFT                                              Novell, Inc.
Expires: April 8, 2006                                  November 8, 2005

                        GSS_API V2: C# Bindings
               draft-ietf-kitten-gssapi-csharp-bindings-00.txt


Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as
   Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

Abstract

   The Generic Security Services Application Program Interface (GSS-API)
   offers application programmers uniform access to security services
   atop a variety of underlying cryptographic mechanisms.  This document
   specifies the C# language bindings for GSS-API which is described at
   a language independent conceptual level in RFC 2743 [RFC2743].

   The GSS-API C# bindings were designed to emulate the Java bindings as
   defined in RFC 2853 [RFC2853].












Luciani                 Expires April 8, 2006                   [Page 1]

Internet-Draft          GSS-API V2: C# Bindings            November 2005


Table of Contents

1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2. GSS-API Operational Paradigm. . . . . . . . . . . . . . . . . . . . 6  
3. Additional Controls . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1. Delegation. . . . . . . . . . . . . . . . . . . . . . . . . . . . 9   
3.2. Mutual Authentication . . . . . . . . . . . . . . . . . . . . . . 9
3.3. Replay and Out-of-Sequence Detection. . . . . . . . . . . . . .  10 
3.4. Anonymous Authentication. . . . . . . . . . . . . . . . . . . .  11  
3.5. Confidentiality . . . . . . . . . . . . . . . . . . . . . . . .  12    
3.6. Inter-process Context Transfer. . . . . . . . . . . . . . . . .  12  
3.7. The Use of Incomplete Contexts. . . . . . . . . . . . . . . . .  13  
4. C# GSS-API Overview . . . . . . . . . . . . . . . . . . . . . . .  13  
4.1. Object Identifiers. . . . . . . . . . . . . . . . . . . . . . .  14  
4.2. Object Identifier Sets. . . . . . . . . . . . . . . . . . . . .  14    
4.3. Credentials . . . . . . . . . . . . . . . . . . . . . . . . . .  14   
4.4. Contexts. . . . . . . . . . . . . . . . . . . . . . . . . . . .  16   
4.5. Authentication Tokens . . . . . . . . . . . . . . . . . . . . .  17 
4.6. Interprocess Tokens . . . . . . . . . . . . . . . . . . . . . .  17   
4.7. Error Reporting . . . . . . . . . . . . . . . . . . . . . . . .  17 
4.7.1. GSS Status Codes. . . . . . . . . . . . . . . . . . . . . . .  18  
4.7.2. Mechanism-specific Codes. . . . . . . . . . . . . . . . . . .  20   
4.7.3. Suplementary Status Codes . . . . . . . . . . . . . . . . . .  20 
4.8. Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21   
4.9. Channel Bindings. . . . . . . . . . . . . . . . . . . . . . . .  23    
5. Introduction to GSS-API Classes and Interfaces. . . . . . . . . .  24   
5.1. GSSManager Class. . . . . . . . . . . . . . . . . . . . . . . .  24    
5.2. GSSName Interface . . . . . . . . . . . . . . . . . . . . . . .  25  
5.3. GSSCredential Interface . . . . . . . . . . . . . . . . . . . .  25  
5.4. GSSContext Interface. . . . . . . . . . . . . . . . . . . . . .  26   
5.5. MessageProp Class . . . . . . . . . . . . . . . . . . . . . . .  27  
5.6. GSSException Class. . . . . . . . . . . . . . . . . . . . . . .  27  
5.7. Oid Class . . . . . . . . . . . . . . . . . . . . . . . . . . .  27  
5.8. ChannelBinding Class. . . . . . . . . . . . . . . . . . . . . .  27   
5.9. GSSConstants Class. . . . . . . . . . . . . . . . . . . . . . .  28
5.10. GSSNameTypes Class . . . . . . . . . . . . . . . . . . . . . .  28
5.11. GSSCredentialUsage Enumeration . . . . . . . . . . . . . . . .  28
6. Detailed GSS-API Description. . . . . . . . . . . . . . . . . . .  28   
6.1. public abstract class GSSManager. . . . . . . . . . . . . . . .  28   
6.1.1. Example Code. . . . . . . . . . . . . . . . . . . . . . . . .  29   
6.1.2. getInstance . . . . . . . . . . . . . . . . . . . . . . . . .  29   
6.1.3. getMechs. . . . . . . . . . . . . . . . . . . . . . . . . . .  29    
6.1.4. getNamesForMech . . . . . . . . . . . . . . . . . . . . . . .  29  
6.1.5. getMechsForName . . . . . . . . . . . . . . . . . . . . . . .  29  
6.1.6. createName. . . . . . . . . . . . . . . . . . . . . . . . . .  30  
6.1.7. createName. . . . . . . . . . . . . . . . . . . . . . . . . .  30  
6.1.8. createName. . . . . . . . . . . . . . . . . . . . . . . . . .  31  
6.1.9. createName. . . . . . . . . . . . . . . . . . . . . . . . . .  32  
6.1.10. createCredential . . . . . . . . . . . . . . . . . . . . . .  32   


Luciani                 Expires April 8, 2006                   [Page 2]

Internet-Draft          GSS-API V2: C# Bindings            November 2005


6.1.11. createCredential . . . . . . . . . . . . . . . . . . . . . .  33   
6.1.12. createCredential . . . . . . . . . . . . . . . . . . . . . .  33   
6.1.13. createContext. . . . . . . . . . . . . . . . . . . . . . . .  34    
6.1.14. createContext. . . . . . . . . . . . . . . . . . . . . . . .  35 
6.1.15. createContext. . . . . . . . . . . . . . . . . . . . . . . .  35
6.2. public class GSSConstants . . . . . . . . . . . . . . . . . . .  35
6.2.1. DEFAULT_LIFETIME. . . . . . . . . . . . . . . . . . . . . . .  35 
6.2.2. INDEFINITE_LIFETIME . . . . . . . . . . . . . . . . . . . . .  36
6.3. public class GSSNameTypes . . . . . . . . . . . . . . . . . . .  36
6.3.1. NT_HOSTBASED_SERVICE. . . . . . . . . . . . . . . . . . . . .  36 
6.3.2. NT_USER_NAME. . . . . . . . . . . . . . . . . . . . . . . . .  36
6.3.3. NT_MACHINE_UID_NAME . . . . . . . . . . . . . . . . . . . . .  36 
6.3.4. NT_STRING_UID_NAME. . . . . . . . . . . . . . . . . . . . . .  37 
6.3.5. NT_ANONYMOUS. . . . . . . . . . . . . . . . . . . . . . . . .  37 
6.3.6. NT_EXPORT_NAME. . . . . . . . . . . . . . . . . . . . . . . .  37 
6.4. public interface GSSName. . . . . . . . . . . . . . . . . . . .  38
6.4.1. Example Code. . . . . . . . . . . . . . . . . . . . . . . . .  38 
6.4.2. Equals. . . . . . . . . . . . . . . . . . . . . . . . . . . .  39 
6.4.3. Equals. . . . . . . . . . . . . . . . . . . . . . . . . . . .  39 
6.4.4. canonicalize. . . . . . . . . . . . . . . . . . . . . . . . .  39 
6.4.5. export. . . . . . . . . . . . . . . . . . . . . . . . . . . .  40 
6.4.6. ToString. . . . . . . . . . . . . . . . . . . . . . . . . . .  40  
6.4.7. stringNameType. . . . . . . . . . . . . . . . . . . . . . . .  40  
6.4.8. isAnonymous . . . . . . . . . . . . . . . . . . . . . . . . .  40 
6.4.9. isMN  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40
6.5. public enum GSSCredentialUsage. . . . . . . . . . . . . . . . .  41
6.5.1. INITIATE_AND_ACCEPT . . . . . . . . . . . . . . . . . . . . .  41 
6.5.2. INITIATE_ONLY . . . . . . . . . . . . . . . . . . . . . . . .  41
6.5.3. ACCEPT_ONLY . . . . . . . . . . . . . . . . . . . . . . . . .  41
6.6. public interface GSSCredential. . . . . . . . . . . . . . . . .  41
6.6.1. Example Code. . . . . . . . . . . . . . . . . . . . . . . . .  42 
6.6.2. dispose . . . . . . . . . . . . . . . . . . . . . . . . . . .  43
6.6.3. getName . . . . . . . . . . . . . . . . . . . . . . . . . . .  43
6.6.4. getName . . . . . . . . . . . . . . . . . . . . . . . . . . .  43
6.6.5. getRemainingLifetime. . . . . . . . . . . . . . . . . . . . .  43  
6.6.6. getRemainingInitLifetime. . . . . . . . . . . . . . . . . . .  44 
6.6.7. getRemainingAcceptLifetime. . . . . . . . . . . . . . . . . .  44  
6.6.8. getUsage. . . . . . . . . . . . . . . . . . . . . . . . . . .  44  
6.6.9. getUsage. . . . . . . . . . . . . . . . . . . . . . . . . . .  45
6.6.10. getMechs . . . . . . . . . . . . . . . . . . . . . . . . . .  45
6.6.11. add. . . . . . . . . . . . . . . . . . . . . . . . . . . . .  45
6.6.12. Equals . . . . . . . . . . . . . . . . . . . . . . . . . . .  46
6.7. public interface GSSContext . . . . . . . . . . . . . . . . . .  47
6.7.1. Example Context . . . . . . . . . . . . . . . . . . . . . . .  48
6.7.2. initSecContext. . . . . . . . . . . . . . . . . . . . . . . .  50  
6.7.2.1. Example Code. . . . . . . . . . . . . . . . . . . . . . . .  51 
6.7.3. initSecContext. . . . . . . . . . . . . . . . . . . . . . . .  52  
6.7.3.1. Example Code. . . . . . . . . . . . . . . . . . . . . . . .  53  
6.7.4. acceptSecContext. . . . . . . . . . . . . . . . . . . . . . .  54


Luciani                 Expires April 8, 2006                   [Page 3]

Internet-Draft          GSS-API V2: C# Bindings            November 2005


6.7.4.1. Example Code. . . . . . . . . . . . . . . . . . . . . . . .  55
6.7.5. acceptSecContext. . . . . . . . . . . . . . . . . . . . . . .  56
6.7.5.1. Example Code. . . . . . . . . . . . . . . . . . . . . . . .  57  
6.7.6. isEstablished . . . . . . . . . . . . . . . . . . . . . . . .  57
6.7.7. dispose . . . . . . . . . . . . . . . . . . . . . . . . . . .  57
6.7.8. getWrapSizeLimit. . . . . . . . . . . . . . . . . . . . . . .  58
6.7.9. wrap. . . . . . . . . . . . . . . . . . . . . . . . . . . . .  59  
6.7.10. wrap . . . . . . . . . . . . . . . . . . . . . . . . . . . .  60 
6.7.11. unWrap . . . . . . . . . . . . . . . . . . . . . . . . . . .  61
6.7.12. unWrap . . . . . . . . . . . . . . . . . . . . . . . . . . .  62
6.7.13. getMIC . . . . . . . . . . . . . . . . . . . . . . . . . . .  63
6.7.14. getMIC . . . . . . . . . . . . . . . . . . . . . . . . . . .  64
6.7.15. verifyMIC. . . . . . . . . . . . . . . . . . . . . . . . . .  65
6.7.16. verifyMIC. . . . . . . . . . . . . . . . . . . . . . . . . .  66
6.7.17. export . . . . . . . . . . . . . . . . . . . . . . . . . . .  67
6.7.18. mutualAuthenitcation . . . . . . . . . . . . . . . . . . . .  67
6.7.19. replayDetection. . . . . . . . . . . . . . . . . . . . . . .  68
6.7.20. sequenceDetection. . . . . . . . . . . . . . . . . . . . . .  68 
6.7.21. credentialDelegation . . . . . . . . . . . . . . . . . . . .  68
6.7.22. anonymity. . . . . . . . . . . . . . . . . . . . . . . . . .  69
6.7.23. confidentiality. . . . . . . . . . . . . . . . . . . . . . .  69
6.7.24. integrity. . . . . . . . . . . . . . . . . . . . . . . . . .  69
6.7.25. lifetime . . . . . . . . . . . . . . . . . . . . . . . . . .  70
6.7.26. channelBinding . . . . . . . . . . . . . . . . . . . . . . .  70
6.7.27. isTransferable . . . . . . . . . . . . . . . . . . . . . . .  70
6.7.28. isProtReady. . . . . . . . . . . . . . . . . . . . . . . . .  70 
6.7.29. srcName. . . . . . . . . . . . . . . . . . . . . . . . . . .  71  
6.7.30. targName . . . . . . . . . . . . . . . . . . . . . . . . . .  71
6.7.31. mechanism. . . . . . . . . . . . . . . . . . . . . . . . . .  71
6.7.32. delegatedCredential. . . . . . . . . . . . . . . . . . . . .  71  
6.7.33. isInitiator. . . . . . . . . . . . . . . . . . . . . . . . .  72 
6.8. public class MessageProp. . . . . . . . . . . . . . . . . . . .  72
6.8.1. Constructors. . . . . . . . . . . . . . . . . . . . . . . . .  73 
6.8.2. QOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  73
6.8.3. privacy . . . . . . . . . . . . . . . . . . . . . . . . . . .  73
6.8.4. minorStatus . . . . . . . . . . . . . . . . . . . . . . . . .  74 
6.8.5. minorString . . . . . . . . . . . . . . . . . . . . . . . . .  74 
6.8.6. isDuplicateToken. . . . . . . . . . . . . . . . . . . . . . .  74
6.8.7. isOldToken. . . . . . . . . . . . . . . . . . . . . . . . . .  74
6.8.8. isUnseqToken. . . . . . . . . . . . . . . . . . . . . . . . .  74 
6.8.9. isGapToken. . . . . . . . . . . . . . . . . . . . . . . . . .  75
6.9. public class ChannelBinding . . . . . . . . . . . . . . . . . .  75
6.9.1. Constructors. . . . . . . . . . . . . . . . . . . . . . . . .  76 
6.9.2. initiatorAddress. . . . . . . . . . . . . . . . . . . . . . .  76
6.9.3. acceptorAddress . . . . . . . . . . . . . . . . . . . . . . .  77
6.9.4. applicationData . . . . . . . . . . . . . . . . . . . . . . .  77
6.9.5. Equals. . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
6.10. public class Oid . . . . . . . . . . . . . . . . . . . . . . .  77  
6.10.1. Constructor. . . . . . . . . . . . . . . . . . . . . . . . .  78 


Luciani                 Expires April 8, 2006                   [Page 4]

Internet-Draft          GSS-API V2: C# Bindings            November 2005


6.10.2. ToString . . . . . . . . . . . . . . . . . . . . . . . . . .  78  
6.10.3. Equals . . . . . . . . . . . . . . . . . . . . . . . . . . .  79 
6.10.4. DER. . . . . . . . . . . . . . . . . . . . . . . . . . . . .  79 
6.10.5. containedIn. . . . . . . . . . . . . . . . . . . . . . . . .  79 
6.11. public class GSSException. . . . . . . . . . . . . . . . . . .  79 
6.11.1. Constants. . . . . . . . . . . . . . . . . . . . . . . . . .  80
6.11.2. Constructors . . . . . . . . . . . . . . . . . . . . . . . .  82
6.11.3. major. . . . . . . . . . . . . . . . . . . . . . . . . . . .  82  
6.11.4. minor. . . . . . . . . . . . . . . . . . . . . . . . . . . .  83 
6.11.5. majorString. . . . . . . . . . . . . . . . . . . . . . . . .  83 
6.11.6. minorString. . . . . . . . . . . . . . . . . . . . . . . . .  83 
6.11.7. ToString . . . . . . . . . . . . . . . . . . . . . . . . . .  83  
6.11.8. Message. . . . . . . . . . . . . . . . . . . . . . . . . . .  83
7. Sample Applications . . . . . . . . . . . . . . . . . . . . . . .  84
7.1. Simple GSS Context Initiator. . . . . . . . . . . . . . . . . .  84  
7.2. Simple GSS Context Acceptor . . . . . . . . . . . . . . . . . .  89
8. Security Considerations . . . . . . . . . . . . . . . . . . . . .  93
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . .  93
10. Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . .  93
11. Normative References . . . . . . . . . . . . . . . . . . . . . .  94
12. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . .  94
13. Intellectual Property Statement. . . . . . . . . . . . . . . . .  94
14. Disclaimer of Validity . . . . . . . . . . . . . . . . . . . . .  95
15. Copyright Statement. . . . . . . . . . . . . . . . . . . . . . .  95



























Luciani                 Expires April 8, 2006                   [Page 5]

Internet-Draft          GSS-API V2: C# Bindings            November 2005


1.Introduction

   This document specifies the C# language bindings for the Generic
   Security Services Application Programming Interface Version 2
   (GSS-API v2). GSS-API allows a caller application to authenticate a
   principal identity, to delegate rights to a peer, and to apply
   security services such as confidentiality and integrity on a per-
   message basis.

   One of the design goals utilized when defining the C# bindings for
   GSS-API was to emulate the Java bindings specified in RFC 2853 as
   much as possible while still taking advantage of C# features such
   as Properties.  By emulating the Java bindings, we hoped to leverage
   work already done and to make life easier for developers utilizing
   GSS-API under C# and Java.  As a result of this design goal, the C#
   bindings match the Java bindings very closely.

   Because of the similarity between the Java and C# bindings and in the
   spirit of leveraging work already done, this document borrows heavily
   from RFC 2853.

2.GSS-API Operational Paradigm

   The Generic Security Service Application Programming Interface
   Version 2 defines a generic security API to calling applications.  It
   allows a communicating application to authenticate a user associated
   with another application, to delegate rights to another application,
   and to apply security services such as confidentiality and integrity
   on a per-message basis.

      There are four stages to using GSS-API:

      1) The application acquires a set of credentials with which it may
         prove its identity to other processes.  The application's
         credentials vouch for its global identity, which may or may not
         be related to any local username under which it may be running.

      2) A pair of communicating applications establish a joint security
         context using their credentials.  The security context
         encapsulates shared state information, which is required in
         order that per-message security services may be provided.
         Examples of state information that might be shared between
         applications as part of a security context are cryptographic
         keys, and message sequence numbers.  As part of the
         establishment of a security context, the context initiator is
         authenticated to the responder, and may require that the
         responder is authenticated back to the initiator.  The
         initiator may optionally give the responder the right to
         initiate further security contexts, acting as an agent or
         
         
Luciani                 Expires April 8, 2006                   [Page 6]

Internet-Draft          GSS-API V2: C# Bindings            November 2005


         delegate of the initiator.  This transfer of rights is termed
         "delegation", and is achieved by creating a set of credentials,
         similar to those used by the initiating application, but which
         may be used by the responder.

         A GSSContext object is used to establish and maintain the
         shared information that makes up the security context.  Certain
         GSSContext methods will generate a token, which applications
         treat as cryptographically protected, opaque data.  The caller
         of such GSSContext method is responsible for transferring the
         token to the peer application, encapsulated if necessary in an
         application-to-application protocol.  On receipt of such a
         token, the peer application should pass it to a corresponding
         GSSContext method which will decode the token and extract the
         information, updating the security context state information
         accordingly.

      3) Per-message services are invoked on a GSSContext object to
         apply either:

         integrity and data origin authentication, or

         confidentiality, integrity and data origin authentication

         to application data, which are treated by GSS-API as arbitrary
         octet-strings.  An application transmitting a message that it
         wishes to protect will call the appropriate GSSContext method
         (getMIC or wrap) to apply protection, and send the resulting
         token to the receiving application.  The receiver will pass the
         received token (and, in the case of data protected by getMIC,
         the accompanying message-data) to the corresponding decoding
         method of the GSSContext interface (verifyMIC or unwrap) to
         remove the protection and validate the data.

      4) At the completion of a communications session (which may extend
         across several transport connections), each application uses a
         GSSContext method to invalidate the security context and
         release any system or cryptographic resources held.  Multiple
         contexts may also be used (either successively or
         simultaneously) within a single communications association, at
         the discretion of the applications.

3. Additional Controls

   This section discusses the optional services that a context initiator
   may request of the GSS-API before the context establishment.  Each of
   these services is requested by manipulating the appropriate property
   of the GSSContext interface before the first call to init is
   performed.


Luciani                 Expires April 8, 2006                   [Page 7]

Internet-Draft          GSS-API V2: C# Bindings            November 2005


   Only the context initiator can request context flags.

   The optional services defined are:

   Delegation
         The (usually temporary) transfer of rights from initiator to

[4918 lines skipped]




reply via email to

[Prev in Thread] Current Thread [Next in Thread]