예제 #1
0
        /// <summary>
        /// Set the key name in keyHandle according to identityName and params.
        /// </summary>
        ///
        protected static internal void setKeyName(TpmKeyHandle keyHandle, Name identityName,
                                                  KeyParams paras)
        {
            Name.Component keyId;
            if (paras.getKeyIdType() == net.named_data.jndn.security.KeyIdType.USER_SPECIFIED)
            {
                keyId = paras.getKeyId();
            }
            else if (paras.getKeyIdType() == net.named_data.jndn.security.KeyIdType.SHA256)
            {
                byte[] digest = net.named_data.jndn.util.Common.digestSha256(keyHandle.derivePublicKey()
                                                                             .buf());
                keyId = new Name.Component(digest);
            }
            else if (paras.getKeyIdType() == net.named_data.jndn.security.KeyIdType.RANDOM)
            {
                if (paras.getKeyId().getValue().size() == 0)
                {
                    throw new TpmBackEnd.Error(
                              "setKeyName: The keyId is empty for type RANDOM");
                }
                keyId = paras.getKeyId();
            }
            else
            {
                throw new TpmBackEnd.Error("setKeyName: unrecognized params.getKeyIdType()");
            }

            keyHandle.setKeyName(net.named_data.jndn.security.pib.PibKey.constructKeyName(identityName, keyId));
        }
예제 #2
0
        /// <summary>
        /// Get the public portion of an asymmetric key pair with name keyName.
        /// </summary>
        ///
        /// <param name="keyName">The name of the key.</param>
        /// <returns>The encoded public key, or an isNull Blob if the key does not exist.</returns>
        public Blob getPublicKey(Name keyName)
        {
            TpmKeyHandle key = findKey(keyName);

            if (key == null)
            {
                return(new Blob());
            }
            else
            {
                return(key.derivePublicKey());
            }
        }