public byte[] OaepEncrypt(byte[] data, TpmAlgId hashAlg, byte[] encodingParms) { if (data.Length == 0) { throw new ArgumentException(""); } int encLen = NumBits / 8; byte[] zeroTermEncoding = GetLabel(encodingParms); byte[] encoded = CryptoEncoders.OaepEncode(data, zeroTermEncoding, hashAlg, encLen); BigInteger message = FromBigEndian(encoded); BigInteger cipher = BigInteger.ModPow(message, E, N); byte[] encMessageBigEnd = ToBigEndian(cipher, KeySize); return(encMessageBigEnd); }
public byte[] OaepEncrypt(byte[] data, TpmAlgId hashAlg, byte[] encodingParms) { int encLen = NumBits / 8; byte[] zeroTermEncoding = GetLabel(encodingParms); byte[] encoded = CryptoEncoders.OaepEncode(data, zeroTermEncoding, hashAlg, encLen); BigInteger message = FromBigEndian(encoded); BigInteger cipher = BigInteger.ModPow(message, E, N); byte[] encMessageBigEnd = ToBigEndian(cipher, KeySize); if (encMessageBigEnd.Length < encLen) { encMessageBigEnd = Globs.AddZeroToBeginning(encMessageBigEnd, encLen - encMessageBigEnd.Length); } return(encMessageBigEnd); }