home *** CD-ROM | disk | FTP | other *** search
/ ftp.muug.mb.ca / 2014.06.ftp.muug.mb.ca.tar / ftp.muug.mb.ca / pub / openh323.tar.gz / openh323.tar / openh323 / src / h235.asn < prev    next >
Text File  |  2001-08-05  |  8KB  |  247 lines

  1. H235-SECURITY-MESSAGES DEFINITIONS AUTOMATIC TAGS ::=
  2. BEGIN
  3.  
  4. -- EXPORTS All
  5.  
  6. ChallengeString    ::= OCTET STRING (SIZE(8..128))
  7. TimeStamp    ::= INTEGER(1..4294967295) -- seconds since 00:00 1/1/1970 UTC
  8. RandomVal    ::= INTEGER -- 32-bit Integer
  9. Password    ::= BMPString (SIZE (1..128))
  10. Identifier    ::= BMPString (SIZE (1..128))
  11. KeyMaterial    ::= BIT STRING(SIZE(1..2048))
  12.  
  13. NonStandardParameter ::= SEQUENCE
  14. {
  15.     nonStandardIdentifier    OBJECT IDENTIFIER,
  16.     data            OCTET STRING
  17. }
  18.  
  19. -- if local octet representations of these bit strings are used they shall 
  20. -- utilize standard Network Octet ordering (e.g. Big Endian)
  21. DHset ::= SEQUENCE  
  22. {
  23.     halfkey        BIT STRING (SIZE(0..2048)), -- = g^x mod n
  24.     modSize        BIT STRING (SIZE(0..2048)), --  n
  25.     generator    BIT STRING (SIZE(0..2048)), -- g
  26.     ...
  27. }
  28.  
  29. ECKASDH::= CHOICE -- parameters for elliptic curve key agreement scheme Diffie-Hellman
  30. {
  31.     eckasdhp SEQUENCE -- parameters for elliptic curves of prime field
  32.     {
  33.         public-key    BIT STRING (SIZE(0..511)),
  34.             -- This field contains octet string representation of
  35.             -- the compressed ECKAS-DHp public key value. This field contains the initiator's compressed
  36.             -- ECKAS-DHp public key value (aP) when this information element is sent from originator to
  37.             -- receiver. This field contains the responder's compressed ECKAS-DHp public key value (bP)
  38.             -- when this information element is sent back from receiver to originator.
  39.         modulus        BIT STRING (SIZE(0..511)),
  40.             -- This field contains octet string representation of
  41.             -- the ECKAS-DHp public modulus value (p).
  42.         base        BIT STRING (SIZE(0..511)),
  43.             -- This field contains octet string representation of
  44.             -- the compressed ECKAS-DHp public base (P).
  45.         weierstrassA    BIT STRING (SIZE(0..511)),
  46.             --This field contains octet string representation of
  47.             -- the ECKAS-DHp Weierstrass coefficient (a).
  48.         weierstrassB    BIT STRING (SIZE(0..511))
  49.             --This field contains octet string representation of
  50.             -- the ECKAS-DHp Weierstrass coefficient (b).
  51.     },
  52.  
  53.     eckasdh2 SEQUENCE -- parameters for elliptic curves of characteristic 2 
  54.     {
  55.         public-key    BIT STRING (SIZE(0..511)),
  56.             -- This field contains octet string representation of
  57.             -- the compressed ECKAS-DH2 public key value. This field contains the initiator's compressed
  58.             -- ECKAS-DH2 public key value (aP) when this information element is sent from originator to
  59.             -- receiver. This field contains the responder's compressed ECKAS-DH2 public key value (bP)
  60.             -- when this information element is sent back from receiver to originator.
  61.         fieldSize    BIT STRING (SIZE(0..511)),
  62.             -- This field contains octet string representation of
  63.             -- the ECKAS-DH2 field size value (m).
  64.         base            BIT STRING (SIZE(0..511)),
  65.             -- This field contains octet string representation of
  66.             -- the compressed ECKAS-DH2 public base (P).
  67.         weierstrassA    BIT STRING (SIZE(0..511)),
  68.             --This field contains octet string representation of
  69.             -- the ECKAS-DH2 Weierstrass coefficient (a).
  70.         weierstrassB    BIT STRING (SIZE(0..511))
  71.             --This field contains octet string representation of
  72.             -- the ECKAS-DH2 Weierstrass coefficient (b).
  73.     },
  74.     ...
  75. }
  76.  
  77. ECDSAlikeSignature::= SEQUENCE -- parameters for elliptic curve digital signature algorithm
  78. {
  79.     r    BIT STRING (SIZE(0..511)),
  80.             -- This field contains the octet string representation of the
  81.             -- r component of the ECDSA-like digital signature.
  82.     s    BIT STRING (SIZE(0..511))
  83.             -- This field contains the octet string representation of the
  84.             -- s component of the ECDSA-like digital signature.
  85. }
  86.  
  87. TypedCertificate ::= SEQUENCE
  88. {
  89.     type        OBJECT IDENTIFIER,
  90.     certificate    OCTET STRING,
  91.     ...
  92. }
  93.  
  94. AuthenticationBES ::= CHOICE
  95. {
  96.     default    NULL, -- encrypted ClearToken
  97.     radius    NULL, -- RADIUS-challenge/response
  98.     ...
  99. }
  100.  
  101. AuthenticationMechanism     ::= CHOICE 
  102. {
  103.     dhExch         NULL, -- Diffe-Hellman
  104.     pwdSymEnc    NULL, -- password with symmetric encryption
  105.     pwdHash        NULL, -- password with hashing
  106.     certSign    NULL, -- Certificate with signature
  107.     ipsec        NULL, -- IPSEC based connection
  108.     tls        NULL,
  109.     nonStandard     NonStandardParameter, -- something else.
  110.     ...,
  111.     authenticationBES    AuthenticationBES -- user authentication for BES
  112. }
  113.  
  114. ClearToken        ::= SEQUENCE  -- a "token" may contain multiple value types.
  115. {
  116.     tokenOID    OBJECT IDENTIFIER,
  117.     timeStamp    TimeStamp OPTIONAL,
  118.     password    Password OPTIONAL,
  119.     dhkey        DHset OPTIONAL,
  120.     challenge    ChallengeString OPTIONAL,
  121.     random        RandomVal OPTIONAL,
  122.     certificate    TypedCertificate OPTIONAL,
  123.     generalID    Identifier OPTIONAL,
  124.     nonStandard     NonStandardParameter OPTIONAL,
  125.     ...,
  126.     eckasdhkey    ECKASDH OPTIONAL, -- elliptic curve Key Agreement Scheme-Diffie
  127.                                      -- Hellman Analogue (ECKAS-DH)
  128.     sendersID    Identifier OPTIONAL
  129. }
  130.  
  131. --    An object identifier should be placed in the tokenOID field when a
  132. --    ClearToken is included directly in a message (as opposed to being
  133. --    encrypted).  In all other cases, an application should use the
  134. --    object identifier { 0 0 } to indicate that the tokenOID value is not present.
  135.  
  136. --
  137. -- Start all the cryptographic parameterized types here...
  138. --
  139.  
  140.  
  141. SIGNED { ToBeSigned } ::= SEQUENCE {
  142.     toBeSigned    ToBeSigned,
  143.     algorithmOID    OBJECT IDENTIFIER, 
  144.     paramS        Params,    -- any "runtime" parameters
  145.     signature    BIT STRING -- could be an RSA or an ASN.1 coded ECDSAlikeSignature
  146. } ( CONSTRAINED BY { -- Verify or Sign Certificate -- } )
  147.  
  148.  
  149. ENCRYPTED { ToBeEncrypted } ::= SEQUENCE {
  150.     algorithmOID    OBJECT IDENTIFIER, 
  151.     paramS        Params,    -- any "runtime" parameters
  152.     encryptedData    OCTET STRING
  153. } ( CONSTRAINED BY { -- Encrypt or Decrypt -- ToBeEncrypted } )
  154.  
  155. HASHED { ToBeHashed } ::= SEQUENCE {
  156.     algorithmOID    OBJECT IDENTIFIER, 
  157.     paramS        Params,    -- any "runtime" parameters
  158.     hash        BIT STRING
  159. } ( CONSTRAINED BY { -- Hash -- ToBeHashed } )
  160.  
  161. IV8 ::= OCTET STRING (SIZE(8)) -- initial value for 64-bit block ciphers
  162. IV16 ::= OCTET STRING (SIZE(16)) -- initial value for 128-bit block ciphers
  163.  
  164. -- signing algorithm used must select one of these types of parameters 
  165. -- needed by receiving end of signature.
  166.  
  167. Params ::= SEQUENCE {
  168.     ranInt    INTEGER OPTIONAL, -- some integer value
  169.     iv8    IV8 OPTIONAL,    -- 8 octet initialization vector
  170.     ...,
  171.     iv16    IV16 OPTIONAL    -- 16 octet initialization vector
  172. }
  173.  
  174. EncodedGeneralToken ::= TYPE-IDENTIFIER.&Type (ClearToken -- general usage token -- )
  175. PwdCertToken ::= ClearToken (WITH COMPONENTS {..., timeStamp PRESENT, generalID PRESENT})
  176. EncodedPwdCertToken ::= TYPE-IDENTIFIER.&Type (PwdCertToken) 
  177.  
  178. CryptoToken::= CHOICE
  179. {
  180.  
  181.     cryptoEncryptedToken SEQUENCE -- General purpose/application specific token
  182.     {
  183.         tokenOID      OBJECT IDENTIFIER, 
  184.         token         ENCRYPTED { EncodedGeneralToken }
  185.     },
  186.     cryptoSignedToken  SEQUENCE -- General purpose/application specific token
  187.     {
  188.         tokenOID      OBJECT IDENTIFIER, 
  189.         token         SIGNED { EncodedGeneralToken }
  190.     },
  191.     cryptoHashedToken SEQUENCE -- General purpose/application specific token
  192.     {
  193.         tokenOID      OBJECT IDENTIFIER, 
  194.         hashedVals    ClearToken,
  195.         token HASHED { EncodedGeneralToken }
  196.     },
  197.     cryptoPwdEncr     ENCRYPTED { EncodedPwdCertToken },
  198.     ...
  199. }
  200.  
  201. -- These allow the passing of session keys within the H.245 OLC structure.
  202. -- They are encoded as standalone ASN.1 and based as an OCTET STRING within H.245
  203. H235Key    ::=CHOICE  -- this is used with the H.245 "h235Key" field
  204. {
  205.     secureChannel        KeyMaterial,
  206.     sharedSecret        ENCRYPTED {EncodedKeySyncMaterial},
  207.     certProtectedKey    SIGNED { EncodedKeySignedMaterial },
  208.     ...
  209. }
  210.  
  211. KeySignedMaterial ::= SEQUENCE {
  212.     generalId    Identifier, -- slave's alias
  213.     mrandom        RandomVal, -- master's random value
  214.     srandom        RandomVal OPTIONAL, -- slave's random value
  215.     timeStamp    TimeStamp OPTIONAL, -- master's timestamp for unsolicited EU
  216.     encrptval    ENCRYPTED {EncodedKeySyncMaterial }
  217. }
  218. EncodedKeySignedMaterial ::= TYPE-IDENTIFIER.&Type (KeySignedMaterial)
  219.  
  220. H235CertificateSignature    ::= SEQUENCE
  221. {
  222.     certificate    TypedCertificate,
  223.     responseRandom    RandomVal,
  224.     requesterRandom    RandomVal OPTIONAL,
  225.     signature    SIGNED { EncodedReturnSig },
  226.     ...
  227. }
  228.  
  229. ReturnSig ::= SEQUENCE {
  230.     generalId    Identifier, -- slave's alias
  231.      responseRandom     RandomVal,
  232.      requestRandom     RandomVal OPTIONAL,
  233.      certificate      TypedCertificate OPTIONAL -- requested certificate
  234. }
  235.  
  236. EncodedReturnSig ::= TYPE-IDENTIFIER.&Type (ReturnSig)
  237. KeySyncMaterial    ::= SEQUENCE
  238. {
  239.     generalID    Identifier,
  240.     keyMaterial     KeyMaterial,
  241.     ...
  242. }
  243. EncodedKeySyncMaterial    ::=TYPE-IDENTIFIER.&Type (KeySyncMaterial)
  244.  
  245.  
  246. END    -- End of H235-SECURITY-MESSAGES DEFINITIONS 
  247.