pgcrypto.slt 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. # Most tests of pgcrypto were imported directly from PostgreSQL's test suite
  10. # and live in test/sqllogictest/postgres/pgcrypto. The tests in this file fill
  11. # in the gaps in pgcrypto's upstream testing.
  12. query error invalid hash algorithm 'nonsense'
  13. SELECT digest('hi', 'nonsense')
  14. # HMAC SHA-224.
  15. query T
  16. SELECT hmac('Hi There', '\x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b'::bytea, 'sha224')::text
  17. ----
  18. \x4e841ce7a4ae83fbcf71e3cd64bfbf277f73a14680aae8c518ac7861
  19. query T
  20. SELECT hmac('Jefe', 'what do ya want for nothing?', 'sha224')::text
  21. ----
  22. \x7693b9d6f5c91989e5e71084e54932ef65cb3efdf99ecfb6efc3930f
  23. query T
  24. SELECT hmac(
  25. '\xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd'::bytea,
  26. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  27. 'sha224'
  28. )::text
  29. ----
  30. \xcbff7c2716bbaa7c77bed4f491d3e8456cb6c574e92f672b291acf5b
  31. query T
  32. SELECT hmac(
  33. '\xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd'::bytea,
  34. '\x0102030405060708090a0b0c0d0e0f10111213141516171819',
  35. 'sha224'
  36. )::text
  37. ----
  38. \x6c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a
  39. query T
  40. SELECT hmac(
  41. 'Test With Truncation',
  42. '\x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c'::bytea,
  43. 'sha224'
  44. )::text
  45. ----
  46. \xd812c97a5e1412f2eb08dc4d95548117780f2930fa4e0e553d985c68
  47. # SHA-224's block size is 64 bytes.
  48. query T
  49. SELECT hmac(
  50. 'Test Using Larger Than Block-Size Key - Hash Key First',
  51. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  52. 'sha224'
  53. )::text
  54. ----
  55. \x9ed2eebc0ed23576efc815e9b5bc0d9257e36d13e4dd5d5f0c809b38
  56. query T
  57. SELECT hmac(
  58. 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data',
  59. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  60. 'sha224'
  61. )::text
  62. ----
  63. \x7358939e58683a448ac5065196d33191a1c1d33d4b8b0304dc60f5e0
  64. # HMAC SHA-256.
  65. query T
  66. SELECT hmac('Hi There', '\x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b'::bytea, 'sha256')::text
  67. ----
  68. \x492ce020fe2534a5789dc3848806c78f4f6711397f08e7e7a12ca5a4483c8aa6
  69. query T
  70. SELECT hmac('Jefe', 'what do ya want for nothing?', 'sha256')::text
  71. ----
  72. \x32dc8d946def0419c52253481d2c9340a54273346c4dd2e4047184d676b0e11d
  73. query T
  74. SELECT hmac(
  75. '\xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd'::bytea,
  76. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  77. 'sha256'
  78. )::text
  79. ----
  80. \x7dda3cc169743a6484649f94f0eda0f9f2ff496a9733fb796ed5adb40a44c3c1
  81. query T
  82. SELECT hmac(
  83. '\xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd'::bytea,
  84. '\x0102030405060708090a0b0c0d0e0f10111213141516171819',
  85. 'sha256'
  86. )::text
  87. ----
  88. \x82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b
  89. query T
  90. SELECT hmac(
  91. 'Test With Truncation',
  92. '\x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c'::bytea,
  93. 'sha256'
  94. )::text
  95. ----
  96. \x2282475faa2def6936685d9c06566f2d782307ace7a27ada2037e6285efcb008
  97. # SHA-256's block size is 64 bytes.
  98. query T
  99. SELECT hmac(
  100. 'Test Using Larger Than Block-Size Key - Hash Key First',
  101. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  102. 'sha256'
  103. )::text
  104. ----
  105. \x6953025ed96f0c09f80a96f78e6538dbe2e7b820e3dd970e7ddd39091b32352f
  106. query T
  107. SELECT hmac(
  108. 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data',
  109. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  110. 'sha256'
  111. )::text
  112. ----
  113. \x6355ac22e890d0a3c8481a5ca4825bc884d3e7a1ff98a2fc2ac7d8e064c3b2e6
  114. # HMAC SHA-384.
  115. query T
  116. SELECT hmac('Hi There', '\x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b'::bytea, 'sha384')::text
  117. ----
  118. \x7afaa633e20d379b02395915fbc385ff8dc27dcd3885e1068ab942eeab52ec1f20ad382a92370d8b2e0ac8b83c4d53bf
  119. query T
  120. SELECT hmac('Jefe', 'what do ya want for nothing?', 'sha384')::text
  121. ----
  122. \x7c04cd35f5030447ac6cc54355f8a1686613a95e5cda2810417cf1faececbae236bb01edf84634d6b88cea884b0ff4b9
  123. query T
  124. SELECT hmac(
  125. '\xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd'::bytea,
  126. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  127. 'sha384'
  128. )::text
  129. ----
  130. \x1383e82e28286b91f4cc7afbd13d5b5c6f887c05e7c4542484043a37a5fe45802a9470fb663bd7b6570fe2f503fc92f5
  131. query T
  132. SELECT hmac(
  133. '\xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd'::bytea,
  134. '\x0102030405060708090a0b0c0d0e0f10111213141516171819',
  135. 'sha384'
  136. )::text
  137. ----
  138. \x3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e6801dd23c4a7d679ccf8a386c674cffb
  139. query T
  140. SELECT hmac(
  141. 'Test With Truncation',
  142. '\x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c'::bytea,
  143. 'sha384'
  144. )::text
  145. ----
  146. \x10e0150a42d0ae6f9d3f55da7a8261c383b024c8d81b40e95d120acfd53fb018af5e77846ad99451059f0579cb9a718b
  147. # SHA-384's block size is 128 bytes.
  148. query T
  149. SELECT hmac(
  150. 'Test Using Larger Than Block-Size Key - Hash Key First',
  151. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  152. 'sha384'
  153. )::text
  154. ----
  155. \x69d2e2f55de9f09878f04d23d8670d49cb734825cdb9cd9e72e446171a43540b90e17cf086e6fa3a599382a286c61340
  156. query T
  157. SELECT hmac(
  158. 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
  159. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  160. 'sha384'
  161. )::text
  162. ----
  163. \xd8e72323e1f95625bc5f477a15d7a8940491dd800651943ed1335234ce95a36631e336dbec33070cd323efdf4105963c
  164. # HMAC SHA-512.
  165. query T
  166. SELECT hmac('Hi There', '\x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b'::bytea, 'sha512')::text
  167. ----
  168. \x7641c48a3b4aa8f887c07b3e83f96affb89c978fed8c96fcbbf4ad596eebfe496f9f16da6cd080ba393c6f365ad72b50d15c71bfb1d6b81f66a911786c6ce932
  169. query T
  170. SELECT hmac('Jefe', 'what do ya want for nothing?', 'sha512')::text
  171. ----
  172. \x082a081f4ab99190f18d6e73c5d498bf0aea67277728e6b35e6935b0619951158ff30e77c40006c79322b0a4d3d9a4cffc1b1ee59934f70d4a26bcfd5cfdb114
  173. query T
  174. SELECT hmac(
  175. '\xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd'::bytea,
  176. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  177. 'sha512'
  178. )::text
  179. ----
  180. \xad9b5c7de72693737cd5e9d9f41170d18841fec1201c1c1b02e05cae116718009f771cad9946ddbf7e3cde3e818d9ae85d91b2badae94172d096a44a79c91e86
  181. query T
  182. SELECT hmac(
  183. '\xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd'::bytea,
  184. '\x0102030405060708090a0b0c0d0e0f10111213141516171819',
  185. 'sha512'
  186. )::text
  187. ----
  188. \xb0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3dba91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dd
  189. query T
  190. SELECT hmac(
  191. 'Test With Truncation',
  192. '\x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c'::bytea,
  193. 'sha512'
  194. )::text
  195. ----
  196. \xda2c03a1f8d34ce536b246c9dc47281d7052d3f82a7b4f6dfe9ee9f5accdae02dd72f9b89324f25f9b8276a2e3d31c0a87b8b6c1dcefd7602cc881a7d120e3fd
  197. # SHA-384's block size is 128 bytes.
  198. query T
  199. SELECT hmac(
  200. 'Test Using Larger Than Block-Size Key - Hash Key First',
  201. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  202. 'sha512'
  203. )::text
  204. ----
  205. \x132c9ebc32531071f6c4d9e8842291e9403e5940f813170a3ba3a0dd6c055c8b8ca587b24c56c47f3c1f2fb8ee8f9fbc8d92deed0f83426be3e8a2e9056778b3
  206. query T
  207. SELECT hmac(
  208. 'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
  209. '\xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'::bytea,
  210. 'sha512'
  211. )::text
  212. ----
  213. \x9b24b47d35943d924975b0ccdf5274370744c878104e055fa99ad12199646a57f3e757f8d1caa1a6d2c59dc72c6be74f614dd94be28b493fda966c3f28aebb21