Siyuan
If you are just talking *private interface*, it is OK.
My concern is raised, when you say: we cannot change a private protocol.
That means, we have to keep the ugly interface forever. :-(
I am feeling there is some wrong fundamentally.
My believe is:
If it is private, we can change.
If we cannot change, it is not private.
Thank you
Yao Jiewen
> -----Original Message-----
> From: Fu, Siyuan <[email protected]>
> Sent: Friday, March 27, 2020 1:43 PM
> To: Yao, Jiewen <[email protected]>; [email protected]; Gao, Zhichao
> <[email protected]>
> Cc: Wang, Jian J <[email protected]>; Lu, XiaoyuX <[email protected]>;
> Maciej Rabeda <[email protected]>; Wu, Jiaxin
> <[email protected]>
> Subject: RE: [edk2-devel] [PATCH 0/8] CryptoPkg: Retire the deprecate function
>
> Jiewen,
>
> I agree "abstract action not algorithm" is a good design principle, but I'm
> not
> sure
> If there is any plan to move this protocol to the public include so far.
> For this patch set, my feeling is it should at least do not modify the
> existing
> protocol definition, so the modulization update capability won't be broken.
> I'm also welcome to see if the protocol can be enhanced as you mentioned
> below.
>
> Best Regards
> Siyuan
>
> > -----Original Message-----
> > From: Yao, Jiewen <[email protected]>
> > Sent: 2020年3月27日 12:59
> > To: Fu, Siyuan <[email protected]>; [email protected]; Gao, Zhichao
> > <[email protected]>
> > Cc: Wang, Jian J <[email protected]>; Lu, XiaoyuX
> <[email protected]>;
> > Maciej Rabeda <[email protected]>; Wu, Jiaxin
> > <[email protected]>
> > Subject: RE: [edk2-devel] [PATCH 0/8] CryptoPkg: Retire the deprecate
> function
> >
> > Thanks Siyun.
> > I think probably we need discuss this more.
> >
> > 1) About private v.s. public.
> >
> > The benefit for private include is to isolate external interface and
> > internal
> > interface.
> > A package can keep updating its private interface without impact any other
> > packages.
> > However, in this case, a private interface update will bring binary
> > compatibility
> > issue with other package.
> > I am not sure it is acceptable or not.
> >
> > Mike
> > Do you have any comment? Is that the design goal of private interface - just
> > keep source code compatibility, but not binary compatiblity?
> >
> > 2) About the protocol itself.
> >
> > One concern I have is that we *hardcode* the algorithm in protocol.
> >
> > We keeps adding new algorithm and removing old one. That means this
> protocol
> > interface is unstable.
> >
> > Today, we have defined SHA2 set, and deprecating SHA1 and older one.
> > Tomorrow we may need add SHA3 set.
> > Today, we have RSAPKCS1_15. Tomorrow we will have RSAPSS.
> > Some other new set of algorithms might be added later, such as AEAD, GMAC.
> >
> > For a protocol definition, I think we need *abstract the action*, but not
> > *algorithm*.
> > One good example is the UEFI HASH2 Protocol.
> >
> https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Protocol/Has
> > h2.h
> > It just tells you do the hash. You may add new algorithm GUID.
> >
> > Another good example is inside of openssl. Now it is using EVP style cipher
> algo.
> > For example,
> > https://www.openssl.org/docs/man1.1.1/man3/EVP_EncryptInit_ex.html
> > https://www.openssl.org/docs/man1.1.0/man3/EVP_CIPHER_CTX_ctrl.html
> > The cipher itself is input as parameter.
> >
> > The benefit is that, if we want to deprecate an algorithm, the interface
> > can be
> > unchanged.
> > Just the internal implementation can be changed.
> > The current PCD mechanism can still be applied to internal implementation.
> >
> > Can we get a chance to revisit/redesign the protocol API, when we move to
> > public include?
> >
> > Thank you
> > Yao Jiewen
> >
> > > -----Original Message-----
> > > From: Fu, Siyuan <[email protected]>
> > > Sent: Friday, March 27, 2020 11:07 AM
> > > To: Yao, Jiewen <[email protected]>; [email protected]; Gao,
> > Zhichao
> > > <[email protected]>
> > > Cc: Wang, Jian J <[email protected]>; Lu, XiaoyuX
> > <[email protected]>;
> > > Maciej Rabeda <[email protected]>; Wu, Jiaxin
> > > <[email protected]>
> > > Subject: RE: [edk2-devel] [PATCH 0/8] CryptoPkg: Retire the deprecate
> > function
> > >
> > > Hi, Jiewen
> > >
> > > Although the protocol is private, a corresponding BaseCryptoLib instance
> > > is
> > > not private, like PeiCryptLib.inf, RuntimeCryptLib, etc. These library
> > > instances
> > > will be static linked to the consumer driver, for example an iSCSI network
> > driver.
> > > So actually it's not a "private" change inside CryptoPkg.
> > >
> > > The goal to provide a driver version of crypto service is to support
> > modulization
> > > FW update, which means the crypto driver may NOT be updated together
> with
> > > its consumer. A platform may choose to update the crypto service driver
> > > to a
> > > new version with this patch, then all the BaseCryptoLib consumers will be
> > > messed.
> > >
> > > Best Regards
> > > Siyuan
> > >
> > > > -----Original Message-----
> > > > From: Yao, Jiewen <[email protected]>
> > > > Sent: 2020年3月27日 10:58
> > > > To: [email protected]; Fu, Siyuan <[email protected]>; Gao,
> Zhichao
> > > > <[email protected]>
> > > > Cc: Wang, Jian J <[email protected]>; Lu, XiaoyuX
> > > <[email protected]>;
> > > > Maciej Rabeda <[email protected]>; Wu, Jiaxin
> > > > <[email protected]>
> > > > Subject: RE: [edk2-devel] [PATCH 0/8] CryptoPkg: Retire the deprecate
> > > function
> > > >
> > > > EDKII_CRYPTO_PROTOCOL is *private*.
> > > >
> > >
> >
> https://github.com/tianocore/edk2/blob/master/CryptoPkg/Private/Protocol/C
> > > > rypto.h
> > > >
> > > > Why we cannot change?
> > > >
> > > >
> > > >
> > > > > -----Original Message-----
> > > > > From: [email protected] <[email protected]> On Behalf Of
> Siyuan,
> > > Fu
> > > > > Sent: Friday, March 27, 2020 10:47 AM
> > > > > To: Gao, Zhichao <[email protected]>; [email protected]
> > > > > Cc: Wang, Jian J <[email protected]>; Lu, XiaoyuX
> > > > <[email protected]>;
> > > > > Maciej Rabeda <[email protected]>; Wu, Jiaxin
> > > > > <[email protected]>
> > > > > Subject: Re: [edk2-devel] [PATCH 0/8] CryptoPkg: Retire the deprecate
> > > > function
> > > > >
> > > > > Hi, Zhichao
> > > > >
> > > > > We should never move/delete a member field of a previous defined
> > protocol
> > > > > Interface. Instead, these protocol APIs shall be kept and return an
> > > > > error
> > code
> > > > > If the function is retired. Otherwise the consumer driver may call
> > > > > into an
> > > > > Incorrect function if it's build with different codebase/PCD settings
> > > > > with
> > the
> > > > > Crypto PEI/DXE/SMM driver.
> > > > > This comment applies to all the EDKII_CRYPTO_PROTOCOL related
> changes
> > > in
> > > > > your patch set.
> > > > >
> > > > > Best Regards
> > > > > Siyuan
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Gao, Zhichao <[email protected]>
> > > > > > Sent: 2020年3月27日 9:56
> > > > > > To: [email protected]
> > > > > > Cc: Wang, Jian J <[email protected]>; Lu, XiaoyuX
> > > > > <[email protected]>;
> > > > > > Maciej Rabeda <[email protected]>; Wu, Jiaxin
> > > > > > <[email protected]>; Fu, Siyuan <[email protected]>
> > > > > > Subject: [PATCH 0/8] CryptoPkg: Retire the deprecate function
> > > > > >
> > > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1682
> > > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1898
> > > > > >
> > > > > > MD4, AR4, Tdes, Aes Ecb mode, MD5 and SHA1 is not secure any longer.
> > > > > > They are all deprecated. Edk2 would not support them any longer.
> > > > > > So remove them.
> > > > > > But uefi spec want to keep MD5 and SHA1 for backwards compatibility.
> > > > > > So add two pcds to control the MD5 and SHA1 enablement. Set the
> pcds
> > > > > > default value to false to indicate they are deprecated.
> > > > > >
> > > > > > NetWorkPkg's iSCSI driver would consume the MD5 function, so change
> > > > > > the md5 pcd to TURE when iSCSI is enabled.
> > > > > >
> > > > > > Cc: Jian J Wang <[email protected]>
> > > > > > Cc: Xiaoyu Lu <[email protected]>
> > > > > > Cc: Maciej Rabeda <[email protected]>
> > > > > > Cc: Jiaxin Wu <[email protected]>
> > > > > > Cc: Siyuan Fu <[email protected]>
> > > > > > Signed-off-by: Zhichao Gao <[email protected]>
> > > > > >
> > > > > > Zhichao Gao (8):
> > > > > > CryptoPkg/BaseCrpytLib: Retire MD4 algorithm
> > > > > > CryptoPkg/BaseCryptLib: Retire ARC4 algorithm
> > > > > > CryptoPkg/BaseCryptLib: Retire the Tdes algorithm
> > > > > > CryptoPkg/BaseCryptLib: Retire Aes Ecb mode algorithm
> > > > > > CryptoPkg/dec: Add pcds to avoid building the deprecated function
> > > > > > NetWorkPkg/Pcd.inc: Enable the MD5 for iSCSI
> > > > > > Crypto/BaseCryptLib: Using pcd to control MD5 enablement
> > > > > > CryptoPkg/BaseCryptLib: Use Pcd to control the SHA1 enablement
> > > > > >
> > > > > > CryptoPkg/CryptoPkg.dec | 11 +
> > > > > > CryptoPkg/CryptoPkg.uni | 11 +
> > > > > > CryptoPkg/Driver/Crypto.c | 634
> > > > > > +-----------------
> > > > > > CryptoPkg/Include/Library/BaseCryptLib.h | 548 ---------------
> > > > > > .../Library/BaseCryptLib/BaseCryptLib.inf | 9 +-
> > > > > > .../Library/BaseCryptLib/Cipher/CryptAes.c | 114 ----
> > > > > > .../BaseCryptLib/Cipher/CryptAesNull.c | 52 --
> > > > > > .../Library/BaseCryptLib/Cipher/CryptArc4.c | 205 ------
> > > > > > .../BaseCryptLib/Cipher/CryptArc4Null.c | 124 ----
> > > > > > .../Library/BaseCryptLib/Cipher/CryptTdes.c | 364 ----------
> > > > > > .../BaseCryptLib/Cipher/CryptTdesNull.c | 160 -----
> > > > > > .../Library/BaseCryptLib/Hash/CryptMd4.c | 223 ------
> > > > > > .../Library/BaseCryptLib/Hash/CryptMd4Null.c | 143 ----
> > > > > > .../Library/BaseCryptLib/Hash/CryptMd5.c | 5 +-
> > > > > > .../Library/BaseCryptLib/Hmac/CryptHmacMd5.c | 3 +
> > > > > > .../BaseCryptLib/Hmac/CryptHmacMd5Null.c | 3 +
> > > > > > .../Library/BaseCryptLib/Hmac/CryptHmacSha1.c | 3 +
> > > > > > .../BaseCryptLib/Hmac/CryptHmacSha1Null.c | 3 +
> > > > > > .../Library/BaseCryptLib/PeiCryptLib.inf | 13 +-
> > > > > > .../BaseCryptLib/Pk/CryptPkcs5Pbkdf2.c | 3 +
> > > > > > .../Library/BaseCryptLib/Pk/CryptRsaBasic.c | 5 +
> > > > > > .../Library/BaseCryptLib/Pk/CryptRsaExt.c | 5 +
> > > > > > .../Library/BaseCryptLib/RuntimeCryptLib.inf | 13 +-
> > > > > > .../Library/BaseCryptLib/SmmCryptLib.inf | 13 +-
> > > > > > .../BaseCryptLibNull/BaseCryptLibNull.inf | 3 -
> > > > > > .../BaseCryptLibNull/Cipher/CryptAesNull.c | 54 +-
> > > > > > .../BaseCryptLibNull/Cipher/CryptArc4Null.c | 124 ----
> > > > > > .../BaseCryptLibNull/Cipher/CryptTdesNull.c | 160 -----
> > > > > > .../BaseCryptLibNull/Hash/CryptMd4Null.c | 143 ----
> > > > > > .../BaseCryptLibNull/Hash/CryptMd5Null.c | 3 +
> > > > > > .../BaseCryptLibNull/Hmac/CryptHmacMd5Null.c | 3 +
> > > > > > .../BaseCryptLibNull/Hmac/CryptHmacSha1Null.c | 4 +-
> > > > > > .../BaseCryptLibOnProtocolPpi/CryptLib.c | 604
> > > > > > +----------------
> > > > > > .../Library/BaseHashApiLib/BaseHashApiLib.c | 12 +
> > > > > > .../Library/BaseHashApiLib/BaseHashApiLib.inf | 1 +
> > > > > > CryptoPkg/Private/Protocol/Crypto.h | 583
> > > > > > +---------------
> > > > > > NetworkPkg/NetworkPcds.dsc.inc | 5 +-
> > > > > > 37 files changed, 145 insertions(+), 4221 deletions(-)
> > > > > > delete mode 100644
> > CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4.c
> > > > > > delete mode 100644
> > > > CryptoPkg/Library/BaseCryptLib/Cipher/CryptArc4Null.c
> > > > > > delete mode 100644
> > CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdes.c
> > > > > > delete mode 100644
> > > > CryptoPkg/Library/BaseCryptLib/Cipher/CryptTdesNull.c
> > > > > > delete mode 100644
> CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4.c
> > > > > > delete mode 100644
> > > CryptoPkg/Library/BaseCryptLib/Hash/CryptMd4Null.c
> > > > > > delete mode 100644
> > > > > > CryptoPkg/Library/BaseCryptLibNull/Cipher/CryptArc4Null.c
> > > > > > delete mode 100644
> > > > > > CryptoPkg/Library/BaseCryptLibNull/Cipher/CryptTdesNull.c
> > > > > > delete mode 100644
> > > > > CryptoPkg/Library/BaseCryptLibNull/Hash/CryptMd4Null.c
> > > > > >
> > > > > > --
> > > > > > 2.21.0.windows.1
> > > > >
> > > > >
> > > > >
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#56473): https://edk2.groups.io/g/devel/message/56473
Mute This Topic: https://groups.io/mt/72579461/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-