Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openssl_tpm2_engine for openSUSE:Factory checked in at 2023-07-06 18:29:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openssl_tpm2_engine (Old) and /work/SRC/openSUSE:Factory/.openssl_tpm2_engine.new.23466 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openssl_tpm2_engine" Thu Jul 6 18:29:06 2023 rev:13 rq:1097006 version:4.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/openssl_tpm2_engine/openssl_tpm2_engine.changes 2023-03-29 23:28:26.559855431 +0200 +++ /work/SRC/openSUSE:Factory/.openssl_tpm2_engine.new.23466/openssl_tpm2_engine.changes 2023-07-06 18:29:18.243376232 +0200 @@ -1,0 +2,10 @@ +Wed Jul 5 19:40:20 UTC 2023 - james.bottom...@hansenpartnership.com + +- Update to version 4.0.1 + * Fixes for intel-tss and openssl < 3 + * Fix support for the non-reference swtpm (although you should use the + reference implementation for testing) + * Doc updates to the draft RFC to make it ready for ietf submission + * Fix openssl BOOLEAN issues + +------------------------------------------------------------------- Old: ---- openssl_tpm2_engine-4.0.0.tar.gz New: ---- openssl_tpm2_engine-4.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openssl_tpm2_engine.spec ++++++ --- /var/tmp/diff_new_pack.Fx3uGj/_old 2023-07-06 18:29:19.311382604 +0200 +++ /var/tmp/diff_new_pack.Fx3uGj/_new 2023-07-06 18:29:19.319382652 +0200 @@ -18,7 +18,7 @@ Name: openssl_tpm2_engine -Version: 4.0.0 +Version: 4.0.1 Release: 0 Summary: OpenSSL TPM 2.0 interface engine plugin License: LGPL-2.1-only ++++++ openssl_tpm2_engine-4.0.0.tar.gz -> openssl_tpm2_engine-4.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openssl_tpm2_engine-4.0.0/configure.ac new/openssl_tpm2_engine-4.0.1/configure.ac --- old/openssl_tpm2_engine-4.0.0/configure.ac 2023-03-29 15:05:46.000000000 +0200 +++ new/openssl_tpm2_engine-4.0.1/configure.ac 2023-07-05 21:32:10.000000000 +0200 @@ -2,7 +2,7 @@ # configure.in for the OpenSSL TPM engine project # -AC_INIT(openssl-tpm2-engine, 4.0.0, <openssl-tpm2-eng...@groups.io>) +AC_INIT(openssl-tpm2-engine, 4.0.1, <openssl-tpm2-eng...@groups.io>) AM_INIT_AUTOMAKE([foreign 1.6.3]) AC_CANONICAL_HOST AM_CONDITIONAL(NATIVE_BUILD, test "x$cross_compiling" = "xno") @@ -154,11 +154,11 @@ TSSTYPE=$tsslibs AC_SUBST(TSSTYPE) -if test -x "${SWTPM}" -a -x "${SWTPM_IOCTL}"; then +if test -x "${TPMSERVER}"; then + testtpm=tpm_server +elif test -x "${SWTPM}" -a -x "${SWTPM_IOCTL}"; then testtpm=swtpm unset TPMSERVER -elif test -x "${TPMSERVER}"; then - testtpm=tpm_server else testtpm= fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openssl_tpm2_engine-4.0.0/doc/draft-bottomley-tpm2-keys.xml new/openssl_tpm2_engine-4.0.1/doc/draft-bottomley-tpm2-keys.xml --- old/openssl_tpm2_engine-4.0.0/doc/draft-bottomley-tpm2-keys.xml 2023-03-29 15:05:46.000000000 +0200 +++ new/openssl_tpm2_engine-4.0.1/doc/draft-bottomley-tpm2-keys.xml 2023-07-05 21:32:10.000000000 +0200 @@ -23,7 +23,7 @@ <email>james.bottom...@hansenpartnership.com</email> </address> </author> - <date month="March" year="2023"/> + <date month="June" year="2023"/> <area>Security</area> <keyword>I-D</keyword> <keyword>Internet-Draft</keyword> @@ -101,18 +101,18 @@ specifications, which is why the TPMkey is not versioned. </t> <section anchor="tpmkey" title="TPMkey Syntax"> - <figure><artwork> + <sourcecode type="asn.1"> TPMKey ::= SEQUENCE { - type OBJECT IDENTIFIER - emptyAuth [0] EXPLICIT BOOLEAN OPTIONAL - policy [1] EXPLICIT SEQUENCE OF TPMPolicy OPTIONAL - secret [2] EXPLICIT OCTET STRING OPTIONAL - authPolicy [3] EXPLICIT SEQUENCE OF TPMAuthPolicy OPTIONAL - parent INTEGER - pubkey OCTET STRING + type OBJECT IDENTIFIER, + emptyAuth [0] EXPLICIT BOOLEAN OPTIONAL, + policy [1] EXPLICIT SEQUENCE OF TPMPolicy OPTIONAL, + secret [2] EXPLICIT OCTET STRING OPTIONAL, + authPolicy [3] EXPLICIT SEQUENCE OF TPMAuthPolicy OPTIONAL, + parent INTEGER, + pubkey OCTET STRING, privkey OCTET STRING } - </artwork></figure> + </sourcecode> <t> The fields of type TPMKey have the following meanings: </t> @@ -127,25 +127,25 @@ extracted with TPM2_Unseal). The TCG has reserved the following OID prefix for this: </t> - <figure><artwork> + <sourcecode type="asn.1"> id-tpmkey OBJECT IDENTIFIER ::= {joint-iso-itu-t(2) international-organizations(23) 133 10 1} - </artwork></figure> + </sourcecode> <t> And the three key types are: </t> - <figure><artwork> + <sourcecode type="asn.1"> id-loadablekey OBJECT IDENTIFIER ::= {id-tpmkey 3} - </artwork></figure> - <figure><artwork> + </sourcecode> + <sourcecode type="asn.1"> id-importablekey OBJECT IDENTIFIER ::= {id-tpmkey 4} - </artwork></figure> - <figure><artwork> + </sourcecode> + <sourcecode type="asn.1"> id-sealedkey OBJECT IDENTIFIER ::= {id-tpmkey 5} - </artwork></figure> + </sourcecode> </section> <section title="emptyAuth"> <t> @@ -192,7 +192,7 @@ This SHOULD be present if the TPMkey policy contains a TPM2_PolicyAuthorize statement because it contains signed policies that could be used to satisfy the TPM key policy. - The forms of the auth{olicy statement are described in + The forms of the authPolicy statement are described in <xref target="signed-policy"/>. If the TPM key has no policy hash then this MUST NOT be present. </t> @@ -210,9 +210,11 @@ <t> If a permanent handle (MSO 0x40) is specified then the implementation MUST run TPM2_CreatePrimary on the handle - using the TCG specified Elliptic Curve template for the - NIST P-256 curve and use the primary key so generated as - the parent. + using the TCG specified Elliptic Curve template <xref + target="TCG-Provision"/> (section 7.5.1 for the Storage + and other seeds or 7.4.1 for the endorsement seed) for + the NIST P-256 curve and use the primary key so generated + as the parent. </t> </section> <section title="pubkey"> @@ -255,12 +257,12 @@ supported by this standard (such as TPM2_PolicyAuthorize). </t> <section anchor="TPMPolicy" title="TPMPolicy Syntax"> - <figure><artwork> + <sourcecode type="asn.1"> TPMPolicy ::= SEQUENCE { - CommandCode [0] EXPLICIT INTEGER - CommandPolicy [1] EXPLICIT OCTET STRING + commandCode [0] EXPLICIT INTEGER, + commandPolicy [1] EXPLICIT OCTET STRING } - </artwork></figure> + </sourcecode> <t> The Fields of type TPMPolicy have the following meanings: </t> @@ -392,12 +394,12 @@ policies. </t> <section title="TPMAuthPolicy Syntax"> - <figure><artwork> + <sourcecode type="asn.1"> TPMAuthPolicy ::= SEQUENCE { - Name [0] EXPLICIT UTF8STRING OPTIONAL - Policy [1] EXPLICIT SEQUENCE OF TPMPolicy + name [0] EXPLICIT UTF8String OPTIONAL, + policy [1] EXPLICIT SEQUENCE OF TPMPolicy } - </artwork></figure> + </sourcecode> <t> The Fields of type TPMAuthPolicy have the following meanings: </t> @@ -626,7 +628,6 @@ implementation. </t> </section> - </middle> <back> <references title="Normative References"> @@ -650,6 +651,15 @@ <date year="2015" month="August"/> </front> </reference> + <reference anchor="TCG-Provision" target="https://trustedcomputinggroup.org/resource/tcg-tpm-v2-0-provisioning-guidance/"> + <front> + <title>TCG TPM v2.0 Provisioning Guidance</title> + <author> + <organization>Trusted Computing Group</organization> + </author> + <date year="2017" month="March" day="15"/> + </front> + </reference> </references> <references title="Informative References"> <reference anchor="TPM GENIE" target="https://www.nccgroup.com/globalassets/about-us/us/documents/tpm-genie.pdf"> @@ -669,5 +679,55 @@ </front> </reference> </references> + <section anchor="asn1-module" title="ASN.1 Module"> + <sourcecode type="asn.1"> + TPM-Key-Module + + DEFINITIONS IMPLICIT TAGS ::= + BEGIN + + -- + -- Should import this but TCG hasn't yet published it or .10 + -- + id-tpmkey OBJECT IDENTIFIER ::= + {joint-iso-itu-t(2) international-organizations(23) 133 10 1} + + -- + -- OIDs defined by this RFC + -- + id-loadablekey OBJECT IDENTIFIER ::= {id-tpmkey 3} + id-importablekey OBJECT IDENTIFIER ::= {id-tpmkey 4} + id-sealedkey OBJECT IDENTIFIER ::= {id-tpmkey 5} + + TPMPolicy ::= SEQUENCE { + commandCode [0] EXPLICIT INTEGER, + commandPolicy [1] EXPLICIT OCTET STRING + } + + TPMAuthPolicy ::= SEQUENCE { + name [0] EXPLICIT UTF8String OPTIONAL, + policy [1] EXPLICIT SEQUENCE OF TPMPolicy + } + + TPMKeyType ::= OBJECT IDENTIFIER ( + id-loadablekey | + id-importablekey | + id-sealedkey + ) + + TPMKey ::= SEQUENCE { + type TPMKeyType, + emptyAuth [0] EXPLICIT BOOLEAN OPTIONAL, + policy [1] EXPLICIT SEQUENCE OF TPMPolicy OPTIONAL, + secret [2] EXPLICIT OCTET STRING OPTIONAL, + authPolicy [3] EXPLICIT SEQUENCE OF TPMAuthPolicy OPTIONAL, + parent INTEGER, + pubkey OCTET STRING, + privkey OCTET STRING + } + + END + </sourcecode> + </section> </back> </rfc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openssl_tpm2_engine-4.0.0/src/include/intel-tss.h new/openssl_tpm2_engine-4.0.1/src/include/intel-tss.h --- old/openssl_tpm2_engine-4.0.0/src/include/intel-tss.h 2023-03-29 15:05:46.000000000 +0200 +++ new/openssl_tpm2_engine-4.0.1/src/include/intel-tss.h 2023-07-05 21:32:10.000000000 +0200 @@ -276,7 +276,12 @@ */ if (intType) { if (strcmp("socsim", intType) == 0) { - tctildr = "mssim"; + char *swtpm = getenv("SWTPM"); + + if (!swtpm || strlen(swtpm) == 0) + tctildr = "mssim"; + else + tctildr = "swtpm"; } else if (strcmp("dev", intType) == 0) { tctildr = "device"; } else { @@ -393,7 +398,7 @@ const EVP_MD *md; /* message digest method */ #if OPENSSL_VERSION_NUMBER < 0x10100000 HMAC_CTX ctx; -#elsif OPENSSL_VERSION < 0x30000000 +#elif OPENSSL_VERSION_NUMBER < 0x30000000 HMAC_CTX *ctx; #else EVP_MAC *mac = EVP_MAC_fetch(NULL, "HMAC", NULL); @@ -412,7 +417,7 @@ #if OPENSSL_VERSION_NUMBER < 0x10100000 HMAC_CTX_init(&ctx); -#elsif OPENSSL_VERSION < 0x30000000 +#elif OPENSSL_VERSION_NUMBER < 0x30000000 ctx = HMAC_CTX_new(); #else ctx = EVP_MAC_CTX_new(mac); @@ -426,7 +431,7 @@ hmacKey->buffer, hmacKey->size, /* HMAC key */ md, /* message digest method */ NULL); -#elsif OPENSSL_VERSION < 0x30000000 +#elif OPENSSL_VERSION_NUMBER < 0x30000000 rc = HMAC_Init_ex(ctx, hmacKey->buffer, hmacKey->size, /* HMAC key */ md, /* message digest method */ @@ -452,7 +457,7 @@ } #if OPENSSL_VERSION_NUMBER < 0x10100000 rc = HMAC_Update(&ctx, buffer, length); -#elsif OPENSSL_VERSION < 0x30000000 +#elif OPENSSL_VERSION_NUMBER < 0x30000000 rc = HMAC_Update(ctx, buffer, length); #else rc = EVP_MAC_update(ctx, buffer, length); @@ -466,7 +471,7 @@ #if OPENSSL_VERSION_NUMBER < 0x10100000 rc = HMAC_Final(&ctx, (uint8_t *)&digest->digest, NULL); -#elsif OPENSSL_VERSION < 0x30000000 +#elif OPENSSL_VERSION_NUMBER < 0x30000000 rc = HMAC_Final(ctx, (uint8_t *)&digest->digest, NULL); #else rc = EVP_MAC_final(ctx, (uint8_t *)&digest->digest, NULL, TSS_GetDigestSize(digest->hashAlg)); @@ -479,7 +484,7 @@ out_free: #if OPENSSL_VERSION_NUMBER < 0x10100000 HMAC_CTX_cleanup(&ctx); -#elsif OPENSSL_VERSION < 0x30000000 +#elif OPENSSL_VERSION_NUMBER < 0x30000000 HMAC_CTX_free(ctx); #else EVP_MAC_CTX_free(ctx); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openssl_tpm2_engine-4.0.0/src/libcommon/tpm2-common.c new/openssl_tpm2_engine-4.0.1/src/libcommon/tpm2-common.c --- old/openssl_tpm2_engine-4.0.0/src/libcommon/tpm2-common.c 2023-03-29 15:05:46.000000000 +0200 +++ new/openssl_tpm2_engine-4.0.1/src/libcommon/tpm2-common.c 2023-07-05 21:32:10.000000000 +0200 @@ -70,116 +70,6 @@ * openssl support (this excludes BN P256) */ struct tpm2_ECC_Curves tpm2_supported_curves[] = { - { .name = "prime192v1", - .nid = NID_X9_62_prime192v1, - .curve = TPM_ECC_NIST_P192, - /* p */ - .C[0].s = 24, - .C[0].b = (BYTE []) - { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - }, - /* a */ - .C[1].s = 24, - .C[1].b = (BYTE []) - { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, - }, - /* b */ - .C[2].s = 24, - .C[2].b = (BYTE []) - { - 0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C, 0x80, 0xE7, - 0x0F, 0xA7, 0xE9, 0xAB, 0x72, 0x24, 0x30, 0x49, - 0xFE, 0xB8, 0xDE, 0xEC, 0xC1, 0x46, 0xB9, 0xB1, - }, - /* gX */ - .C[3].s = 24, - .C[3].b = (BYTE []) - { - 0x18, 0x8D, 0xA8, 0x0E, 0xB0, 0x30, 0x90, 0xF6, - 0x7C, 0xBF, 0x20, 0xEB, 0x43, 0xA1, 0x88, 0x00, - 0xF4, 0xFF, 0x0A, 0xFD, 0x82, 0xFF, 0x10, 0x12, - }, - /* gY */ - .C[4].s = 24, - .C[4].b = (BYTE []) - { - 0x07, 0x19, 0x2b, 0x95, 0xff, 0xc8, 0xda, 0x78, - 0x63, 0x10, 0x11, 0xed, 0x6b, 0x24, 0xcd, 0xd5, - 0x73, 0xf9, 0x77, 0xa1, 0x1e, 0x79, 0x48, 0x11, - }, - /* order */ - .C[5].s = 24, - .C[5].b = (BYTE []) - { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0xDE, 0xF8, 0x36, - 0x14, 0x6B, 0xC9, 0xB1, 0xB4, 0xD2, 0x28, 0x31, - }, - }, - { .name = "secp224r1", - .nid = NID_secp224r1, - .curve = TPM_ECC_NIST_P224, - /* p */ - .C[0].s = 28, - .C[0].b = (BYTE []) - { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - }, - /* a */ - .C[1].s = 28, - .C[1].b = (BYTE []) - { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, - }, - /* b */ - .C[2].s = 28, - .C[2].b = (BYTE []) - { - 0xB4, 0x05, 0x0A, 0x85, 0x0C, 0x04, 0xB3, 0xAB, - 0xF5, 0x41, 0x32, 0x56, 0x50, 0x44, 0xB0, 0xB7, - 0xD7, 0xBF, 0xD8, 0xBA, 0x27, 0x0B, 0x39, 0x43, - 0x23, 0x55, 0xFF, 0xB4, - }, - /* gX */ - .C[3].s = 28, - .C[3].b = (BYTE []) - { - 0xB7, 0x0E, 0x0C, 0xBD, 0x6B, 0xB4, 0xBF, 0x7F, - 0x32, 0x13, 0x90, 0xB9, 0x4A, 0x03, 0xC1, 0xD3, - 0x56, 0xC2, 0x11, 0x22, 0x34, 0x32, 0x80, 0xD6, - 0x11, 0x5C, 0x1D, 0x21, - }, - /* gY */ - .C[4].s = 28, - .C[4].b = (BYTE []) - { - 0xbd, 0x37, 0x63, 0x88, 0xb5, 0xf7, 0x23, 0xfb, - 0x4c, 0x22, 0xdf, 0xe6, 0xcd, 0x43, 0x75, 0xa0, - 0x5a, 0x07, 0x47, 0x64, 0x44, 0xd5, 0x81, 0x99, - 0x85, 0x00, 0x7e, 0x34, - }, - /* order */ - .C[5].s = 28, - .C[5].b = (BYTE []) - { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x16, 0xA2, - 0xE0, 0xB8, 0xF0, 0x3E, 0x13, 0xDD, 0x29, 0x45, - 0x5C, 0x5C, 0x2A, 0x3D - }, - }, { .name = "prime256v1", .nid = NID_X9_62_prime256v1, .curve = TPM_ECC_NIST_P256, @@ -2285,7 +2175,8 @@ } if (version == 0) { k.tssl.type = OBJ_txt2obj(OID_OldloadableKey, 1); - k.tssl.emptyAuth = empty_auth; + /* standard requires true or not present */ + k.tssl.emptyAuth = empty_auth ? 0xff : -1; k.tssl.parent = ASN1_INTEGER_new(); ASN1_INTEGER_set(k.tssl.parent, parent); @@ -2311,7 +2202,8 @@ secret->size); } - k.tpk.emptyAuth = empty_auth; + /* standard requires true or not present */ + k.tpk.emptyAuth = empty_auth ? 0xff : -1; k.tpk.parent = ASN1_INTEGER_new(); ASN1_INTEGER_set(k.tpk.parent, parent); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openssl_tpm2_engine-4.0.0/src/tools/create_tpm2_key.c new/openssl_tpm2_engine-4.0.1/src/tools/create_tpm2_key.c --- old/openssl_tpm2_engine-4.0.0/src/tools/create_tpm2_key.c 2023-03-29 15:05:46.000000000 +0200 +++ new/openssl_tpm2_engine-4.0.1/src/tools/create_tpm2_key.c 2023-07-05 21:32:10.000000000 +0200 @@ -378,7 +378,7 @@ if (name) printf("%s\n", name); else - printf("Curve %d Unsupported\n", c->eccCurves[i]); + fprintf(stderr, "Curve %d Unsupported\n", c->eccCurves[i]); } return; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openssl_tpm2_engine-4.0.0/tests/create_nonopenssl_ecc.sh new/openssl_tpm2_engine-4.0.1/tests/create_nonopenssl_ecc.sh --- old/openssl_tpm2_engine-4.0.0/tests/create_nonopenssl_ecc.sh 2023-03-29 15:05:46.000000000 +0200 +++ new/openssl_tpm2_engine-4.0.1/tests/create_nonopenssl_ecc.sh 2023-07-05 21:32:10.000000000 +0200 @@ -1,5 +1,10 @@ #!/bin/bash +# swtpm doesn't have a correct implementation of the Barreto-Naehrig curves +# which are the only openssl unparametrised ones, so skip the test +if [ -x "${SWTPM}" ]; then + exit 77; +fi ## # test is