| // Copyright 2012 The Closure Library Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS-IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| goog.provide('goog.crypt.pbkdf2Test'); |
| goog.setTestOnly('goog.crypt.pbkdf2Test'); |
| |
| goog.require('goog.crypt'); |
| goog.require('goog.crypt.pbkdf2'); |
| goog.require('goog.testing.jsunit'); |
| goog.require('goog.userAgent'); |
| |
| function testPBKDF2() { |
| // PBKDF2 test vectors from: |
| // http://tools.ietf.org/html/rfc6070 |
| |
| if (goog.userAgent.IE && goog.userAgent.isVersionOrHigher('7')) { |
| return; |
| } |
| |
| var testPassword = goog.crypt.stringToByteArray('password'); |
| var testSalt = goog.crypt.stringToByteArray('salt'); |
| |
| assertElementsEquals( |
| goog.crypt.hexToByteArray('0c60c80f961f0e71f3a9b524af6012062fe037a6'), |
| goog.crypt.pbkdf2.deriveKeySha1(testPassword, testSalt, 1, 160)); |
| |
| assertElementsEquals( |
| goog.crypt.hexToByteArray('ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957'), |
| goog.crypt.pbkdf2.deriveKeySha1(testPassword, testSalt, 2, 160)); |
| |
| assertElementsEquals( |
| goog.crypt.hexToByteArray('4b007901b765489abead49d926f721d065a429c1'), |
| goog.crypt.pbkdf2.deriveKeySha1(testPassword, testSalt, 4096, 160)); |
| |
| testPassword = goog.crypt.stringToByteArray('passwordPASSWORDpassword'); |
| testSalt = |
| goog.crypt.stringToByteArray('saltSALTsaltSALTsaltSALTsaltSALTsalt'); |
| |
| assertElementsEquals( |
| goog.crypt.hexToByteArray( |
| '3d2eec4fe41c849b80c8d83662c0e44a8b291a964cf2f07038'), |
| goog.crypt.pbkdf2.deriveKeySha1(testPassword, testSalt, 4096, 200)); |
| |
| testPassword = goog.crypt.stringToByteArray('pass\0word'); |
| testSalt = goog.crypt.stringToByteArray('sa\0lt'); |
| |
| assertElementsEquals( |
| goog.crypt.hexToByteArray('56fa6aa75548099dcc37d7f03425e0c3'), |
| goog.crypt.pbkdf2.deriveKeySha1(testPassword, testSalt, 4096, 128)); |
| } |