private static byte[] CreateSnPublicKeyBlob(BlobHeader header, RsaPubKey rsa, byte[] pubKeyData)
        {
            var snPubKey = new SnPublicKeyBlob()
            {
                SigAlgId      = AlgorithmId.RsaSign,
                HashAlgId     = AlgorithmId.Sha,
                PublicKeySize = (UInt32)(s_offsetToKeyData + pubKeyData.Length)
            };

            using (var ms = new MemoryStream(160))
                using (var binaryWriter = new BinaryWriter(ms))
                {
                    binaryWriter.Write(snPubKey.SigAlgId);
                    binaryWriter.Write(snPubKey.HashAlgId);
                    binaryWriter.Write(snPubKey.PublicKeySize);

                    binaryWriter.Write(header.Type);
                    binaryWriter.Write(header.Version);
                    binaryWriter.Write(header.Reserved);
                    binaryWriter.Write(header.AlgId);

                    binaryWriter.Write(rsa.Magic);
                    binaryWriter.Write(rsa.BitLen);
                    binaryWriter.Write(rsa.PubExp);

                    binaryWriter.Write(pubKeyData);

                    return(ms.ToArray());
                }
        }
Beispiel #2
0
        private static ImmutableArray<byte> CreateSnPublicKeyBlob(BlobHeader header, RsaPubKey rsa, byte[] pubKeyData)
        {
            var snPubKey = new SnPublicKeyBlob()
            {
                SigAlgId = AlgorithmId.RsaSign,
                HashAlgId = AlgorithmId.Sha,
                PublicKeySize = (UInt32)(s_offsetToKeyData + pubKeyData.Length)
            };

            using (var ms = new MemoryStream(160))
            using (var binaryWriter = new BinaryWriter(ms))
            {
                binaryWriter.Write(snPubKey.SigAlgId);
                binaryWriter.Write(snPubKey.HashAlgId);
                binaryWriter.Write(snPubKey.PublicKeySize);

                binaryWriter.Write(header.Type);
                binaryWriter.Write(header.Version);
                binaryWriter.Write(header.Reserved);
                binaryWriter.Write(header.AlgId);

                binaryWriter.Write(rsa.Magic);
                binaryWriter.Write(rsa.BitLen);
                binaryWriter.Write(rsa.PubExp);

                binaryWriter.Write(pubKeyData);

                return ms.ToImmutable();
            }
        }