更新了登录
This commit is contained in:
65
Pods/SwiftyRSA/Source/PrivateKey.swift
generated
Normal file
65
Pods/SwiftyRSA/Source/PrivateKey.swift
generated
Normal file
@@ -0,0 +1,65 @@
|
||||
//
|
||||
// PrivateKey.swift
|
||||
// SwiftyRSA
|
||||
//
|
||||
// Created by Lois Di Qual on 5/17/17.
|
||||
// Copyright © 2017 Scoop. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
public class PrivateKey: Key {
|
||||
|
||||
/// Reference to the key within the keychain
|
||||
public let reference: SecKey
|
||||
|
||||
/// Original data of the private key.
|
||||
/// Note that it does not contain PEM headers and holds data as bytes, not as a base 64 string.
|
||||
public let originalData: Data?
|
||||
|
||||
let tag: String?
|
||||
|
||||
/// Returns a PEM representation of the private key.
|
||||
///
|
||||
/// - Returns: Data of the key, PEM-encoded
|
||||
/// - Throws: SwiftyRSAError
|
||||
public func pemString() throws -> String {
|
||||
let data = try self.data()
|
||||
let pem = SwiftyRSA.format(keyData: data, withPemType: "RSA PRIVATE KEY")
|
||||
return pem
|
||||
}
|
||||
|
||||
/// Creates a private key with a keychain key reference.
|
||||
/// This initializer will throw if the provided key reference is not a private RSA key.
|
||||
///
|
||||
/// - Parameter reference: Reference to the key within the keychain.
|
||||
/// - Throws: SwiftyRSAError
|
||||
public required init(reference: SecKey) throws {
|
||||
|
||||
guard SwiftyRSA.isValidKeyReference(reference, forClass: kSecAttrKeyClassPrivate) else {
|
||||
throw SwiftyRSAError.notAPrivateKey
|
||||
}
|
||||
|
||||
self.reference = reference
|
||||
self.tag = nil
|
||||
self.originalData = nil
|
||||
}
|
||||
|
||||
/// Creates a private key with a RSA public key data.
|
||||
///
|
||||
/// - Parameter data: Private key data
|
||||
/// - Throws: SwiftyRSAError
|
||||
required public init(data: Data) throws {
|
||||
self.originalData = data
|
||||
let tag = UUID().uuidString
|
||||
self.tag = tag
|
||||
let dataWithoutHeader = try SwiftyRSA.stripKeyHeader(keyData: data)
|
||||
reference = try SwiftyRSA.addKey(dataWithoutHeader, isPublic: false, tag: tag)
|
||||
}
|
||||
|
||||
deinit {
|
||||
if let tag = tag {
|
||||
SwiftyRSA.removeKey(tag: tag)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user