+ (unless (eq (car signature) 'epg-signature)
+ (signal 'wrong-type-argument (list 'epg-signature-p signature)))
+ (aset (cdr signature) 3 validity))
+
+(defun epg-signature-set-fingerprint (signature fingerprint)
+ "Set the fingerprint of SIGNATURE."
+ (unless (eq (car signature) 'epg-signature)
+ (signal 'wrong-type-argument (list 'epg-signature-p signature)))
+ (aset (cdr signature) 4 fingerprint))
+
+(defun epg-make-key (owner-trust)
+ "Return a key object."
+ (cons 'epg-key (vector owner-trust nil nil)))
+
+(defun epg-key-owner-trust (key)
+ "Return the owner trust of KEY."
+ (unless (eq (car key) 'epg-key)
+ (signal 'wrong-type-argument (list 'epg-key-p key)))
+ (aref (cdr key) 0))
+
+(defun epg-key-sub-key-list (key)
+ "Return the sub key list of KEY."
+ (unless (eq (car key) 'epg-key)
+ (signal 'wrong-type-argument (list 'epg-key-p key)))
+ (aref (cdr key) 1))
+
+(defun epg-key-user-id-list (key)
+ "Return the user ID list of KEY."
+ (unless (eq (car key) 'epg-key)
+ (signal 'wrong-type-argument (list 'epg-key-p key)))
+ (aref (cdr key) 2))
+
+(defun epg-key-set-sub-key-list (key sub-key-list)
+ "Set the sub key list of KEY."
+ (unless (eq (car key) 'epg-key)
+ (signal 'wrong-type-argument (list 'epg-key-p key)))
+ (aset (cdr key) 1 sub-key-list))
+
+(defun epg-key-set-user-id-list (key user-id-list)
+ "Set the user ID list of KEY."
+ (unless (eq (car key) 'epg-key)
+ (signal 'wrong-type-argument (list 'epg-key-p key)))
+ (aset (cdr key) 2 user-id-list))
+
+(defun epg-make-sub-key (validity capability secret algorithm length id
+ creation-time expiration-time)
+ "Return a sub key object."
+ (cons 'epg-sub-key
+ (vector validity capability secret algorithm length id creation-time
+ expiration-time nil)))
+
+(defun epg-sub-key-validity (sub-key)
+ "Return the validity of SUB-KEY."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aref (cdr sub-key) 0))
+
+(defun epg-sub-key-capability (sub-key)
+ "Return the capability of SUB-KEY."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aref (cdr sub-key) 1))
+
+(defun epg-sub-key-secret (sub-key)
+ "Return non-nil if SUB-KEY is a secret key."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aref (cdr sub-key) 2))
+
+(defun epg-sub-key-algorithm (sub-key)
+ "Return the algorithm of SUB-KEY."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aref (cdr sub-key) 3))
+
+(defun epg-sub-key-length (sub-key)
+ "Return the length of SUB-KEY."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aref (cdr sub-key) 4))
+
+(defun epg-sub-key-id (sub-key)
+ "Return the ID of SUB-KEY."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aref (cdr sub-key) 5))
+
+(defun epg-sub-key-creation-time (sub-key)
+ "Return the creation time of SUB-KEY."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aref (cdr sub-key) 6))
+
+(defun epg-sub-key-expiration-time (sub-key)
+ "Return the expiration time of SUB-KEY."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aref (cdr sub-key) 7))
+
+(defun epg-sub-key-fingerprint (sub-key)
+ "Return the fingerprint of SUB-KEY."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aref (cdr sub-key) 8))
+
+(defun epg-sub-key-set-fingerprint (sub-key fingerprint)
+ "Set the fingerprint of SUB-KEY.
+This function is for internal use only."
+ (unless (eq (car sub-key) 'epg-sub-key)
+ (signal 'wrong-type-argument (list 'epg-sub-key-p sub-key)))
+ (aset (cdr sub-key) 8 fingerprint))
+
+(defun epg-make-user-id (validity name)
+ "Return a user ID object."
+ (cons 'epg-user-id (vector validity name nil)))
+
+(defun epg-user-id-validity (user-id)
+ "Return the validity of USER-ID."
+ (unless (eq (car user-id) 'epg-user-id)
+ (signal 'wrong-type-argument (list 'epg-user-id-p user-id)))
+ (aref (cdr user-id) 0))
+
+(defun epg-user-id-name (user-id)
+ "Return the name of USER-ID."
+ (unless (eq (car user-id) 'epg-user-id)
+ (signal 'wrong-type-argument (list 'epg-user-id-p user-id)))
+ (aref (cdr user-id) 1))
+
+(defun epg-user-id-signature-list (user-id)
+ "Return the signature list of USER-ID."
+ (unless (eq (car user-id) 'epg-user-id)
+ (signal 'wrong-type-argument (list 'epg-user-id-p user-id)))
+ (aref (cdr user-id) 2))
+
+(defun epg-user-id-set-signature-list (user-id signature-list)
+ "Set the signature list of USER-ID."
+ (unless (eq (car user-id) 'epg-user-id)
+ (signal 'wrong-type-argument (list 'epg-user-id-p user-id)))
+ (aset (cdr user-id) 2 signature-list))