summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2018-09-15 19:12:31 +0000
committertb <>2018-09-15 19:12:31 +0000
commit3007bd0b73150a8e637d0c69e1e9cebdec419fc0 (patch)
treef95d39d0b3d230cfe8361cbdca35ab96abe66058 /src
parentd1d7a16f1d9316eec6984c7bd8634012129bd4a2 (diff)
downloadopenbsd-3007bd0b73150a8e637d0c69e1e9cebdec419fc0.tar.gz
openbsd-3007bd0b73150a8e637d0c69e1e9cebdec419fc0.tar.bz2
openbsd-3007bd0b73150a8e637d0c69e1e9cebdec419fc0.zip
Also exercise EVP_aead_aes_128_gcm() and EVP_aead_aes_256_gcm().
Diffstat (limited to 'src')
-rw-r--r--src/regress/lib/libcrypto/wycheproof/wycheproof.go32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/regress/lib/libcrypto/wycheproof/wycheproof.go b/src/regress/lib/libcrypto/wycheproof/wycheproof.go
index 77011ef616..6cb853ad6f 100644
--- a/src/regress/lib/libcrypto/wycheproof/wycheproof.go
+++ b/src/regress/lib/libcrypto/wycheproof/wycheproof.go
@@ -1,4 +1,4 @@
1/* $OpenBSD: wycheproof.go,v 1.49 2018/09/15 19:09:07 tb Exp $ */ 1/* $OpenBSD: wycheproof.go,v 1.50 2018/09/15 19:12:31 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2018 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2018 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2018 Theo Buehler <tb@openbsd.org> 4 * Copyright (c) 2018 Theo Buehler <tb@openbsd.org>
@@ -576,7 +576,7 @@ func checkAesCcmOrGcm(algorithm string, ctx *C.EVP_CIPHER_CTX, doEncrypt int, ke
576 return success 576 return success
577} 577}
578 578
579func runAesCcmOrGcmTest(algorithm string, ctx *C.EVP_CIPHER_CTX, wt *wycheproofTestAead) bool { 579func runAesCcmOrGcmTest(algorithm string, ctx *C.EVP_CIPHER_CTX, aead *C.EVP_AEAD, wt *wycheproofTestAead) bool {
580 key, err := hex.DecodeString(wt.Key) 580 key, err := hex.DecodeString(wt.Key)
581 if err != nil { 581 if err != nil {
582 log.Fatalf("Failed to decode key %q: %v", wt.Key, err) 582 log.Fatalf("Failed to decode key %q: %v", wt.Key, err)
@@ -628,16 +628,34 @@ func runAesCcmOrGcmTest(algorithm string, ctx *C.EVP_CIPHER_CTX, wt *wycheproofT
628 tag = append(tag, 0) 628 tag = append(tag, 0)
629 } 629 }
630 630
631 openSuccess := checkAesCcmOrGcm(algorithm, ctx, 0, key, keyLen, iv, ivLen, aad, aadLen, ct, ctLen, msg, msgLen, tag, tagLen, wt) 631 openEvp := checkAesCcmOrGcm(algorithm, ctx, 0, key, keyLen, iv, ivLen, aad, aadLen, ct, ctLen, msg, msgLen, tag, tagLen, wt)
632 sealSuccess := checkAesCcmOrGcm(algorithm, ctx, 1, key, keyLen, iv, ivLen, aad, aadLen, msg, msgLen, ct, ctLen, tag, tagLen, wt) 632 sealEvp := checkAesCcmOrGcm(algorithm, ctx, 1, key, keyLen, iv, ivLen, aad, aadLen, msg, msgLen, ct, ctLen, tag, tagLen, wt)
633 633
634 return openSuccess && sealSuccess 634 openAead, sealAead := true, true
635 if aead != nil {
636 var ctx C.EVP_AEAD_CTX
637 if C.EVP_AEAD_CTX_init(&ctx, aead, (*C.uchar)(unsafe.Pointer(&key[0])), C.size_t(keyLen), C.size_t(tagLen), nil) != 1 {
638 log.Fatal("Failed to initialize AEAD context")
639 }
640 defer C.EVP_AEAD_CTX_cleanup(&ctx)
641
642 // Make sure we don't accidentally prepend or compare against a 0.
643 if ctLen == 0 {
644 ct = nil
645 }
646
647 openAead = checkAeadOpen(&ctx, iv, ivLen, aad, aadLen, msg, msgLen, ct, ctLen, tag, tagLen, wt)
648 sealAead = checkAeadSeal(&ctx, iv, ivLen, aad, aadLen, msg, msgLen, ct, ctLen, tag, tagLen, wt)
649 }
650
651 return openEvp && sealEvp && openAead && sealAead
635} 652}
636 653
637func runAesCcmOrGcmTestGroup(algorithm string, wtg *wycheproofTestGroupAead) bool { 654func runAesCcmOrGcmTestGroup(algorithm string, wtg *wycheproofTestGroupAead) bool {
638 fmt.Printf("Running %v test group %v with IV size %d, key size %d and tag size %d...\n", algorithm, wtg.Type, wtg.IVSize, wtg.KeySize, wtg.TagSize) 655 fmt.Printf("Running %v test group %v with IV size %d, key size %d and tag size %d...\n", algorithm, wtg.Type, wtg.IVSize, wtg.KeySize, wtg.TagSize)
639 656
640 var cipher *C.EVP_CIPHER 657 var cipher *C.EVP_CIPHER
658 var aead *C.EVP_AEAD
641 switch algorithm { 659 switch algorithm {
642 case "AES-CCM": 660 case "AES-CCM":
643 switch wtg.KeySize { 661 switch wtg.KeySize {
@@ -655,10 +673,12 @@ func runAesCcmOrGcmTestGroup(algorithm string, wtg *wycheproofTestGroupAead) boo
655 switch wtg.KeySize { 673 switch wtg.KeySize {
656 case 128: 674 case 128:
657 cipher = C.EVP_aes_128_gcm() 675 cipher = C.EVP_aes_128_gcm()
676 aead = C.EVP_aead_aes_128_gcm()
658 case 192: 677 case 192:
659 cipher = C.EVP_aes_192_gcm() 678 cipher = C.EVP_aes_192_gcm()
660 case 256: 679 case 256:
661 cipher = C.EVP_aes_256_gcm() 680 cipher = C.EVP_aes_256_gcm()
681 aead = C.EVP_aead_aes_256_gcm()
662 default: 682 default:
663 fmt.Printf("INFO: Skipping tests with invalid key size %d\n", wtg.KeySize) 683 fmt.Printf("INFO: Skipping tests with invalid key size %d\n", wtg.KeySize)
664 return true 684 return true
@@ -675,7 +695,7 @@ func runAesCcmOrGcmTestGroup(algorithm string, wtg *wycheproofTestGroupAead) boo
675 695
676 success := true 696 success := true
677 for _, wt := range wtg.Tests { 697 for _, wt := range wtg.Tests {
678 if !runAesCcmOrGcmTest(algorithm, ctx, wt) { 698 if !runAesCcmOrGcmTest(algorithm, ctx, aead, wt) {
679 success = false 699 success = false
680 } 700 }
681 } 701 }