public void ExportPublicKey_Should_ReturnDerFormat()
        {
            var crypto    = new VirgilCrypto();
            var publicKey = crypto.ImportPublicKey(
                Convert.FromBase64String(AppSettings.PublicKeySTC32));
            var exportedPublicKey1Bytes = crypto.ExportPublicKey(publicKey);
            var privateKeyToDer         = VirgilKeyPair.PublicKeyToDER(((PublicKey)publicKey).RawKey);

            Assert.IsTrue(privateKeyToDer.SequenceEqual(exportedPublicKey1Bytes));
        }
        public void ImportExportedPublicKey_Should_ReturnEquivalentKey()
        {
            var crypto      = new VirgilCrypto();
            var keyPair     = crypto.GenerateKeys();
            var exportedKey = crypto.ExportPublicKey(keyPair.PublicKey);
            var importedKey = (PublicKey)crypto.ImportPublicKey(exportedKey);

            Assert.IsTrue(importedKey.Id.SequenceEqual(keyPair.PublicKey.Id));
            Assert.IsTrue(importedKey.RawKey.SequenceEqual(keyPair.PublicKey.RawKey));
        }
示例#3
0
        public void Verify_Should_VerifyTestCreatedInAnotherSDK()
        {
            var jwt    = new Jwt(AppSettings.ImportedJwt);
            var signer = new VirgilAccessTokenSigner();
            var crypto = new VirgilCrypto();

            var jwtVerifier = new JwtVerifier(
                signer,
                crypto.ImportPublicKey(
                    Bytes.FromString(AppSettings.ImportedAccessPublicKey, StringEncoding.BASE64)),
                AppSettings.ImportedAccessPublicKeyId);

            Assert.IsTrue(jwtVerifier.VerifyToken(jwt));
        }
示例#4
0
        public void DecryptThenVerifytForMultipleSigners_Should_BeEqualToTestData()
        {
            var testData   = compatibilityData["sign_then_encrypt_multiple_signers"];
            var privateKey = cryptoSHA256.ImportPrivateKey(
                Bytes.FromString((string)testData["private_key"], StringEncoding.BASE64));

            var publicKeysBase64 = testData["public_keys"].ToObject <string[]>();
            var publicKeys       = ((string[])publicKeysBase64).Select(x =>
                                                                       cryptoSHA256.ImportPublicKey(Bytes.FromString(x, StringEncoding.BASE64))).ToArray();
            var data       = Bytes.FromString((string)testData["original_data"], StringEncoding.BASE64);
            var cipherData = Bytes.FromString((string)testData["cipher_data"], StringEncoding.BASE64);

            Assert.IsTrue(cryptoSHA256.DecryptThenVerify(cipherData, privateKey, publicKeys).SequenceEqual(data));
        }
示例#5
0
        public void JwtVerifier_Should_VerifyImportedJwt()
        {
            //STC-22
            var    signer = new VirgilAccessTokenSigner();
            string apiPublicKeyId;
            string apiPublicKeyBase64;
            var    crypto = new VirgilCrypto();

            var token = faker.PredefinedToken(signer, TimeSpan.FromMinutes(10), out apiPublicKeyId, out apiPublicKeyBase64).Item1;

            var jwtVerifier = new JwtVerifier(
                signer,
                crypto.ImportPublicKey(Bytes.FromString(apiPublicKeyBase64, StringEncoding.BASE64)),
                apiPublicKeyId);

            Assert.IsTrue(jwtVerifier.VerifyToken(token));
        }