From ceb98d5313ea6350e9a59c6079e14789f7abbdb5 Mon Sep 17 00:00:00 2001 From: Mark Prikhno Date: Fri, 20 Sep 2024 16:25:32 +0300 Subject: [PATCH 1/7] feat: add DecodeChains func for multiple key bags --- pkcs12.go | 154 +++++++++++++++++++++++++++++++++++++++++++++++++ pkcs12_test.go | 26 +++++++++ 2 files changed, 180 insertions(+) diff --git a/pkcs12.go b/pkcs12.go index 6c8afac5..8cb3b096 100644 --- a/pkcs12.go +++ b/pkcs12.go @@ -18,6 +18,8 @@ package pkcs12 // import "software.sslmate.com/src/go-pkcs12" import ( + "bytes" + "crypto" "crypto/ecdsa" "crypto/rand" "crypto/rsa" @@ -392,6 +394,58 @@ func convertAttribute(attribute *pkcs12Attribute) (key, value string, err error) return key, value, nil } +func extractFriendlyname(bag safeBag) (string, error) { + for _, attribute := range bag.Attributes { + if attribute.Id.Equal(oidFriendlyName) { + if err := unmarshal(attribute.Value.Bytes, &attribute.Value); err != nil { + return "", err + } + value, err := decodeBMPString(attribute.Value.Bytes) + if err != nil { + return "", err + } + return value, nil + } + } + return "", errors.New("pkcs12: friendlyName attribute not found") +} + +func verifyKeyCert(privateKey crypto.PrivateKey, certificate *x509.Certificate) bool { + pk, ok := privateKey.(interface { + Public() crypto.PublicKey + }) + if !ok { + return false + } + publicKey, ok := pk.Public().(interface { + Equal(crypto.PublicKey) bool + }) + if !ok { + return false + } + if publicKey.Equal(certificate.PublicKey) { + return true + } + return false +} + +func issuedBy(subject, issuer *x509.Certificate) bool { + return bytes.Equal(subject.RawIssuer, issuer.RawSubject) && issuer.CheckSignature(subject.SignatureAlgorithm, subject.RawTBSCertificate, subject.Signature) == nil +} + +func buildChain(leaf *x509.Certificate, certs []*x509.Certificate) (certChain []*x509.Certificate) { + if len(certs) <= 1 { + return certs + } + for idx, cert := range certs { + if issuedBy(leaf, cert) { + certChain = append(certChain, cert) + certChain = append(certChain, buildChain(cert, certs[idx+1:])...) + } + } + return +} + // Decode extracts a certificate and private key from pfxData, which must be a DER-encoded PKCS#12 file. This function // assumes that there is only one certificate and only one private key in the // pfxData. Since PKCS#12 files often contain more than one certificate, you @@ -473,6 +527,106 @@ func DecodeChain(pfxData []byte, password string) (privateKey interface{}, certi return } +// A Chain represents a private key, a leaf certificate matching it, and the CA certificate chain. +// It also stores the friendlyName of the private key. +type Chain struct { + FriendlyName string + PrivateKey crypto.PrivateKey + Leaf *x509.Certificate + CACerts []*x509.Certificate +} + +// DecodeChains extracts Chains from pfxData, which must be a DER-encoded PKCS#12 file. The function +// assumes there is at least one private key with a friendlyName attribute and at least one matching certificate. +// The function ignores certificates that do not match any private keys, or are not part of any CA certificates chain. +func DecodeChains(pfxData []byte, password string) (chains []Chain, err error) { + encodedPassword, err := bmpStringZeroTerminated(password) + if err != nil { + return nil, err + } + + bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword, 1, 2) + if err != nil { + return nil, err + } + + // extract all bags + privateKeysAll := make(map[string]crypto.PrivateKey) + var certsAll []*x509.Certificate // do not store cert alias + for _, bag := range bags { + friendlyName, err := extractFriendlyname(bag) + if err != nil { + friendlyName = "" + } + switch { + case bag.Id.Equal(oidCertBag): + certsData, err := decodeCertBag(bag.Value.Bytes) + if err != nil { + return nil, err + } + certs, err := x509.ParseCertificates(certsData) + if err != nil { + return nil, err + } + if len(certs) != 1 { + err = errors.New("pkcs12: expected exactly one certificate in the certBag") + return nil, err + } + certsAll = append(certsAll, certs[0]) + case bag.Id.Equal(oidKeyBag): + privateKey, err := x509.ParsePKCS8PrivateKey(bag.Value.Bytes) + if err != nil { + return nil, err + } + pk, ok := privateKey.(crypto.PrivateKey) + if !ok { + return nil, fmt.Errorf("pkcs12: failed to get private key") + } + privateKeysAll[friendlyName] = pk + case bag.Id.Equal(oidPKCS8ShroundedKeyBag): + privateKey, err := decodePkcs8ShroudedKeyBag(bag.Value.Bytes, encodedPassword) + if err != nil { + return nil, err + } + pk, ok := privateKey.(crypto.PrivateKey) + if !ok { + return nil, fmt.Errorf("pkcs12: failed to get private key") + } + privateKeysAll[friendlyName] = pk + } + } + for pkAlias, pk := range privateKeysAll { + // initialize chains and match private keys to leaf certificates + chain := Chain{ + FriendlyName: pkAlias, + PrivateKey: pk, + } + var idx int + for idx, cert := range certsAll { + _ = idx + if verifyKeyCert(pk, cert) { + chain.Leaf = cert + break + } + } + // recursively build a chain for leaf certificate + caCerts := buildChain(chain.Leaf, append(certsAll[:idx], certsAll[idx+1:]...)) + chain.CACerts = caCerts + chains = append(chains, chain) + } + // verify chains + for _, chain := range chains { + if chain.PrivateKey == nil { + return nil, errors.New("pkcs12: private key missing") + } + if chain.Leaf == nil { + return nil, errors.New("pkcs12: certificate missing") + } + } + + return +} + // DecodeTrustStore extracts the certificates from pfxData, which must be a DER-encoded // PKCS#12 file containing exclusively certificates with attribute 2.16.840.1.113894.746875.1.1, // which is used by Java to designate a trust anchor. diff --git a/pkcs12_test.go b/pkcs12_test.go index f5635776..1bace675 100644 --- a/pkcs12_test.go +++ b/pkcs12_test.go @@ -169,6 +169,32 @@ func TestPBES2_AES192CBC(t *testing.T) { } } +func Test_smth(t *testing.T) { + alias := "all" + base64P12 := `MIIRRgIBAzCCEPwGCSqGSIb3DQEHAaCCEO0EghDpMIIQ5TCCCzoGCSqGSIb3DQEHBqCCCyswggsnAgEAMIILIAYJKoZIhvcNAQcBMF8GCSqGSIb3DQEFDTBSMDEGCSqGSIb3DQEFDDAkBBCx1Mcoymy1IqFTnE/3FrPBAgIIADAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQB9OQwaqQuLuDdjFtvHBt5ICCCrBaDD6sZHkcoK2wbHUVzZ+VjGIUDCXz2jLoUARWgudk0x+FnKIWd43sOHanVyZDvO0JZMMPrvSSD/9L6L2gE83dixvI1nfB4xD+OlF0GKFGu2mqgz4ouHUJAyNfI2NX8zbiAt4A3RERsR8umJtHtyM1lERvgUOlC5pO4YLYWRx5gqOIfhuxKp3g5l0Esqs1XGz62Y4E/EdywkAd/MmXZPuN7f2hciBRelIXoamvzt9Ub0QxThNAf3oS3NPtdD7tBhb3RaRlal3r8tBIo+/eVzTaMJ39pCTWFWgeX3CasQYI+SSG9kdU0WcnhEpy7OVzNJ6isjEkwsC1YA3ONgkvzaRzNFPL/BtAqnEcRgbYbUOFIqCDFK/BWAzE9qkdgeMC6AyL62L0cSO+WIqcDHsODsaBxo4scnN2CoPNcZwmMsiyrS6LMlnoqNTxbR8LSX9MNxPzcbN5PPbgiO6ECiYYjaaOyDKUDxvTh1onpSHeZDGJQD9UZDhGaHRn8W1WHBI97ewYWtOrfDyb2h+8AsQ5KjUJcaPPHAmBaPLHC7CgfcnYbOa8edUm6NvmodmdfHzGRIMkkMrFjv9bHA/2BSz/qAnVDdvFvYbulE0bC1/1EzUp0ghvwbmLecgq6wNzV1Vw8sSFMLEkJUSzZwC3azCrf8e41vAPf2aF5XNNgfdA802oMgoJZZ77FVsPq5LAlkVRkxi6u+jnwW7Gk0Fw3LIiAam0oes58tfzBamF/aRUC/B7iOaB5vxZrZUaH75SviW7iBp+d/s9xQcJ5cV/+U+YfAL+iL9wA/Rk53vA776rr3/Q2plF14DUnJiXXjsXHUiujokAel0q5kt2U2+akuGeKQoDUQdEzJN9gmprjsy++NIeoF97R+mdas6pGMWrPcoY1dpNj6jJjd6Of86VIfqATH9QMZlzFyY1MpkAcP9EtlGb/mZsspG4jnajnFj49YrXyYoee3tctrzN1UAORZKfqUgGVs7zUz+gADMH9ScsRpV1XmacCytjl/BnlewLGHG4i6N87ko32T45FvwUmE9Zd2yG18R05MzSLYYcqmpfm9rtBlSeYV48LrPAToeD93HlQwLJn4Oo78/Qoer6DCbQy7EtYtAIjVEnbR5q8G70tlxd+oT4q0LRRFCdUAQmOj47ROGK5/VSz9xhvS2TaAmIgHdL0Yc1yrVZm6SkivSoATmgQo2ys7sy9cIuVLECgbvRFRTSSCRbIXPqlua/7kJHizwIsRM1o0BWJMvqz6jCOBa0fBVdkDICXnFhaDOEMvrMNFeR81CD180n1vtiQPvndD7JUSqQsyBV4aoQ16kjLjZeeJv77FRRj2C7h8/cqyta34CLfMIF5InZaAKRUlj5c77/fMXQODgeHTDUkfqqQqo3qRCFHuUWQBm5pt/bBTgLbquIbxYO3oz7CqF5VkP3T8SJEKxRreYjMTk+nkXitNr1P4fM8zoHXdNs0qrrgAT2oyLduZ9WS1cuC60xKUEYVZIJst2UQ1RyNJfocHEImNXaYhi2+y+c9HlAoFuW3LqtqjUOj8ma71LZWYIuwWoV1MzD/sxPsgKJdt0tN1BNjxqJb4pxwGsfW313zIBKTgc2cV9d2nuEuWkzRVyPMdhby8le9esaQwWYJix0LGug9hNXcuKmpuJj/53tVBi8RkHKMS5qNaK8cV/IbmVNKshyu2yEdTxOZ3jxvvGcsXKOo/MdT9QfZsomLIKyKSGjCoUwAan2KkSneHi6kEmVkCXbQp7xqYBxAIH9Lh6L2A3RXPhOBbJvOydu1GooY3/pm8sYrECqmk8kSOIVlq6VOSgpUnO7MkvZ6X2oLQ7FkN20miEFMQ/f0TcwjZDSDIFHIvyCkVgLW3g3OHXpRdEOoCrkgon1ZXpzKmV4WfcKUtOgTqOX1loptM8sUELTZUEwTJyqJ+WMpeXTJ8VwXU15R29VwaHDIlc9YilP96HtMRMReUM09zOa11BKXJj7uo+t92Kpvri2JiOgnqn1yyDK+949xf64eZkVfBk5AsF46wRsf14TBEG1nrf0RieT4MiQpJ+NJOZtNi6LmHkLGKJvRWXLabRmH8FL6q/8UY5rO7VDbBk6Xb98YyN9cMMrrfjgpHVJ7LOmDNB3X5iNeVNW8bbAewL6RReNseK61xm/hc9t5VZFr9RDTegBueuAJ3Ctx6hfPuyzDNYENHta5HwOgylD7qOfUxiHSpK0e2WaVDRfp3L0M7kf8GzelC7yjXCJz2PvB2O/AMvxYG9VMUgB8o/01rcIoZnhfy7uBudIpCiAkCL4BCUYvN9EW0lSyAhX+QZG4oLs568bRRKm1DI6jwl0DgJSCoLuHKEoRRHjG8AIlzOeABZ4b/WiZHAUTuBh8V1N2B52TX/bktIhy4arJnjod5R4792mFm2LhjjI6HLESARWgnpjj5LUUp0nSIvk6rl85f6ZrxkeCU4cjNYqOVldqO9q63oBFefqhEF7ZXfsuf15Rn837+ZiNh1G8X7h1G26G1VTPocmzOI6HLNf7BcEHK1ECjvsQvppznL5uHLdci3DPXBc1q0Bir51y1+qlRWCC33RjslEVhOqhwZnjHz4icjlvmaUfUfqktxffb4XluUz3AYXJ6qeqSS5tcC856CSy4FUhM/vUmTXxz5r14AloCdDyeKmYe7PnNG0BDbGdyvCnRW1IUEhW9V4krpXXNlfHHlq7afGLazBNVdH2aowhfaFCDSOui+mHLFrRzXlU0ot70op7C9BZ3M1GqaH1WJcEd6TQwKV63rDA2pwhfUFIfVYIYEJO7iyKtnOKcaqiVsQhiR9tjqWwn3Xd+cPK+Rlzjl8hHaWXwEHbsVAQoRuCLZVuq1vuIG48rgjpjCjvbBw7QfBPkJ0vwuWqmHG4zO5QHRbRwyloejA9hNb4yy+DHGKa0zrmi8+FeK4wCK+BHMoHX1aYSAhXC7bopjIjIiKDXaBDJpTfJyIvKCKAw6iYzIbE6Cn3UWIEbKSCQQR6u7d3gZto4xeHW3u+Ma48YwzFF8PEy0PlvlDOghOYhx+NFecDYY2fmiOeanbABIP28vdZ/MkgjxkSRPKnKFnx4GjBWS/DIXz8Q5NWsJfPYTjYUwqPWHynzgFijwRrohWdCpt3xaLophVJsqlBSzWIgnyklRzzZBx/4Lvn+LYniOuQoUC4erxLtYb/dNYio1elpEUHjBJGmwovxu0vYYJsKTS0wnDZ4h5T1sYTu8F5UL1T16xOWZMLGnUFcRe1uKptlZlL7Q4ong/G38/AwNM/6YTiuKHO8Zt2t5L1NdyGt9BO7C5C/ec/VkZIlYYiNlF3yYoEj6R4ztQ5p8wknNwW3cBuEtuRSscnoqs/0EhZZPS4Ic8uyQHi6BGgA8I38YfBF12Jcz9wWnI2DjgVVwA7svGn38jYbrLcO/smEsjyepW/UFiokO7FQ3LuBQ2l4SlrPWQ4XAmwC+MCFBGOZCUvffMOq/wefQ2hax42P2HA8/6MPbPaFw4lFlJIACfM87IvQd2cOjeTYT48cRiFcvTWc3iP0eKX/YoPeZ2QSPpQ1TUOVUkTjYnpPiDh+pwHAmsusNPAycdTNnE3dPTv9ilBcKX1du4u0ix7ViAG5c5xNiyzg8qA3PGkkHyCjR0QuIyH9Z4PhmCObH+1h2wYzjsHWy6/9wwggWjBgkqhkiG9w0BBwGgggWUBIIFkDCCBYwwggWIBgsqhkiG9w0BDAoBAqCCBTkwggU1MF8GCSqGSIb3DQEFDTBSMDEGCSqGSIb3DQEFDDAkBBAJTgt9ssz7dIw6fXoqSNQrAgIIADAMBggqhkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQeN3Eui3JuFYnm3obpqKF5gSCBNCOdBzfz3XEi8nMvGi49rsTXdLsEVkBoa6CLWDd7pGtZNug4mc4L3Yik3JxdCg0U5BVfPJMo26kks1HeX8qupr1SzKv9XUd9foiqVpSmYeaNgPULs81e3rM0DbvdigMGkpzcu3BJkZTSXxhKTNHxfI9Vi9KXPRrE62Th9RYnzW/QDjKmbS6pbtCjecw9cXEMiCD8sAcvO8+c/WQblJPxlNNf3o0G19V5DT9rtBuuJs0VWlwI5VGgslkxMJdJ1fc/JjDv/Wi6xEdyevZ5ZcpFAead9MDA8+9lze8z9cbLCiMXvtHh+xi8ePdALxbVlA37oHSviopb7iEBr9droRhxqlqz0oMtm/NMcdiiu+hLuB4bV2g2/uJI6Y/QgM4LqUdlXe47wccr+ADmyImtGVOadFwSCMX9bF6oDmDZKIsfIjcfOFtkEKc67PUb5VqW4rb+TpId1uAaN9Fzg36KtHpd1HSzPuTPHxg4n1GcRB3NG9FGJG7Dp8gzXsi7TxIH5rr3EC/pG/+24N11vxLN+UYHRMdxzKx9GQ3aWXmfUOEToOQ2T9tN43pfAYNQxS0dxVoOeW5xYtUqseGOiLLxZOI248zsEb55M3EIExL+N17Pfc6B1hrWCg5Ymnsaw5U5gHcMsDnC+qcuyDXoZUQLxCWLhD/v1ak/LHxxMBFj7lPD75/bOPXNFl3bYdGpaQCcaG+B2+aCE0wGjxCQTqSGq9I5h3d9wZTE0ZDp8FCghlN3cIOPhjcc523piJzdvzgc1NIzCY8omGrKEYfI3l3zyXCaFzFhfFq4LyrjnFXCScWliODKMw+5hpQ8XlDF04NUqm8x9KuXnevQzXlU77SJWIQC9MxwCugZu8dwshXjRQ56wXs+2gJ0fRZ9/cO6qLSBl7TtZ5BO0vmd4BYmc95SfYq0LbVBFovyzEMQARBgiabJNxYqIlipyej0S3GKU2J0Nr+moRou9y1KKcm3gop0wt4GF6ER+AO1+UPp5HHsjhNLMyMDPE73vZiJ4Mnu4GnJgmozEWNP1kAMemgXPEXKnhcaPQak4auqyCXAcwRsRqxp1iwNOqKVGD6RZxGApkKQtU3Fl8LLBZFGADpyhn03SSyB+IsbIuc9gbyfNzzuh3OUrPediNYxkt5Fyu0NIm8/PavvjBSgWa163+pnqhjofk3niXFUuQHjRmPE9TyhrXKHUNidEU620oNOnaakIi7jxUYbh96FGw/FPn63IDIC+Dqv7RVjlywZ29/5ZG5oNA7wq4t2QXeaWSqbm3azbEGi/jjkzA3D0+7938vAU5sD3HVvR6ZfnNT6QRbcyYQQ31lT3wxwGIY3Qfohv6ZtYHpnTY4Ss9TLqq/elZ5P1BZkssO1QtZRDAJevLEbKJMwKT3543skNkD1ufPvv0OWQ2AOm4rEirXTRLM/ktn6lkrhDcOP4LzappGf2SgDuxG1JQa/yY0eN7g8wwJinVO5SH4/73D/JZOdo7b+i7vVEHxunl5kBLhGxZQsX40fGIxQzw8uwvNaP5BGQ4VRJHoftEgVvo028OCT2l3N+u3ro5eakxRkwVIT72YbRlF+xHdarmRiSOeewqCn16gpcfaE3heOFqfBnkiOIrPLuQkwww4W1kUpxk5nuK9rYucLRyMq85y/hljDDE8MBUGCSqGSIb3DQEJFDEIHgYAYQBsAGwwIwYJKoZIhvcNAQkVMRYEFAQeSWcwQcEDjZHoPv/EIWAV6BayMEEwMTANBglghkgBZQMEAgEFAAQgU8B+n2ZPb7U23dAvIv6gbw/A9m+hnKbPYnW/6kI2bq0ECG5zP2v7/9ZkAgIIAA==` + p12, _ := base64.StdEncoding.DecodeString(base64P12) + chains, err := DecodeChains(p12, "password") + if err != nil { + t.Fatal(err) + } + if chains[0].FriendlyName != alias { + t.Errorf("unexpected private key friendly name, got %s, want %s", chains[0].FriendlyName, alias) + } + pk := chains[0].PrivateKey + cert := chains[0].Leaf + caCerts := chains[0].CACerts + rsaPk, ok := pk.(*rsa.PrivateKey) + if !ok { + t.Error("could not cast to rsa private key") + } + if !rsaPk.PublicKey.Equal(cert.PublicKey) { + t.Error("public key embedded in private key not equal to public key of certificate") + } + if len(caCerts) != 1 { + t.Errorf("unexpected # of caCerts: got %d, want 0", len(caCerts)) + } +} + var testdata = map[string]string{ // 'null' password test case "Windows Azure Tools": `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`, From 865ff551112d34fe0ce64eada5b063f4c8acdce1 Mon Sep 17 00:00:00 2001 From: Mark Prikhno Date: Fri, 27 Sep 2024 10:16:23 +0300 Subject: [PATCH 2/7] remove debug --- pkcs12_test.go | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/pkcs12_test.go b/pkcs12_test.go index 1bace675..f5635776 100644 --- a/pkcs12_test.go +++ b/pkcs12_test.go @@ -169,32 +169,6 @@ func TestPBES2_AES192CBC(t *testing.T) { } } -func Test_smth(t *testing.T) { - alias := "all" - base64P12 := `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` - p12, _ := base64.StdEncoding.DecodeString(base64P12) - chains, err := DecodeChains(p12, "password") - if err != nil { - t.Fatal(err) - } - if chains[0].FriendlyName != alias { - t.Errorf("unexpected private key friendly name, got %s, want %s", chains[0].FriendlyName, alias) - } - pk := chains[0].PrivateKey - cert := chains[0].Leaf - caCerts := chains[0].CACerts - rsaPk, ok := pk.(*rsa.PrivateKey) - if !ok { - t.Error("could not cast to rsa private key") - } - if !rsaPk.PublicKey.Equal(cert.PublicKey) { - t.Error("public key embedded in private key not equal to public key of certificate") - } - if len(caCerts) != 1 { - t.Errorf("unexpected # of caCerts: got %d, want 0", len(caCerts)) - } -} - var testdata = map[string]string{ // 'null' password test case "Windows Azure Tools": `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`, From 32f4b4b94001ab544839454b89767d035db32684 Mon Sep 17 00:00:00 2001 From: nitram509 Date: Thu, 24 Oct 2024 13:28:59 +0200 Subject: [PATCH 3/7] refactor tests using sttic files instead of base64 rework tests as table tests --- pkcs12_test.go | 327 +++++++++------------- test-data/ad_standalone_com_aescbc256.p12 | Bin 0 -> 2779 bytes test-data/example_com_aescbc128.p12 | Bin 0 -> 2874 bytes test-data/example_com_aescbc192.p12 | Bin 0 -> 4380 bytes test-data/testing_at_example_com.p12 | Bin 0 -> 2514 bytes test-data/windows_azure_tools.p12 | Bin 0 -> 2576 bytes 6 files changed, 137 insertions(+), 190 deletions(-) create mode 100644 test-data/ad_standalone_com_aescbc256.p12 create mode 100644 test-data/example_com_aescbc128.p12 create mode 100644 test-data/example_com_aescbc192.p12 create mode 100644 test-data/testing_at_example_com.p12 create mode 100644 test-data/windows_azure_tools.p12 diff --git a/pkcs12_test.go b/pkcs12_test.go index f5635776..459ce205 100644 --- a/pkcs12_test.go +++ b/pkcs12_test.go @@ -9,213 +9,160 @@ import ( "crypto/rsa" "crypto/tls" "crypto/x509" - "encoding/base64" + _ "embed" "encoding/pem" "testing" ) -func TestPfx(t *testing.T) { - for commonName, base64P12 := range testdata { - p12, _ := base64.StdEncoding.DecodeString(base64P12) +//go:embed test-data/testing_at_example_com.p12 +var fileTestingAtExampleCom []byte - priv, cert, err := Decode(p12, "") - if err != nil { - t.Fatal(err) - } +//go:embed test-data/windows_azure_tools.p12 +var fileWindowsAzureTools []byte - if err := priv.(*rsa.PrivateKey).Validate(); err != nil { - t.Errorf("error while validating private key: %v", err) - } +var testdata = map[string][]byte{ + // 'null' password test case + "Windows Azure Tools": fileWindowsAzureTools, + // empty string password test case + "testing@example.com": fileTestingAtExampleCom, +} - if cert.Subject.CommonName != commonName { - t.Errorf("expected common name to be %q, but found %q", commonName, cert.Subject.CommonName) - } +func TestPfx(t *testing.T) { + for commonName, p12 := range testdata { + t.Run(commonName, func(t *testing.T) { + priv, cert, err := Decode(p12, "") + if err != nil { + t.Fatal(err) + } + + if err := priv.(*rsa.PrivateKey).Validate(); err != nil { + t.Errorf("error while validating private key: %v", err) + } + + if cert.Subject.CommonName != commonName { + t.Errorf("expected common name to be %q, but found %q", commonName, cert.Subject.CommonName) + } + }) } } func TestPEM(t *testing.T) { - for commonName, base64P12 := range testdata { - p12, _ := base64.StdEncoding.DecodeString(base64P12) - - blocks, err := ToPEM(p12, "") - if err != nil { - t.Fatalf("error while converting to PEM: %s", err) - } - - var pemData []byte - for _, b := range blocks { - pemData = append(pemData, pem.EncodeToMemory(b)...) - } - - cert, err := tls.X509KeyPair(pemData, pemData) - if err != nil { - t.Errorf("err while converting to key pair: %v", err) - } - config := tls.Config{ - Certificates: []tls.Certificate{cert}, - } - config.BuildNameToCertificate() - - if _, exists := config.NameToCertificate[commonName]; !exists { - t.Errorf("did not find our cert in PEM?: %v", config.NameToCertificate) - } + for commonName, p12 := range testdata { + t.Run(commonName, func(t *testing.T) { + blocks, err := ToPEM(p12, "") + if err != nil { + t.Fatalf("error while converting to PEM: %s", err) + } + + var pemData []byte + for _, b := range blocks { + pemData = append(pemData, pem.EncodeToMemory(b)...) + } + + cert, err := tls.X509KeyPair(pemData, pemData) + if err != nil { + t.Errorf("err while converting to key pair: %v", err) + } + config := tls.Config{ + Certificates: []tls.Certificate{cert}, + } + config.BuildNameToCertificate() + + if _, exists := config.NameToCertificate[commonName]; !exists { + t.Errorf("did not find our cert in PEM?: %v", config.NameToCertificate) + } + }) } } func TestTrustStore(t *testing.T) { - for commonName, base64P12 := range testdata { - p12, _ := base64.StdEncoding.DecodeString(base64P12) - - _, cert, err := Decode(p12, "") - if err != nil { - t.Fatal(err) - } - - pfxData, err := EncodeTrustStore(rand.Reader, []*x509.Certificate{cert}, "password") - if err != nil { - t.Fatal(err) - } - - decodedCerts, err := DecodeTrustStore(pfxData, "password") - if err != nil { - t.Fatal(err) - } - - if len(decodedCerts) != 1 { - t.Fatal("Unexpected number of certs") - } - - if decodedCerts[0].Subject.CommonName != commonName { - t.Errorf("expected common name to be %q, but found %q", commonName, decodedCerts[0].Subject.CommonName) - } - } -} - -func TestPBES2_AES256CBC(t *testing.T) { - // This P12 PDU is a self-signed certificate exported via Windows certmgr. - // It is encrypted with the following options (verified via openssl): PBES2, PBKDF2, AES-256-CBC, Iteration 2000, PRF hmacWithSHA256 - commonName := "*.ad.standalone.com" - base64P12 := `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` - p12, _ := base64.StdEncoding.DecodeString(base64P12) - pk, cert, caCerts, err := DecodeChain(p12, "password") - if err != nil { - t.Fatal(err) - } - - rsaPk, ok := pk.(*rsa.PrivateKey) - if !ok { - t.Error("could not cast to rsa private key") - } - if !rsaPk.PublicKey.Equal(cert.PublicKey) { - t.Error("public key embedded in private key not equal to public key of certificate") - } - if cert.Subject.CommonName != commonName { - t.Errorf("unexpected leaf cert common name, got %s, want %s", cert.Subject.CommonName, commonName) - } - if len(caCerts) != 0 { - t.Errorf("unexpected # of caCerts: got %d, want 0", len(caCerts)) - } -} - -func TestPBES2_AES128CBC(t *testing.T) { - //PKCS7 Encrypted data: PBES2, PBKDF2, AES-128-CBC, Iteration 2048, PRF hmacWithSHA256 - commonName := "example-com" - base64P12 := `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` - - p12, _ := base64.StdEncoding.DecodeString(base64P12) - pk, cert, caCerts, err := DecodeChain(p12, "rHyQTJsubhfxcpH5JttyilHE6BBsNoZp") - if err != nil { - t.Fatal(err) - } - - rsaPk, ok := pk.(*rsa.PrivateKey) - if !ok { - t.Error("could not cast to rsa private key") - } - if !rsaPk.PublicKey.Equal(cert.PublicKey) { - t.Error("public key embedded in private key not equal to public key of certificate") - } - if cert.Subject.CommonName != commonName { - t.Errorf("unexpected leaf cert common name, got %s, want %s", cert.Subject.CommonName, commonName) - } - if len(caCerts) != 0 { - t.Errorf("unexpected # of caCerts: got %d, want 0", len(caCerts)) + for commonName, p12 := range testdata { + t.Run(commonName, func(t *testing.T) { + _, cert, err := Decode(p12, "") + if err != nil { + t.Fatal(err) + } + + pfxData, err := EncodeTrustStore(rand.Reader, []*x509.Certificate{cert}, "password") + if err != nil { + t.Fatal(err) + } + + decodedCerts, err := DecodeTrustStore(pfxData, "password") + if err != nil { + t.Fatal(err) + } + + if len(decodedCerts) != 1 { + t.Fatal("Unexpected number of certs") + } + + if decodedCerts[0].Subject.CommonName != commonName { + t.Errorf("expected common name to be %q, but found %q", commonName, decodedCerts[0].Subject.CommonName) + } + }) } } -func TestPBES2_AES192CBC(t *testing.T) { - //PKCS7 Encrypted data: PBES2, PBKDF2, AES-192-CBC, Iteration 2048, PRF hmacWithSHA256 - commonName := "example-com" - base64P12 := `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` - - p12, _ := base64.StdEncoding.DecodeString(base64P12) - pk, cert, caCerts, err := DecodeChain(p12, "password") - if err != nil { - t.Fatal(err) - } - - rsaPk, ok := pk.(*rsa.PrivateKey) - if !ok { - t.Error("could not cast to rsa private key") - } - if !rsaPk.PublicKey.Equal(cert.PublicKey) { - t.Error("public key embedded in private key not equal to public key of certificate") - } - if cert.Subject.CommonName != commonName { - t.Errorf("unexpected leaf cert common name, got %s, want %s", cert.Subject.CommonName, commonName) - } - if len(caCerts) != 0 { - t.Errorf("unexpected # of caCerts: got %d, want 0", len(caCerts)) +//go:embed test-data/example_com_aescbc128.p12 +var fileExampleComAesCbc128 []byte + +//go:embed test-data/example_com_aescbc192.p12 +var fileExampleComAesCbc192 []byte + +//go:embed test-data/ad_standalone_com_aescbc256.p12 +var fileAdStandaloneComAesCbc256 []byte + +func Test_DecodeChain_PBES2(t *testing.T) { + tests := []struct { + testName string + storeData []byte + password string + commonName string + testDescription string + }{ + { + testName: "AES128CBC", + storeData: fileExampleComAesCbc128, + password: "rHyQTJsubhfxcpH5JttyilHE6BBsNoZp", + commonName: "example-com", + testDescription: "PKCS7 Encrypted data: PBES2, PBKDF2, AES-128-CBC, Iteration 2048, PRF hmacWithSHA256", + }, + { + testName: "AES192CBC", + storeData: fileExampleComAesCbc192, + password: "password", + commonName: "example-com", + testDescription: "PKCS7 Encrypted data: PBES2, PBKDF2, AES-192-CBC, Iteration 2048, PRF hmacWithSHA256", + }, + { + testName: "AES256CBC", + storeData: fileAdStandaloneComAesCbc256, + password: "password", + commonName: "*.ad.standalone.com", + testDescription: "This P12 PDU is a self-signed certificate exported via Windows certmgr. It is encrypted with the following options (verified via openssl): PBES2, PBKDF2, AES-256-CBC, Iteration 2000, PRF hmacWithSHA256", + }, + } + for _, tt := range tests { + t.Run(tt.testName, func(t *testing.T) { + pk, cert, caCerts, err := DecodeChain(tt.storeData, tt.password) + if err != nil { + t.Fatal(err) + } + + rsaPk, ok := pk.(*rsa.PrivateKey) + if !ok { + t.Error("could not cast to rsa private key") + } + if !rsaPk.PublicKey.Equal(cert.PublicKey) { + t.Error("public key embedded in private key not equal to public key of certificate") + } + if cert.Subject.CommonName != tt.commonName { + t.Errorf("unexpected leaf cert common name, got %s, want %s", cert.Subject.CommonName, tt.commonName) + } + if len(caCerts) != 0 { + t.Errorf("unexpected # of caCerts: got %d, want 0", len(caCerts)) + } + }) } } - -var testdata = map[string]string{ - // 'null' password test case - "Windows Azure Tools": `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`, - // empty string password test case - "testing@example.com": `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 -HQ8CAggA`, -} diff --git a/test-data/ad_standalone_com_aescbc256.p12 b/test-data/ad_standalone_com_aescbc256.p12 new file mode 100644 index 0000000000000000000000000000000000000000..a1f7bf9bbd24d5b2f076a31dfe1f56db00aea39a GIT binary patch literal 2779 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 Ie%%iL0Y=TuPyhe` literal 0 HcmV?d00001 diff --git a/test-data/example_com_aescbc128.p12 b/test-data/example_com_aescbc128.p12 new file mode 100644 index 0000000000000000000000000000000000000000..6088478768d9ca58466096ddf6b33769b37ab974 GIT binary patch literal 2874 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 literal 0 HcmV?d00001 diff --git a/test-data/example_com_aescbc192.p12 b/test-data/example_com_aescbc192.p12 new file mode 100644 index 0000000000000000000000000000000000000000..83cce79de7f07e909b1af73c09e577f83b1d2fa3 GIT binary patch literal 4380 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 Date: Tue, 29 Oct 2024 13:29:36 +0100 Subject: [PATCH 4/7] refactor encoder and decoder into separate source files; improve func documentation --- pkcs12.go | 1028 +------------------------------------------------ pkcs12_dec.go | 390 +++++++++++++++++++ pkcs12_enc.go | 518 +++++++++++++++++++++++++ pkcs12_pem.go | 132 +++++++ 4 files changed, 1061 insertions(+), 1007 deletions(-) create mode 100644 pkcs12_dec.go create mode 100644 pkcs12_enc.go create mode 100644 pkcs12_pem.go diff --git a/pkcs12.go b/pkcs12.go index 8cb3b096..1fce710d 100644 --- a/pkcs12.go +++ b/pkcs12.go @@ -12,179 +12,41 @@ // Note that only DER-encoded PKCS#12 files are supported, even though PKCS#12 // allows BER encoding. This is because encoding/asn1 only supports DER. // +// # Decoding +// +// Depending on your use case, you may choose from the different decoding functions: +// - [Decode] reads exactly one private key and certificate +// - [DecodeChain] reads exactly one private key, certificate and related root CA certificate chain +// - [DecodeChains] reads multiple private keys, certificates and related root CA certificate chains +// - [DecodeTrustStore] reads multiple certificates, as commonly used in Java trust stores +// +// # Encoding +// +// Before encoding you must choose a specialized Encoder version, one of: +// - [Modern2023] encryption used is PBES2 with PBKDF2-HMAC-SHA-256 and AES-256-CBC; recommended for new applications +// - [LegacyDES] weak encryption used is 3DES using keys derived of HMAC-SHA-1; only for backward compatibility +// - [LegacyRC2] weak encryption used (RC2, and 3DES); only for older Java 8 trust stores +// +// These encoder types offer multiple options to encode PKCS#12 data exists, and you may choose from: +// - [Encoder.Encode] writes a private key and its certificate and related root CA certificates (chain) +// - [Encoder.EncodeTrustStore] writes just certificates, compatible to Java trust store format +// - [Encoder.EncodeTrustStoreEntries] writes friendly names and certificates, compatible to Java trust store format +// // This package is forked from golang.org/x/crypto/pkcs12, which is frozen. // The implementation is distilled from https://tools.ietf.org/html/rfc7292 // and referenced documents. package pkcs12 // import "software.sslmate.com/src/go-pkcs12" import ( - "bytes" - "crypto" - "crypto/ecdsa" - "crypto/rand" - "crypto/rsa" - "crypto/sha1" - "crypto/x509" "crypto/x509/pkix" "encoding/asn1" - "encoding/hex" - "encoding/pem" "errors" - "fmt" - "io" ) // DefaultPassword is the string "changeit", a commonly-used password for // PKCS#12 files. const DefaultPassword = "changeit" -// An Encoder contains methods for encoding PKCS#12 files. This package -// defines several different Encoders with different parameters. -// An Encoder is safe for concurrent use by multiple goroutines. -type Encoder struct { - macAlgorithm asn1.ObjectIdentifier - certAlgorithm asn1.ObjectIdentifier - keyAlgorithm asn1.ObjectIdentifier - macIterations int - encryptionIterations int - saltLen int - rand io.Reader -} - -// WithIterations creates a new Encoder identical to enc except that -// it will use the given number of KDF iterations for deriving the MAC -// and encryption keys. -// -// Note that even with a large number of iterations, a weak -// password can still be brute-forced in much less time than it would -// take to brute-force a high-entropy encrytion key. For the best -// security, don't worry about the number of iterations and just -// use a high-entropy password (e.g. one generated with `openssl rand -hex 16`). -// See https://neilmadden.blog/2023/01/09/on-pbkdf2-iterations/ for more detail. -// -// Panics if iterations is less than 1. -func (enc Encoder) WithIterations(iterations int) *Encoder { - if iterations < 1 { - panic("pkcs12: number of iterations is less than 1") - } - enc.macIterations = iterations - enc.encryptionIterations = iterations - return &enc -} - -// WithRand creates a new Encoder identical to enc except that -// it will use the given io.Reader for its random number generator -// instead of [crypto/rand.Reader]. -func (enc Encoder) WithRand(rand io.Reader) *Encoder { - enc.rand = rand - return &enc -} - -// LegacyRC2 encodes PKCS#12 files using weak algorithms that were -// traditionally used in PKCS#12 files, including those produced -// by OpenSSL before 3.0.0, go-pkcs12 before 0.3.0, and Java when -// keystore.pkcs12.legacy is defined. Specifically, certificates -// are encrypted using PBE with RC2, and keys are encrypted using PBE -// with 3DES, using keys derived with 2048 iterations of HMAC-SHA-1. -// MACs use HMAC-SHA-1 with keys derived with 1 iteration of HMAC-SHA-1. -// -// Due to the weak encryption, it is STRONGLY RECOMMENDED that you use [DefaultPassword] -// when encoding PKCS#12 files using this encoder, and protect the PKCS#12 files -// using other means. -// -// By default, OpenSSL 3 can't decode PKCS#12 files created using this encoder. -// For better compatibility, use [LegacyDES]. For better security, use -// [Modern2023]. -var LegacyRC2 = &Encoder{ - macAlgorithm: oidSHA1, - certAlgorithm: oidPBEWithSHAAnd40BitRC2CBC, - keyAlgorithm: oidPBEWithSHAAnd3KeyTripleDESCBC, - macIterations: 1, - encryptionIterations: 2048, - saltLen: 8, - rand: rand.Reader, -} - -// LegacyDES encodes PKCS#12 files using weak algorithms that are -// supported by a wide variety of software. Certificates and keys -// are encrypted using PBE with 3DES using keys derived with 2048 -// iterations of HMAC-SHA-1. MACs use HMAC-SHA-1 with keys derived -// with 1 iteration of HMAC-SHA-1. These are the same parameters -// used by OpenSSL's -descert option. As of 2023, this encoder is -// likely to produce files that can be read by the most software. -// -// Due to the weak encryption, it is STRONGLY RECOMMENDED that you use [DefaultPassword] -// when encoding PKCS#12 files using this encoder, and protect the PKCS#12 files -// using other means. To create more secure PKCS#12 files, use [Modern2023]. -var LegacyDES = &Encoder{ - macAlgorithm: oidSHA1, - certAlgorithm: oidPBEWithSHAAnd3KeyTripleDESCBC, - keyAlgorithm: oidPBEWithSHAAnd3KeyTripleDESCBC, - macIterations: 1, - encryptionIterations: 2048, - saltLen: 8, - rand: rand.Reader, -} - -// Passwordless encodes PKCS#12 files without any encryption or MACs. -// A lot of software has trouble reading such files, so it's probably only -// useful for creating Java trust stores using [Encoder.EncodeTrustStore] -// or [Encoder.EncodeTrustStoreEntries]. -// -// When using this encoder, you MUST specify an empty password. -var Passwordless = &Encoder{ - macAlgorithm: nil, - certAlgorithm: nil, - keyAlgorithm: nil, - rand: rand.Reader, -} - -// Modern2023 encodes PKCS#12 files using algorithms that are considered modern -// as of 2023. Private keys and certificates are encrypted using PBES2 with -// PBKDF2-HMAC-SHA-256 and AES-256-CBC. The MAC algorithm is HMAC-SHA-2. These -// are the same algorithms used by OpenSSL 3 (by default), Java 20 (by default), -// and Windows Server 2019 (when "stronger" is used). -// -// Files produced with this encoder can be read by OpenSSL 1.1.1 and higher, -// Java 12 and higher, and Windows Server 2019 and higher. -// -// For passwords, it is RECOMMENDED that you do one of the following: -// 1) Use [DefaultPassword] and protect the file using other means, or -// 2) Use a high-entropy password, such as one generated with `openssl rand -hex 16`. -// -// You SHOULD NOT use a lower-entropy password with this encoder because the number of KDF -// iterations is only 2048 and doesn't provide meaningful protection against -// brute-forcing. You can increase the number of iterations using [Encoder.WithIterations], -// but as https://neilmadden.blog/2023/01/09/on-pbkdf2-iterations/ explains, this doesn't -// help as much as you think. -var Modern2023 = &Encoder{ - macAlgorithm: oidSHA256, - certAlgorithm: oidPBES2, - keyAlgorithm: oidPBES2, - macIterations: 2048, - encryptionIterations: 2048, - saltLen: 16, - rand: rand.Reader, -} - -// Legacy encodes PKCS#12 files using weak, legacy parameters that work in -// a wide variety of software. -// -// Currently, this encoder is the same as [LegacyDES], but this -// may change in the future if another encoder is found to provide better -// compatibility. -// -// Due to the weak encryption, it is STRONGLY RECOMMENDED that you use [DefaultPassword] -// when encoding PKCS#12 files using this encoder, and protect the PKCS#12 files -// using other means. -var Legacy = LegacyDES - -// Modern encodes PKCS#12 files using modern, robust parameters. -// -// Currently, this encoder is the same as [Modern2023], but this -// may change in the future to keep up with modern practices. -var Modern = Modern2023 - var ( oidDataContentType = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 7, 1}) oidEncryptedDataContentType = asn1.ObjectIdentifier([]int{1, 2, 840, 113549, 1, 7, 6}) @@ -227,21 +89,6 @@ func (i encryptedContentInfo) Data() []byte { return i.EncryptedContent } func (i *encryptedContentInfo) SetData(data []byte) { i.EncryptedContent = data } -type safeBag struct { - Id asn1.ObjectIdentifier - Value asn1.RawValue `asn1:"tag:0,explicit"` - Attributes []pkcs12Attribute `asn1:"set,optional"` -} - -func (bag *safeBag) hasAttribute(id asn1.ObjectIdentifier) bool { - for _, attr := range bag.Attributes { - if attr.Id.Equal(id) { - return true - } - } - return false -} - type pkcs12Attribute struct { Id asn1.ObjectIdentifier Value asn1.RawValue `asn1:"set"` @@ -264,14 +111,8 @@ func (i *encryptedPrivateKeyInfo) SetData(data []byte) { i.EncryptedData = data } -// PEM block types -const ( - certificateType = "CERTIFICATE" - privateKeyType = "PRIVATE KEY" -) - // unmarshal calls asn1.Unmarshal, but also returns an error if there is any -// trailing data after unmarshaling. +// trailing data after unmarshalling. func unmarshal(in []byte, out interface{}) error { trailing, err := asn1.Unmarshal(in, out) if err != nil { @@ -282,830 +123,3 @@ func unmarshal(in []byte, out interface{}) error { } return nil } - -// ToPEM converts all "safe bags" contained in pfxData to PEM blocks. -// -// Deprecated: ToPEM creates invalid PEM blocks (private keys -// are encoded as raw RSA or EC private keys rather than PKCS#8 despite being -// labeled "PRIVATE KEY"). To decode a PKCS#12 file, use [DecodeChain] instead, -// and use the [encoding/pem] package to convert to PEM if necessary. -func ToPEM(pfxData []byte, password string) ([]*pem.Block, error) { - encodedPassword, err := bmpStringZeroTerminated(password) - if err != nil { - return nil, ErrIncorrectPassword - } - - bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword, 2, 2) - - if err != nil { - return nil, err - } - - blocks := make([]*pem.Block, 0, len(bags)) - for _, bag := range bags { - block, err := convertBag(&bag, encodedPassword) - if err != nil { - return nil, err - } - blocks = append(blocks, block) - } - - return blocks, nil -} - -func convertBag(bag *safeBag, password []byte) (*pem.Block, error) { - block := &pem.Block{ - Headers: make(map[string]string), - } - - for _, attribute := range bag.Attributes { - k, v, err := convertAttribute(&attribute) - if err != nil { - return nil, err - } - block.Headers[k] = v - } - - switch { - case bag.Id.Equal(oidCertBag): - block.Type = certificateType - certsData, err := decodeCertBag(bag.Value.Bytes) - if err != nil { - return nil, err - } - block.Bytes = certsData - case bag.Id.Equal(oidPKCS8ShroundedKeyBag): - block.Type = privateKeyType - - key, err := decodePkcs8ShroudedKeyBag(bag.Value.Bytes, password) - if err != nil { - return nil, err - } - - switch key := key.(type) { - case *rsa.PrivateKey: - block.Bytes = x509.MarshalPKCS1PrivateKey(key) - case *ecdsa.PrivateKey: - block.Bytes, err = x509.MarshalECPrivateKey(key) - if err != nil { - return nil, err - } - default: - return nil, errors.New("pkcs12: found unknown private key type in PKCS#8 wrapping") - } - default: - return nil, errors.New("pkcs12: don't know how to convert a safe bag of type " + bag.Id.String()) - } - return block, nil -} - -func convertAttribute(attribute *pkcs12Attribute) (key, value string, err error) { - isString := false - - switch { - case attribute.Id.Equal(oidFriendlyName): - key = "friendlyName" - isString = true - case attribute.Id.Equal(oidLocalKeyID): - key = "localKeyId" - case attribute.Id.Equal(oidMicrosoftCSPName): - // This key is chosen to match OpenSSL. - key = "Microsoft CSP Name" - isString = true - default: - return "", "", errors.New("pkcs12: unknown attribute with OID " + attribute.Id.String()) - } - - if isString { - if err := unmarshal(attribute.Value.Bytes, &attribute.Value); err != nil { - return "", "", err - } - if value, err = decodeBMPString(attribute.Value.Bytes); err != nil { - return "", "", err - } - } else { - var id []byte - if err := unmarshal(attribute.Value.Bytes, &id); err != nil { - return "", "", err - } - value = hex.EncodeToString(id) - } - - return key, value, nil -} - -func extractFriendlyname(bag safeBag) (string, error) { - for _, attribute := range bag.Attributes { - if attribute.Id.Equal(oidFriendlyName) { - if err := unmarshal(attribute.Value.Bytes, &attribute.Value); err != nil { - return "", err - } - value, err := decodeBMPString(attribute.Value.Bytes) - if err != nil { - return "", err - } - return value, nil - } - } - return "", errors.New("pkcs12: friendlyName attribute not found") -} - -func verifyKeyCert(privateKey crypto.PrivateKey, certificate *x509.Certificate) bool { - pk, ok := privateKey.(interface { - Public() crypto.PublicKey - }) - if !ok { - return false - } - publicKey, ok := pk.Public().(interface { - Equal(crypto.PublicKey) bool - }) - if !ok { - return false - } - if publicKey.Equal(certificate.PublicKey) { - return true - } - return false -} - -func issuedBy(subject, issuer *x509.Certificate) bool { - return bytes.Equal(subject.RawIssuer, issuer.RawSubject) && issuer.CheckSignature(subject.SignatureAlgorithm, subject.RawTBSCertificate, subject.Signature) == nil -} - -func buildChain(leaf *x509.Certificate, certs []*x509.Certificate) (certChain []*x509.Certificate) { - if len(certs) <= 1 { - return certs - } - for idx, cert := range certs { - if issuedBy(leaf, cert) { - certChain = append(certChain, cert) - certChain = append(certChain, buildChain(cert, certs[idx+1:])...) - } - } - return -} - -// Decode extracts a certificate and private key from pfxData, which must be a DER-encoded PKCS#12 file. This function -// assumes that there is only one certificate and only one private key in the -// pfxData. Since PKCS#12 files often contain more than one certificate, you -// probably want to use [DecodeChain] instead. -func Decode(pfxData []byte, password string) (privateKey interface{}, certificate *x509.Certificate, err error) { - var caCerts []*x509.Certificate - privateKey, certificate, caCerts, err = DecodeChain(pfxData, password) - if len(caCerts) != 0 { - err = errors.New("pkcs12: expected exactly two safe bags in the PFX PDU") - } - return -} - -// DecodeChain extracts a certificate, a CA certificate chain, and private key -// from pfxData, which must be a DER-encoded PKCS#12 file. This function assumes that there is at least one certificate -// and only one private key in the pfxData. The first certificate is assumed to -// be the leaf certificate, and subsequent certificates, if any, are assumed to -// comprise the CA certificate chain. -func DecodeChain(pfxData []byte, password string) (privateKey interface{}, certificate *x509.Certificate, caCerts []*x509.Certificate, err error) { - encodedPassword, err := bmpStringZeroTerminated(password) - if err != nil { - return nil, nil, nil, err - } - - bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword, 1, 2) - if err != nil { - return nil, nil, nil, err - } - - for _, bag := range bags { - switch { - case bag.Id.Equal(oidCertBag): - certsData, err := decodeCertBag(bag.Value.Bytes) - if err != nil { - return nil, nil, nil, err - } - certs, err := x509.ParseCertificates(certsData) - if err != nil { - return nil, nil, nil, err - } - if len(certs) != 1 { - err = errors.New("pkcs12: expected exactly one certificate in the certBag") - return nil, nil, nil, err - } - if certificate == nil { - certificate = certs[0] - } else { - caCerts = append(caCerts, certs[0]) - } - - case bag.Id.Equal(oidKeyBag): - if privateKey != nil { - err = errors.New("pkcs12: expected exactly one key bag") - return nil, nil, nil, err - } - - if privateKey, err = x509.ParsePKCS8PrivateKey(bag.Value.Bytes); err != nil { - return nil, nil, nil, err - } - case bag.Id.Equal(oidPKCS8ShroundedKeyBag): - if privateKey != nil { - err = errors.New("pkcs12: expected exactly one key bag") - return nil, nil, nil, err - } - - if privateKey, err = decodePkcs8ShroudedKeyBag(bag.Value.Bytes, encodedPassword); err != nil { - return nil, nil, nil, err - } - } - } - - if certificate == nil { - return nil, nil, nil, errors.New("pkcs12: certificate missing") - } - if privateKey == nil { - return nil, nil, nil, errors.New("pkcs12: private key missing") - } - - return -} - -// A Chain represents a private key, a leaf certificate matching it, and the CA certificate chain. -// It also stores the friendlyName of the private key. -type Chain struct { - FriendlyName string - PrivateKey crypto.PrivateKey - Leaf *x509.Certificate - CACerts []*x509.Certificate -} - -// DecodeChains extracts Chains from pfxData, which must be a DER-encoded PKCS#12 file. The function -// assumes there is at least one private key with a friendlyName attribute and at least one matching certificate. -// The function ignores certificates that do not match any private keys, or are not part of any CA certificates chain. -func DecodeChains(pfxData []byte, password string) (chains []Chain, err error) { - encodedPassword, err := bmpStringZeroTerminated(password) - if err != nil { - return nil, err - } - - bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword, 1, 2) - if err != nil { - return nil, err - } - - // extract all bags - privateKeysAll := make(map[string]crypto.PrivateKey) - var certsAll []*x509.Certificate // do not store cert alias - for _, bag := range bags { - friendlyName, err := extractFriendlyname(bag) - if err != nil { - friendlyName = "" - } - switch { - case bag.Id.Equal(oidCertBag): - certsData, err := decodeCertBag(bag.Value.Bytes) - if err != nil { - return nil, err - } - certs, err := x509.ParseCertificates(certsData) - if err != nil { - return nil, err - } - if len(certs) != 1 { - err = errors.New("pkcs12: expected exactly one certificate in the certBag") - return nil, err - } - certsAll = append(certsAll, certs[0]) - case bag.Id.Equal(oidKeyBag): - privateKey, err := x509.ParsePKCS8PrivateKey(bag.Value.Bytes) - if err != nil { - return nil, err - } - pk, ok := privateKey.(crypto.PrivateKey) - if !ok { - return nil, fmt.Errorf("pkcs12: failed to get private key") - } - privateKeysAll[friendlyName] = pk - case bag.Id.Equal(oidPKCS8ShroundedKeyBag): - privateKey, err := decodePkcs8ShroudedKeyBag(bag.Value.Bytes, encodedPassword) - if err != nil { - return nil, err - } - pk, ok := privateKey.(crypto.PrivateKey) - if !ok { - return nil, fmt.Errorf("pkcs12: failed to get private key") - } - privateKeysAll[friendlyName] = pk - } - } - for pkAlias, pk := range privateKeysAll { - // initialize chains and match private keys to leaf certificates - chain := Chain{ - FriendlyName: pkAlias, - PrivateKey: pk, - } - var idx int - for idx, cert := range certsAll { - _ = idx - if verifyKeyCert(pk, cert) { - chain.Leaf = cert - break - } - } - // recursively build a chain for leaf certificate - caCerts := buildChain(chain.Leaf, append(certsAll[:idx], certsAll[idx+1:]...)) - chain.CACerts = caCerts - chains = append(chains, chain) - } - // verify chains - for _, chain := range chains { - if chain.PrivateKey == nil { - return nil, errors.New("pkcs12: private key missing") - } - if chain.Leaf == nil { - return nil, errors.New("pkcs12: certificate missing") - } - } - - return -} - -// DecodeTrustStore extracts the certificates from pfxData, which must be a DER-encoded -// PKCS#12 file containing exclusively certificates with attribute 2.16.840.1.113894.746875.1.1, -// which is used by Java to designate a trust anchor. -// -// If the password argument is empty, DecodeTrustStore will decode either password-less -// PKCS#12 files (i.e. those without encryption) or files with a literal empty password. -func DecodeTrustStore(pfxData []byte, password string) (certs []*x509.Certificate, err error) { - encodedPassword, err := bmpStringZeroTerminated(password) - if err != nil { - return nil, err - } - - bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword, 1, 1) - if err != nil { - return nil, err - } - - for _, bag := range bags { - switch { - case bag.Id.Equal(oidCertBag): - if !bag.hasAttribute(oidJavaTrustStore) { - return nil, errors.New("pkcs12: trust store contains a certificate that is not marked as trusted") - } - certsData, err := decodeCertBag(bag.Value.Bytes) - if err != nil { - return nil, err - } - parsedCerts, err := x509.ParseCertificates(certsData) - if err != nil { - return nil, err - } - - if len(parsedCerts) != 1 { - err = errors.New("pkcs12: expected exactly one certificate in the certBag") - return nil, err - } - - certs = append(certs, parsedCerts[0]) - - default: - return nil, errors.New("pkcs12: expected only certificate bags") - } - } - - return -} - -func getSafeContents(p12Data, password []byte, expectedItemsMin int, expectedItemsMax int) (bags []safeBag, updatedPassword []byte, err error) { - pfx := new(pfxPdu) - if err := unmarshal(p12Data, pfx); err != nil { - return nil, nil, errors.New("pkcs12: error reading P12 data: " + err.Error()) - } - - if pfx.Version != 3 { - return nil, nil, NotImplementedError("can only decode v3 PFX PDU's") - } - - if !pfx.AuthSafe.ContentType.Equal(oidDataContentType) { - return nil, nil, NotImplementedError("only password-protected PFX is implemented") - } - - // unmarshal the explicit bytes in the content for type 'data' - if err := unmarshal(pfx.AuthSafe.Content.Bytes, &pfx.AuthSafe.Content); err != nil { - return nil, nil, err - } - - if len(pfx.MacData.Mac.Algorithm.Algorithm) == 0 { - if !(len(password) == 2 && password[0] == 0 && password[1] == 0) { - return nil, nil, errors.New("pkcs12: no MAC in data") - } - } else if err := verifyMac(&pfx.MacData, pfx.AuthSafe.Content.Bytes, password); err != nil { - if err == ErrIncorrectPassword && len(password) == 2 && password[0] == 0 && password[1] == 0 { - // some implementations use an empty byte array - // for the empty string password try one more - // time with empty-empty password - password = nil - err = verifyMac(&pfx.MacData, pfx.AuthSafe.Content.Bytes, password) - } - if err != nil { - return nil, nil, err - } - } - - var authenticatedSafe []contentInfo - if err := unmarshal(pfx.AuthSafe.Content.Bytes, &authenticatedSafe); err != nil { - return nil, nil, err - } - - if len(authenticatedSafe) < expectedItemsMin || len(authenticatedSafe) > expectedItemsMax { - if expectedItemsMin == expectedItemsMax { - return nil, nil, NotImplementedError(fmt.Sprintf("expected exactly %d items in the authenticated safe, but this file has %d", expectedItemsMin, len(authenticatedSafe))) - } - return nil, nil, NotImplementedError(fmt.Sprintf("expected between %d and %d items in the authenticated safe, but this file has %d", expectedItemsMin, expectedItemsMax, len(authenticatedSafe))) - } - - for _, ci := range authenticatedSafe { - var data []byte - - switch { - case ci.ContentType.Equal(oidDataContentType): - if err := unmarshal(ci.Content.Bytes, &data); err != nil { - return nil, nil, err - } - case ci.ContentType.Equal(oidEncryptedDataContentType): - var encryptedData encryptedData - if err := unmarshal(ci.Content.Bytes, &encryptedData); err != nil { - return nil, nil, err - } - if encryptedData.Version != 0 { - return nil, nil, NotImplementedError("only version 0 of EncryptedData is supported") - } - if data, err = pbDecrypt(encryptedData.EncryptedContentInfo, password); err != nil { - return nil, nil, err - } - default: - return nil, nil, NotImplementedError("only data and encryptedData content types are supported in authenticated safe") - } - - var safeContents []safeBag - if err := unmarshal(data, &safeContents); err != nil { - return nil, nil, err - } - bags = append(bags, safeContents...) - } - - return bags, password, nil -} - -// Encode is equivalent to LegacyRC2.WithRand(rand).Encode. -// See [Encoder.Encode] and [LegacyRC2] for details. -// -// Deprecated: for the same behavior, use LegacyRC2.Encode; for -// better compatibility, use Legacy.Encode; for better -// security, use Modern.Encode. -func Encode(rand io.Reader, privateKey interface{}, certificate *x509.Certificate, caCerts []*x509.Certificate, password string) (pfxData []byte, err error) { - return LegacyRC2.WithRand(rand).Encode(privateKey, certificate, caCerts, password) -} - -// Encode produces pfxData containing one private key (privateKey), an -// end-entity certificate (certificate), and any number of CA certificates -// (caCerts). -// -// The pfxData is encrypted and authenticated with keys derived from -// the provided password. -// -// Encode emulates the behavior of OpenSSL's PKCS12_create: it creates two -// SafeContents: one that's encrypted with the certificate encryption algorithm -// and contains the certificates, and another that is unencrypted and contains the -// private key shrouded with the key encryption algorithm. The private key bag and -// the end-entity certificate bag have the LocalKeyId attribute set to the SHA-1 -// fingerprint of the end-entity certificate. -func (enc *Encoder) Encode(privateKey interface{}, certificate *x509.Certificate, caCerts []*x509.Certificate, password string) (pfxData []byte, err error) { - if enc.macAlgorithm == nil && enc.certAlgorithm == nil && enc.keyAlgorithm == nil && password != "" { - return nil, errors.New("pkcs12: password must be empty") - } - - encodedPassword, err := bmpStringZeroTerminated(password) - if err != nil { - return nil, err - } - - var pfx pfxPdu - pfx.Version = 3 - - var certFingerprint = sha1.Sum(certificate.Raw) - var localKeyIdAttr pkcs12Attribute - localKeyIdAttr.Id = oidLocalKeyID - localKeyIdAttr.Value.Class = 0 - localKeyIdAttr.Value.Tag = 17 - localKeyIdAttr.Value.IsCompound = true - if localKeyIdAttr.Value.Bytes, err = asn1.Marshal(certFingerprint[:]); err != nil { - return nil, err - } - - var certBags []safeBag - if certBag, err := makeCertBag(certificate.Raw, []pkcs12Attribute{localKeyIdAttr}); err != nil { - return nil, err - } else { - certBags = append(certBags, *certBag) - } - - for _, cert := range caCerts { - if certBag, err := makeCertBag(cert.Raw, []pkcs12Attribute{}); err != nil { - return nil, err - } else { - certBags = append(certBags, *certBag) - } - } - - var keyBag safeBag - if enc.keyAlgorithm == nil { - keyBag.Id = oidKeyBag - keyBag.Value.Class = 2 - keyBag.Value.Tag = 0 - keyBag.Value.IsCompound = true - if keyBag.Value.Bytes, err = x509.MarshalPKCS8PrivateKey(privateKey); err != nil { - return nil, err - } - } else { - keyBag.Id = oidPKCS8ShroundedKeyBag - keyBag.Value.Class = 2 - keyBag.Value.Tag = 0 - keyBag.Value.IsCompound = true - if keyBag.Value.Bytes, err = encodePkcs8ShroudedKeyBag(enc.rand, privateKey, enc.keyAlgorithm, encodedPassword, enc.encryptionIterations, enc.saltLen); err != nil { - return nil, err - } - } - keyBag.Attributes = append(keyBag.Attributes, localKeyIdAttr) - - // Construct an authenticated safe with two SafeContents. - // The first SafeContents is encrypted and contains the cert bags. - // The second SafeContents is unencrypted and contains the shrouded key bag. - var authenticatedSafe [2]contentInfo - if authenticatedSafe[0], err = makeSafeContents(enc.rand, certBags, enc.certAlgorithm, encodedPassword, enc.encryptionIterations, enc.saltLen); err != nil { - return nil, err - } - if authenticatedSafe[1], err = makeSafeContents(enc.rand, []safeBag{keyBag}, nil, nil, 0, 0); err != nil { - return nil, err - } - - var authenticatedSafeBytes []byte - if authenticatedSafeBytes, err = asn1.Marshal(authenticatedSafe[:]); err != nil { - return nil, err - } - - if enc.macAlgorithm != nil { - // compute the MAC - pfx.MacData.Mac.Algorithm.Algorithm = enc.macAlgorithm - pfx.MacData.MacSalt = make([]byte, enc.saltLen) - if _, err = enc.rand.Read(pfx.MacData.MacSalt); err != nil { - return nil, err - } - pfx.MacData.Iterations = enc.macIterations - if err = computeMac(&pfx.MacData, authenticatedSafeBytes, encodedPassword); err != nil { - return nil, err - } - } - - pfx.AuthSafe.ContentType = oidDataContentType - pfx.AuthSafe.Content.Class = 2 - pfx.AuthSafe.Content.Tag = 0 - pfx.AuthSafe.Content.IsCompound = true - if pfx.AuthSafe.Content.Bytes, err = asn1.Marshal(authenticatedSafeBytes); err != nil { - return nil, err - } - - if pfxData, err = asn1.Marshal(pfx); err != nil { - return nil, errors.New("pkcs12: error writing P12 data: " + err.Error()) - } - return -} - -// EncodeTrustStore is equivalent to LegacyRC2.WithRand(rand).EncodeTrustStore. -// See [Encoder.EncodeTrustStore] and [LegacyRC2] for details. -// -// Deprecated: for the same behavior, use LegacyRC2.EncodeTrustStore; to generate passwordless trust stores, -// use Passwordless.EncodeTrustStore. -func EncodeTrustStore(rand io.Reader, certs []*x509.Certificate, password string) (pfxData []byte, err error) { - return LegacyRC2.WithRand(rand).EncodeTrustStore(certs, password) -} - -// EncodeTrustStore produces pfxData containing any number of CA certificates -// (certs) to be trusted. The certificates will be marked with a special OID that -// allow it to be used as a Java TrustStore in Java 1.8 and newer. -// -// EncodeTrustStore creates a single SafeContents that's optionally encrypted -// and contains the certificates. -// -// The Subject of the certificates are used as the Friendly Names (Aliases) -// within the resulting pfxData. If certificates share a Subject, then the -// resulting Friendly Names (Aliases) will be identical, which Java may treat as -// the same entry when used as a Java TrustStore, e.g. with `keytool`. To -// customize the Friendly Names, use [EncodeTrustStoreEntries]. -func (enc *Encoder) EncodeTrustStore(certs []*x509.Certificate, password string) (pfxData []byte, err error) { - var certsWithFriendlyNames []TrustStoreEntry - for _, cert := range certs { - certsWithFriendlyNames = append(certsWithFriendlyNames, TrustStoreEntry{ - Cert: cert, - FriendlyName: cert.Subject.String(), - }) - } - return enc.EncodeTrustStoreEntries(certsWithFriendlyNames, password) -} - -// TrustStoreEntry represents an entry in a Java TrustStore. -type TrustStoreEntry struct { - Cert *x509.Certificate - FriendlyName string -} - -// EncodeTrustStoreEntries is equivalent to LegacyRC2.WithRand(rand).EncodeTrustStoreEntries. -// See [Encoder.EncodeTrustStoreEntries] and [LegacyRC2] for details. -// -// Deprecated: for the same behavior, use LegacyRC2.EncodeTrustStoreEntries; to generate passwordless trust stores, -// use Passwordless.EncodeTrustStoreEntries. -func EncodeTrustStoreEntries(rand io.Reader, entries []TrustStoreEntry, password string) (pfxData []byte, err error) { - return LegacyRC2.WithRand(rand).EncodeTrustStoreEntries(entries, password) -} - -// EncodeTrustStoreEntries produces pfxData containing any number of CA -// certificates (entries) to be trusted. The certificates will be marked with a -// special OID that allow it to be used as a Java TrustStore in Java 1.8 and newer. -// -// This is identical to [Encoder.EncodeTrustStore], but also allows for setting specific -// Friendly Names (Aliases) to be used per certificate, by specifying a slice -// of TrustStoreEntry. -// -// If the same Friendly Name is used for more than one certificate, then the -// resulting Friendly Names (Aliases) in the pfxData will be identical, which Java -// may treat as the same entry when used as a Java TrustStore, e.g. with `keytool`. -// -// EncodeTrustStoreEntries creates a single SafeContents that's optionally -// encrypted and contains the certificates. -func (enc *Encoder) EncodeTrustStoreEntries(entries []TrustStoreEntry, password string) (pfxData []byte, err error) { - if enc.macAlgorithm == nil && enc.certAlgorithm == nil && password != "" { - return nil, errors.New("pkcs12: password must be empty") - } - - encodedPassword, err := bmpStringZeroTerminated(password) - if err != nil { - return nil, err - } - - var pfx pfxPdu - pfx.Version = 3 - - var certAttributes []pkcs12Attribute - - extKeyUsageOidBytes, err := asn1.Marshal(oidAnyExtendedKeyUsage) - if err != nil { - return nil, err - } - - // the oidJavaTrustStore attribute contains the EKUs for which - // this trust anchor will be valid - certAttributes = append(certAttributes, pkcs12Attribute{ - Id: oidJavaTrustStore, - Value: asn1.RawValue{ - Class: 0, - Tag: 17, - IsCompound: true, - Bytes: extKeyUsageOidBytes, - }, - }) - - var certBags []safeBag - for _, entry := range entries { - - bmpFriendlyName, err := bmpString(entry.FriendlyName) - if err != nil { - return nil, err - } - - encodedFriendlyName, err := asn1.Marshal(asn1.RawValue{ - Class: 0, - Tag: 30, - IsCompound: false, - Bytes: bmpFriendlyName, - }) - if err != nil { - return nil, err - } - - friendlyName := pkcs12Attribute{ - Id: oidFriendlyName, - Value: asn1.RawValue{ - Class: 0, - Tag: 17, - IsCompound: true, - Bytes: encodedFriendlyName, - }, - } - - certBag, err := makeCertBag(entry.Cert.Raw, append(certAttributes, friendlyName)) - if err != nil { - return nil, err - } - certBags = append(certBags, *certBag) - } - - // Construct an authenticated safe with one SafeContent. - // The SafeContents is contains the cert bags. - var authenticatedSafe [1]contentInfo - if authenticatedSafe[0], err = makeSafeContents(enc.rand, certBags, enc.certAlgorithm, encodedPassword, enc.encryptionIterations, enc.saltLen); err != nil { - return nil, err - } - - var authenticatedSafeBytes []byte - if authenticatedSafeBytes, err = asn1.Marshal(authenticatedSafe[:]); err != nil { - return nil, err - } - - if enc.macAlgorithm != nil { - // compute the MAC - pfx.MacData.Mac.Algorithm.Algorithm = enc.macAlgorithm - pfx.MacData.MacSalt = make([]byte, enc.saltLen) - if _, err = enc.rand.Read(pfx.MacData.MacSalt); err != nil { - return nil, err - } - pfx.MacData.Iterations = enc.macIterations - if err = computeMac(&pfx.MacData, authenticatedSafeBytes, encodedPassword); err != nil { - return nil, err - } - } - - pfx.AuthSafe.ContentType = oidDataContentType - pfx.AuthSafe.Content.Class = 2 - pfx.AuthSafe.Content.Tag = 0 - pfx.AuthSafe.Content.IsCompound = true - if pfx.AuthSafe.Content.Bytes, err = asn1.Marshal(authenticatedSafeBytes); err != nil { - return nil, err - } - - if pfxData, err = asn1.Marshal(pfx); err != nil { - return nil, errors.New("pkcs12: error writing P12 data: " + err.Error()) - } - return -} - -func makeCertBag(certBytes []byte, attributes []pkcs12Attribute) (certBag *safeBag, err error) { - certBag = new(safeBag) - certBag.Id = oidCertBag - certBag.Value.Class = 2 - certBag.Value.Tag = 0 - certBag.Value.IsCompound = true - if certBag.Value.Bytes, err = encodeCertBag(certBytes); err != nil { - return nil, err - } - certBag.Attributes = attributes - return -} - -func makeSafeContents(rand io.Reader, bags []safeBag, algoID asn1.ObjectIdentifier, password []byte, iterations int, saltLen int) (ci contentInfo, err error) { - var data []byte - if data, err = asn1.Marshal(bags); err != nil { - return - } - - if algoID == nil { - ci.ContentType = oidDataContentType - ci.Content.Class = 2 - ci.Content.Tag = 0 - ci.Content.IsCompound = true - if ci.Content.Bytes, err = asn1.Marshal(data); err != nil { - return - } - } else { - randomSalt := make([]byte, saltLen) - if _, err = rand.Read(randomSalt); err != nil { - return - } - - var algo pkix.AlgorithmIdentifier - algo.Algorithm = algoID - if algoID.Equal(oidPBES2) { - if algo.Parameters.FullBytes, err = makePBES2Parameters(rand, randomSalt, iterations); err != nil { - return - } - } else { - if algo.Parameters.FullBytes, err = asn1.Marshal(pbeParams{Salt: randomSalt, Iterations: iterations}); err != nil { - return - } - } - - var encryptedData encryptedData - encryptedData.Version = 0 - encryptedData.EncryptedContentInfo.ContentType = oidDataContentType - encryptedData.EncryptedContentInfo.ContentEncryptionAlgorithm = algo - if err = pbEncrypt(&encryptedData.EncryptedContentInfo, data, password); err != nil { - return - } - - ci.ContentType = oidEncryptedDataContentType - ci.Content.Class = 2 - ci.Content.Tag = 0 - ci.Content.IsCompound = true - if ci.Content.Bytes, err = asn1.Marshal(encryptedData); err != nil { - return - } - } - return -} diff --git a/pkcs12_dec.go b/pkcs12_dec.go new file mode 100644 index 00000000..13113e98 --- /dev/null +++ b/pkcs12_dec.go @@ -0,0 +1,390 @@ +// Copyright 2015, 2018, 2019 Opsmate, Inc. All rights reserved. +// 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 pkcs12 + +import ( + "bytes" + "crypto" + "crypto/x509" + "encoding/asn1" + "errors" + "fmt" +) + +// A CertificateChain represents a private key, a leaf certificate matching it, and the CA certificate chain. +// It also stores the friendlyName of the private key. +type CertificateChain struct { + FriendlyName string + PrivateKey crypto.PrivateKey + LeafCertificate *x509.Certificate + CACertificates []*x509.Certificate +} + +// Decode extracts a certificate and private key from pfxData, which must be a DER-encoded PKCS#12 file. +// This function assumes that there is only one certificate and only one private key in the pfxData. +// Since PKCS#12 files often contain more than one certificate, you probably want to use [DecodeChain] instead. +// It will return an error, if there is more than one private key in the data. +func Decode(pfxData []byte, password string) (privateKey interface{}, certificate *x509.Certificate, err error) { + var caCerts []*x509.Certificate + privateKey, certificate, caCerts, err = DecodeChain(pfxData, password) + if len(caCerts) != 0 { + err = errors.New("pkcs12: expected exactly two safe bags in the PFX PDU") + } + return +} + +// DecodeChain extracts a certificate, a CA certificate chain, and private key +// from pfxData, which must be a DER-encoded PKCS#12 file. This function assumes that there is at least one certificate +// and only one private key in the pfxData. The first certificate is assumed to +// be the leaf certificate, and subsequent certificates, if any, are assumed to +// comprise the CA certificate chain. +func DecodeChain(pfxData []byte, password string) (privateKey interface{}, certificate *x509.Certificate, caCerts []*x509.Certificate, err error) { + encodedPassword, err := bmpStringZeroTerminated(password) + if err != nil { + return nil, nil, nil, err + } + + bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword, 1, 2) + if err != nil { + return nil, nil, nil, err + } + + for _, bag := range bags { + switch { + case bag.Id.Equal(oidCertBag): + certsData, err := decodeCertBag(bag.Value.Bytes) + if err != nil { + return nil, nil, nil, err + } + certs, err := x509.ParseCertificates(certsData) + if err != nil { + return nil, nil, nil, err + } + if len(certs) != 1 { + err = errors.New("pkcs12: expected exactly one certificate in the certBag") + return nil, nil, nil, err + } + if certificate == nil { + certificate = certs[0] + } else { + caCerts = append(caCerts, certs[0]) + } + + case bag.Id.Equal(oidKeyBag): + if privateKey != nil { + err = errors.New("pkcs12: expected exactly one key bag") + return nil, nil, nil, err + } + + if privateKey, err = x509.ParsePKCS8PrivateKey(bag.Value.Bytes); err != nil { + return nil, nil, nil, err + } + case bag.Id.Equal(oidPKCS8ShroundedKeyBag): + if privateKey != nil { + err = errors.New("pkcs12: expected exactly one key bag") + return nil, nil, nil, err + } + + if privateKey, err = decodePkcs8ShroudedKeyBag(bag.Value.Bytes, encodedPassword); err != nil { + return nil, nil, nil, err + } + } + } + + if certificate == nil { + return nil, nil, nil, errors.New("pkcs12: certificate missing") + } + if privateKey == nil { + return nil, nil, nil, errors.New("pkcs12: private key missing") + } + + return +} + +// DecodeChains extracts Chains from pfxData, which must be a DER-encoded PKCS#12 file. The function +// assumes there is at least one private key with a friendlyName attribute and at least one matching certificate. +// The function ignores certificates that do not match any private keys, or are not part of any CA certificates chain. +func DecodeChains(pfxData []byte, password string) (chains []CertificateChain, err error) { + encodedPassword, err := bmpStringZeroTerminated(password) + if err != nil { + return nil, err + } + + bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword, 1, 2) + if err != nil { + return nil, err + } + + // extract all bags + privateKeysAll := make(map[string]crypto.PrivateKey) + var certsAll []*x509.Certificate // do not store cert alias + for _, bag := range bags { + friendlyName, err := extractFriendlyname(bag) + if err != nil { + friendlyName = "" + } + switch { + case bag.Id.Equal(oidCertBag): + certsData, err := decodeCertBag(bag.Value.Bytes) + if err != nil { + return nil, err + } + certs, err := x509.ParseCertificates(certsData) + if err != nil { + return nil, err + } + if len(certs) != 1 { + err = errors.New("pkcs12: expected exactly one certificate in the certBag") + return nil, err + } + certsAll = append(certsAll, certs[0]) + case bag.Id.Equal(oidKeyBag): + privateKey, err := x509.ParsePKCS8PrivateKey(bag.Value.Bytes) + if err != nil { + return nil, err + } + pk, ok := privateKey.(crypto.PrivateKey) + if !ok { + return nil, fmt.Errorf("pkcs12: failed to get private key") + } + privateKeysAll[friendlyName] = pk + case bag.Id.Equal(oidPKCS8ShroundedKeyBag): + privateKey, err := decodePkcs8ShroudedKeyBag(bag.Value.Bytes, encodedPassword) + if err != nil { + return nil, err + } + pk, ok := privateKey.(crypto.PrivateKey) + if !ok { + return nil, fmt.Errorf("pkcs12: failed to get private key") + } + privateKeysAll[friendlyName] = pk + } + } + for pkAlias, pk := range privateKeysAll { + // initialize chains and match private keys to leaf certificates + chain := CertificateChain{ + FriendlyName: pkAlias, + PrivateKey: pk, + } + var idx int + for idx, cert := range certsAll { + _ = idx + if verifyKeyCert(pk, cert) { + chain.LeafCertificate = cert + break + } + } + // recursively build a chain for leaf certificate + caCerts := buildChain(chain.LeafCertificate, append(certsAll[:idx], certsAll[idx+1:]...)) + chain.CACertificates = caCerts + chains = append(chains, chain) + } + // verify chains + for _, chain := range chains { + if chain.PrivateKey == nil { + return nil, errors.New("pkcs12: private key missing") + } + if chain.LeafCertificate == nil { + return nil, errors.New("pkcs12: certificate missing") + } + } + + return +} + +// DecodeTrustStore extracts the certificates from pfxData, which must be a DER-encoded +// PKCS#12 file containing exclusively certificates with attribute 2.16.840.1.113894.746875.1.1, +// which is used by Java to designate a trust anchor. +// +// If the password argument is empty, DecodeTrustStore will decode either password-less +// PKCS#12 files (i.e. those without encryption) or files with a literal empty password. +func DecodeTrustStore(pfxData []byte, password string) (certs []*x509.Certificate, err error) { + encodedPassword, err := bmpStringZeroTerminated(password) + if err != nil { + return nil, err + } + + bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword, 1, 1) + if err != nil { + return nil, err + } + + for _, bag := range bags { + switch { + case bag.Id.Equal(oidCertBag): + if !bag.hasAttribute(oidJavaTrustStore) { + return nil, errors.New("pkcs12: trust store contains a certificate that is not marked as trusted") + } + certsData, err := decodeCertBag(bag.Value.Bytes) + if err != nil { + return nil, err + } + parsedCerts, err := x509.ParseCertificates(certsData) + if err != nil { + return nil, err + } + + if len(parsedCerts) != 1 { + err = errors.New("pkcs12: expected exactly one certificate in the certBag") + return nil, err + } + + certs = append(certs, parsedCerts[0]) + + default: + return nil, errors.New("pkcs12: expected only certificate bags") + } + } + return +} + +type safeBag struct { + Id asn1.ObjectIdentifier + Value asn1.RawValue `asn1:"tag:0,explicit"` + Attributes []pkcs12Attribute `asn1:"set,optional"` +} + +func (bag *safeBag) hasAttribute(id asn1.ObjectIdentifier) bool { + for _, attr := range bag.Attributes { + if attr.Id.Equal(id) { + return true + } + } + return false +} + +func extractFriendlyname(bag safeBag) (string, error) { + for _, attribute := range bag.Attributes { + if attribute.Id.Equal(oidFriendlyName) { + if err := unmarshal(attribute.Value.Bytes, &attribute.Value); err != nil { + return "", err + } + value, err := decodeBMPString(attribute.Value.Bytes) + if err != nil { + return "", err + } + return value, nil + } + } + return "", errors.New("pkcs12: friendlyName attribute not found") +} + +func verifyKeyCert(privateKey crypto.PrivateKey, certificate *x509.Certificate) bool { + pk, ok := privateKey.(interface { + Public() crypto.PublicKey + }) + if !ok { + return false + } + publicKey, ok := pk.Public().(interface { + Equal(crypto.PublicKey) bool + }) + if !ok { + return false + } + if publicKey.Equal(certificate.PublicKey) { + return true + } + return false +} + +func issuedBy(subject, issuer *x509.Certificate) bool { + return bytes.Equal(subject.RawIssuer, issuer.RawSubject) && issuer.CheckSignature(subject.SignatureAlgorithm, subject.RawTBSCertificate, subject.Signature) == nil +} + +func buildChain(leaf *x509.Certificate, certs []*x509.Certificate) (certChain []*x509.Certificate) { + if len(certs) <= 1 { + return certs + } + for idx, cert := range certs { + if issuedBy(leaf, cert) { + certChain = append(certChain, cert) + certChain = append(certChain, buildChain(cert, certs[idx+1:])...) + } + } + return +} + +func getSafeContents(p12Data, password []byte, expectedItemsMin int, expectedItemsMax int) (bags []safeBag, updatedPassword []byte, err error) { + pfx := new(pfxPdu) + if err := unmarshal(p12Data, pfx); err != nil { + return nil, nil, errors.New("pkcs12: error reading P12 data: " + err.Error()) + } + + if pfx.Version != 3 { + return nil, nil, NotImplementedError("can only decode v3 PFX PDU's") + } + + if !pfx.AuthSafe.ContentType.Equal(oidDataContentType) { + return nil, nil, NotImplementedError("only password-protected PFX is implemented") + } + + // unmarshal the explicit bytes in the content for type 'data' + if err := unmarshal(pfx.AuthSafe.Content.Bytes, &pfx.AuthSafe.Content); err != nil { + return nil, nil, err + } + + if len(pfx.MacData.Mac.Algorithm.Algorithm) == 0 { + if !(len(password) == 2 && password[0] == 0 && password[1] == 0) { + return nil, nil, errors.New("pkcs12: no MAC in data") + } + } else if err := verifyMac(&pfx.MacData, pfx.AuthSafe.Content.Bytes, password); err != nil { + if err == ErrIncorrectPassword && len(password) == 2 && password[0] == 0 && password[1] == 0 { + // some implementations use an empty byte array + // for the empty string password try one more + // time with empty-empty password + password = nil + err = verifyMac(&pfx.MacData, pfx.AuthSafe.Content.Bytes, password) + } + if err != nil { + return nil, nil, err + } + } + + var authenticatedSafe []contentInfo + if err := unmarshal(pfx.AuthSafe.Content.Bytes, &authenticatedSafe); err != nil { + return nil, nil, err + } + + if len(authenticatedSafe) < expectedItemsMin || len(authenticatedSafe) > expectedItemsMax { + if expectedItemsMin == expectedItemsMax { + return nil, nil, NotImplementedError(fmt.Sprintf("expected exactly %d items in the authenticated safe, but this file has %d", expectedItemsMin, len(authenticatedSafe))) + } + return nil, nil, NotImplementedError(fmt.Sprintf("expected between %d and %d items in the authenticated safe, but this file has %d", expectedItemsMin, expectedItemsMax, len(authenticatedSafe))) + } + + for _, ci := range authenticatedSafe { + var data []byte + + switch { + case ci.ContentType.Equal(oidDataContentType): + if err := unmarshal(ci.Content.Bytes, &data); err != nil { + return nil, nil, err + } + case ci.ContentType.Equal(oidEncryptedDataContentType): + var encryptedData encryptedData + if err := unmarshal(ci.Content.Bytes, &encryptedData); err != nil { + return nil, nil, err + } + if encryptedData.Version != 0 { + return nil, nil, NotImplementedError("only version 0 of EncryptedData is supported") + } + if data, err = pbDecrypt(encryptedData.EncryptedContentInfo, password); err != nil { + return nil, nil, err + } + default: + return nil, nil, NotImplementedError("only data and encryptedData content types are supported in authenticated safe") + } + + var safeContents []safeBag + if err := unmarshal(data, &safeContents); err != nil { + return nil, nil, err + } + bags = append(bags, safeContents...) + } + + return bags, password, nil +} diff --git a/pkcs12_enc.go b/pkcs12_enc.go new file mode 100644 index 00000000..87603599 --- /dev/null +++ b/pkcs12_enc.go @@ -0,0 +1,518 @@ +// Copyright 2015, 2018, 2019 Opsmate, Inc. All rights reserved. +// 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 pkcs12 + +import ( + "crypto/rand" + "crypto/sha1" + "crypto/x509" + "crypto/x509/pkix" + "encoding/asn1" + "errors" + "io" +) + +// An Encoder contains methods for encoding PKCS#12 files. This package +// defines several different Encoders with different parameters. +// An Encoder is safe for concurrent use by multiple goroutines. +type Encoder struct { + macAlgorithm asn1.ObjectIdentifier + certAlgorithm asn1.ObjectIdentifier + keyAlgorithm asn1.ObjectIdentifier + macIterations int + encryptionIterations int + saltLen int + rand io.Reader +} + +// LegacyRC2 encodes PKCS#12 files using weak algorithms that were +// traditionally used in PKCS#12 files, including those produced +// by OpenSSL before 3.0.0, go-pkcs12 before 0.3.0, and Java when +// keystore.pkcs12.legacy is defined. Specifically, certificates +// are encrypted using PBE with RC2, and keys are encrypted using PBE +// with 3DES, using keys derived with 2048 iterations of HMAC-SHA-1. +// MACs use HMAC-SHA-1 with keys derived with 1 iteration of HMAC-SHA-1. +// +// Due to the weak encryption, it is STRONGLY RECOMMENDED that you use [DefaultPassword] +// when encoding PKCS#12 files using this encoder, and protect the PKCS#12 files +// using other means. +// +// By default, OpenSSL 3 can't decode PKCS#12 files created using this encoder. +// For better compatibility, use [LegacyDES]. For better security, use +// [Modern2023]. +var LegacyRC2 = &Encoder{ + macAlgorithm: oidSHA1, + certAlgorithm: oidPBEWithSHAAnd40BitRC2CBC, + keyAlgorithm: oidPBEWithSHAAnd3KeyTripleDESCBC, + macIterations: 1, + encryptionIterations: 2048, + saltLen: 8, + rand: rand.Reader, +} + +// LegacyDES encodes PKCS#12 files using weak algorithms that are +// supported by a wide variety of software. Certificates and keys +// are encrypted using PBE with 3DES using keys derived with 2048 +// iterations of HMAC-SHA-1. MACs use HMAC-SHA-1 with keys derived +// with 1 iteration of HMAC-SHA-1. These are the same parameters +// used by OpenSSL's -descert option. As of 2023, this encoder is +// likely to produce files that can be read by the most software. +// +// Due to the weak encryption, it is STRONGLY RECOMMENDED that you use [DefaultPassword] +// when encoding PKCS#12 files using this encoder, and protect the PKCS#12 files +// using other means. To create more secure PKCS#12 files, use [Modern2023]. +var LegacyDES = &Encoder{ + macAlgorithm: oidSHA1, + certAlgorithm: oidPBEWithSHAAnd3KeyTripleDESCBC, + keyAlgorithm: oidPBEWithSHAAnd3KeyTripleDESCBC, + macIterations: 1, + encryptionIterations: 2048, + saltLen: 8, + rand: rand.Reader, +} + +// Passwordless encodes PKCS#12 files without any encryption or MACs. +// A lot of software has trouble reading such files, so it's probably only +// useful for creating Java trust stores using [Encoder.EncodeTrustStore] +// or [Encoder.EncodeTrustStoreEntries]. +// +// When using this encoder, you MUST specify an empty password. +var Passwordless = &Encoder{ + macAlgorithm: nil, + certAlgorithm: nil, + keyAlgorithm: nil, + rand: rand.Reader, +} + +// Modern2023 encodes PKCS#12 files using algorithms that are considered modern +// as of 2023. Private keys and certificates are encrypted using PBES2 with +// PBKDF2-HMAC-SHA-256 and AES-256-CBC. The MAC algorithm is HMAC-SHA-2. These +// are the same algorithms used by OpenSSL 3 (by default), Java 20 (by default), +// and Windows Server 2019 (when "stronger" is used). +// +// Files produced with this encoder can be read by OpenSSL 1.1.1 and higher, +// Java 12 and higher, and Windows Server 2019 and higher. +// +// For passwords, it is RECOMMENDED that you do one of the following: +// 1) Use [DefaultPassword] and protect the file using other means, or +// 2) Use a high-entropy password, such as one generated with `openssl rand -hex 16`. +// +// You SHOULD NOT use a lower-entropy password with this encoder because the number of KDF +// iterations is only 2048 and doesn't provide meaningful protection against +// brute-forcing. You can increase the number of iterations using [Encoder.WithIterations], +// but as https://neilmadden.blog/2023/01/09/on-pbkdf2-iterations/ explains, this doesn't +// help as much as you think. +var Modern2023 = &Encoder{ + macAlgorithm: oidSHA256, + certAlgorithm: oidPBES2, + keyAlgorithm: oidPBES2, + macIterations: 2048, + encryptionIterations: 2048, + saltLen: 16, + rand: rand.Reader, +} + +// Legacy encodes PKCS#12 files using weak, legacy parameters that work in +// a wide variety of software. +// +// Currently, this encoder is the same as [LegacyDES], but this +// may change in the future if another encoder is found to provide better +// compatibility. +// +// Due to the weak encryption, it is STRONGLY RECOMMENDED that you use [DefaultPassword] +// when encoding PKCS#12 files using this encoder, and protect the PKCS#12 files +// using other means. +var Legacy = LegacyDES + +// Modern encodes PKCS#12 files using modern, robust parameters. +// +// Currently, this encoder is the same as [Modern2023], but this +// may change in the future to keep up with modern practices. +var Modern = Modern2023 + +// TrustStoreEntry represents an entry in a Java TrustStore. +type TrustStoreEntry struct { + Cert *x509.Certificate + FriendlyName string +} + +// WithIterations creates a new Encoder identical to enc except that +// it will use the given number of KDF iterations for deriving the MAC +// and encryption keys. +// +// Note that even with a large number of iterations, a weak +// password can still be brute-forced in much less time than it would +// take to brute-force a high-entropy encryption key. For the best +// security, don't worry about the number of iterations and just +// use a high-entropy password (e.g. one generated with `openssl rand -hex 16`). +// See https://neilmadden.blog/2023/01/09/on-pbkdf2-iterations/ for more detail. +// +// Panics if iterations is less than 1. +func (enc Encoder) WithIterations(iterations int) *Encoder { + if iterations < 1 { + panic("pkcs12: number of iterations is less than 1") + } + enc.macIterations = iterations + enc.encryptionIterations = iterations + return &enc +} + +// WithRand creates a new Encoder identical to enc except that +// it will use the given io.Reader for its random number generator +// instead of [crypto/rand.Reader]. +func (enc Encoder) WithRand(rand io.Reader) *Encoder { + enc.rand = rand + return &enc +} + +// Encode is equivalent to LegacyRC2.WithRand(rand).Encode. +// See [Encoder.Encode] and [LegacyRC2] for details. +// +// Deprecated: for the same behavior, use LegacyRC2.Encode; +// for better compatibility, use Legacy.Encode; +// for better security, use Modern.Encode. +func Encode(rand io.Reader, privateKey interface{}, certificate *x509.Certificate, caCerts []*x509.Certificate, password string) (pfxData []byte, err error) { + return LegacyRC2.WithRand(rand).Encode(privateKey, certificate, caCerts, password) +} + +// EncodeTrustStore is equivalent to LegacyRC2.WithRand(rand).EncodeTrustStore. +// See [Encoder.EncodeTrustStore] and [LegacyRC2] for details. +// +// Deprecated: for the same behavior, use LegacyRC2.EncodeTrustStore; +// to generate passwordless trust stores, use Passwordless.EncodeTrustStore. +func EncodeTrustStore(rand io.Reader, certs []*x509.Certificate, password string) (pfxData []byte, err error) { + return LegacyRC2.WithRand(rand).EncodeTrustStore(certs, password) +} + +// Encode produces pfxData containing one private key (privateKey), an +// end-entity certificate (certificate), and any number of CA certificates +// (caCerts). +// +// The pfxData is encrypted and authenticated with keys derived from +// the provided password. +// +// Encode emulates the behavior of OpenSSL's PKCS12_create: it creates two +// SafeContents: one that's encrypted with the certificate encryption algorithm +// and contains the certificates, and another that is unencrypted and contains the +// private key shrouded with the key encryption algorithm. The private key bag and +// the end-entity certificate bag have the LocalKeyId attribute set to the SHA-1 +// fingerprint of the end-entity certificate. +func (enc *Encoder) Encode(privateKey interface{}, certificate *x509.Certificate, caCerts []*x509.Certificate, password string) (pfxData []byte, err error) { + if enc.macAlgorithm == nil && enc.certAlgorithm == nil && enc.keyAlgorithm == nil && password != "" { + return nil, errors.New("pkcs12: password must be empty") + } + + encodedPassword, err := bmpStringZeroTerminated(password) + if err != nil { + return nil, err + } + + var pfx pfxPdu + pfx.Version = 3 + + var certFingerprint = sha1.Sum(certificate.Raw) + var localKeyIdAttr pkcs12Attribute + localKeyIdAttr.Id = oidLocalKeyID + localKeyIdAttr.Value.Class = 0 + localKeyIdAttr.Value.Tag = 17 + localKeyIdAttr.Value.IsCompound = true + if localKeyIdAttr.Value.Bytes, err = asn1.Marshal(certFingerprint[:]); err != nil { + return nil, err + } + + var certBags []safeBag + if certBag, err := makeCertBag(certificate.Raw, []pkcs12Attribute{localKeyIdAttr}); err != nil { + return nil, err + } else { + certBags = append(certBags, *certBag) + } + + for _, cert := range caCerts { + if certBag, err := makeCertBag(cert.Raw, []pkcs12Attribute{}); err != nil { + return nil, err + } else { + certBags = append(certBags, *certBag) + } + } + + var keyBag safeBag + if enc.keyAlgorithm == nil { + keyBag.Id = oidKeyBag + keyBag.Value.Class = 2 + keyBag.Value.Tag = 0 + keyBag.Value.IsCompound = true + if keyBag.Value.Bytes, err = x509.MarshalPKCS8PrivateKey(privateKey); err != nil { + return nil, err + } + } else { + keyBag.Id = oidPKCS8ShroundedKeyBag + keyBag.Value.Class = 2 + keyBag.Value.Tag = 0 + keyBag.Value.IsCompound = true + if keyBag.Value.Bytes, err = encodePkcs8ShroudedKeyBag(enc.rand, privateKey, enc.keyAlgorithm, encodedPassword, enc.encryptionIterations, enc.saltLen); err != nil { + return nil, err + } + } + keyBag.Attributes = append(keyBag.Attributes, localKeyIdAttr) + + // Construct an authenticated safe with two SafeContents. + // The first SafeContents is encrypted and contains the cert bags. + // The second SafeContents is unencrypted and contains the shrouded key bag. + var authenticatedSafe [2]contentInfo + if authenticatedSafe[0], err = makeSafeContents(enc.rand, certBags, enc.certAlgorithm, encodedPassword, enc.encryptionIterations, enc.saltLen); err != nil { + return nil, err + } + if authenticatedSafe[1], err = makeSafeContents(enc.rand, []safeBag{keyBag}, nil, nil, 0, 0); err != nil { + return nil, err + } + + var authenticatedSafeBytes []byte + if authenticatedSafeBytes, err = asn1.Marshal(authenticatedSafe[:]); err != nil { + return nil, err + } + + if enc.macAlgorithm != nil { + // compute the MAC + pfx.MacData.Mac.Algorithm.Algorithm = enc.macAlgorithm + pfx.MacData.MacSalt = make([]byte, enc.saltLen) + if _, err = enc.rand.Read(pfx.MacData.MacSalt); err != nil { + return nil, err + } + pfx.MacData.Iterations = enc.macIterations + if err = computeMac(&pfx.MacData, authenticatedSafeBytes, encodedPassword); err != nil { + return nil, err + } + } + + pfx.AuthSafe.ContentType = oidDataContentType + pfx.AuthSafe.Content.Class = 2 + pfx.AuthSafe.Content.Tag = 0 + pfx.AuthSafe.Content.IsCompound = true + if pfx.AuthSafe.Content.Bytes, err = asn1.Marshal(authenticatedSafeBytes); err != nil { + return nil, err + } + + if pfxData, err = asn1.Marshal(pfx); err != nil { + return nil, errors.New("pkcs12: error writing P12 data: " + err.Error()) + } + return +} + +// EncodeTrustStore produces pfxData containing any number of CA certificates +// (certs) to be trusted. The certificates will be marked with a special OID that +// allow it to be used as a Java TrustStore in Java 1.8 and newer. +// +// EncodeTrustStore creates a single SafeContents that's optionally encrypted +// and contains the certificates. +// +// The Subject of the certificates are used as the Friendly Names (Aliases) +// within the resulting pfxData. If certificates share a Subject, then the +// resulting Friendly Names (Aliases) will be identical, which Java may treat as +// the same entry when used as a Java TrustStore, e.g. with `keytool`. To +// customize the Friendly Names, use [EncodeTrustStoreEntries]. +func (enc *Encoder) EncodeTrustStore(certs []*x509.Certificate, password string) (pfxData []byte, err error) { + var certsWithFriendlyNames []TrustStoreEntry + for _, cert := range certs { + certsWithFriendlyNames = append(certsWithFriendlyNames, TrustStoreEntry{ + Cert: cert, + FriendlyName: cert.Subject.String(), + }) + } + return enc.EncodeTrustStoreEntries(certsWithFriendlyNames, password) +} + +// EncodeTrustStoreEntries is equivalent to LegacyRC2.WithRand(rand).EncodeTrustStoreEntries. +// See [Encoder.EncodeTrustStoreEntries] and [LegacyRC2] for details. +// +// Deprecated: for the same behavior, use LegacyRC2.EncodeTrustStoreEntries; to generate passwordless trust stores, +// use Passwordless.EncodeTrustStoreEntries. +func EncodeTrustStoreEntries(rand io.Reader, entries []TrustStoreEntry, password string) (pfxData []byte, err error) { + return LegacyRC2.WithRand(rand).EncodeTrustStoreEntries(entries, password) +} + +// EncodeTrustStoreEntries produces pfxData containing any number of CA +// certificates (entries) to be trusted. The certificates will be marked with a +// special OID that allow it to be used as a Java TrustStore in Java 1.8 and newer. +// +// This is identical to [Encoder.EncodeTrustStore], but also allows for setting specific +// Friendly Names (Aliases) to be used per certificate, by specifying a slice +// of TrustStoreEntry. +// +// If the same Friendly Name is used for more than one certificate, then the +// resulting Friendly Names (Aliases) in the pfxData will be identical, which Java +// may treat as the same entry when used as a Java TrustStore, e.g. with `keytool`. +// +// EncodeTrustStoreEntries creates a single SafeContents that's optionally +// encrypted and contains the certificates. +func (enc *Encoder) EncodeTrustStoreEntries(entries []TrustStoreEntry, password string) (pfxData []byte, err error) { + if enc.macAlgorithm == nil && enc.certAlgorithm == nil && password != "" { + return nil, errors.New("pkcs12: password must be empty") + } + + encodedPassword, err := bmpStringZeroTerminated(password) + if err != nil { + return nil, err + } + + var pfx pfxPdu + pfx.Version = 3 + + var certAttributes []pkcs12Attribute + + extKeyUsageOidBytes, err := asn1.Marshal(oidAnyExtendedKeyUsage) + if err != nil { + return nil, err + } + + // the oidJavaTrustStore attribute contains the EKUs for which + // this trust anchor will be valid + certAttributes = append(certAttributes, pkcs12Attribute{ + Id: oidJavaTrustStore, + Value: asn1.RawValue{ + Class: 0, + Tag: 17, + IsCompound: true, + Bytes: extKeyUsageOidBytes, + }, + }) + + var certBags []safeBag + for _, entry := range entries { + + bmpFriendlyName, err := bmpString(entry.FriendlyName) + if err != nil { + return nil, err + } + + encodedFriendlyName, err := asn1.Marshal(asn1.RawValue{ + Class: 0, + Tag: 30, + IsCompound: false, + Bytes: bmpFriendlyName, + }) + if err != nil { + return nil, err + } + + friendlyName := pkcs12Attribute{ + Id: oidFriendlyName, + Value: asn1.RawValue{ + Class: 0, + Tag: 17, + IsCompound: true, + Bytes: encodedFriendlyName, + }, + } + + certBag, err := makeCertBag(entry.Cert.Raw, append(certAttributes, friendlyName)) + if err != nil { + return nil, err + } + certBags = append(certBags, *certBag) + } + + // Construct an authenticated safe with one SafeContent. + // The SafeContents it contains the cert bags. + var authenticatedSafe [1]contentInfo + if authenticatedSafe[0], err = makeSafeContents(enc.rand, certBags, enc.certAlgorithm, encodedPassword, enc.encryptionIterations, enc.saltLen); err != nil { + return nil, err + } + + var authenticatedSafeBytes []byte + if authenticatedSafeBytes, err = asn1.Marshal(authenticatedSafe[:]); err != nil { + return nil, err + } + + if enc.macAlgorithm != nil { + // compute the MAC + pfx.MacData.Mac.Algorithm.Algorithm = enc.macAlgorithm + pfx.MacData.MacSalt = make([]byte, enc.saltLen) + if _, err = enc.rand.Read(pfx.MacData.MacSalt); err != nil { + return nil, err + } + pfx.MacData.Iterations = enc.macIterations + if err = computeMac(&pfx.MacData, authenticatedSafeBytes, encodedPassword); err != nil { + return nil, err + } + } + + pfx.AuthSafe.ContentType = oidDataContentType + pfx.AuthSafe.Content.Class = 2 + pfx.AuthSafe.Content.Tag = 0 + pfx.AuthSafe.Content.IsCompound = true + if pfx.AuthSafe.Content.Bytes, err = asn1.Marshal(authenticatedSafeBytes); err != nil { + return nil, err + } + + if pfxData, err = asn1.Marshal(pfx); err != nil { + return nil, errors.New("pkcs12: error writing P12 data: " + err.Error()) + } + return +} + +func makeCertBag(certBytes []byte, attributes []pkcs12Attribute) (certBag *safeBag, err error) { + certBag = new(safeBag) + certBag.Id = oidCertBag + certBag.Value.Class = 2 + certBag.Value.Tag = 0 + certBag.Value.IsCompound = true + if certBag.Value.Bytes, err = encodeCertBag(certBytes); err != nil { + return nil, err + } + certBag.Attributes = attributes + return +} + +func makeSafeContents(rand io.Reader, bags []safeBag, algoID asn1.ObjectIdentifier, password []byte, iterations int, saltLen int) (ci contentInfo, err error) { + var data []byte + if data, err = asn1.Marshal(bags); err != nil { + return + } + + if algoID == nil { + ci.ContentType = oidDataContentType + ci.Content.Class = 2 + ci.Content.Tag = 0 + ci.Content.IsCompound = true + if ci.Content.Bytes, err = asn1.Marshal(data); err != nil { + return + } + } else { + randomSalt := make([]byte, saltLen) + if _, err = rand.Read(randomSalt); err != nil { + return + } + + var algo pkix.AlgorithmIdentifier + algo.Algorithm = algoID + if algoID.Equal(oidPBES2) { + if algo.Parameters.FullBytes, err = makePBES2Parameters(rand, randomSalt, iterations); err != nil { + return + } + } else { + if algo.Parameters.FullBytes, err = asn1.Marshal(pbeParams{Salt: randomSalt, Iterations: iterations}); err != nil { + return + } + } + + var encryptedData encryptedData + encryptedData.Version = 0 + encryptedData.EncryptedContentInfo.ContentType = oidDataContentType + encryptedData.EncryptedContentInfo.ContentEncryptionAlgorithm = algo + if err = pbEncrypt(&encryptedData.EncryptedContentInfo, data, password); err != nil { + return + } + + ci.ContentType = oidEncryptedDataContentType + ci.Content.Class = 2 + ci.Content.Tag = 0 + ci.Content.IsCompound = true + if ci.Content.Bytes, err = asn1.Marshal(encryptedData); err != nil { + return + } + } + return +} diff --git a/pkcs12_pem.go b/pkcs12_pem.go new file mode 100644 index 00000000..c443bb09 --- /dev/null +++ b/pkcs12_pem.go @@ -0,0 +1,132 @@ +// Copyright 2015, 2018, 2019 Opsmate, Inc. All rights reserved. +// 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 pkcs12 + +import ( + "crypto/ecdsa" + "crypto/rsa" + "crypto/x509" + "encoding/hex" + "encoding/pem" + "errors" +) + +// PEM block types +const ( + certificateType = "CERTIFICATE" + privateKeyType = "PRIVATE KEY" +) + +// ToPEM converts all "safe bags" contained in pfxData to PEM blocks. +// +// Deprecated: ToPEM creates invalid PEM blocks (private keys +// are encoded as raw RSA or EC private keys rather than PKCS#8 despite being +// labeled "PRIVATE KEY"). To decode a PKCS#12 file, use [DecodeChain] instead, +// and use the [encoding/pem] package to convert to PEM if necessary. +func ToPEM(pfxData []byte, password string) ([]*pem.Block, error) { + encodedPassword, err := bmpStringZeroTerminated(password) + if err != nil { + return nil, ErrIncorrectPassword + } + + bags, encodedPassword, err := getSafeContents(pfxData, encodedPassword, 2, 2) + + if err != nil { + return nil, err + } + + blocks := make([]*pem.Block, 0, len(bags)) + for _, bag := range bags { + block, err := convertBag(&bag, encodedPassword) + if err != nil { + return nil, err + } + blocks = append(blocks, block) + } + + return blocks, nil +} + +func convertBag(bag *safeBag, password []byte) (*pem.Block, error) { + block := &pem.Block{ + Headers: make(map[string]string), + } + + for _, attribute := range bag.Attributes { + k, v, err := convertAttribute(&attribute) + if err != nil { + return nil, err + } + block.Headers[k] = v + } + + switch { + case bag.Id.Equal(oidCertBag): + block.Type = certificateType + certsData, err := decodeCertBag(bag.Value.Bytes) + if err != nil { + return nil, err + } + block.Bytes = certsData + case bag.Id.Equal(oidPKCS8ShroundedKeyBag): + block.Type = privateKeyType + + key, err := decodePkcs8ShroudedKeyBag(bag.Value.Bytes, password) + if err != nil { + return nil, err + } + + switch key := key.(type) { + case *rsa.PrivateKey: + block.Bytes = x509.MarshalPKCS1PrivateKey(key) + case *ecdsa.PrivateKey: + block.Bytes, err = x509.MarshalECPrivateKey(key) + if err != nil { + return nil, err + } + default: + return nil, errors.New("pkcs12: found unknown private key type in PKCS#8 wrapping") + } + default: + return nil, errors.New("pkcs12: don't know how to convert a safe bag of type " + bag.Id.String()) + } + return block, nil +} + +func convertAttribute(attribute *pkcs12Attribute) (key, value string, err error) { + isString := false + + switch { + case attribute.Id.Equal(oidFriendlyName): + key = "friendlyName" + isString = true + case attribute.Id.Equal(oidLocalKeyID): + key = "localKeyId" + case attribute.Id.Equal(oidMicrosoftCSPName): + // This key is chosen to match OpenSSL. + key = "Microsoft CSP Name" + isString = true + default: + return "", "", errors.New("pkcs12: unknown attribute with OID " + attribute.Id.String()) + } + + if isString { + if err := unmarshal(attribute.Value.Bytes, &attribute.Value); err != nil { + return "", "", err + } + if value, err = decodeBMPString(attribute.Value.Bytes); err != nil { + return "", "", err + } + } else { + var id []byte + if err := unmarshal(attribute.Value.Bytes, &id); err != nil { + return "", "", err + } + value = hex.EncodeToString(id) + } + + return key, value, nil +} From 9a61889f5ca1961f0badc7e592e6a4716b650bd0 Mon Sep 17 00:00:00 2001 From: nitram509 Date: Tue, 29 Oct 2024 13:53:29 +0100 Subject: [PATCH 5/7] add tests for DecodeChains --- pkcs12_dec_test.go | 113 ++++++++++++++++++ pkcs12_test.go | 63 ---------- .../example_signed_certificates_chain.p12 | Bin 0 -> 11551 bytes .../example_signed_certificates_chain.png | Bin 0 -> 474103 bytes 4 files changed, 113 insertions(+), 63 deletions(-) create mode 100644 pkcs12_dec_test.go create mode 100644 test-data/example_signed_certificates_chain.p12 create mode 100644 test-data/example_signed_certificates_chain.png diff --git a/pkcs12_dec_test.go b/pkcs12_dec_test.go new file mode 100644 index 00000000..57f47f08 --- /dev/null +++ b/pkcs12_dec_test.go @@ -0,0 +1,113 @@ +package pkcs12 + +import ( + "crypto/rsa" + _ "embed" + "testing" +) + +//go:embed test-data/example_com_aescbc128.p12 +var fileExampleComAesCbc128 []byte + +//go:embed test-data/example_com_aescbc192.p12 +var fileExampleComAesCbc192 []byte + +//go:embed test-data/ad_standalone_com_aescbc256.p12 +var fileAdStandaloneComAesCbc256 []byte + +var decodeChainTests = []struct { + testName string + pfxData []byte + password string + commonName string + testDescription string +}{ + { + testName: "AES128CBC", + pfxData: fileExampleComAesCbc128, + password: "rHyQTJsubhfxcpH5JttyilHE6BBsNoZp", + commonName: "example-com", + testDescription: "PKCS7 Encrypted data: PBES2, PBKDF2, AES-128-CBC, Iteration 2048, PRF hmacWithSHA256", + }, + { + testName: "AES192CBC", + pfxData: fileExampleComAesCbc192, + password: "password", + commonName: "example-com", + testDescription: "PKCS7 Encrypted data: PBES2, PBKDF2, AES-192-CBC, Iteration 2048, PRF hmacWithSHA256", + }, + { + testName: "AES256CBC", + pfxData: fileAdStandaloneComAesCbc256, + password: "password", + commonName: "*.ad.standalone.com", + testDescription: "This P12 PDU is a self-signed certificate exported via Windows certmgr. It is encrypted with the following options (verified via openssl): PBES2, PBKDF2, AES-256-CBC, Iteration 2000, PRF hmacWithSHA256", + }, +} + +func Test_DecodeChain_PBES2(t *testing.T) { + for _, tt := range decodeChainTests { + t.Run(tt.testName, func(t *testing.T) { + pk, cert, caCerts, err := DecodeChain(tt.pfxData, tt.password) + if err != nil { + t.Fatal(err) + } + + rsaPk, ok := pk.(*rsa.PrivateKey) + if !ok { + t.Error("could not cast to rsa private key") + } + if !rsaPk.PublicKey.Equal(cert.PublicKey) { + t.Error("public key embedded in private key not equal to public key of certificate") + } + if cert.Subject.CommonName != tt.commonName { + t.Errorf("unexpected leaf cert common name, got %s, want %s", cert.Subject.CommonName, tt.commonName) + } + if len(caCerts) != 0 { + t.Errorf("unexpected # of caCerts: got %d, want 0", len(caCerts)) + } + }) + } +} + +//go:embed test-data/example_signed_certificates_chain.p12 +var fileExampleSignedCertificatesChain []byte + +func Test_DecodeChains(t *testing.T) { + tests := []struct { + testName string + pfxData []byte + password string + }{ + { + testName: "example_signed_certificates_chain.p12", + pfxData: fileExampleSignedCertificatesChain, + password: "password", + }, + } + // testing special pfx file with 3 keys + for _, tt := range tests { + t.Run(tt.testName, func(t *testing.T) { + certs, err := DecodeChains(tt.pfxData, tt.password) + if err != nil { + t.Fatal(err) + } + if len(certs) != 3 { + t.Errorf("unexpected # of caCerts: got %d, want 3", len(certs)) + } + }) + } + + // also the other pfx files should work + for _, tt := range decodeChainTests { + t.Run(tt.testName, func(t *testing.T) { + certs, err := DecodeChains(tt.pfxData, tt.password) + if err != nil { + t.Fatal(err) + } + if len(certs) != 1 { + t.Errorf("unexpected # of caCerts: got %d, want 1", len(certs)) + } + }) + } +} diff --git a/pkcs12_test.go b/pkcs12_test.go index 459ce205..99eebadc 100644 --- a/pkcs12_test.go +++ b/pkcs12_test.go @@ -103,66 +103,3 @@ func TestTrustStore(t *testing.T) { }) } } - -//go:embed test-data/example_com_aescbc128.p12 -var fileExampleComAesCbc128 []byte - -//go:embed test-data/example_com_aescbc192.p12 -var fileExampleComAesCbc192 []byte - -//go:embed test-data/ad_standalone_com_aescbc256.p12 -var fileAdStandaloneComAesCbc256 []byte - -func Test_DecodeChain_PBES2(t *testing.T) { - tests := []struct { - testName string - storeData []byte - password string - commonName string - testDescription string - }{ - { - testName: "AES128CBC", - storeData: fileExampleComAesCbc128, - password: "rHyQTJsubhfxcpH5JttyilHE6BBsNoZp", - commonName: "example-com", - testDescription: "PKCS7 Encrypted data: PBES2, PBKDF2, AES-128-CBC, Iteration 2048, PRF hmacWithSHA256", - }, - { - testName: "AES192CBC", - storeData: fileExampleComAesCbc192, - password: "password", - commonName: "example-com", - testDescription: "PKCS7 Encrypted data: PBES2, PBKDF2, AES-192-CBC, Iteration 2048, PRF hmacWithSHA256", - }, - { - testName: "AES256CBC", - storeData: fileAdStandaloneComAesCbc256, - password: "password", - commonName: "*.ad.standalone.com", - testDescription: "This P12 PDU is a self-signed certificate exported via Windows certmgr. It is encrypted with the following options (verified via openssl): PBES2, PBKDF2, AES-256-CBC, Iteration 2000, PRF hmacWithSHA256", - }, - } - for _, tt := range tests { - t.Run(tt.testName, func(t *testing.T) { - pk, cert, caCerts, err := DecodeChain(tt.storeData, tt.password) - if err != nil { - t.Fatal(err) - } - - rsaPk, ok := pk.(*rsa.PrivateKey) - if !ok { - t.Error("could not cast to rsa private key") - } - if !rsaPk.PublicKey.Equal(cert.PublicKey) { - t.Error("public key embedded in private key not equal to public key of certificate") - } - if cert.Subject.CommonName != tt.commonName { - t.Errorf("unexpected leaf cert common name, got %s, want %s", cert.Subject.CommonName, tt.commonName) - } - if len(caCerts) != 0 { - t.Errorf("unexpected # of caCerts: got %d, want 0", len(caCerts)) - } - }) - } -} diff --git a/test-data/example_signed_certificates_chain.p12 b/test-data/example_signed_certificates_chain.p12 new file mode 100644 index 0000000000000000000000000000000000000000..31de0b7297d74c7cda174440507479cdc9ceac29 GIT binary patch literal 11551 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° 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�` zRg_snH=JW%gx0`)tAC*H5~I_$v;HZ|IvAp4u45s$IzBl)-Wm|_4gCViOMiylmIt(7 zfQhS9uJw16DT?E`(3{s>i0%yyb4Zm=tC%iB{5q9W$cF3qN!zdlEp&T5AZ85;i+u6q zviS6XX+CoB#6LX1AaK~cZiREvq38FyCIxK(B@PulV)%@0sd{xvH3vt4SZT#A@os7d`=9uvQdY;=F4Tk}d1jH6KfpKip{ z%p5+K#%dUEK#aPlTNK!NAnl0*-S;by!ohFX?F}^V--0}@5INHu!sXB}`v9*%LnU_n zVzpgSY!%Ults#y9rd42!W{e`6+lbok;;ln|_5)3)0@rL{NQ;>FiPAyXgjZ_t{QL^H zjCF+PSN^q_{#+F95ON5tEo4WNi4oZ9e#Z8a|J|?n*R2ie0dUdewcd+*a4az!c4qIo zOMj9`phe5&$|0NR@NKCZ;+WP zUFxN7K2a&DZr&iTn=*$C>&@q9#07n!*kReL&^|S}GIsi-@*dnjMF>fOm)oR{7W9ie zUizFBFI}#|zy&nOK<05Q)3WYda(^3h5?FfBZLZ@YV?4V-?MkWXaclWaEqgpiPJzro zgjI$H8v^Gqan{@+MBD%K1tEZ9oGGxza=-NI^%ium3V42OqMX)X_;P@*miwi0Y7n`cqX2ipG^w3FKHcph4JrJq^0bKeLv>&Lff>~9>G+< zH@nH@X;Tw6@(h(%l+_V6cM!eSOH1~!vDqP0AM?w9oqgGuMqn6_ZZ7Q^_&2!9``H|3 zm9C>VKShnuz_J-9NwC>)Zmm;FYW3^;<9bQS+oNCwU%$oDUF@R@0DlP28hqO2bt7%n zNaP#sLe7mNua%O_PM@>a3!+B8KTWqwt*LP`$$c8zm-K0E(UWau!24%z-EO%R{<#EV zs+EKI){r`X7lp)2yX^9gw$+@x@mFU!gi#m?fHF*z@!5lH&w*#ieFG)uZ0HTYKgbfwN?8A}Nru$DgObH$Zqn@%J} zt{P3}B_NDB^&X`wRhVO}mx63QaEKc9I>y}MzhMV*K+TlsVyjih)`5^z^7)0ZvL25AS}y zlJ4p|&$M%_a|zEhct6Q=q{pSf{ohArfB)FuFA!{;_EZ$VVeB=I+=2u06(&#gN;T72hh$by z8`tk~)rH@i(1ppSI5T3sK<+iH@fC+SFU;!M_wTm_3?4hM zn@L4}XENH|y0ax1->=yj6&!!0!2O=VF7KYwUcv64fzI~VWl`YO z$OavhrF~=G);|gTk^;5Z=$-pu5Zdp)L&U6_L`=NbkCGK_GVg3^R+u^TUd>k+ktAUG zg8Xg#Qtsa+BhD-#ol@vJi9`(E`*muHCvi~)lg2HLQ$jg^e^cc$g^rI3j+WZGQMbUg zPb>6MH=V}E68nJ^d^68q|`C@nQ1 zYx%lyYq9nESDh5&50-BHWrBWr%0ASx0tp(NihKWbyfbJ+s~)%E9PJNB4>rTtSKNC^ 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�AQ=P+_2Y6#Q4_9- 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 iB1UcG-3721orHL+vm^T}^7@0f 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 s&GXjGMD_MmHT#TkR{ Date: Wed, 30 Oct 2024 21:35:56 +0100 Subject: [PATCH 6/7] fix bug, chains wrongly constructed, containing duplicate certificates --- pkcs12_dec.go | 73 +++++++++++++++++++++++++++------------------- pkcs12_dec_test.go | 48 +++++++++++++++++++++++------- 2 files changed, 80 insertions(+), 41 deletions(-) diff --git a/pkcs12_dec.go b/pkcs12_dec.go index 13113e98..deada7ea 100644 --- a/pkcs12_dec.go +++ b/pkcs12_dec.go @@ -161,40 +161,70 @@ func DecodeChains(pfxData []byte, password string) (chains []CertificateChain, e return nil, fmt.Errorf("pkcs12: failed to get private key") } privateKeysAll[friendlyName] = pk + default: + // TODO: bag types: crlBag, secretBag, safeContentsBag aren't supported yet, should signal a warning } } for pkAlias, pk := range privateKeysAll { - // initialize chains and match private keys to leaf certificates chain := CertificateChain{ FriendlyName: pkAlias, PrivateKey: pk, } - var idx int - for idx, cert := range certsAll { - _ = idx - if verifyKeyCert(pk, cert) { + // find matching private keys to leaf certificates + var leafCertificate *x509.Certificate + for i, cert := range certsAll { + if certificateMatchesToKey(pk, cert) { chain.LeafCertificate = cert + leafCertificate = cert + certsAll = removeCert(certsAll, i) break } } - // recursively build a chain for leaf certificate - caCerts := buildChain(chain.LeafCertificate, append(certsAll[:idx], certsAll[idx+1:]...)) - chain.CACertificates = caCerts + // build the chain, from remaining, un-ordered certificates + for leafCertificate != nil && hasIssuer(leafCertificate) && !selfSigned(leafCertificate) { + foundIssuer := false + for i, issuerCert := range certsAll { + if issuedBy(leafCertificate, issuerCert) { + chain.CACertificates = append(chain.CACertificates, issuerCert) + leafCertificate = issuerCert + certsAll = removeCert(certsAll, i) + foundIssuer = true + break + } + } + if !foundIssuer { + break // incomplete chain, no reason to error + } + } chains = append(chains, chain) } // verify chains for _, chain := range chains { - if chain.PrivateKey == nil { - return nil, errors.New("pkcs12: private key missing") - } if chain.LeafCertificate == nil { - return nil, errors.New("pkcs12: certificate missing") + return nil, errors.New("pkcs12: leaf certificate missing") } } return } +func removeCert(slice []*x509.Certificate, s int) []*x509.Certificate { + return append(slice[:s], slice[s+1:]...) +} + +func selfSigned(cert *x509.Certificate) bool { + return issuedBy(cert, cert) +} + +func issuedBy(subject, issuer *x509.Certificate) bool { + return bytes.Equal(subject.RawIssuer, issuer.RawSubject) && + issuer.CheckSignature(subject.SignatureAlgorithm, subject.RawTBSCertificate, subject.Signature) == nil +} + +func hasIssuer(cert *x509.Certificate) bool { + return len(cert.RawIssuer) > 0 +} + // DecodeTrustStore extracts the certificates from pfxData, which must be a DER-encoded // PKCS#12 file containing exclusively certificates with attribute 2.16.840.1.113894.746875.1.1, // which is used by Java to designate a trust anchor. @@ -272,7 +302,7 @@ func extractFriendlyname(bag safeBag) (string, error) { return "", errors.New("pkcs12: friendlyName attribute not found") } -func verifyKeyCert(privateKey crypto.PrivateKey, certificate *x509.Certificate) bool { +func certificateMatchesToKey(privateKey crypto.PrivateKey, certificate *x509.Certificate) bool { pk, ok := privateKey.(interface { Public() crypto.PublicKey }) @@ -291,23 +321,6 @@ func verifyKeyCert(privateKey crypto.PrivateKey, certificate *x509.Certificate) return false } -func issuedBy(subject, issuer *x509.Certificate) bool { - return bytes.Equal(subject.RawIssuer, issuer.RawSubject) && issuer.CheckSignature(subject.SignatureAlgorithm, subject.RawTBSCertificate, subject.Signature) == nil -} - -func buildChain(leaf *x509.Certificate, certs []*x509.Certificate) (certChain []*x509.Certificate) { - if len(certs) <= 1 { - return certs - } - for idx, cert := range certs { - if issuedBy(leaf, cert) { - certChain = append(certChain, cert) - certChain = append(certChain, buildChain(cert, certs[idx+1:])...) - } - } - return -} - func getSafeContents(p12Data, password []byte, expectedItemsMin int, expectedItemsMax int) (bags []safeBag, updatedPassword []byte, err error) { pfx := new(pfxPdu) if err := unmarshal(p12Data, pfx); err != nil { diff --git a/pkcs12_dec_test.go b/pkcs12_dec_test.go index 57f47f08..026cc16e 100644 --- a/pkcs12_dec_test.go +++ b/pkcs12_dec_test.go @@ -15,7 +15,7 @@ var fileExampleComAesCbc192 []byte //go:embed test-data/ad_standalone_com_aescbc256.p12 var fileAdStandaloneComAesCbc256 []byte -var decodeChainTests = []struct { +var certificateTests = []struct { testName string pfxData []byte password string @@ -46,7 +46,7 @@ var decodeChainTests = []struct { } func Test_DecodeChain_PBES2(t *testing.T) { - for _, tt := range decodeChainTests { + for _, tt := range certificateTests { t.Run(tt.testName, func(t *testing.T) { pk, cert, caCerts, err := DecodeChain(tt.pfxData, tt.password) if err != nil { @@ -73,33 +73,59 @@ func Test_DecodeChain_PBES2(t *testing.T) { //go:embed test-data/example_signed_certificates_chain.p12 var fileExampleSignedCertificatesChain []byte -func Test_DecodeChains(t *testing.T) { +func Test_DecodeChains_with_private_key(t *testing.T) { tests := []struct { - testName string - pfxData []byte - password string + testName string + pfxData []byte + password string + friendlyNames []string + chainLengths []int }{ { testName: "example_signed_certificates_chain.p12", pfxData: fileExampleSignedCertificatesChain, password: "password", + friendlyNames: []string{ + "example-ca", + "example-intermediate-ca (example-ca)", + "example-server (example-intermediate-ca)", + }, + chainLengths: []int{0, 1, 2}, }, } - // testing special pfx file with 3 keys for _, tt := range tests { t.Run(tt.testName, func(t *testing.T) { - certs, err := DecodeChains(tt.pfxData, tt.password) + chains, err := DecodeChains(tt.pfxData, tt.password) if err != nil { t.Fatal(err) } - if len(certs) != 3 { - t.Errorf("unexpected # of caCerts: got %d, want 3", len(certs)) + if len(chains) != 3 { + t.Errorf("unexpected # of chains: got %d, want 3", len(chains)) + } + for i, chain := range chains { + expectedFriendlyName := tt.friendlyNames[i] + if chain.FriendlyName != expectedFriendlyName { + t.Errorf("unexpected private key friendly name, got '%s', want '%s'", chain.FriendlyName, expectedFriendlyName) + } + pk := chain.PrivateKey + rsaPk, ok := pk.(*rsa.PrivateKey) + if !ok { + t.Error("could not cast to rsa private key") + } + if !rsaPk.PublicKey.Equal(chain.LeafCertificate.PublicKey) { + t.Error("public key embedded in private key not equal to public key of certificate") + } + if len(chain.CACertificates) != tt.chainLengths[i] { + t.Errorf("unexpected # of caCerts: got %d, want %d", len(chain.CACertificates), tt.chainLengths[i]) + } } }) } +} +func Test_DecodeChains_with_certificate_files(t *testing.T) { // also the other pfx files should work - for _, tt := range decodeChainTests { + for _, tt := range certificateTests { t.Run(tt.testName, func(t *testing.T) { certs, err := DecodeChains(tt.pfxData, tt.password) if err != nil { From a8b82db900729350e3abd30d9a64c3f889dd05dd Mon Sep 17 00:00:00 2001 From: nitram509 Date: Fri, 7 Feb 2025 00:03:46 +0100 Subject: [PATCH 7/7] sort result, to make tests being stable == returned slice in fixed order --- pkcs12_dec.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkcs12_dec.go b/pkcs12_dec.go index deada7ea..d5b07aa9 100644 --- a/pkcs12_dec.go +++ b/pkcs12_dec.go @@ -12,6 +12,7 @@ import ( "encoding/asn1" "errors" "fmt" + "sort" ) // A CertificateChain represents a private key, a leaf certificate matching it, and the CA certificate chain. @@ -205,6 +206,9 @@ func DecodeChains(pfxData []byte, password string) (chains []CertificateChain, e } } + // sort, to make the result predictable + sort.Slice(chains, func(i, j int) bool { return chains[i].FriendlyName < chains[j].FriendlyName }) + return }