Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
4.9 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1995.
  5. //
  6. // File: encode.h
  7. //
  8. // Contents:
  9. //
  10. // Classes:
  11. //
  12. // Functions:
  13. //
  14. // History: 10-21-97 jbanes Removed obsolete declarations.
  15. //
  16. //----------------------------------------------------------------------------
  17. #ifndef _ENCODE_H_
  18. #define _ENCODE_H_
  19. /* tag definitions for ASN.1 encoding decoding */
  20. #define INTEGER_TAG 0x02
  21. #define CHAR_STRING_TAG 0x16
  22. #define OCTET_STRING_TAG 0x04
  23. #define BIT_STRING_TAG 0x03
  24. #define UTCTIME_TAG 0x17
  25. #define SEQUENCE_TAG 0x30
  26. #define SET_OF_TAG 0x11
  27. #define OBJECT_ID_TAG 0x06
  28. #define NULL_TAG 0x05
  29. #define PRINTABLE_STRING_TAG 0x13
  30. #define TELETEX_STRING_TAG 0x14
  31. #define ATTRIBUTE_TAG 0xa0
  32. /* definitions of maximum lengths needed for the ASN.1 encoded
  33. form of some of the common fields in a certificate */
  34. #define MAXVALIDITYLEN 0x24
  35. #define MAXKEYINFOLEN 0x50
  36. #define MAXALGIDLEN 0x0A
  37. #define MAXOBJIDLEN 0x0A
  38. #define MAXNAMEVALUELEN 0x40
  39. #define UTCTIMELEN 0x0F
  40. #define MAXPUBKEYDATALEN 0x30
  41. #define VERSIONLEN 0x03
  42. #define MAXENCODEDSIGLEN 0x30
  43. #define MAXHEADERLEN 0x08
  44. #define MINHEADERLEN 0x03
  45. #define MAXTIMELEN 0x20
  46. #define MAXNAMELEN 0x60
  47. /* definitions for scrubbing memory */
  48. #define ALLBITSOFF 0x00
  49. #define ALLBITSON 0xFF
  50. /* prototypes for the functions in encode.c */
  51. long EncodeLength(BYTE *pbEncoded, DWORD dwLen, BOOL Writeflag);
  52. long EncodeAlgid(BYTE *pbEncoded, DWORD Algid, BOOL Writeflag);
  53. long EncodeInteger(BYTE *pbEncoded, BYTE *pbInt, DWORD dwLen, BOOL Writeflag);
  54. long EncodeString(BYTE *pbEncoded, BYTE *pbStr, DWORD dwLen, BOOL Writeflag);
  55. long EncodeOctetString(BYTE *pbEncoded, BYTE *pbStr, DWORD dwLen, BOOL Writeflag);
  56. long EncodeBitString(BYTE *pbEncoded, BYTE *pbStr, DWORD dwLen, BOOL Writeflag);
  57. //long EncodeUTCTime(BYTE *pbEncoded, time_t Time, BOOL Writeflag);
  58. long EncodeHeader(BYTE *pbEncoded, DWORD dwLen, BOOL Writeflag);
  59. long EncodeSetOfHeader(BYTE *pbEncoded, DWORD dwLen, BOOL Writeflag);
  60. long EncodeAttributeHeader(BYTE *pbEncoded, DWORD dwLen, BOOL Writeflag);
  61. long EncodeName(BYTE *pbEncoded, BYTE *pbName, DWORD dwLen, BOOL Writeflag);
  62. long DecodeLength(DWORD *pdwLen, BYTE *pbEncoded, DWORD cEncoded);
  63. long DecodeAlgid(DWORD *pAlgid, BYTE *pbEncoded, DWORD cEncoded, BOOL Writeflag);
  64. long DecodeHeader(DWORD *pdwLen, BYTE *pbEncoded, DWORD cEncoded);
  65. long DecodeSetOfHeader(DWORD *pdwLen, BYTE *pbEncoded, DWORD cEncoded);
  66. long DecodeInteger(BYTE *pbInt, DWORD cbBuff, DWORD *pdwLen, BYTE *pbEncoded, DWORD cEncoded, BOOL Writeflag);
  67. long DecodeString(BYTE *pbStr, DWORD *pdwLen, BYTE *pbEncoded, DWORD cEncoded,BOOL Writeflag);
  68. long DecodeOctetString(BYTE *pbStr, DWORD *pdwLen, BYTE *pbEncoded, DWORD cEncoded, BOOL Writeflag);
  69. long DecodeBitString(BYTE *pbStr, DWORD *pdwLen, BYTE *pbEncoded, DWORD cEncoded, BOOL Writeflag);
  70. long DecodeName(BYTE *pbName, DWORD *pdwLen, BYTE *pbEncoded, DWORD cEncoded, BOOL Writeflag);
  71. long
  72. EncodeAlgorithm(
  73. BYTE * pbEncoded,
  74. DWORD AlgId,
  75. BOOL WriteFlag);
  76. #define ALGTYPE_SIG_RSA_MD5 0x01
  77. #define ALGTYPE_KEYEXCH_RSA_MD5 0x02
  78. #define ALGTYPE_CIPHER_RC4_MD5 0x03
  79. #define ALGTYPE_KEYEXCH_DH 0x04
  80. long
  81. EncodeDN(
  82. BYTE * pbEncoded,
  83. PSTR pszDN,
  84. BOOL WriteFlag);
  85. #ifndef SECURITY_LINUX
  86. long
  87. EncodeFileTime(
  88. BYTE * pbEncoded,
  89. FILETIME Time,
  90. BOOL UTC,
  91. BOOL WriteFlag);
  92. #else /* SECURITY_LINUX */
  93. long EncodeUTCTime(BYTE *pbEncoded, time_t Time, BOOL Writeflag);
  94. #endif /* SECURITY_LINUX */
  95. #ifndef SECURITY_LINUX
  96. long
  97. DecodeFileTime(
  98. FILETIME * pTime,
  99. BYTE * pbEncoded,
  100. DWORD cEncoded,
  101. BOOL WriteFlag);
  102. #else /* SECURITY_LINUX */
  103. long DecodeUTCTime(time_t *pTime, BYTE *pbEncoded, DWORD cEncoded, BOOL Writeflag);
  104. #define DecodeFileTime DecodeUTCTime
  105. #endif /* SECURITY_LINUX */
  106. long
  107. DecodeNull(
  108. BYTE * pbEncoded, DWORD cEncoded);
  109. long
  110. DecodeDN(
  111. PSTR pName,
  112. DWORD * pdwLen,
  113. BYTE * pbEncoded,
  114. DWORD cEncoded,
  115. BOOL WriteFlag);
  116. long
  117. DecodeSigAlg(
  118. DWORD * pAlgId,
  119. PBYTE pbEncoded,
  120. DWORD cEncoded,
  121. BOOL WriteFlag);
  122. long
  123. DecodeCryptAlg(
  124. DWORD * pAlgId,
  125. DWORD * pHashid,
  126. PBYTE pbEncoded,
  127. DWORD cEncoded,
  128. BOOL WriteFlag);
  129. long
  130. DecodeKeyType(
  131. DWORD * pKeyType,
  132. PBYTE pbEncoded,
  133. DWORD cEncoded,
  134. BOOL WriteFlag);
  135. #endif /* _ENCODE_H_ */