OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / golang.org / x / crypto / pkcs12 / internal / rc2 / rc2_test.go
diff --git a/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2_test.go b/vendor/golang.org/x/crypto/pkcs12/internal/rc2/rc2_test.go
new file mode 100644 (file)
index 0000000..8a49dfa
--- /dev/null
@@ -0,0 +1,93 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package rc2
+
+import (
+       "bytes"
+       "encoding/hex"
+       "testing"
+)
+
+func TestEncryptDecrypt(t *testing.T) {
+
+       // TODO(dgryski): add the rest of the test vectors from the RFC
+       var tests = []struct {
+               key    string
+               plain  string
+               cipher string
+               t1     int
+       }{
+               {
+                       "0000000000000000",
+                       "0000000000000000",
+                       "ebb773f993278eff",
+                       63,
+               },
+               {
+                       "ffffffffffffffff",
+                       "ffffffffffffffff",
+                       "278b27e42e2f0d49",
+                       64,
+               },
+               {
+                       "3000000000000000",
+                       "1000000000000001",
+                       "30649edf9be7d2c2",
+                       64,
+               },
+               {
+                       "88",
+                       "0000000000000000",
+                       "61a8a244adacccf0",
+                       64,
+               },
+               {
+                       "88bca90e90875a",
+                       "0000000000000000",
+                       "6ccf4308974c267f",
+                       64,
+               },
+               {
+                       "88bca90e90875a7f0f79c384627bafb2",
+                       "0000000000000000",
+                       "1a807d272bbe5db1",
+                       64,
+               },
+               {
+                       "88bca90e90875a7f0f79c384627bafb2",
+                       "0000000000000000",
+                       "2269552ab0f85ca6",
+                       128,
+               },
+               {
+                       "88bca90e90875a7f0f79c384627bafb216f80a6f85920584c42fceb0be255daf1e",
+                       "0000000000000000",
+                       "5b78d3a43dfff1f1",
+                       129,
+               },
+       }
+
+       for _, tt := range tests {
+               k, _ := hex.DecodeString(tt.key)
+               p, _ := hex.DecodeString(tt.plain)
+               c, _ := hex.DecodeString(tt.cipher)
+
+               b, _ := New(k, tt.t1)
+
+               var dst [8]byte
+
+               b.Encrypt(dst[:], p)
+
+               if !bytes.Equal(dst[:], c) {
+                       t.Errorf("encrypt failed: got % 2x wanted % 2x\n", dst, c)
+               }
+
+               b.Decrypt(dst[:], c)
+
+               if !bytes.Equal(dst[:], p) {
+                       t.Errorf("decrypt failed: got % 2x wanted % 2x\n", dst, p)
+               }
+       }
+}