public static T CreateDesignData <T>(params string[] propertyValues) where T : class
        {
            if (typeof(T).Name.Contains("EcKeyPairInfo"))
            {
                var seed = Encoding.UTF8.GetBytes(propertyValues.Aggregate((s, s1) => s + s1));
                seed = SHA1.Create().ComputeHash(seed);
                var key = ToHexString(seed);

                if (!KeyStorage.ContainsKey(key))
                {
                    KeyStorage.Add(key, EncryptionSuite.Encryption.EllipticCurveCryptographer.CreateKeyPair(false));
                }

                return(new EncryptionSuite.Contract.EcKeyPairInfo()
                {
                    TokenLabel = propertyValues[1],
                    ManufacturerId = "Nitrokey",
                    CurveDescription = "brainpoolP320r1 (320 bit)",
                    ECParamsData = StringToByteArray("06092b2403030208010109"),
                    PublicKey = KeyStorage[key],
                    EcIdentifier = new EcIdentifier()
                    {
                        KeyLabel = propertyValues[0],
                        TokenSerialNumber = propertyValues[2]
                    }
                } as T);
            }

            return(default(T));
        }
예제 #2
0
 private void AddToKeyStorage(string strKey, string strValue)
 {
     if (!KeyStorage.ContainsKey(strKey))
     {
         KeyStorage.Add(strKey, strValue);
     }
     else
     {
         KeyStorage[strKey] = strValue;
     }
 }